Imports Newtonsoft.Json
Imports fatd_faturamento.ENTIDADE
Imports fatd_faturamento.ENTIDADE.DTO
Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.BLL.RegraNegocio

Public Class classWindowsServiceProcessamentoFaturas

    Public Sub EnviarFaturasPagas()

        Dim objEnviarFaturasPagas As New dtoEnviarFaturasPagas
        Dim objNf As New entidadeNf
        Dim repositorioNf As New repositorioNf
        Dim regranegocioRabbitMQ As New regraNegocioRabbitMQ


        Dim vlist As Object

        objNf.DATAPAG = Convert.ToDateTime(GetConfig("data.servico.enviar.faturas.pagas.site"))

        vlist = repositorioNf.Select_24(objNf)

        If vlist.Count <> 0 Then

            For Each objNfFor As entidadeNf In vlist

                objEnviarFaturasPagas.NUMNF = objNfFor.NUMNF
                objEnviarFaturasPagas.DATAPAG = objNfFor.DATAPAG

                regranegocioRabbitMQ.Send(JsonConvert.SerializeObject(objEnviarFaturasPagas), "task_enviar_faturas_pagas")

            Next
            SetConfig("data.servico.enviar.faturas.pagas.site", "STRING", Date.Now.ToShortDateString())
        End If

    End Sub

    Public Sub EnviarFaturas()
        EnviarFaturasGrupoA()
        EnviarFaturasGrupoB()
    End Sub

    Private Sub EnviarFaturasGrupoA()

        GeraFaturaGrupoA()

    End Sub

    Private Sub EnviarFaturasGrupoB()
        GeraFaturaGrupoB()
    End Sub

    Private Sub GeraFaturaGrupoA()

        Dim llngBandeira As Integer
        Dim ldteBandeira As Date
        Dim llngConta As Integer
        Dim ldblNumNF As Double
        Dim ldblNumNfIni As Double
        Dim ldblNumNfFim As Double
        Dim lstrAuxiliar As String
        Dim lstrZona As String
        Dim lstrLivro As String
        Dim lstrConta As String
        Dim lstrMesAno As String
        Dim lstrAux As String
        Dim lintTipo(3) As String
        Dim lstrCriterio As String
        Dim lstrNomeRptFat As String
        Dim lintSequenciaFaturas As Integer
        Dim istrGrupo As String

        'Dados da Fatura
        Dim ldblFaturasNumNf As Double
        Dim ldblFaturasCfop As Double
        Dim lstrFaturasZona As String
        Dim lstrFaturasLivro As String
        Dim lstrFaturasConta As String
        Dim lstrFaturasRota As String
        Dim ldblFaturasValorTot As Double
        Dim ldblFaturasValorLiq As Double
        Dim lstrFaturasCodClas As String
        Dim ldteFaturasVencimento As Date
        Dim lstrFaturasBanIdent As String
        Dim lstrFaturasMesAno As String
        Dim llngFaturasMesAnoRef As Integer
        Dim llngFaturasAnoMes_Fat As Integer
        Dim ldteFaturasApresentacao As Date
        Dim ldteFaturasEmissao As Date
        Dim ldteFaturasProxLeit As Date
        Dim ldteFaturasLeitura As Date
        Dim ldteFaturasLeitAnterior As Date
        Dim lstrFaturasFase As String
        Dim lstrFaturasTa As String
        Dim lstrFaturasTensao As String
        Dim lstrFaturasCodHash As String
        Dim lstrFaturasItensSev As String
        Dim lstrFaturasItensImp As String
        Dim llngFaturasNsu As Integer
        Dim llngFaturasConsId As Integer
        Dim lstrFaturasCodBarra As String
        Dim lstrFaturasDvCodBarra As String
        Dim lblnFaturaPeriodoTeste As Boolean
        Dim lstrClasseDescricao As String
        Dim lstrFaturasMensagemBandeira As String
        Dim lintFaturasLivreVerde As Short
        Dim lintFaturasParcCativo As Short

        'Dados da Unidade
        Dim lstrUnidaCpfCnpj As String
        Dim lstrUnidaInsc As String
        Dim lstrUnidaRg As String
        Dim lstrUnidaAgenc As String
        Dim lstrUnidaCC As String
        Dim lstrUnidaNome As String
        Dim lstrUnidaCidade As String
        Dim lstrUnidaDistrito As String
        Dim lstrUnidaBairro As String
        Dim lstrUnidaEnd As String
        Dim lstrUnidaNumero As String
        Dim lstrUnidaComplement As String
        Dim lstrUnidaCep As String
        Dim lstrUnidaUf As String
        Dim lstrUnidaLote As String
        Dim lstrUnidaQuadra As String
        Dim lstrUnidaCidEntrega As String
        Dim lstrUnidaDisEntrega As String
        Dim lstrUnidaBaiEntrega As String
        Dim lstrUnidaEndEntrega As String
        Dim lstrUnidaNumEntrega As String
        Dim lstrUnidaComplEntrega As String
        Dim lstrUnidaCepEntrega As String
        Dim lstrUnidaUfEntrega As String
        Dim lstrUnidaLotEntrega As String
        Dim lstrUnidaQuaEntrega As String
        Dim lstrUnidaGrupo As String
        Dim ldblUnidaConstDemanda As Double
        Dim ldblUnidaConstConsFp As Double
        Dim ldblUnidaConstConsP As Double
        Dim ldblUnidaConsReativoP As Double
        Dim ldblUnidaConsReativoFp As Double
        Dim ldblUnidaMedidorDemanda As Double
        Dim ldblUnidaMedidorReativo As Double
        Dim ldblUnidaMedidorConsumo As Double
        Dim ldblUnidaDemContrPonta As Double
        Dim ldblUnidaDemContrFp As Double
        Dim ldblUnidaDemAnteriorContrPonta As Double
        Dim ldblUnidaDemAnteriorContrFp As Double
        Dim ldblUnidaConstReativo As Double
        Dim ldblUnidaConstConsumo As Double
        Dim ldblUnidaConstDemandaFp As Double
        Dim ldblUnidaDemandaContr As Double
        Dim ldblUnidaCarga As Double
        Dim ldblUnidaFinal As Double

        'Dados do Consumidor
        Dim lstrConsumidorNome As String
        Dim lstrConsumidorCep As String
        Dim lstrConsumidorUf As String
        Dim lstrConsumidorCgc As String
        Dim lstrConsumidorInsc As String
        Dim lstrConsumidorRg As String

        '----------------------------------
        'Itens da fatura
        'Leitura
        'Reativo Consumo
        Dim ldblLeitConsReativoPontaAnter As Double
        Dim ldblLeitConsReativoPontaAtual As Double
        Dim ldblLeitConsReativoForaPAnter As Double
        Dim ldblLeitConsReativoForaPAtual As Double

        'Demanda
        Dim ldblLeitDemandaPontaAnter As Double
        Dim ldblLeitDemandaPontaAtual As Double
        Dim ldblLeitDemandaForaPAnter As Double
        Dim ldblLeitDemandaForaPAtual As Double

        'Consumo
        Dim ldblLeitConsumoPontaAnter As Double
        Dim ldblLeitConsumoPontaAtual As Double
        Dim ldblLeitConsumoForaPAnter As Double
        Dim ldblLeitConsumoForaPAtual As Double

        'Micro Geração
        Dim ldblLeitReversoPontaAnter As Double
        Dim ldblLeitReversoPontaAtual As Double
        Dim ldblLeitReversoForaPAnter As Double
        Dim ldblLeitReversoForaPAtual As Double

        'Consumo Reservado
        Dim ldblLeitConsReservadAtual As Double
        Dim ldblLeitConsReservadAnter As Double

        'Quantidades
        'Consumo
        Dim ldblConsMedidoPonta As Double
        Dim ldblConsMedidoForaP As Double
        Dim ldblConsFaturaPonta As Double
        Dim ldblConsFaturaForaP As Double
        Dim ldblConsContraPonta As Double
        Dim ldblConsContraForaP As Double
        Dim ldblConsMedido As Double
        Dim ldblConsFatura As Double
        Dim ldblConsReservado As Double

        'Micro Geração
        Dim ldblkWhReversoPonta As Double
        Dim ldblkWhReversoForaP As Double
        Dim ldblkWhReversoResPonta As Double
        Dim ldblkWhReversoResForaP As Double

        'Demanda
        Dim ldblDemaMedidaPonta As Double
        Dim ldblDemaMedidaForaP As Double
        Dim ldblDemaFaturaPonta As Double
        Dim ldblDemaFaturaForaP As Double
        Dim ldblDemaUltrapPonta As Double
        Dim ldblDemaUltrapForaP As Double
        Dim ldblDemaMedida As Double
        Dim ldblDemaFatura As Double
        Dim ldblDemaUltrap As Double

        'Fator de Potencia Convencional
        Dim ldblFatorPontencia As Double

        'Reativo Consumo
        Dim ldblReatConsumPonta As Double
        Dim ldblReatConsumForaP As Double
        Dim ldblReatMedido As Double

        'Reativo Demanda
        Dim ldblReatDemandPonta As Double
        Dim ldblReatDemandForaP As Double

        ' Tributos
        ' Icms
        Dim ldblBaseIcms As Double
        Dim ldblAliqIcms As Double
        Dim ldblValrIcms As Double
        Dim ldblBaseIcms2 As Double
        Dim ldblAliqIcms2 As Double
        Dim ldblValrIcms2 As Double

        'Pis
        Dim ldblBasePis As Double
        Dim ldblAliqPis As Double
        Dim ldblValrPis As Double

        'Cofins
        Dim ldblBaseCofins As Double
        Dim ldblAliqCofins As Double
        Dim ldblValrCofins As Double

        '********************************************
        'Tributação da comercialização dos Livres
        ' Icms
        Dim ldblBaseIcmSt As Double
        Dim ldblAliqIcmSt As Double
        Dim ldblValrIcmSt As Double

        'Pis
        Dim ldblBasePisSt As Double
        Dim ldblAliqPisSt As Double
        Dim ldblValrPisSt As Double

        'Cofins
        Dim ldblBaseCofSt As Double
        Dim ldblAliqCofSt As Double
        Dim ldblValrCofSt As Double

        'Valor da Compra (R$)
        Dim ldblVCompraSt As Double
        Dim lstrReferenSt As String
        Dim ldblVPMedioSt As Double 'preco médio
        Dim ldblVConsumSt As Double 'Consumo
        '********************************************

        'Indicador de Continuidade
        Dim ldblDecMeta As Double
        Dim ldblFecMeta As Double
        Dim ldblDicMeta As Double
        Dim ldblFicMeta As Double
        Dim ldblDmicMet As Double
        Dim ldblDecReal As Double
        Dim ldblFecReal As Double
        Dim ldblDicReal As Double
        Dim ldblFicReal As Double
        Dim ldblDmicRea As Double
        Dim lstrRefICon As String

        'Rentenção Tributária
        'Consumo
        Dim ldblRetPisCons As Double
        Dim ldblRetCofCons As Double
        Dim ldblRetCslCons As Double
        Dim ldblRetIrpCons As Double

        'Demanda
        Dim ldblRetIrpDema As Double
        Dim ldblRetCslDema As Double
        Dim ldblRetCofDema As Double
        Dim ldblRetPisDema As Double

        'Composição da Fatura
        Dim ldblCompEnergia As Double
        Dim ldblCompTransmissao As Double
        Dim ldblCompDistribuicao As Double
        Dim ldblCompEncargosSetoriais As Double

        'Tarifas
        Dim ldblTarDemaPonta As Double
        Dim ldblTarDemaForaP As Double
        Dim ldblTarDUltPonta As Double
        Dim ldblTarDUltForaP As Double
        Dim ldblTarConsPonta As Double
        Dim ldblTarConsForaP As Double
        '----------------------------------
        Dim lstrMensagem As String
        Dim lstrMensAux As String
        Dim lstrMensAux1 As String
        '----------------------------------

        Dim lstrSqlAnd As String

        Dim vlist

        Dim objNf As New entidadeNf
        Dim repositorioNf As New repositorioNf

        Dim objTempFaturaA As New entidadeTempFaturaA
        Dim repositorioTempFaturaA As New repositorioTempFaturaA

        Dim objTempHistFaturaA As New entidadeTempHistFaturaA
        Dim repositorioTempHistFaturaA As New repositorioTempHistFaturaA

        Dim regranegocioRabbitMQ As New regraNegocioRabbitMQ

        Try


            lintTipo(0) = CStr(0)
            lintTipo(1) = CStr(0)
            lintTipo(2) = CStr(0)
            lintTipo(3) = CStr(0)

            lstrMensAux = GetConfig("fatura.mensagem")
            ldblNumNF = Convert.ToDouble(GetConfig("ultima.nf.grupo.a.site"))

            If Len(Trim(lstrMensAux)) = 0 Or lstrMensAux = "-1" Then
                lstrMensAux = String.Empty
            End If

            istrGrupo = "'A'"

            lstrSqlAnd = "  AND FATURAS.NUMNF > " & ldblNumNF

            lstrSqlAnd = lstrSqlAnd & "  AND FATURAS.GRUPO = " & istrGrupo

            objNf.TA = lstrSqlAnd

            vlist = repositorioNf.SelectOthersTables_7(objNf)

            If vlist.Count <> 0 Then

                For Each objNfFor As entidadeNf In vlist


                    llngFaturasConsId = CInt(IIf(IsDBNull(objNfFor.CONS_ID), 0, objNfFor.CONS_ID))

                    ldblFaturasNumNf = CDbl(IIf(IsDBNull(objNfFor.NUMNF), 0, objNfFor.NUMNF))

                    ldblFaturasCfop = CDbl(IIf(IsDBNull(objNfFor.CFOP), 0, objNfFor.CFOP))

                    If Len(ldblFaturasCfop) >= 3 Then
                        ldblFaturasCfop = ldblFaturasCfop / 1000
                    End If

                    lstrFaturasZona = VB6.Format(IIf(IsDBNull(objNfFor.ZONA), "0", objNfFor.ZONA), "000")

                    lstrFaturasLivro = VB6.Format(IIf(IsDBNull(objNfFor.LIVRO), "0", objNfFor.LIVRO), "00")

                    lstrFaturasConta = VB6.Format(IIf(IsDBNull(objNfFor.CONTA), "0", objNfFor.CONTA), "000000")

                    lstrFaturasRota = VB6.Format(IIf(IsDBNull(objNfFor.ROTA), "0", objNfFor.ROTA), "00000000")

                    ldblFaturasValorTot = CDbl(IIf(IsDBNull(objNfFor.VALORTOT), 0, objNfFor.VALORTOT))

                    ldblFaturasValorLiq = CDbl(IIf(IsDBNull(objNfFor.VALORLIQ), 0, objNfFor.VALORLIQ))

                    lstrFaturasCodClas = VB6.Format(IIf(IsDBNull(objNfFor.CODCLAS), "0", objNfFor.CODCLAS), "0000")

                    llngBandeira = BuscaBandeira(CDate("01/" & objNfFor.MESANO), ldteBandeira, lstrFaturasCodClas)

                    ldteFaturasVencimento = CDate(IIf(IsDBNull(objNfFor.DATAVENC), "1900-01-01", objNfFor.DATAVENC))

                    lstrFaturasBanIdent = IIf(IsDBNull(objNfFor.BANIDENT), "", objNfFor.BANIDENT)

                    lstrFaturasMesAno = IIf(IsDBNull(objNfFor.MESANO), "", objNfFor.MESANO)

                    llngFaturasMesAnoRef = CInt(IIf(IsDBNull(objNfFor.MESANO_REF), 0, objNfFor.MESANO_REF))

                    llngFaturasAnoMes_Fat = CInt(IIf(IsDBNull(objNfFor.ANOMES_FAT), 0, objNfFor.ANOMES_FAT))

                    ldteFaturasApresentacao = CDate(IIf(IsDBNull(objNfFor.DATAAPR), "1900-01-01", objNfFor.DATAAPR))

                    ldteFaturasEmissao = CDate(IIf(IsDBNull(objNfFor.DATAEM), "1900-01-01", objNfFor.DATAEM))

                    ldteFaturasProxLeit = CDate(IIf(IsDBNull(objNfFor.DATAPROXLEIT), "1900-01-01", objNfFor.DATAPROXLEIT))

                    ldteFaturasLeitura = CDate(IIf(IsDBNull(objNfFor.DATALEIT), "1900-01-01", objNfFor.DATALEIT))

                    ldteFaturasLeitAnterior = CDate(IIf(IsDBNull(objNfFor.DATALEITANT), "1900-01-01", objNfFor.DATALEITANT))

                    lstrFaturasFase = Trim(IIf(IsDBNull(objNfFor.FASE), "M", objNfFor.FASE))

                    lstrFaturasTa = Trim(IIf(IsDBNull(objNfFor.TA), "01A400", objNfFor.TA))
                    If Mid(lstrFaturasTa, 3, 2) = "A4" Then
                        lintTipo(0) = CStr(1)
                    End If
                    If Mid(lstrFaturasTa, 3, 2) = "AS" Then
                        lintTipo(3) = CStr(1)
                    End If
                    If Mid(lstrFaturasTa, 3, 2) = "AA" Or Mid(lstrFaturasTa, 3, 2) = "AV" Or Mid(lstrFaturasTa, 3, 2) = "AL" Or Mid(lstrFaturasTa, 3, 2) = "AX" Then
                        lintTipo(1) = CStr(1)
                    End If
                    If Microsoft.VisualBasic.Left(lstrFaturasCodClas, 2) = "63" Then
                        lintTipo(2) = CStr(1)
                        'lintTipo(1) = 0
                    End If

                    lstrFaturasTensao = Trim(IIf(IsDBNull(objNfFor.TENSAO), "220", objNfFor.TENSAO))

                    lstrFaturasCodHash = Trim(IIf(IsDBNull(objNfFor.CODHASH), "", objNfFor.CODHASH))

                    lstrFaturasItensSev = Trim(IIf(IsDBNull(objNfFor.ITENSSERV), "", objNfFor.ITENSSERV))

                    lstrFaturasItensImp = Trim(IIf(IsDBNull(objNfFor.ITENSIMP), "", objNfFor.ITENSIMP))

                    llngFaturasNsu = CInt(IIf(IsDBNull(objNfFor.NSU), "0", objNfFor.NSU))

                    lstrFaturasMensagemBandeira = Trim(IIf(IsDBNull(objNfFor.MENSAGEM_BANDEIRA), "", objNfFor.MENSAGEM_BANDEIRA))

                    lintFaturasLivreVerde = CShort(IIf(IsDBNull(objNfFor.LIVRE_VERDE), 0, objNfFor.LIVRE_VERDE))

                    lintFaturasParcCativo = CShort(IIf(IsDBNull(objNfFor.PARCIALMENTE_CATIVO), 0, objNfFor.PARCIALMENTE_CATIVO))

                    lstrFaturasCodBarra = Trim(IIf(IsDBNull(objNfFor.CODBARRA), "", objNfFor.CODBARRA))

                    lstrFaturasDvCodBarra = Trim(IIf(IsDBNull(objNfFor.DVCODBARRA), "", objNfFor.DVCODBARRA))

                    lstrClasseDescricao = Trim(IIf(IsDBNull(objNfFor.entidadeCLASSE.DESCRICAO), "", objNfFor.entidadeCLASSE.DESCRICAO))

                    lblnFaturaPeriodoTeste = ((CShort(IIf(IsDBNull(objNfFor.PERIODO_TESTE), 0, objNfFor.PERIODO_TESTE))) = 1)

                    lstrUnidaCpfCnpj = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CPF_CNPJ), "", objNfFor.entidadeUCFATURAMENTO.CPF_CNPJ))

                    lstrUnidaInsc = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.INSC), "", objNfFor.entidadeUCFATURAMENTO.INSC))

                    lstrUnidaRg = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.RG), "", objNfFor.entidadeUCFATURAMENTO.RG))

                    lstrUnidaAgenc = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.AGENC), "", objNfFor.entidadeUCFATURAMENTO.AGENC))

                    lstrUnidaCC = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CC), "", objNfFor.entidadeUCFATURAMENTO.CC))

                    lstrUnidaNome = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.NOME), "", objNfFor.entidadeUCFATURAMENTO.NOME))

                    lstrUnidaCidade = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CIDADE), "", objNfFor.entidadeUCFATURAMENTO.CIDADE))

                    lstrUnidaDistrito = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.DISTRITO), "", objNfFor.entidadeUCFATURAMENTO.DISTRITO))

                    lstrUnidaBairro = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.BAIRRO), "", objNfFor.entidadeUCFATURAMENTO.BAIRRO))

                    lstrUnidaEnd = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.END), "", objNfFor.entidadeUCFATURAMENTO.END))

                    lstrUnidaNumero = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.NUMERO), "", objNfFor.entidadeUCFATURAMENTO.NUMERO))

                    lstrUnidaComplement = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.COMPLEMENT), "", objNfFor.entidadeUCFATURAMENTO.COMPLEMENT))

                    lstrUnidaCep = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CEP), "", objNfFor.entidadeUCFATURAMENTO.CEP))

                    lstrUnidaUf = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.UF), "", objNfFor.entidadeUCFATURAMENTO.UF))

                    lstrUnidaLote = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.LOTE), "", objNfFor.entidadeUCFATURAMENTO.LOTE))

                    lstrUnidaQuadra = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.QUADRA), "", objNfFor.entidadeUCFATURAMENTO.QUADRA))

                    lstrUnidaCidEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CID_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.CID_ENTREGA))

                    lstrUnidaDisEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.DIS_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.DIS_ENTREGA))

                    lstrUnidaBaiEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.BAI_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.BAI_ENTREGA))

                    lstrUnidaEndEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.END_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.END_ENTREGA))

                    lstrUnidaNumEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.NUM_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.NUM_ENTREGA))

                    lstrUnidaComplEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.COMPL_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.COMPL_ENTREGA))

                    lstrUnidaCepEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CEP_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.CEP_ENTREGA))

                    lstrUnidaUfEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.UF_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.UF_ENTREGA))

                    lstrUnidaLotEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.LOT_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.LOT_ENTREGA))

                    lstrUnidaQuaEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.QUA_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.QUA_ENTREGA))

                    lstrUnidaGrupo = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.GRUPO), "", objNfFor.entidadeUCFATURAMENTO.GRUPO))

                    ldblUnidaConstDemanda = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_KW_P), "0", objNfFor.entidadeUCFATURAMENTO.CONST_KW_P))

                    ldblUnidaConstConsFp = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_KWH_FP), "0", objNfFor.entidadeUCFATURAMENTO.CONST_KWH_FP))

                    ldblUnidaConstConsP = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_KWH_P), "0", objNfFor.entidadeUCFATURAMENTO.CONST_KWH_P))

                    ldblUnidaConsReativoP = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_KVARH_P), "0", objNfFor.entidadeUCFATURAMENTO.CONST_KVARH_P))

                    ldblUnidaConsReativoFp = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_KVARH_FP), "0", objNfFor.entidadeUCFATURAMENTO.CONST_KVARH_FP))

                    ldblUnidaMedidorDemanda = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.MEDKW), "0", objNfFor.entidadeUCFATURAMENTO.MEDKW))

                    ldblUnidaMedidorReativo = CDbl(IIf(IsDBNull(IIf(String.IsNullOrEmpty(objNfFor.entidadeUCFATURAMENTO.MEDKVARK), "0", objNfFor.entidadeUCFATURAMENTO.MEDKVARK)), "0", IIf(String.IsNullOrEmpty(objNfFor.entidadeUCFATURAMENTO.MEDKVARK), "0", objNfFor.entidadeUCFATURAMENTO.MEDKVARK)))

                    ldblUnidaMedidorConsumo = CDbl(IIf(IsDBNull(IIf(String.IsNullOrEmpty(objNfFor.entidadeUCFATURAMENTO.ELETR), "0", objNfFor.entidadeUCFATURAMENTO.ELETR)), "0", IIf(String.IsNullOrEmpty(objNfFor.entidadeUCFATURAMENTO.ELETR), "0", objNfFor.entidadeUCFATURAMENTO.ELETR)))

                    ldblUnidaDemContrPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010020")
                    ldblUnidaDemAnteriorContrPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010030")
                    If ldblUnidaDemContrPonta = 0 Then

                        ldblUnidaDemContrPonta = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.DEM_CONTR_PONTA), "0", objNfFor.entidadeUCFATURAMENTO.DEM_CONTR_PONTA))
                    End If
                    ldblUnidaDemContrFp = BuscaVlrItem(lstrFaturasItensSev, "0302010024")
                    ldblUnidaDemAnteriorContrFp = BuscaVlrItem(lstrFaturasItensSev, "0302010034")
                    If ldblUnidaDemContrFp = 0 Then

                        ldblUnidaDemContrFp = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.DEM_CONTR_FP), "0", objNfFor.entidadeUCFATURAMENTO.DEM_CONTR_FP))
                    End If

                    ldblUnidaConstReativo = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_KVARH), "0", objNfFor.entidadeUCFATURAMENTO.CONST_KVARH))

                    ldblUnidaConstConsumo = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_CONSUMO), "0", objNfFor.entidadeUCFATURAMENTO.CONST_CONSUMO))

                    ldblUnidaConstDemandaFp = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONST_KW_FP), "0", objNfFor.entidadeUCFATURAMENTO.CONST_KW_FP))

                    If Mid(lstrFaturasTa, 3, 2) = "A4" Or Mid(lstrFaturasTa, 3, 2) = "AS" Then
                        ldblUnidaDemandaContr = BuscaVlrItem(lstrFaturasItensSev, "0302010016")
                    End If

                    If ldblUnidaDemandaContr = 0 Then

                        ldblUnidaDemandaContr = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.DEMANDA_CONTR), "0", objNfFor.entidadeUCFATURAMENTO.DEMANDA_CONTR))
                    End If

                    lintSequenciaFaturas = Convert.ToInt32(Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.SEQUENCIA), "0", objNfFor.entidadeUCFATURAMENTO.SEQUENCIA)))

                    ldblUnidaCarga = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CARGA), "0", objNfFor.entidadeUCFATURAMENTO.CARGA))

                    ldblUnidaFinal = CDbl(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.FINAL), "0", objNfFor.entidadeUCFATURAMENTO.FINAL))
                    'lstrMesAno = IIf(IsNull(objNfFor.contratos_referencia), "1900-01-01", objNfFor.contratos_referencia)

                    lstrConsumidorNome = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.NOME), "", objNfFor.entidadeCONSUM.NOME))

                    lstrConsumidorCep = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.CEP), "", objNfFor.entidadeCONSUM.CEP))

                    lstrConsumidorUf = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.UF), "", objNfFor.entidadeCONSUM.UF))

                    lstrConsumidorCgc = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.CGC), "", objNfFor.entidadeCONSUM.CGC))

                    lstrConsumidorInsc = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.INSC), "", objNfFor.entidadeCONSUM.INSC))

                    lstrConsumidorRg = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.RG), "", objNfFor.entidadeCONSUM.RG))
                    'Itens da fatura
                    'Leitura
                    'Reativo Consumo
                    ldblLeitConsReativoPontaAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040015") 'Leitura Reativo na Ponta Anterior
                    ldblLeitConsReativoPontaAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040016") 'Leitura Reativo na Ponta Atual
                    ldblLeitConsReativoForaPAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040017") 'Leitura Reativo Fora da Ponta Anterior
                    ldblLeitConsReativoForaPAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040018") 'Leitura Reativo Fora da Ponta Atual
                    'Demanda
                    ldblLeitDemandaPontaAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040011") 'Leitura Demanda na Ponta Anterior
                    ldblLeitDemandaPontaAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040012") 'Leitura Demanda na Ponta Atual
                    ldblLeitDemandaForaPAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040013") 'Leitura Demanda Fora da Ponta Anterior
                    ldblLeitDemandaForaPAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040014") 'Leitura Demanda Fora da Ponta Atual
                    'Consumo
                    ldblLeitConsumoPontaAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040007") 'Leitura Consumo na Ponta Anterior
                    ldblLeitConsumoPontaAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040008") 'Leitura Consumo na Ponta Atual
                    ldblLeitConsumoForaPAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040009") 'Leitura Consumo Fora da Ponta Anterior
                    ldblLeitConsumoForaPAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040010") 'Leitura Consumo Fora da Ponta Atual
                    'Micro Geração
                    ldblLeitReversoPontaAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040021") 'Leitura Reverso na Ponta Anterior
                    ldblLeitReversoPontaAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040022") 'Leitura Reverso na Ponta Atual
                    ldblLeitReversoForaPAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040023") 'Leitura Reverso Fora da Ponta Anterior
                    ldblLeitReversoForaPAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040024") 'Leitura Reverso Fora da Ponta Atual
                    'Consumo Reservado
                    ldblLeitConsReservadAtual = BuscaVlrItem(lstrFaturasItensSev, "0302040019") 'Leitura do Consumo Reservado Atual
                    ldblLeitConsReservadAnter = BuscaVlrItem(lstrFaturasItensSev, "0302040020") 'Leitura do Consumo Reservado Anterior
                    'Quantidades
                    'Consumo
                    ldblConsMedidoPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010010") ' Consumo Medido Ponta no caso de CCEE
                    ldblConsMedidoForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010011") ' Consumo Medido Fora da Ponta no caso de CCEE

                    ldblConsFaturaPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010010") ' Consumo Faturado na Ponta
                    ldblConsFaturaForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010011") ' Consumo Faturado Fora da Ponta
                    ldblConsContraPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010047") ' Consumo Contratado na Ponta
                    ldblConsContraForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010048") ' Consumo Contratado Fora da Ponta
                    ldblConsMedido = BuscaVlrItem(lstrFaturasItensSev, "0302010008") ' Consumo Medido para o Convencional
                    ldblConsFatura = BuscaVlrItem(lstrFaturasItensSev, "0302010009") ' Consumo Faturado para o Convencional
                    ldblConsReservado = BuscaVlrItem(lstrFaturasItensSev, "0302990044") 'Consumo Reservado Horosazonal
                    'Micro Geração
                    ldblkWhReversoPonta = BuscaVlrItem(lstrFaturasItensSev, "0302012010") ' Reverso na Ponta
                    ldblkWhReversoForaP = BuscaVlrItem(lstrFaturasItensSev, "0302012011") ' Reverso Fora da Ponta
                    ldblkWhReversoResPonta = BuscaVlrItem(lstrFaturasItensSev, "0302013010") ' Reverso Residuo na Ponta
                    ldblkWhReversoResForaP = BuscaVlrItem(lstrFaturasItensSev, "0302013011") ' Reverso Residuo Fora da Ponta

                    'Demanda
                    ldblDemaMedidaPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010019") ' Demanda Medida Ponta
                    ldblDemaMedidaForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010023") ' Demanda Medida Fora da Ponta
                    ldblDemaFaturaPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010021") ' Demanda Faturada Ponta
                    ldblDemaFaturaForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010025") ' Demanda Faturada Fora da Ponta
                    ldblDemaUltrapPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010022") ' Demanda Ultrapassada Ponta
                    ldblDemaUltrapForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010026") ' Demanda Ultrapassada Fora da Ponta
                    ldblDemaMedida = BuscaVlrItem(lstrFaturasItensSev, "0302010015") ' Demanda Medida para o Convencional
                    ldblDemaFatura = BuscaVlrItem(lstrFaturasItensSev, "0302010017") ' Demanda Faturada para o Convencional
                    ldblDemaUltrap = BuscaVlrItem(lstrFaturasItensSev, "0302010018") ' Demanda Ultrapassada para o Convencional
                    'Fator de Potencia Convencional
                    ldblFatorPontencia = BuscaVlrItem(lstrFaturasItensSev, "0302030099")
                    'Reativo Consumo
                    ldblReatConsumPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010013") 'Reativo do Consumo na ponta
                    ldblReatConsumForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010014") 'Reativo do Consumo Fora da ponta
                    ldblReatMedido = BuscaVlrItem(lstrFaturasItensSev, "0302010012") 'Reativo do Consumo para o Convencional
                    'Reativo Demanda
                    ldblReatDemandPonta = BuscaVlrItem(lstrFaturasItensSev, "0302010027") 'Reativo da Demanda na Ponta
                    ldblReatDemandForaP = BuscaVlrItem(lstrFaturasItensSev, "0302010028") 'Reativo da Demanda Fora da Ponta
                    ' Tributos
                    ' Icms
                    ldblBaseIcms = BuscaVlrItem(lstrFaturasItensSev, "0302030001")
                    ldblAliqIcms = BuscaVlrItem(lstrFaturasItensSev, "0302030002")
                    ldblValrIcms = BuscaVlrItem(lstrFaturasItensSev, "0302030009")
                    'Icms2
                    ldblBaseIcms2 = BuscaVlrItem(lstrFaturasItensSev, "0302030003")
                    ldblAliqIcms2 = BuscaVlrItem(lstrFaturasItensSev, "0302030013")
                    ldblValrIcms2 = BuscaVlrItem(lstrFaturasItensSev, "0302030010")
                    'Pis
                    ldblBasePis = BuscaVlrItem(lstrFaturasItensSev, "0302020033")
                    ldblAliqPis = BuscaVlrItem(lstrFaturasItensSev, "40PIS00001")
                    ldblValrPis = BuscaVlrItem(lstrFaturasItensSev, "0302020029")
                    'Cofins
                    ldblBaseCofins = BuscaVlrItem(lstrFaturasItensSev, "0302020034")
                    ldblAliqCofins = BuscaVlrItem(lstrFaturasItensSev, "40COF00001")
                    ldblValrCofins = BuscaVlrItem(lstrFaturasItensSev, "0302020030")
                    '********************************************
                    'Tributação da comercialização dos Livres
                    ' Icms
                    ldblBaseIcmSt = BuscaVlrItem(lstrFaturasItensSev, "0602010001")
                    ldblAliqIcmSt = BuscaVlrItem(lstrFaturasItensSev, "0601020001")
                    ldblValrIcmSt = BuscaVlrItem(lstrFaturasItensSev, "0602020001")
                    'Pis
                    ldblBasePisSt = BuscaVlrItem(lstrFaturasItensSev, "0602010002")
                    ldblAliqPisSt = BuscaVlrItem(lstrFaturasItensSev, "0601020002")
                    ldblValrPisSt = BuscaVlrItem(lstrFaturasItensSev, "0602020002")
                    'Cofins
                    ldblBaseCofSt = BuscaVlrItem(lstrFaturasItensSev, "0602010003")
                    ldblAliqCofSt = BuscaVlrItem(lstrFaturasItensSev, "0601020003")
                    ldblValrCofSt = BuscaVlrItem(lstrFaturasItensSev, "0602020003")
                    'Valor da Compra (R$)
                    ldblVCompraSt = BuscaVlrItem(lstrFaturasItensSev, "0601010001") 'compra
                    ldblVPMedioSt = BuscaVlrItem(lstrFaturasItensSev, "0601010005") 'preco médio
                    ldblVConsumSt = BuscaVlrItem(lstrFaturasItensSev, "0601010006") 'Consumo
                    lstrReferenSt = BuscaRefItem(lstrFaturasItensSev, "0601010004") 'referencia
                    '********************************************
                    'Indicador de Continuidade
                    ldblDecMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080101")
                    ldblFecMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080102")
                    ldblDicMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080103")
                    ldblFicMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080104")
                    ldblDmicMet = BuscaVlrItem(lstrFaturasItensSev, "0302080105")
                    ldblDecReal = BuscaVlrItem(lstrFaturasItensSev, "0302080001")
                    ldblFecReal = BuscaVlrItem(lstrFaturasItensSev, "0302080002")
                    ldblDicReal = BuscaVlrItem(lstrFaturasItensSev, "0302080003")
                    ldblFicReal = BuscaVlrItem(lstrFaturasItensSev, "0302080004")
                    ldblDmicRea = BuscaVlrItem(lstrFaturasItensSev, "0302080005")
                    lstrRefICon = BuscaRefItem(lstrFaturasItensSev, "0302080099")
                    'Rentenção Tributária

                    'Consumo
                    ldblRetPisCons = BuscaVlrItem(lstrFaturasItensSev, "9090000001")
                    ldblRetCofCons = BuscaVlrItem(lstrFaturasItensSev, "9090000002")
                    ldblRetCslCons = BuscaVlrItem(lstrFaturasItensSev, "9090000003")
                    ldblRetIrpCons = BuscaVlrItem(lstrFaturasItensSev, "9090000004")
                    'Demanda
                    ldblRetIrpDema = BuscaVlrItem(lstrFaturasItensSev, "9090000005")
                    ldblRetCslDema = BuscaVlrItem(lstrFaturasItensSev, "9090000006")
                    ldblRetCofDema = BuscaVlrItem(lstrFaturasItensSev, "9090000007")
                    ldblRetPisDema = BuscaVlrItem(lstrFaturasItensSev, "9090000008")
                    'Composição da Fatura
                    ldblCompEnergia = 0
                    ldblCompTransmissao = 0
                    ldblCompDistribuicao = 0
                    ldblCompEncargosSetoriais = 0
                    'ldblCompEnergia = BuscaVlrItem(lstrFaturasItensSev, "0302090001")
                    'ldblCompTransmissao = BuscaVlrItem(lstrFaturasItensSev, "0302090002")
                    'ldblCompDistribuicao = BuscaVlrItem(lstrFaturasItensSev, "0302090003")
                    'ldblCompEncargosSetoriais = BuscaVlrItem(lstrFaturasItensSev, "0302090004")

                    'Tarifas
                    ldblTarDemaPonta = BuscaVlrItem(lstrFaturasItensSev, "01" & Mid(lstrFaturasTa, 3, 2) & "012101")
                    ldblTarDemaForaP = BuscaVlrItem(lstrFaturasItensSev, "01" & Mid(lstrFaturasTa, 3, 2) & "012102")
                    ldblTarDUltPonta = BuscaVlrItem(lstrFaturasItensSev, IIf(Mid(lstrFaturasTa, 3, 2) <> "A4" And Mid(lstrFaturasTa, 3, 2) <> "AS", "01" & Mid(lstrFaturasTa, 3, 2) & "012103", "01" & Mid(lstrFaturasTa, 3, 2) & "012102"))
                    ldblTarDUltForaP = BuscaVlrItem(lstrFaturasItensSev, "01" & Mid(lstrFaturasTa, 3, 2) & "012104")
                    ldblTarConsPonta = BuscaVlrItem(lstrFaturasItensSev, "01" & Mid(lstrFaturasTa, 3, 2) & "011101") 'Seca ou Convencional
                    If ldblTarConsPonta = 0 Then
                        ldblTarConsPonta = BuscaVlrItem(lstrFaturasItensSev, "01" & Mid(lstrFaturasTa, 3, 2) & "011105") 'Úmida
                    End If
                    ldblTarConsForaP = BuscaVlrItem(lstrFaturasItensSev, "01" & Mid(lstrFaturasTa, 3, 2) & "011102") 'Seca ou Convencional
                    If ldblTarConsForaP = 0 Then
                        ldblTarConsForaP = BuscaVlrItem(lstrFaturasItensSev, "01" & Mid(lstrFaturasTa, 3, 2) & "011106") 'Úmida
                    End If



                    'Monta Insert

                    objTempFaturaA.SEGVIA = 0
                    objTempFaturaA.NOMEMAQUINA = vUsuario.LOGIN
                    'DADOS DA FATURA
                    objTempFaturaA.NUMNF = ldblFaturasNumNf
                    objTempFaturaA.CFOP = ldblFaturasCfop
                    objTempFaturaA.ZONA = IIf(String.IsNullOrEmpty(lstrFaturasZona), " ", lstrFaturasZona)
                    objTempFaturaA.LIVRO = IIf(String.IsNullOrEmpty(lstrFaturasLivro), " ", lstrFaturasLivro)
                    objTempFaturaA.CONTA = IIf(String.IsNullOrEmpty(lstrFaturasConta), " ", lstrFaturasConta)
                    objTempFaturaA.ROTA = IIf(String.IsNullOrEmpty(lstrFaturasRota), " ", lstrFaturasRota)
                    objTempFaturaA.VALORTOT = ldblFaturasValorTot
                    objTempFaturaA.VALORLIQ = ldblFaturasValorLiq
                    objTempFaturaA.CODCLAS = IIf(String.IsNullOrEmpty(lstrFaturasCodClas), " ", lstrFaturasCodClas)
                    objTempFaturaA.DATAVENC = VB6.Format(ldteFaturasVencimento, "yyyy-MM-dd")
                    objTempFaturaA.BANCO_FATUR = IIf(String.IsNullOrEmpty(lstrFaturasBanIdent), " ", lstrFaturasBanIdent)
                    objTempFaturaA.MESANO = IIf(String.IsNullOrEmpty(lstrFaturasMesAno), " ", lstrFaturasMesAno)
                    objTempFaturaA.MESANOREF = llngFaturasMesAnoRef
                    objTempFaturaA.ANOMES_FAT = llngFaturasAnoMes_Fat
                    objTempFaturaA.DATAAPR = VB6.Format(ldteFaturasApresentacao, "yyyy-MM-dd")
                    objTempFaturaA.DATAEMISSAO = VB6.Format(ldteFaturasEmissao, "yyyy-MM-dd")
                    objTempFaturaA.DATAPROXLEIT = VB6.Format(ldteFaturasProxLeit, "yyyy-MM-dd")
                    objTempFaturaA.DATALEIT = VB6.Format(ldteFaturasLeitura, "yyyy-MM-dd")
                    objTempFaturaA.DATALEITANT = VB6.Format(ldteFaturasLeitAnterior, "yyyy-MM-dd")
                    objTempFaturaA.FASE = IIf(String.IsNullOrEmpty(lstrFaturasFase), " ", lstrFaturasFase)
                    objTempFaturaA.TA = IIf(String.IsNullOrEmpty(lstrFaturasTa), " ", lstrFaturasTa)
                    objTempFaturaA.TENSAO = IIf(String.IsNullOrEmpty(lstrFaturasTensao), " ", lstrFaturasTensao)
                    objTempFaturaA.CODHASH = IIf(String.IsNullOrEmpty(lstrFaturasCodHash), " ", lstrFaturasCodHash)
                    objTempFaturaA.CODBARRA = IIf(String.IsNullOrEmpty(lstrFaturasCodBarra), " ", lstrFaturasCodBarra)
                    objTempFaturaA.DVCODBARRA = IIf(String.IsNullOrEmpty(lstrFaturasDvCodBarra), " ", lstrFaturasDvCodBarra)
                    objTempFaturaA.DESCLASSE = IIf(String.IsNullOrEmpty(lstrClasseDescricao), " ", lstrClasseDescricao)

                    'DADOS DA UNIDADE
                    objTempFaturaA.CGC = IIf(String.IsNullOrEmpty(lstrUnidaCpfCnpj), " ", lstrUnidaCpfCnpj)
                    objTempFaturaA.INSC = IIf(String.IsNullOrEmpty(lstrUnidaInsc), " ", lstrUnidaInsc)
                    objTempFaturaA.RG = IIf(String.IsNullOrEmpty(lstrUnidaRg), " ", lstrUnidaRg)
                    objTempFaturaA.AGENC = IIf(String.IsNullOrEmpty(lstrUnidaAgenc), " ", lstrUnidaAgenc)
                    objTempFaturaA.CC = IIf(String.IsNullOrEmpty(lstrUnidaCC), " ", lstrUnidaCC)
                    objTempFaturaA.NOMECONS = IIf(String.IsNullOrEmpty(lstrUnidaNome), " ", lstrUnidaNome)
                    objTempFaturaA.CIDADE = IIf(String.IsNullOrEmpty(lstrUnidaCidade), " ", lstrUnidaCidade)
                    objTempFaturaA.DISTRITO = IIf(String.IsNullOrEmpty(lstrUnidaDistrito), " ", lstrUnidaDistrito)
                    objTempFaturaA.BAIRRO = IIf(String.IsNullOrEmpty(lstrUnidaBairro), " ", lstrUnidaBairro)
                    objTempFaturaA.END = IIf(String.IsNullOrEmpty(lstrUnidaEnd), " ", lstrUnidaEnd)
                    objTempFaturaA.NUMERO = IIf(String.IsNullOrEmpty(lstrUnidaNumero), " ", lstrUnidaNumero)
                    objTempFaturaA.COMPLEMENT = IIf(String.IsNullOrEmpty(lstrUnidaComplement), " ", lstrUnidaComplement)
                    objTempFaturaA.CEP = IIf(String.IsNullOrEmpty(lstrUnidaCep), " ", lstrUnidaCep)
                    objTempFaturaA.UF = IIf(String.IsNullOrEmpty(lstrUnidaUf), " ", lstrUnidaUf)
                    objTempFaturaA.QUADRA = IIf(String.IsNullOrEmpty(lstrUnidaQuadra), " ", lstrUnidaQuadra)
                    objTempFaturaA.LOTE = IIf(String.IsNullOrEmpty(lstrUnidaLote), " ", lstrUnidaLote)
                    objTempFaturaA.CID_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaCidEntrega), " ", lstrUnidaCidEntrega)
                    objTempFaturaA.DIS_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaDisEntrega), " ", lstrUnidaDisEntrega)
                    objTempFaturaA.BAI_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaBaiEntrega), " ", lstrUnidaBaiEntrega)
                    objTempFaturaA.END_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaEndEntrega), " ", lstrUnidaEndEntrega)
                    objTempFaturaA.NUM_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaNumEntrega), " ", lstrUnidaNumEntrega)
                    objTempFaturaA.COMPL_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaComplEntrega), " ", lstrUnidaComplEntrega)
                    objTempFaturaA.CEP_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaCepEntrega), " ", lstrUnidaCepEntrega)
                    objTempFaturaA.UF_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaUfEntrega), " ", lstrUnidaUfEntrega)
                    objTempFaturaA.QUA_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaQuaEntrega), " ", lstrUnidaQuaEntrega)
                    objTempFaturaA.LOT_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidaLotEntrega), " ", lstrUnidaLotEntrega)
                    objTempFaturaA.GRUPO = IIf(String.IsNullOrEmpty(lstrUnidaGrupo), " ", lstrUnidaGrupo)
                    objTempFaturaA.CONST_DEMANDA = ldblUnidaConstDemanda
                    objTempFaturaA.CONST_CONS_FP = ldblUnidaConstConsFp
                    objTempFaturaA.CONST_CONS_P = ldblUnidaConstConsP
                    objTempFaturaA.CONST_KVARH_P = ldblUnidaConsReativoP
                    objTempFaturaA.CONST_KVARH_FP = ldblUnidaConsReativoFp
                    objTempFaturaA.MEDKW = ldblUnidaMedidorDemanda
                    objTempFaturaA.MEDKVARK = ldblUnidaMedidorReativo
                    objTempFaturaA.ELETR = ldblUnidaMedidorConsumo
                    objTempFaturaA.DEMCONTRP = ldblUnidaDemContrPonta
                    objTempFaturaA.DEMCONTRFP = ldblUnidaDemContrFp
                    objTempFaturaA.DEMCONTRPANTERIOR = ldblUnidaDemAnteriorContrPonta
                    objTempFaturaA.DEMCONTRFPANTERIOR = ldblUnidaDemAnteriorContrFp
                    objTempFaturaA.PERIODO_TESTE = IIf(lblnFaturaPeriodoTeste, 1, 0)
                    objTempFaturaA.CONST_KVARH = ldblUnidaConstReativo
                    objTempFaturaA.CONST_KW = ldblUnidaConstDemanda
                    objTempFaturaA.CONST_KWH = ldblUnidaConstConsumo
                    objTempFaturaA.CONST_DEMANDA_FP = ldblUnidaConstDemandaFp
                    objTempFaturaA.KW_CONT = ldblUnidaDemandaContr
                    objTempFaturaA.CARGA = ldblUnidaCarga
                    objTempFaturaA.PERDA = ldblUnidaFinal
                    objTempFaturaA.REFCONS = IIf(String.IsNullOrEmpty(lstrConsumidorNome), " ", lstrConsumidorNome)
                    'LEITURAS
                    'REATIVO CONSUMO
                    objTempFaturaA.LEIT_KVARH_ANT = ldblLeitConsReativoPontaAnter
                    objTempFaturaA.LEIT_KVARH_ATUAL = ldblLeitConsReativoPontaAtual
                    objTempFaturaA.LEITANT_KVARH_P = ldblLeitConsReativoPontaAnter
                    objTempFaturaA.LEIT_KVARH_P = ldblLeitConsReativoPontaAtual
                    objTempFaturaA.LEITANT_KVARH_FP = ldblLeitConsReativoForaPAnter
                    objTempFaturaA.LEIT_KVARH_FP = ldblLeitConsReativoForaPAtual
                    'DEMANDA
                    objTempFaturaA.LEIT_KW_ANT = ldblLeitDemandaPontaAnter
                    objTempFaturaA.LEIT_KW_ATUAL = ldblLeitDemandaPontaAtual
                    objTempFaturaA.LEITANT_KW_P = ldblLeitDemandaPontaAnter
                    objTempFaturaA.LEIT_KW_P = ldblLeitDemandaPontaAtual
                    objTempFaturaA.LEITANT_KW_FP = ldblLeitDemandaForaPAnter
                    objTempFaturaA.LEIT_KW_FP = ldblLeitDemandaForaPAtual
                    'CONSUMO
                    objTempFaturaA.LEIT_KWH_ANT = ldblLeitConsumoPontaAnter
                    objTempFaturaA.LEIT_KWH_ATUAL = ldblLeitConsumoPontaAtual
                    objTempFaturaA.LEITANT_KWH_P = ldblLeitConsumoPontaAnter
                    objTempFaturaA.LEIT_KWH_P = ldblLeitConsumoPontaAtual
                    objTempFaturaA.LEITANT_KWH_FP = ldblLeitConsumoForaPAnter
                    objTempFaturaA.LEIT_KWH_FP = ldblLeitConsumoForaPAtual
                    'MICRO GERAÇÃO
                    objTempFaturaA.LEITANT_REVERSO_P = ldblLeitReversoPontaAnter
                    objTempFaturaA.LEIT_REVERSO_P = ldblLeitReversoPontaAtual
                    objTempFaturaA.LEITANT_REVERSO_FP = ldblLeitReversoForaPAnter
                    objTempFaturaA.LEIT_REVERSO_FP = ldblLeitReversoForaPAtual
                    'CONSUMO RESERVADO
                    objTempFaturaA.LEITANT_KWH_RES = ldblLeitConsReservadAnter
                    objTempFaturaA.LEIT_KWH_RES = ldblLeitConsReservadAtual
                    'QUANTIDADES
                    'CONSUMO
                    objTempFaturaA.CONSMEDIDOP = ldblConsMedidoPonta
                    objTempFaturaA.CONSMEDIDOFP = ldblConsMedidoForaP
                    objTempFaturaA.CONSFATURADOP = ldblConsFaturaPonta
                    objTempFaturaA.CONSFATURADOFP = ldblConsFaturaForaP
                    objTempFaturaA.CONSCONTRP = ldblConsContraPonta
                    objTempFaturaA.CONSCONTRFP = ldblConsContraForaP
                    objTempFaturaA.KWH_MED = ldblConsMedido
                    objTempFaturaA.KWH_FAT = ldblConsFatura
                    objTempFaturaA.CONSRESERVADO = ldblConsReservado
                    'MICRO GERAÇÃO
                    objTempFaturaA.KWH_REVERSO_P = ldblkWhReversoPonta
                    objTempFaturaA.KWH_REVERSO_FP = ldblkWhReversoForaP
                    objTempFaturaA.KWH_REVERSO_RES_P = ldblkWhReversoResPonta
                    objTempFaturaA.KWH_REVERSO_RES_FP = ldblkWhReversoResForaP
                    'DEMANDA
                    objTempFaturaA.DEMMEDIDAP = ldblDemaMedidaPonta
                    objTempFaturaA.DEMMEDIDAFP = ldblDemaMedidaForaP
                    objTempFaturaA.DEMFATURP = ldblDemaFaturaPonta
                    objTempFaturaA.DEMFATURFP = ldblDemaFaturaForaP
                    objTempFaturaA.ULTRAP = ldblDemaUltrapPonta
                    objTempFaturaA.ULTRAFP = ldblDemaUltrapForaP
                    objTempFaturaA.KW_MED = ldblDemaMedida
                    objTempFaturaA.KW_FAT = ldblDemaFatura
                    objTempFaturaA.KW_ULTRA = ldblDemaUltrap
                    'FATOR DE POTENCIA
                    objTempFaturaA.KVARH_FPOT = ldblFatorPontencia
                    'REATIVO CONSUMO
                    objTempFaturaA.FER_P = ldblReatConsumPonta
                    objTempFaturaA.FER_FP = ldblReatConsumForaP
                    objTempFaturaA.KVARH_MED = ldblReatMedido
                    'REATIVO DEMANDA
                    objTempFaturaA.LEIT_KVAR_P = ldblReatDemandPonta
                    objTempFaturaA.LEIT_KVAR_FP = ldblReatDemandForaP
                    'TRIBUTOS
                    'ICMS
                    objTempFaturaA.BASE_ICMS = ldblBaseIcms
                    objTempFaturaA.ALIQ_ICMS = ldblAliqIcms
                    objTempFaturaA.VLR_ICMS = ldblValrIcms
                    objTempFaturaA.BASE_ICMS2 = ldblBaseIcms2
                    objTempFaturaA.ALIQ_ICMS2 = ldblAliqIcms2
                    objTempFaturaA.VLR_ICMS2 = ldblValrIcms2
                    'PIS
                    objTempFaturaA.BASEPIS = ldblBasePis
                    objTempFaturaA.ALIQPIS = ldblAliqPis
                    objTempFaturaA.VLRPIS = ldblValrPis
                    'COFINS
                    objTempFaturaA.BASECOFINS = ldblBaseCofins
                    objTempFaturaA.ALIQCOFINS = ldblAliqCofins
                    objTempFaturaA.VLRCOFINS = ldblValrCofins
                    '********************************************
                    'TRIBUTAÇÃO DA COMERCIALIZAÇÃO DOS LIVRES
                    'ICMS
                    objTempFaturaA.BASE_ICMS_ST = ldblBaseIcmSt
                    objTempFaturaA.ALIQ_ICMS_ST = ldblAliqIcmSt
                    objTempFaturaA.VLR_ICMS_ST = ldblValrIcmSt
                    'PIS
                    objTempFaturaA.BASEPIS_ST = ldblBasePisSt
                    objTempFaturaA.ALIQPIS_ST = ldblAliqPisSt
                    objTempFaturaA.VLRPIS_ST = ldblValrPisSt
                    'COFINS
                    objTempFaturaA.BASECOFINS_ST = ldblBaseCofSt
                    objTempFaturaA.ALIQCOFINS_ST = ldblAliqCofSt
                    objTempFaturaA.VLRCOFINS_ST = ldblValrCofSt
                    'VALOR DA COMPRA (R$)
                    objTempFaturaA.VLRENERGIA_ST = ldblVCompraSt
                    objTempFaturaA.VLRPCMEDIO_ST = ldblVPMedioSt
                    objTempFaturaA.VLRCONSUMO_ST = ldblVConsumSt
                    objTempFaturaA.REFERENCIA_ST = IIf(String.IsNullOrEmpty(lstrReferenSt), " ", lstrReferenSt)
                    '********************************************
                    'INDICADOR DE CONTINUIDADE
                    objTempFaturaA.DEC_META = ldblDecMeta
                    objTempFaturaA.FEC_META = ldblFecMeta
                    objTempFaturaA.DIC_META = ldblDicMeta
                    objTempFaturaA.FIC_META = ldblFicMeta
                    objTempFaturaA.DMIC = ldblDmicMet
                    objTempFaturaA.DEC_REA = ldblDecReal
                    objTempFaturaA.FEC_REA = ldblFecReal
                    objTempFaturaA.DIC_REA = ldblDicReal
                    objTempFaturaA.FIC_REA = ldblFicReal
                    objTempFaturaA.DMIC_REA = ldblDmicRea
                    objTempFaturaA.REFINDICADOR = IIf(String.IsNullOrEmpty(lstrRefICon), " ", lstrRefICon)
                    'RENTENÇÃO TRIBUTÁRIA
                    'CONSUMO
                    objTempFaturaA.RET_PIS = ldblRetPisCons
                    objTempFaturaA.RET_COFINS = ldblRetCofCons
                    objTempFaturaA.RET_CSLL = ldblRetCslCons
                    objTempFaturaA.RET_IRPJC = ldblRetIrpCons
                    'DEMANDA
                    objTempFaturaA.RET_IRPJD = ldblRetIrpDema
                    objTempFaturaA.RET_CSLLD = ldblRetCslDema
                    objTempFaturaA.RET_COFINSD = ldblRetCofDema
                    objTempFaturaA.RET_PISD = ldblRetPisDema
                    'COMPOSIÇÃO DA FATURA
                    objTempFaturaA.COMP_ENERGIA = ldblCompEnergia
                    objTempFaturaA.COMP_TRANSMISSAO = ldblCompTransmissao
                    objTempFaturaA.COMP_DISTRIBUICAO = ldblCompDistribuicao
                    objTempFaturaA.COMP_ENCARGOS_SETORIAIS = ldblCompEncargosSetoriais
                    'TARIFAS
                    objTempFaturaA.TA_DEMP = ldblTarDemaPonta
                    objTempFaturaA.TA_DEMFP = ldblTarDemaForaP
                    objTempFaturaA.TA_ULTRAP = ldblTarDUltPonta
                    objTempFaturaA.TA_ULTRAFP = ldblTarDUltForaP
                    objTempFaturaA.TA_CONSP = ldblTarConsPonta
                    objTempFaturaA.TA_CONSFP = ldblTarConsForaP
                    'MENSAGEM DA FATURA
                    objTempFaturaA.MENSAGEM_BANDEIRA = IIf(String.IsNullOrEmpty(lstrFaturasMensagemBandeira), " ", lstrFaturasMensagemBandeira)
                    objTempFaturaA.BANDEIRA = llngBandeira
                    objTempFaturaA.FRENTEVERSO = 1
                    objTempFaturaA.LIVRE_VERDE = lintFaturasLivreVerde
                    objTempFaturaA.PARC_CATIVO = lintFaturasParcCativo
                    objTempFaturaA.MENSAGEM = IIf(String.IsNullOrEmpty(lstrMensagem), " ", lstrMensagem)
                    objTempFaturaA.ITENSIMP = IIf(String.IsNullOrEmpty(lstrFaturasItensImp), " ", lstrFaturasItensImp)
                    objTempFaturaA.SEQUENCIA = lintSequenciaFaturas


                    regranegocioRabbitMQ.Send(JsonConvert.SerializeObject(objTempFaturaA), "task_enviar_faturas_grupoA")

                Next

                SetConfig("ultima.nf.grupo.a.site", "STRING", Convert.ToString(ldblFaturasNumNf))

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Sub GeraFaturaGrupoB()

        Dim strCriterio As String
        Dim lstrNomeRptFat As String
        Dim ldblFaturasNumNf As Double
        Dim ldblFaturasCfop As Double
        Dim lstrFaturasZona As String
        Dim lstrFaturasLivro As String
        Dim lstrFaturasConta As String
        Dim lstrFaturasRota As String
        Dim llngFaturasUnidId As Integer
        Dim llngFaturasConsId As Integer
        Dim ldblFaturasValorTot As Double
        Dim ldblFaturasValorLiq As Double
        Dim lstrFaturasCodClas As String
        Dim ldteFaturasVencimento As Date
        Dim lstrFaturasBanIdent As String
        Dim lstrFaturasBancoFatur As String
        Dim lstrFaturasMesAno As String
        Dim llngFaturasMesAnoRef As Integer
        Dim ldteFaturasApresentacao As Date
        Dim ldteFaturasEmissao As Date
        Dim ldteFaturasProxLeit As Date
        Dim ldteFaturasLeitura As Date
        Dim ldteFaturasLeitAnterior As Date
        Dim lstrFaturasFase As String
        Dim lstrFaturasTa As String
        Dim lstrFaturasTensao As String
        Dim lstrFaturasCodHash As String
        Dim lstrFaturasItensSev As String
        Dim lstrFaturasItensImp As String
        Dim llngFaturasNsu As Integer
        Dim lstrFaturasCodBarra As String
        Dim lstrFaturasDvCodBarra As String
        Dim lstrClasseDescricao As String
        Dim lstrFaturasNumMed As String
        Dim ldblFaturasConstMed As Double
        Dim lstrFaturasMensagemBandeira As String
        Dim lintSequenciaFaturas As Integer
        Dim istrGrupo As String

        'Dados da Unidade'
        Dim lstrUnidbCpfCnpj As String
        Dim lstrUnidbInsc As String
        Dim lstrUnidbRg As String
        Dim lstrUnidbAgenc As String
        Dim lstrUnidbCC As String
        Dim lstrUnidbNome As String
        Dim lstrUnidbCidade As String
        Dim lstrUnidbDistrito As String
        Dim lstrUnidbBairro As String
        Dim lstrUnidbEnd As String
        Dim lstrUnidbNumero As String
        Dim lstrUnidbComplement As String
        Dim lstrUnidbCep As String
        Dim lstrUnidbUf As String
        Dim lstrUnidbLote As String
        Dim lstrUnidbQuadra As String
        Dim llngUnidbEntrega As Integer
        Dim lstrUnidbCidEntrega As String
        Dim lstrUnidbDisEntrega As String
        Dim lstrUnidbBaiEntrega As String
        Dim lstrUnidbEndEntrega As String
        Dim lstrUnidbNumEntrega As String
        Dim lstrUnidbComplEntrega As String
        Dim lstrUnidbCepEntrega As String
        Dim lstrUnidbUfEntrega As String
        Dim lstrUnidbLotEntrega As String
        Dim lstrUnidbQuaEntrega As String
        Dim lstrUnidbGrupo As String
        Dim lstrUnidbRegiao As String
        Dim llngUnidbUnidId As Integer
        Dim llngUnidbConsId As Integer
        Dim lstrConsumidorNome As String
        Dim lstrConsumidorConjuge As String
        Dim lstrConsumidorCep As String
        Dim lstrConsumidorUf As String
        Dim lstrConsumidorCgc As String
        Dim lstrConsumidorInsc As String
        Dim lstrConsumidorRg As String

        'Leituras e Consumos'
        Dim ldblLeitAtual As Double
        Dim ldblLeitAnter As Double
        Dim ldblConsFatura As Double
        Dim ldblConsMedido As Double
        Dim ldblConsResiduo As Double
        Dim ldblVlrConsumo As Double
        Dim llngDiasConsumo As Integer
        Dim ldblVlrDiario As Double
        Dim ldblConDiario As Double
        Dim ldblMaiorConsumo As Double
        Dim ldblMenorConsumo As Double
        Dim ldblMediaConsumo As Double
        Dim lstrMesAnoMaior As String
        Dim lstrMesAnoMenor As String

        ' Reverso
        Dim lintMicroGeracao As Short
        Dim ldblReversoLAtual As Double
        Dim ldblReversoLAnter As Double
        Dim ldblReversokWh As Double 'Lido
        Dim ldblReversokWhRes As Double 'Residuo
        Dim ldblReversokWhFat As Double 'Faturado

        ' Irrigacao
        Dim ldblIrrigacaoLAtual As Double
        Dim ldblIrrigacaoLAnter As Double
        Dim ldblIrrigacaokWh As Double 'Lido
        Dim ldblIrrigacaokWhFat As Double 'Faturado
        Dim lintIrrigacao As Short 'Irrigante 0 ou 1


        ' Tarifa Branca
        Dim lintTarifaBranca As Short
        Dim ldblTarifaBrancaLAnter_Ponta As Double
        Dim ldblTarifaBrancaLAtual_Ponta As Double
        Dim ldblTarifaBrancaLAnter_Inter As Double
        Dim ldblTarifaBrancaLAtual_Inter As Double
        Dim ldblTarifaBrancaLAnter_ForaP As Double
        Dim ldblTarifaBrancaLAtual_ForaP As Double
        Dim ldblTarifaBrancaResidu_Ponta As Double
        Dim ldblTarifaBrancaResidu_Inter As Double
        Dim ldblTarifaBrancaResidu_ForaP As Double
        Dim ldblTarifaBrancakWh_Ponta As Double
        Dim ldblTarifaBrancakWh_Inter As Double
        Dim ldblTarifaBrancakWh_ForaP As Double

        'Tributos
        'Icms
        Dim ldblBaseIcms1 As Double
        Dim ldblAliqIcms1 As Double
        Dim ldblValrIcms1 As Double
        Dim ldblBaseIcms2 As Double
        Dim ldblAliqIcms2 As Double
        Dim ldblValrIcms2 As Double

        'Pis
        Dim ldblBasePis As Double
        Dim ldblAliqPis As Double
        Dim ldblValrPis As Double

        'Cofins
        Dim ldblBaseCofins As Double
        Dim ldblAliqCofins As Double
        Dim ldblValrCofins As Double

        'Indicador de continuidade
        Dim ldblDecMeta As Double
        Dim ldblDecReal As Double
        Dim ldblFecMeta As Double
        Dim ldblFecReal As Double
        Dim ldblDicMeta As Double
        Dim ldblDicReal As Double
        Dim ldblFicMeta As Double
        Dim ldblFicReal As Double
        Dim ldblDmicMet As Double
        Dim ldblDmicRea As Double
        Dim lstrRefICon As String
        Dim ldblTotNfTrib As Double
        Dim ldblBaseIcmsTotal As Double
        Dim ldblValrIcmsTotal As Double

        'Retenção tributária
        Dim ldblRetIrpj As Double
        Dim ldblRetPis As Double
        Dim ldblRetCsll As Double
        Dim ldblRetCofins As Double

        'Composição da fatura
        Dim ldblCompEnergia As Double
        Dim ldblCompTransmissao As Double
        Dim ldblCompDistribuicao As Double
        Dim ldblCompEncargosSetoriais As Double

        'Outras informações
        Dim lstrOcorrencia As String
        Dim lstrMensagem As String
        Dim lstrMensAux As String
        Dim lstrMensAux1 As String
        Dim lstrMensAux2 As String
        Dim lstrMsg712 As String
        Dim llngConta As Integer
        Dim lstrAuxiliar As String
        Dim lstrAux As String
        Dim ldblNumNF As Double
        Dim ldblNumNfIni As Double
        Dim ldblNumNfFim As Double
        Dim lstrZona As String
        Dim lstrLivro As String
        Dim lstrConta As String
        Dim llngBandeira As Integer
        Dim ldteBandeira As Date
        Dim lstrMesAno As String
        Dim ldteBase As Date
        Dim lintConjugeFatura As Short
        Dim ldblSaldoAcumulado As Double
        Dim sCFOP

        Dim lstrSqlAnd As String

        Dim vlist

        Dim vlist_1

        Dim objGDCompensacao As New entidadeGDCompensacao
        Dim repositorioGDCompensacao As New repositorioGDCompensacao

        Dim objNf As New entidadeNf
        Dim repositorioNf As New repositorioNf

        Dim objNfTransicao As New entidadeNfTransicao
        Dim repositorioNfTransicao As New repositorioNfTransicao

        Dim objTempFatura As New entidadeTempFatura
        Dim repositorioTempFatura As New repositorioTempFatura

        Dim regranegocioRabbitMQ As New regraNegocioRabbitMQ

        Try


            lstrMensAux = GetConfig("fatura.mensagem")

            ldblNumNF = Convert.ToDouble(GetConfig("ultima.nf.grupo.b.site"))

            If Len(Trim(lstrMensAux)) = 0 Or lstrMensAux = "-1" Then
                lstrMensAux = ""
            End If

            istrGrupo = "'B'"

            lstrSqlAnd = "    AND FATURAS.NUMNF > " & ldblNumNF & vbCrLf

            lstrSqlAnd = lstrSqlAnd & "  AND FATURAS.GRUPO = " & istrGrupo

            objNf.TA = lstrSqlAnd

            vlist = repositorioNf.SelectOthersTables_8(objNf)

            If vlist.Count <> 0 Then


                For Each objNfFor As entidadeNf In vlist

                    'Dados da Fatura

                    ldblFaturasNumNf = CDbl(IIf(IsDBNull(objNfFor.NUMNF), 0, objNfFor.NUMNF))

                    ldblFaturasCfop = IIf(IsDBNull(objNfFor.CFOP), 0, objNfFor.CFOP)

                    If Len(ldblFaturasCfop) >= 3 Then
                        ldblFaturasCfop = ldblFaturasCfop / 1000
                    End If

                    lstrFaturasZona = VB6.Format(IIf(IsDBNull(objNfFor.ZONA), "0", objNfFor.ZONA), "000")

                    lstrFaturasLivro = VB6.Format(IIf(IsDBNull(objNfFor.LIVRO), "0", objNfFor.LIVRO), "00")

                    lstrFaturasConta = VB6.Format(IIf(IsDBNull(objNfFor.CONTA), "0", objNfFor.CONTA), "000000")

                    lstrFaturasRota = IIf(IsDBNull(objNfFor.ROTA), "0", objNfFor.ROTA)

                    llngFaturasUnidId = CInt(IIf(IsDBNull(objNfFor.UNID_ID), "0", objNfFor.UNID_ID))

                    llngFaturasConsId = CInt(IIf(IsDBNull(objNfFor.CONS_ID), "0", objNfFor.CONS_ID))

                    ldblFaturasValorTot = CDbl(IIf(IsDBNull(objNfFor.VALORTOT), 0, objNfFor.VALORTOT))

                    ldblFaturasValorLiq = CDbl(IIf(IsDBNull(objNfFor.VALORLIQ), 0, objNfFor.VALORLIQ))

                    lstrFaturasCodClas = VB6.Format(IIf(IsDBNull(objNfFor.CODCLAS), "0", objNfFor.CODCLAS), "0000")

                    llngBandeira = BuscaBandeira(CDate("01/" & objNfFor.MESANO), ldteBandeira, lstrFaturasCodClas)

                    ldteFaturasVencimento = CDate(IIf(IsDBNull(objNfFor.DATAVENC), "1900-01-01", objNfFor.DATAVENC))

                    lstrFaturasBanIdent = IIf(IsDBNull(objNfFor.BANIDENT), "", objNfFor.BANIDENT)

                    lstrFaturasBancoFatur = IIf(IsDBNull(objNfFor.BANCO_FATUR), "", objNfFor.BANCO_FATUR)

                    lstrFaturasMesAno = IIf(IsDBNull(objNfFor.MESANO), "", objNfFor.MESANO)

                    llngFaturasMesAnoRef = CInt(IIf(IsDBNull(objNfFor.MESANO_REF), 0, objNfFor.MESANO_REF))

                    ldteFaturasApresentacao = CDate(IIf(IsDBNull(objNfFor.DATAAPR), "1900-01-01", objNfFor.DATAAPR))

                    ldteFaturasEmissao = CDate(IIf(IsDBNull(objNfFor.DATAEM), "1900-01-01", objNfFor.DATAEM))

                    ldteFaturasProxLeit = CDate(IIf(IsDBNull(objNfFor.DATAPROXLEIT), "1900-01-01", objNfFor.DATAPROXLEIT))

                    ldteFaturasLeitura = CDate(IIf(IsDBNull(objNfFor.DATALEIT), "1900-01-01", objNfFor.DATALEIT))

                    ldteFaturasLeitAnterior = CDate(IIf(IsDBNull(objNfFor.DATALEITANT), "1900-01-01", objNfFor.DATALEITANT))

                    lstrFaturasFase = Trim(IIf(IsDBNull(objNfFor.FASE), "M", objNfFor.FASE))

                    lstrFaturasTa = Trim(IIf(IsDBNull(objNfFor.TA), "01B100", objNfFor.TA))

                    lstrFaturasTensao = Trim(IIf(IsDBNull(objNfFor.TENSAO), "220", objNfFor.TENSAO))

                    lstrFaturasCodHash = Trim(IIf(IsDBNull(objNfFor.CODHASH), "", objNfFor.CODHASH))

                    lstrFaturasItensSev = Trim(IIf(IsDBNull(objNfFor.ITENSSERV), "", objNfFor.ITENSSERV))

                    lstrFaturasItensImp = Trim(IIf(IsDBNull(objNfFor.ITENSIMP), "", objNfFor.ITENSIMP))

                    llngFaturasNsu = CInt(IIf(IsDBNull(objNfFor.NSU), "0", objNfFor.NSU))

                    lstrFaturasMensagemBandeira = Trim(IIf(IsDBNull(objNfFor.MENSAGEM_BANDEIRA), "", objNfFor.MENSAGEM_BANDEIRA))

                    lintIrrigacao = CShort(IIf(IsDBNull(objNfFor.IRRIGACAO_AQUICULTURA), "0", objNfFor.IRRIGACAO_AQUICULTURA))

                    lintMicroGeracao = CShort(IIf(IsDBNull(objNfFor.MICRO_GERACAO), "0", objNfFor.MICRO_GERACAO))

                    lstrMensAux1 = ""

                    lstrFaturasCodBarra = Trim(IIf(IsDBNull(objNfFor.CODBARRA), "", objNfFor.CODBARRA))

                    lstrFaturasDvCodBarra = Trim(IIf(IsDBNull(objNfFor.DVCODBARRA), "", objNfFor.DVCODBARRA))

                    lstrUnidbRegiao = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.REGIAO), "U", objNfFor.entidadeUCFATURAMENTO.REGIAO))

                    lstrClasseDescricao = Trim(IIf(IsDBNull(objNfFor.entidadeCLASSE.DESCRICAO), "", objNfFor.entidadeCLASSE.DESCRICAO)) & IIf(Microsoft.VisualBasic.Left(lstrFaturasCodClas, 1) = "9", IIf(lstrUnidbRegiao = "R", " (RURAL)", ""), "")

                    lstrFaturasNumMed = Trim(IIf(IsDBNull(objNfFor.NUM_MED), "", objNfFor.NUM_MED))

                    ldblFaturasConstMed = CDbl(IIf(IsDBNull(objNfFor.CONST_MED), "0", objNfFor.CONST_MED))
                    'Dados da Unidade

                    lstrUnidbCpfCnpj = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CPF_CNPJ), "", objNfFor.entidadeUCFATURAMENTO.CPF_CNPJ))

                    lstrUnidbInsc = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.INSC), "", objNfFor.entidadeUCFATURAMENTO.INSC))

                    lstrUnidbRg = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.RG), "", objNfFor.entidadeUCFATURAMENTO.RG))

                    lstrUnidbAgenc = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.AGENC), "", objNfFor.entidadeUCFATURAMENTO.AGENC))

                    lstrUnidbCC = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CC), "", objNfFor.entidadeUCFATURAMENTO.CC))

                    lstrUnidbNome = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.NOME), "", objNfFor.entidadeUCFATURAMENTO.NOME))

                    lstrUnidbCidade = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CIDADE), "", objNfFor.entidadeUCFATURAMENTO.CIDADE))

                    lstrUnidbDistrito = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.DISTRITO), "", objNfFor.entidadeUCFATURAMENTO.DISTRITO))

                    lstrUnidbBairro = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.BAIRRO), "", objNfFor.entidadeUCFATURAMENTO.BAIRRO))

                    lstrUnidbEnd = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.END), "", objNfFor.entidadeUCFATURAMENTO.END))

                    lstrUnidbNumero = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.NUMERO), "", objNfFor.entidadeUCFATURAMENTO.NUMERO))

                    lstrUnidbComplement = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.COMPLEMENT), "", objNfFor.entidadeUCFATURAMENTO.COMPLEMENT))

                    lstrUnidbCep = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CEP), "", objNfFor.entidadeUCFATURAMENTO.CEP))

                    lstrUnidbUf = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.UF), "", objNfFor.entidadeUCFATURAMENTO.UF))

                    lstrUnidbLote = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.LOTE), "", objNfFor.entidadeUCFATURAMENTO.LOTE))

                    lstrUnidbQuadra = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.QUADRA), "", objNfFor.entidadeUCFATURAMENTO.QUADRA))

                    llngUnidbEntrega = CInt(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.ENTREGA), "0", objNfFor.entidadeUCFATURAMENTO.ENTREGA))

                    lstrUnidbCidEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CID_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.CID_ENTREGA))

                    lstrUnidbDisEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.DIS_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.DIS_ENTREGA))

                    lstrUnidbBaiEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.BAI_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.BAI_ENTREGA))

                    lstrUnidbEndEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.END_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.END_ENTREGA))

                    lstrUnidbNumEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.NUM_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.NUM_ENTREGA))

                    lstrUnidbComplEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.COMPL_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.COMPL_ENTREGA))

                    lstrUnidbCepEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CEP_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.CEP_ENTREGA))

                    lstrUnidbUfEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.UF_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.UF_ENTREGA))

                    lstrUnidbLotEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.LOT_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.LOT_ENTREGA))

                    lstrUnidbQuaEntrega = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.QUA_ENTREGA), "", objNfFor.entidadeUCFATURAMENTO.QUA_ENTREGA))

                    lstrUnidbGrupo = Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.GRUPO), "", objNfFor.entidadeUCFATURAMENTO.GRUPO))

                    llngUnidbUnidId = CInt(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.UNID_ID), "0", objNfFor.entidadeUCFATURAMENTO.UNID_ID))

                    llngUnidbConsId = CInt(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.CONS_ID), "0", objNfFor.entidadeUCFATURAMENTO.CONS_ID))

                    lstrConsumidorNome = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.NOME), "", objNfFor.entidadeCONSUM.NOME))

                    lstrConsumidorConjuge = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.NOME_CONJUGE), "", objNfFor.entidadeCONSUM.NOME_CONJUGE))

                    lintConjugeFatura = objNfFor.entidadeUCFATURAMENTO.CONJUGE_FATURA

                    lintSequenciaFaturas = Convert.ToInt32(Trim(IIf(IsDBNull(objNfFor.entidadeUCFATURAMENTO.SEQUENCIA), "0", objNfFor.entidadeUCFATURAMENTO.SEQUENCIA)))


                    If lintConjugeFatura = 0 Then
                        lstrConsumidorConjuge = ""
                    End If


                    If lintMicroGeracao = 1 Then

                        objGDCompensacao.ZONA = lstrFaturasZona
                        objGDCompensacao.LIVRO = lstrFaturasLivro
                        objGDCompensacao.CONTA = lstrFaturasConta
                        objGDCompensacao.CONS_ID = llngFaturasConsId
                        objGDCompensacao.UNID_ID = llngFaturasUnidId

                        vlist_1 = repositorioGDCompensacao.Select(objGDCompensacao)

                        If vlist_1.Count <> 0 Then

                            For Each objGDCompensacaoFor As entidadeGDCompensacao In vlist_1
                                ldblSaldoAcumulado = ldblSaldoAcumulado + CDbl(IIf(IsDBNull(objGDCompensacaoFor.SALDO_ATUAL), 0, objGDCompensacaoFor.SALDO_ATUAL))
                            Next

                        Else
                            ldblSaldoAcumulado = Convert.ToDouble("0")
                        End If

                    Else
                        ldblSaldoAcumulado = Convert.ToDouble("0")
                    End If


                    lstrConsumidorCep = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.CEP), "", objNfFor.entidadeCONSUM.CEP))

                    lstrConsumidorUf = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.UF), "", objNfFor.entidadeCONSUM.UF))

                    lstrConsumidorCgc = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.CGC), "", objNfFor.entidadeCONSUM.CGC))

                    lstrConsumidorInsc = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.INSC), "", objNfFor.entidadeCONSUM.INSC))

                    lstrConsumidorRg = Trim(IIf(IsDBNull(objNfFor.entidadeCONSUM.RG), "", objNfFor.entidadeCONSUM.RG))
                    '
                    ' Tarifa Branca

                    lintTarifaBranca = IIf(IsDBNull(objNfFor.TARIFA_BRANCA), 0, objNfFor.TARIFA_BRANCA)

                    ldblTarifaBrancaLAnter_Ponta = BuscaValorItem(lstrFaturasItensSev, "0302990061")
                    ldblTarifaBrancaLAtual_Ponta = BuscaValorItem(lstrFaturasItensSev, "0302990062")
                    ldblTarifaBrancaLAnter_Inter = BuscaValorItem(lstrFaturasItensSev, "0302990063")
                    ldblTarifaBrancaLAtual_Inter = BuscaValorItem(lstrFaturasItensSev, "0302990064")
                    ldblTarifaBrancaLAnter_ForaP = BuscaValorItem(lstrFaturasItensSev, "0302990065")
                    ldblTarifaBrancaLAtual_ForaP = BuscaValorItem(lstrFaturasItensSev, "0302990066")
                    ldblTarifaBrancaResidu_Ponta = BuscaValorItem(lstrFaturasItensSev, "0302990067")
                    ldblTarifaBrancaResidu_Inter = BuscaValorItem(lstrFaturasItensSev, "0302990068")
                    ldblTarifaBrancaResidu_ForaP = BuscaValorItem(lstrFaturasItensSev, "0302990069")
                    ldblTarifaBrancakWh_Ponta = BuscaValorItem(lstrFaturasItensSev, "0302010190")
                    ldblTarifaBrancakWh_Inter = BuscaValorItem(lstrFaturasItensSev, "0302010290")
                    ldblTarifaBrancakWh_ForaP = BuscaValorItem(lstrFaturasItensSev, "0302010390")
                    '
                    'Leituras e Consumos
                    '
                    ldblLeitAtual = BuscaVlrItem(lstrFaturasItensSev, "0302990039") 'leit
                    ldblLeitAnter = BuscaVlrItem(lstrFaturasItensSev, "0302990040") 'leituraant
                    ldblConsFatura = BuscaVlrItem(lstrFaturasItensSev, "030201009") 'consfat
                    ldblConsMedido = BuscaVlrItem(lstrFaturasItensSev, "030201008") 'conslido
                    ldblConsResiduo = BuscaVlrItem(lstrFaturasItensSev, "0302020998") 'consresiduo
                    ldblVlrConsumo = BuscaVlrItem(lstrFaturasItensSev, "030202009") 'valorconsumo

                    If lintTarifaBranca = 1 Then
                        ldblVlrConsumo = ldblVlrConsumo + ldblTarifaBrancakWh_Ponta + ldblTarifaBrancakWh_Inter + ldblTarifaBrancakWh_ForaP
                        ldblConsFatura = ldblConsFatura + ldblTarifaBrancakWh_Ponta + ldblTarifaBrancakWh_Inter + ldblTarifaBrancakWh_ForaP
                    End If

                    llngDiasConsumo = DateDiff(Microsoft.VisualBasic.DateInterval.Day, ldteFaturasLeitAnterior, ldteFaturasLeitura)
                    ldblVlrDiario = Arredondar(ldblVlrConsumo / llngDiasConsumo, 2)
                    ldblConDiario = Arredondar(ldblConsFatura / llngDiasConsumo, 0)
                    '
                    ' Reverso
                    '
                    ldblReversoLAtual = BuscaVlrItem(lstrFaturasItensSev, "0302990049")
                    ldblReversoLAnter = BuscaVlrItem(lstrFaturasItensSev, "0302990050")
                    ldblReversokWhFat = BuscaVlrItem(lstrFaturasItensSev, "0302020995")
                    ldblReversokWhRes = BuscaVlrItem(lstrFaturasItensSev, "0302020997")
                    ldblReversokWh = BuscaVlrItem(lstrFaturasItensSev, "0302020996")
                    '
                    ' Irrigacao
                    '
                    ldblIrrigacaoLAtual = BuscaVlrItem(lstrFaturasItensSev, "0302990051")
                    ldblIrrigacaoLAnter = BuscaVlrItem(lstrFaturasItensSev, "0302990052")
                    ldblIrrigacaokWh = BuscaVlrItem(lstrFaturasItensSev, "0302990053")
                    ldblIrrigacaokWhFat = BuscaVlrItem(lstrFaturasItensSev, "0302990054")
                    '
                    'Tributos
                    'Icms
                    ldblBaseIcms1 = BuscaVlrItem(lstrFaturasItensSev, "0302030001") 'baseicms
                    ldblAliqIcms1 = BuscaVlrItem(lstrFaturasItensSev, "0302030002") 'aliqicms
                    ldblValrIcms1 = BuscaVlrItem(lstrFaturasItensSev, "0302030009") 'icms
                    ldblBaseIcms2 = BuscaVlrItem(lstrFaturasItensSev, "0302030003") 'baseicms1
                    ldblAliqIcms2 = BuscaVlrItem(lstrFaturasItensSev, "0302030013") 'aliqicms1
                    ldblValrIcms2 = BuscaVlrItem(lstrFaturasItensSev, "0302030010") 'icms1
                    'Pis
                    ldblBasePis = BuscaVlrItem(lstrFaturasItensSev, "0302020033") 'basepis
                    ldblAliqPis = BuscaVlrItem(lstrFaturasItensSev, "0302990303") 'aliqpis
                    ldblValrPis = BuscaVlrItem(lstrFaturasItensSev, "0302020029") 'valor pis
                    'Cofins
                    ldblBaseCofins = BuscaVlrItem(lstrFaturasItensSev, "0302020034") 'basecofins
                    ldblAliqCofins = BuscaVlrItem(lstrFaturasItensSev, "0302990304") 'aliqcofins
                    ldblValrCofins = BuscaVlrItem(lstrFaturasItensSev, "0302020030") 'valor cofins
                    'Outros
                    ldblTotNfTrib = (BuscaVlrItem(lstrFaturasItensSev, "030202009") + BuscaVlrItem(lstrFaturasItensSev, "0302030009") + BuscaVlrItem(lstrFaturasItensSev, "0302020029") + BuscaVlrItem(lstrFaturasItensSev, "0302020030")) 'valor total com tributos
                    ldblBaseIcmsTotal = BuscaVlrItem(lstrFaturasItensSev, "0302030015") 'baseicmstotal
                    ldblValrIcmsTotal = BuscaVlrItem(lstrFaturasItensSev, "0302030014") 'vlricmstotal
                    'Indicador de continuidade
                    ldblDecMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080101") 'dec_meta
                    ldblDecReal = BuscaVlrItem(lstrFaturasItensSev, "0302080001") 'dec_rea
                    ldblFecMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080102") 'fec_meta
                    ldblFecReal = BuscaVlrItem(lstrFaturasItensSev, "0302080002") 'fec_rea
                    ldblDicMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080103") 'dic_meta
                    ldblDicReal = BuscaVlrItem(lstrFaturasItensSev, "0302080003") 'dic_rea
                    ldblFicMeta = BuscaVlrItem(lstrFaturasItensSev, "0302080104") 'fic_meta
                    ldblFicReal = BuscaVlrItem(lstrFaturasItensSev, "0302080004") 'fic_rea
                    ldblDmicMet = BuscaVlrItem(lstrFaturasItensSev, "0302080105") 'dmic
                    ldblDmicRea = BuscaVlrItem(lstrFaturasItensSev, "0302080005") 'dmic
                    lstrRefICon = BuscaRefItem(lstrFaturasItensSev, "0302080099") 'refindicador
                    'Retenção tributária
                    ldblRetIrpj = BuscaVlrItem(lstrFaturasItensSev, "9090000004") 'ret_irpj
                    ldblRetPis = BuscaVlrItem(lstrFaturasItensSev, "9090000001") 'ret_pis
                    ldblRetCsll = BuscaVlrItem(lstrFaturasItensSev, "9090000003") 'ret_csll
                    ldblRetCofins = BuscaVlrItem(lstrFaturasItensSev, "9090000002") 'ret_cofins
                    'Composição da fatura
                    ldblCompEnergia = 0 'comp_energia
                    ldblCompTransmissao = 0 'comp_transmissao
                    ldblCompDistribuicao = 0 'comp_distribuicao
                    ldblCompEncargosSetoriais = 0 'comp_encargos_setoriais
                    'ldblCompEnergia = BuscaVlrItem(lstrFaturasItensSev, "0302090001") 'comp_energia
                    'ldblCompTransmissao = BuscaVlrItem(lstrFaturasItensSev, "0302090002") 'comp_transmissao
                    'ldblCompDistribuicao = BuscaVlrItem(lstrFaturasItensSev, "0302090003") 'comp_distribuicao
                    'ldblCompEncargosSetoriais = BuscaVlrItem(lstrFaturasItensSev, "0302090004") 'comp_encargos_setoriais
                    'Outros
                    lstrOcorrencia = BuscaRefItem(lstrFaturasItensSev, "90410000") 'ocorrencias

                    objTempFatura.SEGVIA = 0
                    objTempFatura.NOMEMAQUINA = vUsuario.LOGIN

                    'Dados da Fatura
                    objTempFatura.NUMNF = ldblFaturasNumNf
                    objTempFatura.CFOP = ldblFaturasCfop
                    objTempFatura.ZONA = IIf(String.IsNullOrEmpty(lstrFaturasZona), " ", lstrFaturasZona)
                    objTempFatura.LIVRO = IIf(String.IsNullOrEmpty(lstrFaturasLivro), " ", lstrFaturasLivro)
                    objTempFatura.CONTA = IIf(String.IsNullOrEmpty(lstrFaturasConta), " ", lstrFaturasConta)
                    objTempFatura.CONS_ID = llngFaturasConsId
                    objTempFatura.UNID_ID = llngFaturasUnidId
                    objTempFatura.ROTA = IIf(String.IsNullOrEmpty(lstrFaturasRota), " ", lstrFaturasRota)
                    objTempFatura.VALORTOT = ldblFaturasValorTot
                    objTempFatura.VALORLIQ = ldblFaturasValorLiq
                    objTempFatura.CODCLAS = IIf(String.IsNullOrEmpty(lstrFaturasCodClas), " ", lstrFaturasCodClas)
                    objTempFatura.DATAVENC = VB6.Format(ldteFaturasVencimento, "yyyy-MM-dd")
                    objTempFatura.BANIDENT = IIf(String.IsNullOrEmpty(lstrFaturasBanIdent), " ", lstrFaturasBanIdent)
                    objTempFatura.BANCO_FATUR = IIf(String.IsNullOrEmpty(lstrFaturasBancoFatur), " ", lstrFaturasBancoFatur)
                    objTempFatura.MESANO = IIf(String.IsNullOrEmpty(lstrFaturasMesAno), " ", lstrFaturasMesAno)
                    objTempFatura.MESANOREF = llngFaturasMesAnoRef
                    objTempFatura.DATAAPR = VB6.Format(ldteFaturasApresentacao, "yyyy-MM-dd")
                    objTempFatura.DATAEMISSAO = VB6.Format(ldteFaturasEmissao, "yyyy-MM-dd")
                    objTempFatura.DATAPROXLEIT = VB6.Format(ldteFaturasProxLeit, "yyyy-MM-dd")
                    objTempFatura.DATALEIT = VB6.Format(ldteFaturasLeitura, "yyyy-MM-dd")
                    objTempFatura.DATALEITANT = VB6.Format(ldteFaturasLeitAnterior, "yyyy-MM-dd")
                    objTempFatura.FASE = IIf(String.IsNullOrEmpty(lstrFaturasFase), " ", lstrFaturasFase)
                    objTempFatura.TA = IIf(String.IsNullOrEmpty(lstrFaturasTa), " ", lstrFaturasTa)
                    objTempFatura.TENSAO = IIf(String.IsNullOrEmpty(lstrFaturasTensao), " ", lstrFaturasTensao)
                    objTempFatura.CODHASH = IIf(String.IsNullOrEmpty(lstrFaturasCodHash), " ", lstrFaturasCodHash)
                    objTempFatura.CODBARRA = IIf(String.IsNullOrEmpty(lstrFaturasCodBarra), " ", lstrFaturasCodBarra)
                    objTempFatura.DVCODBARRA = IIf(String.IsNullOrEmpty(lstrFaturasDvCodBarra), " ", lstrFaturasDvCodBarra)
                    objTempFatura.DESCCLASSE = IIf(String.IsNullOrEmpty(lstrClasseDescricao), " ", lstrClasseDescricao)
                    objTempFatura.NUM_MED = IIf(String.IsNullOrEmpty(lstrFaturasNumMed), " ", lstrFaturasNumMed)
                    objTempFatura.CONST_MED = ldblFaturasConstMed

                    'Dados da Unidade
                    objTempFatura.CPF_CNPJ = IIf(llngUnidbConsId <> llngFaturasConsId, lstrConsumidorCgc, lstrUnidbCpfCnpj)
                    objTempFatura.RG_IE = IIf(llngUnidbConsId <> llngFaturasConsId, IIf(Len(lstrConsumidorInsc) > 0, lstrConsumidorInsc, lstrConsumidorRg), IIf(Len(lstrUnidbInsc) > 0, lstrUnidbInsc, lstrUnidbRg))
                    objTempFatura.CGC = IIf(String.IsNullOrEmpty(lstrConsumidorCgc), " ", lstrConsumidorCgc)
                    objTempFatura.INSC = IIf(Len(lstrConsumidorInsc) > 0, lstrConsumidorInsc, lstrConsumidorRg)
                    objTempFatura.AGENC = IIf(String.IsNullOrEmpty(lstrUnidbAgenc), " ", lstrUnidbAgenc)
                    objTempFatura.CC = IIf(String.IsNullOrEmpty(lstrUnidbCC), " ", lstrUnidbCC)
                    objTempFatura.NOMECONS = IIf(String.IsNullOrEmpty(lstrUnidbNome), " ", lstrUnidbNome)
                    objTempFatura.REFCONS = IIf(llngUnidbConsId <> llngFaturasConsId, lstrConsumidorNome, lstrUnidbNome)
                    objTempFatura.NOME_CONJUGE = IIf(String.IsNullOrEmpty(lstrConsumidorConjuge), " ", lstrConsumidorConjuge)
                    objTempFatura.CIDADE = IIf(String.IsNullOrEmpty(lstrUnidbCidade), " ", lstrUnidbCidade)
                    objTempFatura.DISTRITO = IIf(String.IsNullOrEmpty(lstrUnidbDistrito), " ", lstrUnidbDistrito)
                    objTempFatura.BAIRRO = IIf(String.IsNullOrEmpty(lstrUnidbBairro), " ", lstrUnidbBairro)
                    objTempFatura.RUA = IIf(String.IsNullOrEmpty(lstrUnidbEnd), " ", lstrUnidbEnd)
                    objTempFatura.NUMERO = IIf(String.IsNullOrEmpty(lstrUnidbNumero), " ", lstrUnidbNumero)
                    objTempFatura.COMPLEMENT = IIf(String.IsNullOrEmpty(lstrUnidbComplement), " ", lstrUnidbComplement)
                    objTempFatura.CEP = IIf(String.IsNullOrEmpty(lstrUnidbCep), " ", lstrUnidbCep)
                    objTempFatura.UF = IIf(String.IsNullOrEmpty(lstrUnidbUf), " ", lstrUnidbUf)
                    objTempFatura.QUADRA = IIf(String.IsNullOrEmpty(lstrUnidbQuadra), " ", lstrUnidbQuadra)
                    objTempFatura.LOTE = IIf(String.IsNullOrEmpty(lstrUnidbLote), " ", lstrUnidbLote)
                    objTempFatura.ENTREGA = llngUnidbEntrega
                    objTempFatura.CID_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbCidEntrega), " ", lstrUnidbCidEntrega)
                    objTempFatura.DIS_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbDisEntrega), " ", lstrUnidbDisEntrega)
                    objTempFatura.BAI_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbBaiEntrega), " ", lstrUnidbBaiEntrega)
                    objTempFatura.END_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbEndEntrega), " ", lstrUnidbEndEntrega)
                    objTempFatura.NUM_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbNumEntrega), " ", lstrUnidbNumEntrega)
                    objTempFatura.COMPL_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbComplEntrega), " ", lstrUnidbComplEntrega)
                    objTempFatura.CEP_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbCepEntrega), " ", lstrUnidbCepEntrega)
                    objTempFatura.UF_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbUfEntrega), " ", lstrUnidbUfEntrega)
                    objTempFatura.QUA_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbQuaEntrega), " ", lstrUnidbQuaEntrega)
                    objTempFatura.LOT_ENTREGA = IIf(String.IsNullOrEmpty(lstrUnidbLotEntrega), " ", lstrUnidbLotEntrega)
                    objTempFatura.GRUPO = IIf(String.IsNullOrEmpty(lstrUnidbGrupo), " ", lstrUnidbGrupo)

                    'Leituras e Consumos
                    objTempFatura.LEIT = ldblLeitAtual
                    objTempFatura.LEITURAANT = ldblLeitAnter
                    objTempFatura.CONSFATURADO = ldblConsFatura
                    objTempFatura.CONSLIDO = ldblConsMedido
                    objTempFatura.CONSRESIDUO = ldblConsResiduo
                    objTempFatura.VALORCONSUMO = ldblVlrConsumo
                    objTempFatura.DIASCONSUMO = llngDiasConsumo
                    objTempFatura.VLRDIARIO = ldblVlrDiario
                    objTempFatura.MEDIACONSUMODIARIO = ldblConDiario
                    objTempFatura.MAIORCONSUMO = ldblMaiorConsumo
                    objTempFatura.MESMAIORCONSUMO = IIf(String.IsNullOrEmpty(lstrMesAnoMaior), " ", lstrMesAnoMaior)
                    objTempFatura.MENORCONSUMO = ldblMenorConsumo
                    objTempFatura.MESMENORCONSUMO = IIf(String.IsNullOrEmpty(lstrMesAnoMenor), " ", lstrMesAnoMenor)
                    objTempFatura.MEDIACONSUMO3MESES = ldblMediaConsumo

                    ' Reverso
                    objTempFatura.LEIT_REVERSO_ATUAL = ldblReversoLAtual
                    objTempFatura.LEIT_REVERSO_ANTER = ldblReversoLAnter
                    objTempFatura.KWH_REVERSO_FAT = ldblReversokWhFat
                    objTempFatura.KWH_REVERSO_RES = ldblReversokWhRes
                    objTempFatura.KWH_REVERSO_LID = ldblReversokWh
                    objTempFatura.MICRO_GERACAO = lintMicroGeracao

                    ' Irrigacao
                    objTempFatura.LEIT_IRRIGANTE_ATUAL = ldblIrrigacaoLAtual
                    objTempFatura.LEIT_IRRIGANTE_ANTERIOR = ldblIrrigacaoLAnter
                    objTempFatura.KWH_IRRIGANTE_FATURADO = ldblIrrigacaokWhFat
                    objTempFatura.KWH_IRRIGANTE_LIDO = ldblIrrigacaokWh
                    objTempFatura.IRRIGACAO_AQUICULTURA = lintIrrigacao

                    ' Tarifa Branca
                    objTempFatura.TARIFA_BRANCA = lintTarifaBranca
                    objTempFatura.LEITURA_ANTER_PONTA = ldblTarifaBrancaLAnter_Ponta
                    objTempFatura.LEITURA_ATUAL_PONTA = ldblTarifaBrancaLAtual_Ponta
                    objTempFatura.LEITURA_ANTER_INTER = ldblTarifaBrancaLAnter_Inter
                    objTempFatura.LEITURA_ATUAL_INTER = ldblTarifaBrancaLAtual_Inter
                    objTempFatura.LEITURA_ANTER_FORAP = ldblTarifaBrancaLAnter_ForaP
                    objTempFatura.LEITURA_ATUAL_FORAP = ldblTarifaBrancaLAtual_ForaP
                    objTempFatura.RESIDUO_PONTA = ldblTarifaBrancaResidu_Ponta
                    objTempFatura.RESIDUO_INTER = ldblTarifaBrancaResidu_Inter
                    objTempFatura.RESIDUO_FORAP = ldblTarifaBrancaResidu_ForaP
                    objTempFatura.CONSUMO_PONTA = ldblTarifaBrancakWh_Ponta
                    objTempFatura.CONSUMO_INTER = ldblTarifaBrancakWh_Inter
                    objTempFatura.CONSUMO_FORAP = ldblTarifaBrancakWh_ForaP

                    ' Tributos
                    ' Icms
                    objTempFatura.BASEICMS = ldblBaseIcms1
                    objTempFatura.ALIQICMS = ldblAliqIcms1
                    objTempFatura.VLRICMS = ldblValrIcms1
                    objTempFatura.BASEICMS1 = ldblBaseIcms2
                    objTempFatura.ALIQICMS1 = ldblAliqIcms2
                    objTempFatura.VLRICMS1 = ldblValrIcms2
                    'Pis                       
                    objTempFatura.BASEPIS = ldblBasePis
                    objTempFatura.ALIQPIS = ldblAliqPis
                    objTempFatura.VLRPIS = ldblValrPis
                    'Cofins                        
                    objTempFatura.BASECOFINS = ldblBaseCofins
                    objTempFatura.ALIQCOFINS = ldblAliqCofins
                    objTempFatura.VLRCOFINS = ldblValrCofins
                    'Outros                        
                    objTempFatura.VLRCONSUTRIB = ldblTotNfTrib
                    objTempFatura.BASEICMSTOTAL = ldblBaseIcmsTotal
                    objTempFatura.VLRICMSTOTAL = ldblValrIcmsTotal

                    'Indicador de Continuidade 
                    objTempFatura.DEC_META = ldblDecMeta
                    objTempFatura.FEC_META = ldblFecMeta
                    objTempFatura.DIC_META = ldblDicMeta
                    objTempFatura.FIC_META = ldblFicMeta
                    objTempFatura.DMIC = ldblDmicMet
                    objTempFatura.DEC_REA = ldblDecReal
                    objTempFatura.FEC_REA = ldblFecReal
                    objTempFatura.DIC_REA = ldblDicReal
                    objTempFatura.FIC_REA = ldblFicReal
                    objTempFatura.DMIC_REA = ldblDmicRea
                    objTempFatura.REFINDICADOR = IIf(String.IsNullOrEmpty(lstrRefICon), " ", lstrRefICon)
                    'Retenção Tributária                        
                    objTempFatura.RET_IRPJ = ldblRetIrpj
                    objTempFatura.RET_PIS = ldblRetPis
                    objTempFatura.RET_CSLL = ldblRetCsll
                    objTempFatura.RET_COFINS = ldblRetCofins
                    'Composição da Fatura                       
                    objTempFatura.COMP_ENERGIA = ldblCompEnergia
                    objTempFatura.COMP_TRANSMISSAO = ldblCompTransmissao
                    objTempFatura.COMP_DISTRIBUICAO = ldblCompDistribuicao
                    objTempFatura.COMP_ENCARGOS_SETORIAIS = ldblCompEncargosSetoriais

                    'Reaviso
                    If gstrReaviso_na_fatura = "S" Then
                        objTempFatura.REAVISO_VECTO = Convert.ToDateTime("01/01/0001")
                        objTempFatura.REAVISO_NUMNF = 0
                        objTempFatura.REAVISO_VALOR = 0
                        objTempFatura.REAVISO_MESANO = String.Empty
                        objTempFatura.REAVISO_IDENTIFICADOR = String.Empty
                        objTempFatura.REAVISO_MENSAGEM = ""
                    Else
                        objTempFatura.REAVISO_VECTO = Convert.ToDateTime("01/01/0001")
                        objTempFatura.REAVISO_NUMNF = 0
                        objTempFatura.REAVISO_VALOR = 0
                        objTempFatura.REAVISO_MESANO = String.Empty
                        objTempFatura.REAVISO_IDENTIFICADOR = String.Empty
                        objTempFatura.REAVISO_MENSAGEM = String.Empty
                    End If

                    'Outros
                    objTempFatura.MENSAGEM = IIf(String.IsNullOrEmpty(lstrMensagem), " ", lstrMensagem)
                    objTempFatura.ITENSIMP = IIf(String.IsNullOrEmpty(lstrFaturasItensImp), " ", lstrFaturasItensImp)
                    objTempFatura.MENSAGEM_BANDEIRA = IIf(String.IsNullOrEmpty(lstrFaturasMensagemBandeira), " ", lstrFaturasMensagemBandeira)
                    objTempFatura.BANDEIRA = llngBandeira
                    objTempFatura.FRENTEVERSO = 1
                    objTempFatura.OCORRENCIA = IIf(String.IsNullOrEmpty(lstrOcorrencia), " ", lstrOcorrencia)
                    objTempFatura.SALDOACUMULADO = ldblSaldoAcumulado
                    objTempFatura.SEQUENCIA = lintSequenciaFaturas

                    regranegocioRabbitMQ.Send(JsonConvert.SerializeObject(objTempFatura), "task_enviar_faturas_grupoB")

                Next

                SetConfig("ultima.nf.grupo.b.site", "STRING", Date.Now.ToShortDateString())

            End If

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub


End Class
