Ir para conteúdo
  • Cadastre-se

Afranio Lucas

Membros
  • Total de ítens

    16
  • Registro em

  • Última visita

Posts postados por Afranio Lucas

  1. Boa tarde senhores,

    Pela limitação dos 10GB do SQL Server, migrei um ERP para PostgreSQL,

    Em tempo em tempo, de forma aleatória o sistema trava e precisa fechar e abrir para voltar a funcionar. (Apenas em rede)

    Servidor: Windows 8

    Banco de dados: postgresql-10.6-1-windows-x64

    Delphi 10.3 com FireDac

     

    Será que existe alguma configuração padrão para se comunicar com o PostgreSQL?

  2. Boa tarde pessoal,

    Estou iniciando o desenvolvimento da MF-e, adquirir o MFE Development Kit da Tanca.

    Fiz toda configuração baseada no post abaixo.

    1. Executo o "MFE Enviar Pagamento" passando um serial e recebo o IdPagamento xxx.

    2. Informo o serial no http://simuladorposceara.azurewebsites.net/Index e confirmo o pagamento.

    3. Toda vez que executo "Verificar Status Validador" vem um retorno "queue item xxx not complete".

    Observação: A pasta "C:\Integrador\Input" não possui nenhum arquivo gerado.

     

    Alguma ideia do que poderia ser?

     

    Obrigado.

  3. Boa noite,

    Apenas um ajuste para quem estiver passando pela "Rejeição: Total da NF difere do somatório dos Valores compõe o valor Total da NF." na hora de "ValidarRegrasdeNegocios".

    Os campos vFCPST e vIPIDevol foram incluídos no somatório dos valores que compõe a valor da NF.

    function NotaFiscal.ValidarRegrasdeNegocios: Boolean;
    var
      Erros: String;
      I: Integer;
      Inicio, Agora: TDateTime;
      fsvTotTrib, fsvBC, fsvICMS, fsvICMSDeson, fsvBCST, fsvST, fsvFCPST, fsvProd, fsvFrete : Currency;
      fsvSeg, fsvDesc, fsvII, fsvIPI, fsIPIDevol, fsvPIS, fsvCOFINS, fsvOutro, fsvServ, fsvNF, fsvTotPag : Currency;
      FaturamentoDireto, NFImportacao : Boolean;
    
      procedure GravaLog(AString: String);
      begin
        //DEBUG
        //Log := Log + FormatDateTime('hh:nn:ss:zzz',Now) + ' - ' + AString + sLineBreak;
      end;
    
      procedure AdicionaErro(const Erro: String);
      begin
        Erros := Erros + Erro + sLineBreak;
      end;
    
    begin
      Inicio := Now;
      Agora := IncMinute(Now,5);  //Aceita uma tolerância de até 5 minutos, devido ao sincronismo de horário do servidor da Empresa e o servidor da SEFAZ.
      GravaLog('Inicio da Validação');
    
      with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do
      begin
        Erros := '';
    
        GravaLog('Validar: 701-versão');
        if NFe.infNFe.Versao < 3.10 then
          AdicionaErro('701-Rejeição: Versão inválida');
    
        GravaLog('Validar 512-Chave de acesso');
        if not ValidarConcatChave then  //A03-10
          AdicionaErro(
            '502-Rejeição: Erro na Chave de Acesso - Campo Id não corresponde à concatenação dos campos correspondentes');
    
        GravaLog('Validar 226-IF');
        if copy(IntToStr(NFe.Emit.EnderEmit.cMun), 1, 2) <>
          IntToStr(Configuracoes.WebServices.UFCodigo) then //B02-10
          AdicionaErro('226-Rejeição: Código da UF do Emitente diverge da UF autorizadora');
    
    //    702-Rejeição: NFC-e não é aceita pela UF do Emitente
    
        GravaLog('Validar: 503-Serie');
        if (NFe.Ide.serie > 899) and  //B07-20
          (NFe.Ide.tpEmis <> teSCAN) then
          AdicionaErro('503-Rejeição: Série utilizada fora da faixa permitida no SCAN (900-999)');
    
        GravaLog('Validar: 703-Data hora');
        if (NFe.Ide.dEmi > Agora) then  //B09-10
          AdicionaErro('703-Rejeição: Data-Hora de Emissão posterior ao horário de recebimento');
    
        GravaLog('Validar: 228-Data Emissão');
        if ((Agora - NFe.Ide.dEmi) > 30) then  //B09-20
          AdicionaErro('228-Rejeição: Data de Emissão muito atrasada');
    
        //GB09.02 - Data de Emissão posterior à 31/03/2011
        //GB09.03 - Data de Recepção posterior à 31/03/2011 e tpAmb (B24) = 2
    
        GravaLog('Validar: 253-Digito Chave');
        if not ValidarChave(NFe.infNFe.ID) then
          AdicionaErro('253-Rejeição: Digito Verificador da chave de acesso composta inválida');
    
        GravaLog('Validar: 270-Digito Municipio Fato Gerador');
        if not ValidarMunicipio(NFe.Ide.cMunFG) then //B12-10
          AdicionaErro('270-Rejeição: Código Município do Fato Gerador: dígito inválido');
    
        GravaLog('Validar: 271-Municipio Fato Gerador diferente');
        if (UFparaCodigo(NFe.Emit.EnderEmit.UF) <> StrToIntDef(
          copy(IntToStr(NFe.Ide.cMunFG), 1, 2), 0)) then//GB12.1
          AdicionaErro('271-Rejeição: Código Município do Fato Gerador: difere da UF do emitente');
    
        GravaLog('Validar: 570-Tipo de Emissão SCAN/SVC');
        if ((NFe.Ide.tpEmis in [teSCAN, teSVCAN, teSVCRS]) and
          (Configuracoes.Geral.FormaEmissao = teNormal)) then  //B22-30
          AdicionaErro(
            '570-Rejeição: Tipo de Emissão 3, 6 ou 7 só é válido nas contingências SCAN/SVC');
    
        GravaLog('Validar: 571-Tipo de Emissão SCAN');
        if ((NFe.Ide.tpEmis <> teSCAN) and (Configuracoes.Geral.FormaEmissao = teSCAN))
        then  //B22-40
          AdicionaErro('571-Rejeição: Tipo de Emissão informado diferente de 3 para contingência SCAN');
    
        GravaLog('Validar: 713-Tipo de Emissão SCAN/SVCRS');
        if ((Configuracoes.Geral.FormaEmissao in [teSVCAN, teSVCRS]) and
          (not (NFe.Ide.tpEmis in [teSVCAN, teSVCRS]))) then  //B22-60
          AdicionaErro('713-Rejeição: Tipo de Emissão diferente de 6 ou 7 para contingência da SVC acessada');
    
        //B23-10
        GravaLog('Validar: 252-Ambiente');
        if (NFe.Ide.tpAmb <> Configuracoes.WebServices.Ambiente) then
          //B24-10
          AdicionaErro('252-Rejeição: Ambiente informado diverge do Ambiente de recebimento '
            + '(Tipo do ambiente da NF-e difere do ambiente do Web Service)');
    
        GravaLog('Validar: 266-Série');
        if (not (NFe.Ide.procEmi in [peAvulsaFisco, peAvulsaContribuinte])) and
          (NFe.Ide.serie > 889) then //B26-10
          AdicionaErro('266-Rejeição: Série utilizada fora da faixa permitida no Web Service (0-889)');
    
        GravaLog('Validar: 451-Processo de emissão');
        if (NFe.Ide.procEmi in [peAvulsaFisco, peAvulsaContribuinte]) and
          (NFe.Ide.serie < 890) and (NFe.Ide.serie > 899) then
          //B26-20
          AdicionaErro('451-Rejeição: Processo de emissão informado inválido');
    
        GravaLog('Validar: 370-Tipo de Emissão');
        if (NFe.Ide.procEmi in [peAvulsaFisco, peAvulsaContribuinte]) and
          (NFe.Ide.tpEmis <> teNormal) then //B26-30
          AdicionaErro('370-Rejeição: Nota Fiscal Avulsa com tipo de emissão inválido');
    
        GravaLog('Validar: 556-Justificativa Entrada');
        if (NFe.Ide.tpEmis = teNormal) and ((NFe.Ide.xJust > '') or
          (NFe.Ide.dhCont <> 0)) then
          //B28-10
          AdicionaErro(
            '556-Justificativa de entrada em contingência não deve ser informada para tipo de emissão normal');
    
        GravaLog('Validar: 557-Justificativa Entrada');
        if (NFe.Ide.tpEmis in [teContingencia, teFSDA, teOffLine]) and
          (NFe.Ide.xJust = '') then //B28-20
          AdicionaErro('557-A Justificativa de entrada em contingência deve ser informada');
    
        GravaLog('Validar: 558-Data de Entrada');
        if (NFe.Ide.dhCont > Agora) then //B28-30
          AdicionaErro('558-Rejeição: Data de entrada em contingência posterior a data de recebimento');
    
        GravaLog('Validar: 559-Data Entrada contingência');
        if (NFe.Ide.dhCont > 0) and ((Agora - NFe.Ide.dhCont) > 30) then //B28-40
          AdicionaErro('559-Rejeição: Data de entrada em contingência muito atrasada');
    
        GravaLog('Validar: 207-CNPJ emitente');
        if not ValidarCNPJ(NFe.Emit.CNPJCPF) then
          AdicionaErro('207-Rejeição: CNPJ do emitente inválido');
    
        GravaLog('Validar: 272-Código Município');
        if not ValidarMunicipio(NFe.Emit.EnderEmit.cMun) then
          AdicionaErro('272-Rejeição: Código Município do Emitente: dígito inválido');
    
        GravaLog('Validar: 273-Código Município difere da UF');
        if (UFparaCodigo(NFe.Emit.EnderEmit.UF) <> StrToIntDef(
          copy(IntToStr(NFe.Emit.EnderEmit.cMun), 1, 2), 0)) then
          AdicionaErro('273-Rejeição: Código Município do Emitente: difere da UF do emitente');
    
        GravaLog('Validar: 229-IE não informada');
        if EstaVazio(NFe.Emit.IE) then
          AdicionaErro('229-Rejeição: IE do emitente não informada');
    
        GravaLog('Validar: 209-IE inválida');
        if not ValidarIE(NFe.Emit.IE,NFe.Emit.EnderEmit.UF) then
          AdicionaErro('209-Rejeição: IE do emitente inválida ');
    
        GravaLog('Validar: 208-CNPJ destinatário');
        if (Length(Trim(OnlyNumber(NFe.Dest.CNPJCPF))) >= 14) and
          not ValidarCNPJ(NFe.Dest.CNPJCPF) then
          AdicionaErro('208-Rejeição: CNPJ do destinatário inválido');
    
        GravaLog('Validar: 513-EX');
        if (NFe.Retirada.UF = 'EX') and
           (NFe.Retirada.cMun <> 9999999) then
          AdicionaErro('513-Rejeição: Código Município do Local de Retirada deve ser 9999999 para UF retirada = "EX"');
    
        GravaLog('Validar: 276-Cod Município Retirada inválido');
        if (NFe.Retirada.UF <> 'EX') and
           NaoEstaVazio(NFe.Retirada.xMun) and
           not ValidarMunicipio(NFe.Retirada.cMun) then
          AdicionaErro('276-Rejeição: Código Município do Local de Retirada: dígito inválido');
    
        GravaLog('Validar: 277-Cod Município Retirada diferente UF');
        if NaoEstaVazio(NFe.Retirada.UF) and
         (NFe.Retirada.cMun > 0)then
        if (UFparaCodigo(NFe.Retirada.UF) <> StrToIntDef(
          copy(IntToStr(NFe.Retirada.cMun), 1, 2), 0)) then
          AdicionaErro('277-Rejeição: Código Município do Local de Retirada: difere da UF do Local de Retirada');
    
        GravaLog('Validar: 515-Cod Município Entrega EX');
        if (NFe.Entrega.UF = 'EX') and
           (NFe.Entrega.cMun <> 9999999) then
          AdicionaErro('515-Rejeição: Código Município do Local de Entrega deve ser 9999999 para UF entrega = "EX"');
    
        GravaLog('Validar: 278-Cod Município Entrega inválido');
        if (NFe.Entrega.UF <> 'EX') and
           NaoEstaVazio(NFe.Entrega.xMun) and
           not ValidarMunicipio(NFe.Entrega.cMun) then
          AdicionaErro('278-Rejeição: Código Município do Local de Entrega: dígito inválido');
    
        GravaLog('Validar: 279-Cod Município Entrega diferente UF');
        if NaoEstaVazio(NFe.Entrega.UF)and
          (NFe.Entrega.cMun > 0) then
        if (UFparaCodigo(NFe.Entrega.UF) <> StrToIntDef(
          copy(IntToStr(NFe.Entrega.cMun), 1, 2), 0)) then
          AdicionaErro('279-Rejeição: Código Município do Local de Entrega: difere da UF do Local de Entrega');
    
        GravaLog('Validar: 542-CNPJ Transportador');
        if NaoEstaVazio(Trim(NFe.Transp.Transporta.CNPJCPF)) and
           (Length(Trim(OnlyNumber(NFe.Transp.Transporta.CNPJCPF))) >= 14) and
           not ValidarCNPJ(NFe.Transp.Transporta.CNPJCPF) then
          AdicionaErro('542-Rejeição: CNPJ do Transportador inválido');
    
        GravaLog('Validar: 543-CPF Transportador');
        if NaoEstaVazio(Trim(NFe.Transp.Transporta.CNPJCPF)) and
           (Length(Trim(OnlyNumber(NFe.Transp.Transporta.CNPJCPF))) <= 11) and
           not ValidarCPF(NFe.Transp.Transporta.CNPJCPF) then
          AdicionaErro('543-Rejeição: CPF do Transportador inválido');
    
        GravaLog('Validar: 559-UF do Transportador');
        if NaoEstaVazio(Trim(NFe.Transp.Transporta.IE)) and
           EstaVazio(Trim(NFe.Transp.Transporta.UF)) then
          AdicionaErro('559-Rejeição: UF do Transportador não informada');
    
        GravaLog('Validar: 544-IE do Transportador');
        if NaoEstaVazio(Trim(NFe.Transp.Transporta.IE)) and
           not ValidarIE(NFe.Transp.Transporta.IE,NFe.Transp.Transporta.UF) then
          AdicionaErro('544-Rejeição: IE do Transportador inválida');
    
        if (NFe.Ide.modelo = 65) then  //Regras válidas apenas para NFC-e - 65
        begin
          GravaLog('Validar: 704-NFCe Data atrasada');
          if (NFe.Ide.dEmi < IncMinute(Agora,-10)) and
            (NFe.Ide.tpEmis in [teNormal, teSCAN, teSVCAN, teSVCRS]) then
            //B09-40
            AdicionaErro('704-Rejeição: NFC-e com Data-Hora de emissão atrasada');
    
          GravaLog('Validar: 705-NFCe Data de entrada/saida');
          if (NFe.Ide.dSaiEnt <> 0) then  //B10-10
            AdicionaErro('705-Rejeição: NFC-e com data de entrada/saída');
    
          GravaLog('Validar: 706-NFCe operação entrada');
          if (NFe.Ide.tpNF = tnEntrada) then  //B11-10
            AdicionaErro('706-Rejeição: NFC-e para operação de entrada');
    
          GravaLog('Validar: 707-NFCe operação interestadual');
          if (NFe.Ide.idDest <> doInterna) then  //B11-10
            AdicionaErro('707-NFC-e para operação interestadual ou com o exterior');
    
          GravaLog('Validar: 709-NFCe formato DANFE');
          if (not (NFe.Ide.tpImp in [tiNFCe, tiMsgEletronica])) then
            //B21-10
            AdicionaErro('709-Rejeição: NFC-e com formato de DANFE inválido');
    
          GravaLog('Validar: 712-NFCe contingência off-line');
          if (NFe.Ide.tpEmis = teOffLine) and
            (AnsiIndexStr(NFe.Emit.EnderEmit.UF, ['SP']) <> -1) then  //B22-20
            AdicionaErro('712-Rejeição: NF-e com contingência off-line');
    
          GravaLog('Validar: 782-NFCe e SCAN');
          if (NFe.Ide.tpEmis = teSCAN) then //B22-50
            AdicionaErro('782-Rejeição: NFC-e não é autorizada pelo SCAN');
    
          GravaLog('Validar: 783-NFCe e SVC');
          if (NFe.Ide.tpEmis in [teSVCAN, teSVCRS]) then  //B22-70
            AdicionaErro('783-Rejeição: NFC-e não é autorizada pela SVC');
    
          GravaLog('Validar: 715-NFCe finalidade');
          if (NFe.Ide.finNFe <> fnNormal) then  //B25-20
            AdicionaErro('715-Rejeição: Rejeição: NFC-e com finalidade inválida');
    
          GravaLog('Validar: 716-NFCe operação');
          if (NFe.Ide.indFinal = cfNao) then //B25a-10
            AdicionaErro('716-Rejeição: NFC-e em operação não destinada a consumidor final');
    
          GravaLog('Validar: 717-NFCe entrega');
          if (not (NFe.Ide.indPres in [pcPresencial, pcEntregaDomicilio])) then
            //B25b-20
            AdicionaErro('717-Rejeição: NFC-e em operação não presencial');
    
          GravaLog('Validar: 785-NFCe entrega e UF');
          if (NFe.Ide.indPres = pcEntregaDomicilio) and
            (AnsiIndexStr(NFe.Emit.EnderEmit.UF, ['XX']) <> -1) then
            //B25b-30  Qual estado não permite entrega a domicílio?
            AdicionaErro('785-Rejeição: NFC-e com entrega a domicílio não permitida pela UF');
    
          GravaLog('Validar: 708-NFCe referenciada');
          if (NFe.Ide.NFref.Count > 0) then
            AdicionaErro('708-Rejeição: NFC-e não pode referenciar documento fiscal');
    
          GravaLog('Validar: 718-NFCe e IE de ST');
          if NaoEstaVazio(Trim(NFe.Emit.IEST)) then
            AdicionaErro('718-Rejeição: NFC-e não deve informar IE de Substituto Tributário');
    
          GravaLog('Validar: 787-NFCe entrega e Identificação');
          if (NFe.Ide.indPres = pcEntregaDomicilio) and
            EstaVazio(Trim(nfe.Entrega.xLgr)) and 
            EstaVazio(Trim(nfe.Dest.EnderDest.xLgr)) then
            AdicionaErro('787-Rejeição: NFC-e de entrega a domicílio sem a identificação do destinatário');
    
          GravaLog('Validar: 789-NFCe e destinatário');
          if (NFe.Dest.indIEDest <> inNaoContribuinte) then
            AdicionaErro('789-Rejeição: NFC-e para destinatário contribuinte de ICMS');
    
          GravaLog('Validar: 729-NFCe IE destinatário');
          if NaoEstaVazio(Trim(NFe.Dest.IE)) then
            AdicionaErro('729-Rejeição: NFC-e com informação da IE do destinatário');
    
          GravaLog('Validar: 730-NFCe e SUFRAMA');
          if NaoEstaVazio(Trim(NFe.Dest.ISUF)) then
            AdicionaErro('730-Rejeição: NFC-e com Inscrição Suframa');
    
          GravaLog('Validar: 753-NFCe e Frete');
          if (NFe.Transp.modFrete <> mfSemFrete) and
             (NFe.Ide.indPres <> pcEntregaDomicilio)then
            AdicionaErro('753-Rejeição: NFC-e com Frete');
    
          GravaLog('Validar: 754-NFCe e dados Transporte');
          if (NFe.Ide.indPres <> pcEntregaDomicilio) and
             ((trim(NFe.Transp.Transporta.CNPJCPF) <> '') or
             (trim(NFe.Transp.Transporta.xNome) <> '') or
             (trim(NFe.Transp.Transporta.IE) <> '') or
             (trim(NFe.Transp.Transporta.xEnder) <> '') or
             (trim(NFe.Transp.Transporta.xMun) <> '') or
             (trim(NFe.Transp.Transporta.UF) <> '')) then
            AdicionaErro('754-Rejeição: NFC-e com dados do Transportador');
    
          GravaLog('Validar: 786-NFCe entrega domicilio e dados Transporte');
          if (NFe.Ide.indPres = pcEntregaDomicilio) and
             ((trim(NFe.Transp.Transporta.CNPJCPF) = '') or
             (trim(NFe.Transp.Transporta.xNome) = '')) then
            AdicionaErro('786-Rejeição: NFC-e de entrega a domicílio sem dados do Transportador');
    
          GravaLog('Validar: 755-NFCe retenção ICMS Transporte');
          if (NFe.Transp.retTransp.vServ > 0) or
             (NFe.Transp.retTransp.vBCRet > 0) or
             (NFe.Transp.retTransp.pICMSRet > 0) or
             (NFe.Transp.retTransp.vICMSRet > 0) or
             (Trim(NFe.Transp.retTransp.CFOP) <> '') or
             (NFe.Transp.retTransp.cMunFG > 0) then
            AdicionaErro('755-Rejeição: NFC-e com dados de Retenção do ICMS no Transporte');
    
          GravaLog('Validar: 756-NFCe dados veiculo Transporte');
          if (Trim(NFe.Transp.veicTransp.placa) <> '') or
             (Trim(NFe.Transp.veicTransp.UF) <> '') or
             (Trim(NFe.Transp.veicTransp.RNTC) <> '') then
            AdicionaErro('756-Rejeição: NFC-e com dados do veículo de Transporte');
    
          GravaLog('Validar: 757-NFCe dados reboque Transporte');
          if NFe.Transp.Reboque.Count > 0 then
            AdicionaErro('757-Rejeição: NFC-e com dados de Reboque do veículo de Transporte');
    
          GravaLog('Validar: 758-NFCe dados vagão Transporte');
          if NaoEstaVazio(Trim(NFe.Transp.vagao)) then
            AdicionaErro('758-Rejeição: NFC-e com dados do Vagão de Transporte');
    
          GravaLog('Validar: 759-NFCe dados Balsa Transporte');
          if NaoEstaVazio(Trim(NFe.Transp.balsa)) then
            AdicionaErro('759-Rejeição: NFC-e com dados da Balsa de Transporte');
    
          GravaLog('Validar: 760-NFCe entrega dados cobrança');
          if (Trim(nfe.Cobr.Fat.nFat) <> '') or
             (NFe.Cobr.Fat.vOrig > 0) or
             (NFe.Cobr.Fat.vDesc > 0) or
             (NFe.Cobr.Fat.vLiq > 0) or
             (NFe.Cobr.Dup.Count > 0) then
            AdicionaErro('760-Rejeição: NFC-e com dados de cobrança (Fatura, Duplicata)');
    
          GravaLog('Validar: 769-NFCe formas pagamento');
          if NFe.pag.Count <= 0 then
            AdicionaErro('769-Rejeição: NFC-e deve possuir o grupo de Formas de Pagamento');
    
          GravaLog('Validar: 762-NFCe dados de compra');
          if Trim(NFe.compra.xNEmp) + Trim(NFe.compra.xPed) + Trim(NFe.compra.xCont) <> '' then
            AdicionaErro('762-Rejeição: NFC-e com dados de compras (Empenho, Pedido, Contrato)');
    
          GravaLog('Validar: 763-NFCe dados cana');
          if not(Trim(NFe.cana.safra) = '') or not(Trim(NFe.cana.ref) = '') or
             (NFe.cana.fordia.Count > 0) or (NFe.cana.deduc.Count > 0) then
            AdicionaErro('763-Rejeição: NFC-e com dados de aquisição de Cana');
    
        end;
    
        if (NFe.Ide.modelo = 55) then  //Regras válidas apenas para NF-e - 55
        begin
          GravaLog('Validar: 504-Saida > 30');
          if ((NFe.Ide.dSaiEnt - Agora) > 30) then  //B10-20  - Facultativo
            AdicionaErro('504-Rejeição: Data de Entrada/Saída posterior ao permitido');
    
          GravaLog('Validar: 505-Saida < 30');
          if (NFe.Ide.dSaiEnt <> 0) and ((Agora - NFe.Ide.dSaiEnt) > 30) then  //B10-30  - Facultativo
            AdicionaErro('505-Rejeição: Data de Entrada/Saída anterior ao permitido');
    
          GravaLog('Validar: 506-Saida < Emissao');
          if (NFe.Ide.dSaiEnt <> 0) and (NFe.Ide.dSaiEnt < NFe.Ide.dEmi) then
            //B10-40  - Facultativo
            AdicionaErro('506-Rejeição: Data de Saída menor que a Data de Emissão');
    
          GravaLog('Validar: 710-Formato DANFE');
          if (NFe.Ide.tpImp in [tiNFCe, tiMsgEletronica]) then  //B21-20
            AdicionaErro('710-Rejeição: NF-e com formato de DANFE inválido');
    
          GravaLog('Validar: 711-NFe off-line');
          if (NFe.Ide.tpEmis = teOffLine) then  //B22-10
            AdicionaErro('711-Rejeição: NF-e com contingência off-line');
    
          GravaLog('Validar: 254-NFe complementar sem referenciada');
          if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count = 0) then  //B25-30
            AdicionaErro('254-Rejeição: NF-e complementar não possui NF referenciada');
    
          GravaLog('Validar: 255-NFe complementar e muitas referenciada');
          if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count > 1) then  //B25-40
            AdicionaErro('255-Rejeição: NF-e complementar possui mais de uma NF referenciada');
    
          GravaLog('Validar: 269-CNPJ Emitente NFe complementar');
          if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count = 1) and
            (((NFe.Ide.NFref.Items[0].RefNF.CNPJ > '') and
            (NFe.Ide.NFref.Items[0].RefNF.CNPJ <> NFe.Emit.CNPJCPF)) or
            ((NFe.Ide.NFref.Items[0].RefNFP.CNPJCPF > '') and
            (NFe.Ide.NFref.Items[0].RefNFP.CNPJCPF <> NFe.Emit.CNPJCPF))) then
            //B25-50
            AdicionaErro(
              '269-Rejeição: CNPJ Emitente da NF Complementar difere do CNPJ da NF Referenciada');
    
          GravaLog('Validar: 678-UF NFe referenciada e complementar');
          if (NFe.Ide.finNFe = fnComplementar) and (NFe.Ide.NFref.Count = 1) and
            //Testa pelo número para saber se TAG foi preenchida
            (((NFe.Ide.NFref.Items[0].RefNF.nNF > 0) and
            (NFe.Ide.NFref.Items[0].RefNF.cUF <> UFparaCodigo(
            NFe.Emit.EnderEmit.UF))) or ((NFe.Ide.NFref.Items[0].RefNFP.nNF > 0) and
            (NFe.Ide.NFref.Items[0].RefNFP.cUF <> UFparaCodigo(
            NFe.Emit.EnderEmit.UF))))
          then  //B25-60 - Facultativo
            AdicionaErro('678-Rejeição: NF referenciada com UF diferente da NF-e complementar');
    
          GravaLog('Validar: 321-NFe devolução sem referenciada');
          if (NFe.Ide.finNFe = fnDevolucao) and (NFe.Ide.NFref.Count = 0) then
            //B25-70
            AdicionaErro('321-Rejeição: NF-e devolução não possui NF referenciada');
    
          GravaLog('Validar: 794-NFe e domicício NFCe');
          if (NFe.Ide.indPres = pcEntregaDomicilio) then //B25b-10
            AdicionaErro('794-Rejeição: NF-e com indicativo de NFC-e com entrega a domicílio');
    
    //      GravaLog('Validar: 719-NFe sem ident. destinatário');
    //      if (NFe.Dest.CNPJCPF = '') and
    //         (NFe.Dest.idEstrangeiro = '') then
    //        AdicionaErro('719-Rejeição: NF-e sem a identificação do destinatário');
    
          GravaLog('Validar: 237-CPF destinatário ');
          if (Trim(OnlyNumber(NFe.Dest.CNPJCPF)) <> EmptyStr) and
            (Length(Trim(OnlyNumber(NFe.Dest.CNPJCPF))) <= 11) and
            not ValidarCPF(NFe.Dest.CNPJCPF) then
            AdicionaErro('237-Rejeição: CPF do destinatário inválido');
    
    //      GravaLog('Validar: 720-idEstrangeiro');
    //      if (nfe.Ide.idDest = doExterior) and
    //         (EstaVazio(Trim(NFe.Dest.idEstrangeiro))) then
    //        AdicionaErro('720-Rejeição: Na operação com Exterior deve ser informada tag idEstrangeiro');
    
          GravaLog('Validar: 721-Op.Interstadual sem CPF/CNPJ');
          if (nfe.Ide.idDest = doInterestadual) and
             (EstaVazio(Trim(NFe.Dest.CNPJCPF))) then
            AdicionaErro('721-Rejeição: Operação interestadual deve informar CNPJ ou CPF');
    
          GravaLog('Validar: 723-Op.interna com idEstrangeiro');
          if (nfe.Ide.idDest = doInterna) and
             (NaoEstaVazio(Trim(NFe.Dest.idEstrangeiro))) and
             (NFe.Ide.indFinal <> cfConsumidorFinal)then
            AdicionaErro('723-Rejeição: Operação interna com idEstrangeiro informado deve ser para consumidor final');
    
          GravaLog('Validar: 724-Nome destinatário');
          if EstaVazio(Trim(NFe.Dest.xNome)) then
            AdicionaErro('724-Rejeição: NF-e sem o nome do destinatário');
    
          GravaLog('Validar: 726-Sem Endereço destinatário');
          if EstaVazio(Trim(NFe.Dest.EnderDest.xLgr)) then
            AdicionaErro('726-Rejeição: NF-e sem a informação de endereço do destinatário');
    
          GravaLog('Validar: 509-EX e município');
          if (NFe.Dest.EnderDest.UF <> 'EX') and
             not ValidarMunicipio(NFe.Dest.EnderDest.cMun) then
            AdicionaErro('509-Rejeição: Informado código de município diferente de "9999999" para operação com o exterior');
    
          GravaLog('Validar: 727-Op exterior e UF');
          if (nfe.Ide.idDest = doExterior) and
             (NFe.Dest.EnderDest.UF <> 'EX') then
            AdicionaErro('727-Rejeição: Operação com Exterior e UF diferente de EX');
    
          GravaLog('Validar: 771-Op.Interstadual e UF EX');
          if (nfe.Ide.idDest = doInterestadual) and
             (NFe.Dest.EnderDest.UF = 'EX') then
            AdicionaErro('771-Rejeição: Operação Interestadual e UF de destino com EX');
    
          GravaLog('Validar: 772-Op.Interstadual e UF igual');
          if (nfe.Ide.idDest = doInterestadual) and
             (NFe.Dest.EnderDest.UF = NFe.Emit.EnderEmit.UF) then
            AdicionaErro('772-Rejeição: Operação Interestadual e UF de destino igual à UF do emitente');
    
          GravaLog('Validar: 773-Op.Interna e UF diferente');
          if (nfe.Ide.idDest = doInterna) and
             (NFe.Dest.EnderDest.UF <> NFe.Emit.EnderEmit.UF) and
             (NFe.Ide.indPres <> pcPresencial) then
            AdicionaErro('773-Rejeição: Operação Interna e UF de destino difere da UF do emitente - não presencial');
    
          GravaLog('Validar: 790-Op.Exterior e Destinatário ICMS');
          if (NFe.Ide.idDest = doExterior) and
             (NFe.Dest.indIEDest <> inNaoContribuinte) then
            AdicionaErro('790-Rejeição: Operação com Exterior para destinatário Contribuinte de ICMS');
    
          if NFe.infNFe.Versao < 4 then
          begin
            GravaLog('Validar: 768-NFe < 4.0 com formas de pagamento');
            if (NFe.pag.Count > 0) then
              AdicionaErro('768-Rejeição: NF-e não deve possuir o grupo de Formas de Pagamento');
          end
          else
          begin
            GravaLog('Validar: 769-NFe >= 4.0 sem formas pagamento');
            if (NFe.pag.Count <= 0) then
              AdicionaErro('769-Rejeição: NF-e deve possuir o grupo de Formas de Pagamento');
          end;
        end;
    
        for I:=0 to NFe.autXML.Count-1 do
        begin
          GravaLog('Validar: 325-'+IntToStr(I)+'-CPF download');
          if (Length(Trim(OnlyNumber(NFe.autXML[I].CNPJCPF))) <= 11) and
            not ValidarCPF(NFe.autXML[I].CNPJCPF) then
            AdicionaErro('325-Rejeição: CPF autorizado para download inválido');
    
          GravaLog('Validar: 323-'+IntToStr(I)+'-CNPJ download');
          if (Length(Trim(OnlyNumber(NFe.autXML[I].CNPJCPF))) > 11) and
            not ValidarCNPJ(NFe.autXML[I].CNPJCPF) then
            AdicionaErro('323-Rejeição: CNPJ autorizado para download inválido');
        end;
    
        fsvTotTrib := 0;
        fsvBC      := 0;
        fsvICMS    := 0;
        fsvICMSDeson    := 0;
        fsvBCST    := 0;
        fsvST      := 0;
        fsvFCPST   := 0;
        fsvProd    := 0;
        fsvFrete   := 0;
        fsvSeg     := 0;
        fsvDesc    := 0;
        fsvII      := 0;
        fsvIPI     := 0;
        fsIPIDevol := 0;
        fsvPIS     := 0;
        fsvCOFINS  := 0;
        fsvOutro   := 0;
        fsvServ    := 0;
        FaturamentoDireto := False;
        NFImportacao := False;
    
        for I:=0 to NFe.Det.Count-1 do
        begin
          with NFe.Det[I] do
          begin
            if Trim(Prod.NCM) <> '00' then
            begin
              // validar NCM completo somente quando não for serviço
              GravaLog('Validar: 777-'+IntToStr(I)+'-NCM info');
              if Length(Trim(Prod.NCM)) < 8 then
                AdicionaErro('777-Rejeição: Obrigatória a informação do NCM completo');
            end;
    
            if (NFe.Ide.modelo = 65) then
            begin
              GravaLog('Validar: 725-'+IntToStr(I)+'-NFCe CFOP invalido');
              if (pos(OnlyNumber(Prod.CFOP), 'XXXX,5101,5102,5103,5104,5115,5401,5403,5405,5653,5656,5667,5933') <= 0)  then
                AdicionaErro('725-Rejeição: NFC-e com CFOP inválido');
    
              GravaLog('Validar: 774-'+IntToStr(I)+'-NFCe indicador Total');
              if (Prod.IndTot = itNaoSomaTotalNFe) then
                AdicionaErro('774-Rejeição: NFC-e com indicador de item não participante do total');
    
              GravaLog('Validar: 736-'+IntToStr(I)+'-NFCe Grupo veiculos novos');
              if (NaoEstaVazio(Prod.veicProd.chassi)) then
                AdicionaErro('736-Rejeição: NFC-e com grupo de Veículos novos');
    
              GravaLog('Validar: 737-'+IntToStr(I)+'-NCM info');
              if (Prod.med.Count > 0) then
                AdicionaErro('737-Rejeição: NFC-e com grupo de Medicamentos');
    
              GravaLog('Validar: 738-'+IntToStr(I)+'-NFCe grupo Armamentos');
              if (Prod.arma.Count > 0) then
                AdicionaErro('738-Rejeição: NFC-e com grupo de Armamentos');
    
              GravaLog('Validar: 348-'+IntToStr(I)+'-NFCe grupo RECOPI');
              if (NaoEstaVazio(Prod.nRECOPI)) then
                AdicionaErro('348-Rejeição: NFC-e com grupo RECOPI');
    
              GravaLog('Validar: 766-'+IntToStr(I)+'-NFCe CST 50');
              if (Imposto.ICMS.CST = cst50) then
                AdicionaErro('766-Rejeição: NFC-e com CST 50-Suspensão');
    
              GravaLog('Validar: 740-'+IntToStr(I)+'-NFCe CST 51');
              if (Imposto.ICMS.CST = cst51) then
                AdicionaErro('740-Rejeição: NFC-e com CST 51-Diferimento');
    
              GravaLog('Validar: 741-'+IntToStr(I)+'-NFCe partilha ICMS');
              if (Imposto.ICMS.CST in [cstPart10,cstPart90]) then
                AdicionaErro('741-Rejeição: NFC-e com Partilha de ICMS entre UF');
    
              GravaLog('Validar: 742-'+IntToStr(I)+'-NFCe grupo IPI');
              if ((Imposto.IPI.cEnq  <> '') or
                  (Imposto.IPI.vBC   <> 0) or
                  (Imposto.IPI.qUnid <> 0) or
                  (Imposto.IPI.vUnid <> 0) or
                  (Imposto.IPI.pIPI  <> 0) or
                  (Imposto.IPI.vIPI  <> 0)) then
                AdicionaErro('742-Rejeição: NFC-e com grupo do IPI');
    
              GravaLog('Validar: 743-'+IntToStr(I)+'-NFCe grupo II');
              if (Imposto.II.vBc > 0) or
                 (Imposto.II.vDespAdu > 0) or
                 (Imposto.II.vII > 0) or
                 (Imposto.II.vIOF > 0) or
                 (Copy(Prod.CFOP,1,1) = '3') then
                AdicionaErro('743-Rejeição: NFC-e com grupo do II');
    
              GravaLog('Validar: 746-'+IntToStr(I)+'-NFCe grupo PIS-ST');
              if (Imposto.PISST.vBc > 0) or
                 (Imposto.PISST.pPis > 0) or
                 (Imposto.PISST.qBCProd > 0) or
                 (Imposto.PISST.vAliqProd > 0) or
                 (Imposto.PISST.vPIS > 0) then
               AdicionaErro('746-Rejeição: NFC-e com grupo do PIS-ST');
    
              GravaLog('Validar: 749-'+IntToStr(I)+'-NFCe grupo COFINS-ST');
              if (Imposto.COFINSST.vBC > 0) or
                 (Imposto.COFINSST.pCOFINS > 0) or
                 (Imposto.COFINSST.qBCProd > 0) or
                 (Imposto.COFINSST.vAliqProd > 0) or
                 (Imposto.COFINSST.vCOFINS > 0) then
                AdicionaErro('749-Rejeição: NFC-e com grupo da COFINS-ST');
            end;
    
            GravaLog('Validar: 528-'+IntToStr(I)+'-ICMS BC e Aliq');
            if (Imposto.ICMS.CST in [cst00,cst10,cst20,cst70]) and
               (NFe.Ide.finNFe = fnNormal) and
    	   (ComparaValor(Imposto.ICMS.vICMS, Imposto.ICMS.vBC * (Imposto.ICMS.pICMS/100), 0.01) <> 0) then
              AdicionaErro('528-Rejeição: Valor do ICMS difere do produto BC e Alíquota');
    
            GravaLog('Validar: 625-'+IntToStr(I)+'-Insc.SUFRAMA');
            if (Imposto.ICMS.motDesICMS = mdiSuframa) and
               (EstaVazio(NFe.Dest.ISUF))then
              AdicionaErro('625-Rejeição: Inscrição SUFRAMA deve ser informada na venda com isenção para ZFM');
    
            GravaLog('Validar: 530-'+IntToStr(I)+'-ISSQN e IM');
            if EstaVazio(NFe.Emit.IM) and
              ((Imposto.ISSQN.vBC > 0) or
               (Imposto.ISSQN.vAliq > 0) or
               (Imposto.ISSQN.vISSQN > 0) or
               (Imposto.ISSQN.cMunFG > 0) or
               (Imposto.ISSQN.cListServ <> '')) then
              AdicionaErro('530-Rejeição: Operação com tributação de ISSQN sem informar a Inscrição Municipal');
    
            GravaLog('Validar: 287-'+IntToStr(I)+'-Cod.Município FG');
            if (Imposto.ISSQN.cMunFG > 0) and
               not ValidarMunicipio(Imposto.ISSQN.cMunFG) then
              AdicionaErro('287-Rejeição: Código Município do FG - ISSQN: dígito inválido');
    
            if Prod.IndTot = itSomaTotalNFe then
            begin
              fsvTotTrib := fsvTotTrib + Imposto.vTotTrib;
              fsvBC      := fsvBC + Imposto.ICMS.vBC;
              fsvICMS    := fsvICMS + Imposto.ICMS.vICMS;
              fsvICMSDeson := fsvICMSDeson + Imposto.ICMS.vICMSDeson;
              fsvBCST    := fsvBCST + Imposto.ICMS.vBCST;
              fsvST      := fsvST + Imposto.ICMS.vICMSST;
              fsvFCPST   := fsvFCPST + Imposto.ICMS.vFCPST;
              fsvFrete   := fsvFrete + Prod.vFrete;
              fsvSeg     := fsvSeg + Prod.vSeg;
              fsvDesc    := fsvDesc + Prod.vDesc;
              fsvII      := fsvII + Imposto.II.vII;
              fsvIPI     := fsvIPI + Imposto.IPI.vIPI;
              fsIPIDevol := fsIPIDevol + vIPIDevol;
              fsvPIS     := fsvPIS + Imposto.PIS.vPIS;
              fsvCOFINS  := fsvCOFINS + Imposto.COFINS.vCOFINS;
              fsvOutro   := fsvOutro + Prod.vOutro;
              fsvServ   := fsvServ + Imposto.ISSQN.vBC; //VERIFICAR
    
              // quando for serviço o produto não soma do total de produtos, quando for nota de ajuste também irá somar
              if (Prod.NCM <> '00') or ((Prod.NCM = '00') and (NFe.Ide.finNFe = fnAjuste)) then
                fsvProd := fsvProd + Prod.vProd;
            end;
    
            if Prod.veicProd.tpOP = toFaturamentoDireto then
              FaturamentoDireto := True;
    
            if Copy(Prod.CFOP,1,1) = '3'then
              NFImportacao := True;
          end;
        end;
    
        if FaturamentoDireto then
          fsvNF := (fsvProd+fsvFrete+fsvSeg+fsvOutro+fsvII+fsvIPI+fsvServ)-(fsvDesc+fsvICMSDeson)
        else
          fsvNF := (fsvProd+fsvST+fsvFCPST+fsvFrete+fsvSeg+fsvOutro+fsvII+fsvIPI+fsIPIDevol+fsvServ)-(fsvDesc+fsvICMSDeson);
    
        GravaLog('Validar: 531-Total BC ICMS');
        if (NFe.Total.ICMSTot.vBC <> fsvBC) then
          AdicionaErro('531-Rejeição: Total da BC ICMS difere do somatório dos itens');
    
        GravaLog('Validar: 532-Total ICMS');
        if (NFe.Total.ICMSTot.vICMS <> fsvICMS) then
          AdicionaErro('532-Rejeição: Total do ICMS difere do somatório dos itens');
    
        GravaLog('Validar: 795-Total ICMS desonerado');
        if (NFe.Total.ICMSTot.vICMSDeson <> fsvICMSDeson) then
          AdicionaErro('795-Rejeição: Total do ICMS desonerado difere do somatório dos itens');
    
        GravaLog('Validar: 533-Total BC ICMS-ST');
        if (NFe.Total.ICMSTot.vBCST <> fsvBCST) then
          AdicionaErro('533-Rejeição: Total da BC ICMS-ST difere do somatório dos itens');
    
        GravaLog('Validar: 534-Total ICMS-ST');
        if (NFe.Total.ICMSTot.vST <> fsvST) then
          AdicionaErro('534-Rejeição: Total do ICMS-ST difere do somatório dos itens');
    
        GravaLog('Validar: 564-Total Produto/Serviço');
        if (NFe.Total.ICMSTot.vProd <> fsvProd) then
          AdicionaErro('564-Rejeição: Total do Produto / Serviço difere do somatório dos itens');
    
        GravaLog('Validar: 535-Total Frete');
        if (NFe.Total.ICMSTot.vFrete <> fsvFrete) then
          AdicionaErro('535-Rejeição: Total do Frete difere do somatório dos itens');
    
        GravaLog('Validar: 536-Total Seguro');
        if (NFe.Total.ICMSTot.vSeg <> fsvSeg) then
          AdicionaErro('536-Rejeição: Total do Seguro difere do somatório dos itens');
    
        GravaLog('Validar: 537-Total Desconto');
        if (NFe.Total.ICMSTot.vDesc <> fsvDesc) then
          AdicionaErro('537-Rejeição: Total do Desconto difere do somatório dos itens');
    
        GravaLog('Validar: 601-Total II');
        if (NFe.Total.ICMSTot.vII <> fsvII) then
          AdicionaErro('601-Rejeição: Total do II difere do somatório dos itens');
    
        GravaLog('Validar: 538-Total IPI');
        if (NFe.Total.ICMSTot.vIPI <> fsvIPI) then
          AdicionaErro('538-Rejeição: Total do IPI difere do somatório dos itens');
    
        GravaLog('Validar: 602-Total PIS');
        if (NFe.Total.ICMSTot.vPIS <> fsvPIS) then
          AdicionaErro('602-Rejeição: Total do PIS difere do somatório dos itens sujeitos ao ICMS');
    
        GravaLog('Validar: 603-Total COFINS');
        if (NFe.Total.ICMSTot.vCOFINS <> fsvCOFINS) then
          AdicionaErro('603-Rejeição: Total da COFINS difere do somatório dos itens sujeitos ao ICMS');
    
        GravaLog('Validar: 604-Total vOutro');
        if (NFe.Total.ICMSTot.vOutro <> fsvOutro) then
          AdicionaErro('604-Rejeição: Total do vOutro difere do somatório dos itens');
    
        GravaLog('Validar: 610-Total NF');
        if not NFImportacao and
           (NFe.Total.ICMSTot.vNF <> fsvNF) then
        begin
          if (NFe.Total.ICMSTot.vNF <> (fsvNF+fsvICMSDeson)) then
            AdicionaErro('610-Rejeição: Total da NF difere do somatório dos Valores compõe o valor Total da NF.');
        end;
    
        GravaLog('Validar: 685-Total Tributos');
        if (NFe.Total.ICMSTot.vTotTrib <> fsvTotTrib) then
          AdicionaErro('685-Rejeição: Total do Valor Aproximado dos Tributos difere do somatório dos itens');
    
        if (NFe.Ide.modelo = 65) and (NFe.infNFe.Versao < 4) then
        begin
          GravaLog('Validar: 767-NFCe soma pagamentos');
          fsvTotPag := 0;
          for I := 0 to NFe.pag.Count-1 do
          begin
            fsvTotPag :=  fsvTotPag + NFe.pag[I].vPag;
          end;
    
          if (NFe.Total.ICMSTot.vNF <> fsvTotPag) then
            AdicionaErro('767-Rejeição: NFC-e com somatório dos pagamentos diferente do total da Nota Fiscal');
        end;
        //TODO: Regrar W01. Total da NF-e / ISSQN
    
      end;
    
      Result := EstaVazio(Erros);
    
      if not Result then
      begin
        Erros := ACBrStr('Erro(s) nas Regras de negócios da nota: '+
                         IntToStr(NFe.Ide.nNF) + sLineBreak +
                         Erros);
      end;
    
      GravaLog('Fim da Validação. Tempo: '+FormatDateTime('hh:nn:ss:zzz', Now - Inicio)+sLineBreak+
               'Erros:' + Erros);
    
      //DEBUG
      //WriteToTXT('c:\temp\Notafiscal.txt', Log);
    
      FErroRegrasdeNegocios := Erros;
    end;

     

    • Curtir 1
  4. Boa noite,

    Caso ajude alguém ...

    Exatamente a algumas horas baixei os fontes mais recentes do ACBr e vi que não estava emitindo NFC-e 4.0 para o Amazonas,

    Encontrei o link abaixo que informava os novos links para a 4.0 e fiz essa pequena alteração no ACBrNFe.pas, com isso conseguir emitir.

    function TACBrNFe.EhAutorizacao( AVersao: TpcnVersaoDF; AModelo: TpcnModeloDF;   AUFCodigo: Integer ): Boolean;

    begin  

      Result := (AVersao >= ve310);  

      if (AModelo = moNFCe) And (AVersao < ve400) then

        Result := not (AUFCodigo in [13]); // AM

    end;

    http://portalnfce.sefaz.am.gov.br/desenvolvedor/enderecos-webservices/

    [NFCe_AM_P]

    NfeAutorizacao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeAutorizacao

    NFeRetAutorizacao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeRetAutorizacao

    NfeConsultaProtocolo_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeConsulta2

    NfeRecepcao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeRecepcao2

    RecepcaoEvento_1.00=https://nfce.sefaz.am.gov.br/nfce-services/services/RecepcaoEvento

    NfeStatusServico_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeStatusServico2

    NfeRetRecepcao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeRetRecepcao2

    NfeInutilizacao_3.10=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeInutilizacao2

    AdministrarCSCNFCe_1.00=https://nfce.sefaz.am.gov.br/nfce-services/services/CscNFCe

    NfeAutorizacao_4.00=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeAutorizacao4

    NFeRetAutorizacao_4.00=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeRetAutorizacao4

    NfeConsultaProtocolo_4.00=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeConsulta4

    NfeInutilizacao_4.00=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeInutilizacao4

    NfeStatusServico_4.00=https://nfce.sefaz.am.gov.br/nfce-services/services/NfeStatusServico4

    RecepcaoEvento_4.00=https://nfce.sefaz.am.gov.br/nfce-services/services/RecepcaoEvento4

    URL-QRCode=http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp

    URL-ConsultaNFCe=http://sistemas.sefaz.am.gov.br/nfceweb/formConsulta.do

    [NFCe_AM_H]

    NfeAutorizacao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeAutorizacao

    NFeRetAutorizacao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeRetAutorizacao

    NfeConsultaProtocolo_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeConsulta2

    NfeRecepcao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeRecepcao2

    RecepcaoEvento_1.00=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/RecepcaoEvento

    NfeStatusServico_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeStatusServico2

    NfeRetRecepcao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeRetRecepcao2

    NfeInutilizacao_3.10=https://homnfce.sefaz.am.gov.br/nfce-services-nac/services/NfeInutilizacao2

    AdministrarCSCNFCe_1.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/CscNFCe

    NfeAutorizacao_4.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/NfeAutorizacao4

    NFeRetAutorizacao_4.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/NfeRetAutorizacao4

    NfeConsultaProtocolo_4.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/NfeConsulta4

    NfeInutilizacao_4.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/NfeInutilizacao4

    NfeStatusServico_4.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/NfeStatusServico4

    RecepcaoEvento_4.00=https://homnfce.sefaz.am.gov.br/nfce-services/services/RecepcaoEvento4

    URL-QRCode=http://homnfce.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp

    URL-ConsultaNFCe=http://homnfce.sefaz.am.gov.br/nfceweb/formConsulta.do

    • Curtir 2
  5. Boa tarde pessoal, 

    Hoje eu atualizei o ACBRNFSe e passou a dar esse erro "Não foi possível carregar o arquivo: <XML>" na hora de assinar o arquivo.

    Olhando o XML percebi que o erro estava gerando por falta de um espaço entre o xmlns:ns3 e xmlns:ns4

    <ns3:EnviarLoteRpsEnvio xmlns:ns3="http://www.ginfes.com.br/servico_enviar_lote_rps_envio_v03.xsd"<Aqui>xmlns:ns4="http://www.ginfes.com.br/tipos_v03.xsd">

    Vi que o espaço foi retirado recentemente no ACBrNFSeWebServices.pas linha 699.

    Anterior:

      if FPrefixo2 <> '' then
        xmlns2 := ' xmlns:' + StringReplace(FPrefixo2, ':', '', []) + '="'
      else
        xmlns2 := ' xmlns="';

      if FPrefixo3 <> '' then
        xmlns3 := ' xmlns:' + StringReplace(FPrefixo3, ':', '', []) + '="'
      else
        xmlns3 := ' xmlns="';

      if FPrefixo4 <> '' then
        xmlns4 := ' xmlns:' + StringReplace(FPrefixo4, ':', '', []) + '="'
      else
        xmlns4 := ' xmlns="';

    Atual:

      if FPrefixo2 <> '' then
        xmlns2 := 'xmlns:' + StringReplace(FPrefixo2, ':', '', []) + '="'
      else
        xmlns2 := 'xmlns="';

      if FPrefixo3 <> '' then
        xmlns3 := 'xmlns:' + StringReplace(FPrefixo3, ':', '', []) + '="'
      else
        xmlns3 := 'xmlns="';

      if FPrefixo4 <> '' then
        xmlns4 := 'xmlns:' + StringReplace(FPrefixo4, ':', '', []) + '="'
      else
        xmlns4 := 'xmlns="';

    Essa alteração esta correta? ou tem um outro lugar que eu possa configurar para incluir esse espaço?

    A minha solução a principio foi alterar a linha 761 do ACBrNFSeWebServices.pas incluindo um espaço entre FNameSpaceDad e xmlns4

    FNameSpaceDad := FNameSpaceDad + ' ' + xmlns4 + FNameSpace + FSeparador + FDefTipos + '"';

    Obrigado

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.