Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao popular Grupo Pagamento NFe 4.0


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

Recommended Posts

Caros, a tabela de Pagamento possui um ÚNICO lançamento em dinheiro no valor exato da nota e o xml é gerado ( e autorizado em homologação ) da seguinte forma

 

erro_det_pagto.png.8550afd9c06d9c4f4b338a174bedb99a.png

O código responsável por popular essas informações é este abaixo,  foi feito Debug , está sendo varrido UMA única vez.

O exemplo do demo ainda esta na versão 3.0 por isso não tentei reproduzir testei por ele, o controle de versão do SVN indica 13858

Existe um problema no componente ?


        DM.cdsPAG.First;
        while not DM.cdsPAG.Eof do
              begin
                       pag.Add.tPag := RetornaTipoPag(DM.cdsPAG.FieldByName('YA02_TPAG').AsString);

                       if  DM.cdsPAG.FieldByName('YA03_VPAG').AsCurrency > 0  then  pag.Add.vPag := DM.cdsPAG.FieldByName('YA03_VPAG').AsCurrency;

                       if (( pag.Add.tPag = fpDinheiro) and ( dm.cdsPAG.FieldByName('YA09_VTROCO').AsCurrency > 0 )) then  pag.vTroco := dm.cdsPAG.FieldByName('YA09_VTROCO').AsCurrency;

                       if (( pag.Add.tPag = fpCartaoCredito ) or ( pag.Add.tPag = fpCartaoDebito )) then
                         begin
                             case bTef of
                                True  : begin
                                                pag.Add.tpIntegra := tiPagIntegrado;
                                                pag.Add.CNPJ      := DM.cdsPAG.FieldByName('YA05_CNPJ').AsString;
                                                pag.Add.tBand     := RetornaBandeira(DM.cdsPAG.FieldByName('YA06_TBAND').AsString);
                                               pag.Add.cAut      := DM.cdsPAG.FieldByName('YA07_CAUT').AsString;
                                            end;
                               False : begin
                                               pag.Add.tpIntegra := tiPagNaoIntegrado;
                                               //  pag.Add.cAut := DM.cdsPag65.FieldByName('YA07_CAUT').AsString;
                                           end;
                             end;
                        end;
                       DM.cdsPAG.Next;
              end;

Link para o comentário
Compartilhar em outros sites

  • Moderadores
26 minutos atrás, fabricio.syncode disse:

Pelo que percebi na sua codificação foi você mesmo que deu Add várias vezes, inclusive no seus IFs, assim criando várias formas de pagamento.

Exatamente . matou a charada. usou with do código e não se ateve ao que ele estava fazendo

1 hora atrás, Antonio Carlos L disse:

Caros, a tabela de Pagamento possui um ÚNICO lançamento em dinheiro no valor exato da nota e o xml é gerado ( e autorizado em homologação ) da seguinte forma

 

erro_det_pagto.png.8550afd9c06d9c4f4b338a174bedb99a.png

O código responsável por popular essas informações é este abaixo,  foi feito Debug , está sendo varrido UMA única vez.

O exemplo do demo ainda esta na versão 3.0 por isso não tentei reproduzir testei por ele, o controle de versão do SVN indica 13858

Existe um problema no componente ?


        DM.cdsPAG.First;
        while not DM.cdsPAG.Eof do
              begin
                       pag.Add.tPag := RetornaTipoPag(DM.cdsPAG.FieldByName('YA02_TPAG').AsString);

                       if  DM.cdsPAG.FieldByName('YA03_VPAG').AsCurrency > 0  then  pag.Add.vPag := DM.cdsPAG.FieldByName('YA03_VPAG').AsCurrency;

                       if (( pag.Add.tPag = fpDinheiro) and ( dm.cdsPAG.FieldByName('YA09_VTROCO').AsCurrency > 0 )) then  pag.vTroco := dm.cdsPAG.FieldByName('YA09_VTROCO').AsCurrency;

                       if (( pag.Add.tPag = fpCartaoCredito ) or ( pag.Add.tPag = fpCartaoDebito )) then
                         begin
                             case bTef of
                                True  : begin
                                                pag.Add.tpIntegra := tiPagIntegrado;
                                                pag.Add.CNPJ      := DM.cdsPAG.FieldByName('YA05_CNPJ').AsString;
                                                pag.Add.tBand     := RetornaBandeira(DM.cdsPAG.FieldByName('YA06_TBAND').AsString);
                                               pag.Add.cAut      := DM.cdsPAG.FieldByName('YA07_CAUT').AsString;
                                            end;
                               False : begin
                                               pag.Add.tpIntegra := tiPagNaoIntegrado;
                                               //  pag.Add.cAut := DM.cdsPag65.FieldByName('YA07_CAUT').AsString;
                                           end;
                             end;
                        end;
                       DM.cdsPAG.Next;
              end;

 

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Caros Fabricio e Juliomar , refiz os testes , mudei a forma de ler e mesmo tendo diminuído, continuou a gerar com duplicidade.

Para evitar dúvidas, usei o Exemplo , veja abaixo :

 

