Jump to content

Assista tectoy.png

chamada diadoacbr

Rejeição Nfce-Somatório Dos Pagamentos Diferente Do Valor Total Da Nota


  • Este tópico foi criado há 1759 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde, um único tópico que encontrei com este retorno sequer aborda o problema citado, no caso, como tratar NFC-e que possuem valores com troco?

Total da compra R$ 10,00

Pago em Dinheiro R$ 20,00

 

Sempre que faço isso recebo esta mensagem de retorno, pelo ACBrECF isso era tratado normalmente como troco pelo ECF, e agora, como devo proceder? Parece que o comportamento é diferente.


Obrigado.

Link to comment
Share on other sites

1 hora atrás, Italo Jurisato Junior disse:

Boa tarde Juarez,

Na versão 4.00 da NFC-e temos uma tag chamada <vTroco> onde devemos informar o valor do troco.

Tentei aqui ver onde adiciono esta Tag e não consegui,

no evento ACBrECFVirtualNFCe1QuandoFecharDocumento, resumindo meu código basicamente é este mas o erro continua dando o mesmo retorno.

       if ValorPago > TotalVenda then
       begin
              with NFe do
              begin
                     pag.vTroco:=ValorPago -  ValorPago;
              end;
       end;

 


 

Link to comment
Share on other sites

  • Moderadores
1 hora atrás, Juarez disse:

no evento ACBrECFVirtualNFCe1QuandoFecharDocumento, resumindo meu código basicamente é este mas o erro continua dando o mesmo retorno.

Não basta informar a tag vTroco, você deve subtrair o valor do troco dos pagamentos.

Ex.:

procedure TForm1.ACBrECFVirtualNFCe1QuandoFecharDocumento(NFe: TNFe);
var
  vPag, vTroco: Currency;
  i: Integer;
begin
  vPag := 0;
  for i := 0 to NFe.pag.Count - 1 do
    vPag := vPag + NFe.pag.Items[i].vPag;
  vTroco := vPag - NFe.Total.ICMSTot.vNF;
  NFe.pag.Items[0].vPag := NFe.pag.Items[0].vPag - vTroco;
end;

Esse código subtrai o troco do primeiro pagamento, mas não testa se o valor do troco é maior que o pagamento, se o pagamento permite troco, etc... 

A lógica fica por sua conta.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link to comment
Share on other sites

Em 04/09/2017 at 20:06, BigWings disse:

Não basta informar a tag vTroco, você deve subtrair o valor do troco dos pagamentos.

Ex.:

procedure TForm1.ACBrECFVirtualNFCe1QuandoFecharDocumento(NFe: TNFe);
var
  vPag, vTroco: Currency;
  i: Integer;
begin
  vPag := 0;
  for i := 0 to NFe.pag.Count - 1 do
    vPag := vPag + NFe.pag.Items[i].vPag;
  vTroco := vPag - NFe.Total.ICMSTot.vNF;
  NFe.pag.Items[0].vPag := NFe.pag.Items[0].vPag - vTroco;
end;

Esse código subtrai o troco do primeiro pagamento, mas não testa se o valor do troco é maior que o pagamento, se o pagamento permite troco, etc... 

A lógica fica por sua conta.

Ajudou a resolver o problema, a lógica do meu PDV ficou bem diferente mas deu uma luz do caminho a seguir, obrigado.

  • Like 1
Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.