Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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.

Postado
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;

 


 

  • Moderadores
Postado
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

 

 

Postado
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.

  • Curtir 1
×
×
  • 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.