erro_pgto1.png.327fb480b03f99a39d47d849f8506131.png

Fiz a seguinte mudança no código, como pode ver esta sendo inserido uma UNICA vez ,  o controle de versão do SVN indica 13858

Se eu não faço a chamada mais de uma vez, não teria porque estar sendo gerado em duplicidade

 

erro_pgto2.png.4c647401372a8d0caeaaa8af012bdc80.png

Link para o comentário
Compartilhar em outros sites

Você chamou novamente duas vezes (tem dois Add), para uma forma de pagamento seria:

  with ACBrNFe1.NotasFiscais.Add.NFe do

      with pag.Add do
       begin
         tPag := fpDinheiro;
         vPag := 100;
       end;

ou

var

    Pagamento: TpagCollectionItem;

   ...

    Pagamento := NotaF.NFe.pag.Add;
    Pagamento.tPag := fpDinheiro;
    Pagamento.vPag := 100;

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

23 minutos atrás, fabricio.syncode disse:

Você chamou novamente duas vezes (tem dois Add), para uma forma de pagamento seria:

  with ACBrNFe1.NotasFiscais.Add.NFe do

      with pag.Add do
       begin
         tPag := fpDinheiro;
         vPag := 100;
       end;

ou

var

    Pagamento: TpagCollectionItem;

   ...

    Pagamento := NotaF.NFe.pag.Add;
    Pagamento.tPag := fpDinheiro;
    Pagamento.vPag := 100;

Ok Fabricio, entendi agora quando mostrou o tipo.

Obrigado

Link para o comentário
Compartilhar em outros sites

Bom dia amigos, no caso de uma nota de simples remessa ou de mostruário, como eu informaria, por que  tentei e sempre da o erro que o total da forma de pagmento difere do total da nota fiscal.

Estou informando  sem pagamento, mas pelo que olhei no manual, sem pagamento é somente para devolucao, ajustes e nota complementar.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
4 horas atrás, Lincoln Antunes disse:

Bom dia amigos, no caso de uma nota de simples remessa ou de mostruário, como eu informaria, por que  tentei e sempre da o erro que o total da forma de pagmento difere do total da nota fiscal.

Estou informando  sem pagamento, mas pelo que olhei no manual, sem pagamento é somente para devolucao, ajustes e nota complementar.

O manual diz que em notas de ajuste e devolução é obrigatório usar tPag = 90 (sem pagamento). Isso não quer dizer que o tipo de pagamento sirva somente pra essas finalidades.

Pode haver notas com finalidade normal onde não há pagamento, como você exemplificou.

Entendo que, não havendo nenhum tipo de compensação financeira na operação, o correto é informar tPag = 90 (sem pagamento).

3 horas atrás, Antonio Carlos L disse:

Lincoln, mesmo uma nota de simples remessa, onde o valor seja muito reduzido, vai haver um total, eu optaria por selecionar OUTROS o que muitos já faziam anteriormente. 

Antes havia apenas as opções de pagamento à vista, a prazo ou outros. Não havia a opção "nenhum", ou "sem pagamento". Informando tPag como 99 (outros), entendo que houve algum pagamento, e esse tipo não se enquadra em nenhuma outra opção disponível.

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

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Boa Tarde Pessoal

Ao emitir a NFCe na versão 4.0 gerando troco está gerando o erro abaixo.
Estou emitindo normalmente com desconto e com várias formas de pagamento mas ao gerar troco, apresenta a mensagem de erro.
O que pode ser?

NFC-e com somatório dos pagamentos diferente do total da Nota Fiscal

O que há de errado e segue parte do XML para análise.

<total>
  <ICMSTot>
    <vBC>0.00</vBC>
    <vICMS>0.00</vICMS>
    <vICMSDeson>0.00</vICMSDeson>
    <vFCPUFDest>0.00</vFCPUFDest>
    <vFCP>0.00</vFCP>
    <vBCST>0.00</vBCST>
    <vST>0.00</vST>
    <vFCPST>0.00</vFCPST>
    <vFCPSTRet>0.00</vFCPSTRet>
    <vProd>7.50</vProd>
    <vFrete>0.00</vFrete>
    <vSeg>0.00</vSeg>
    <vDesc>2.00</vDesc>
    <vII>0.00</vII>
    <vIPI>0.00</vIPI>
    <vIPIDevol>0.00</vIPIDevol>
    <vPIS>0.00</vPIS>
    <vCOFINS>0.00</vCOFINS>
    <vOutro>0.00</vOutro>
    <vNF>5.50</vNF>
    <vTotTrib>0.30</vTotTrib>
  </ICMSTot>
</total>
<transp>
  <modFrete>9</modFrete>
</transp>
<pag>
  <detPag>
    <tPag>01</tPag>
    <vPag>5.00</vPag>
  </detPag>
  <detPag>
    <tPag>03</tPag>
    <vPag>2.50</vPag>
    <card>
      <tpIntegra>2</tpIntegra>
    </card>
  </detPag>
  <vTroco>2.00</vTroco>
</pag>

 

Aurino

 

 

Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.