Adelmo Junior 0 Posted September 10, 2020 Report Share Posted September 10, 2020 (edited) Vejo que o total do pagamento está igual ao valor da nota, mas sempre aparece a mensagem informando que o total do pagamento está menor que o total da nota, para resolver o problema adiciono R$ 0,01 (um centavos a mais)! Por exemplo: se o valor é R$ 1,45 o valor pago em cartão altero para R$ 1,46 Alguém sabe dizer o que está errado? Edited September 10, 2020 by Adelmo Junior Erro de na escrita Link to post Share on other sites
antonio.carlos 65 Posted September 10, 2020 Report Share Posted September 10, 2020 Tópico movido para a área do SAC, para que o SLA de respostas seja considerado Link to post Share on other sites
Italo Giurizzato Junior 9,881 Posted September 10, 2020 Report Share Posted September 10, 2020 Bom dia Adelmo, Favor anexar o XML da nota bem como o XML de retorno acusando a rejeição para que possamos lhe ajudar. 1 Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Adelmo Junior 0 Posted September 10, 2020 Author Report Share Posted September 10, 2020 Nota-000001.xml 26 minutos atrás, Italo Jurisato Junior disse: Bom dia Adelmo, Favor anexar o XML da nota bem como o XML de retorno acusando a rejeição para que possamos lhe ajudar. Nota-000001.xml Link to post Share on other sites
Italo Giurizzato Junior 9,881 Posted September 10, 2020 Report Share Posted September 10, 2020 Adelmo, Eu pedi o XML da nota e do retorno da SEFAZ que acusa a rejeição. Você anexou 2 vezes o XML da nota. Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Adelmo Junior 0 Posted September 10, 2020 Author Report Share Posted September 10, 2020 Bom dia A mensagem é do Validador, quando gera a nota o total de R$ 24,72 Porque quando gera a nota é adicionado R$ 0,01 centavo a mais, tem a ver com arredondamento ou concatenação ? que função uso nos valores e nas quantidade na hora de gerar a nota? Estou usando: Prod.vProd := RoundABNT(RoundABNT(DataModule1.ClienteDetalhe.FieldByName('QTD_PRODUTO').AsFloat,3) * DataModule1.ClienteDetalhe.FieldByName('PRECO_UNIT').AsFloat, 2); está correto? Link to post Share on other sites
Solution Italo Giurizzato Junior 9,881 Posted September 10, 2020 Solution Report Share Posted September 10, 2020 Adelmo, Por favor não confunda erro de validação com rejeição. Erro de validação é gerado pela rotina que valida o XML da nota antes de ser enviada para a SEFAZ e ele não detecta se a somatória é igual ou não ao total. Rejeição é gerado e retornado pela SEFAZ que faz as checagens de somatória. A sua aplicação após alimentar o componente com os dados da venda executa a função ValidarRegrasdeNegocios ? Pois essa função consegue detectar essa diferença. Não entendi muito bem essa linha que calcula o valor do produto, você arredonda a quantidade para 3 casas decimais multiplica pelo preço unitário sem nenhum arredondamento e por fim arredonda o resultado para 2 casas decimais. No XML a quantidade pode ter até 4 casas decimais, já o preço unitário pode ter até 10 casas decimais e o valor total do produto (quantidade x preço) deve ter apenas 2 casas decimais. Logo a linha que calcula o vProd não deveria ser: Prod.vProd := RoundABNT(RoundABNT(DataModule1.ClienteDetalhe.FieldByName('QTD_PRODUTO').AsFloat, 4) * RoundABNT(DataModule1.ClienteDetalhe.FieldByName('PRECO_UNIT').AsFloat, 10), 2); Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Link to post Share on other sites
Adelmo Junior 0 Posted September 10, 2020 Author Report Share Posted September 10, 2020 A sua aplicação após alimentar o componente com os dados da venda executa a função ValidarRegrasdeNegocios ? Faço isso: DataModule1.ACBrNFe1.NotasFiscais.Assinar; DataModule1.ACBrNFe1.NotasFiscais.Validar; Link to post Share on other sites
BigWings 3,985 Posted September 10, 2020 Report Share Posted September 10, 2020 1 hora atrás, Adelmo Junior disse: Prod.vProd := RoundABNT(RoundABNT(DataModule1.ClienteDetalhe.FieldByName('QTD_PRODUTO').AsFloat,3) * DataModule1.ClienteDetalhe.FieldByName('PRECO_UNIT').AsFloat, 2); está correto? Evite usar cálculos e arredondamentos pra informar a tag vProd. Calcule e arredonde no momento da venda e armazene esse valor no banco de dados, Na geração da NFe apenas informe esse valor. 1 BigWingsAjude o Projeto ACBr crescer - Assine o SAC Link to post Share on other sites
Recommended Posts