Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado (editado)

Ola srs do ACBR, nao consigo pegar as formas de pagamento no XML, segue como estou fazendo e nao está funcionando

onde estou errando...

function GerarNFe: Boolean;
begin
  dtmDFe.NFe.NotasFiscais.Clear;
  with dtmDFe.NFe.NotasFiscais.Add.NFe do
  begin
    LeDadosNFe(infNFe);         // infNFe: TinfNFe
    LeIdentificacaoNFe(Ide, 1, fnNormal); // Ide : TIde
    LeEmitente(Emit);           // Emit : TEmit
    LeDestinatario(Dest);       // Dest : TDest
    LeLocalRetirada(Retirada);  // Retirada : TRetirada
    LeLocalEntrega(Entrega);    // Entrega : TEntrega
    LeItensNF(Det);             // Det : TDetCollection
    LeTotais(Total);            // Total : TTotal
    LeTransporte(Transp);       // Transp : TTransp
    LeCobranca(Cobr);           // Cobr : TCobr 
    LePagtos(Pag);              // Pag : TPagCollection   Aqui nao esta funcionando...porque?
    LeInfoAdic(InfAdic);        // InfAdic : TInfAdic
    LeDadosExporta(Exporta);    // Exporta : TExporta
    LeInfoCompra(Compra);       // Compra : TCompra
  end;
end;


function LePagtos(Pag : TPagCollection) : boolean;
begin
  Result := false;
  try
    try
      if dtmDFe.cd_RefY.AsBoolean then
      begin
          if (dtmDFe.cd_RefYA.AsBoolean) and (dtmDFe.cd_YA.RecordCount > 0) then
          begin
             dtmdfe.cd_YA.First;
             while not dtmdfe.cd_YA.eof do
               begin
                 with pag.add do
                   begin
                      tPag := strToFormaPagamento(OK,dtmDFe.cd_YAtpag.AsString); // aqui ja chequei com debug os dados estao aí....
                      vPag := strToFloatDef(dtmDFe.cd_YAvPag.AsString,0);                      // e aqui tambem....porem no xml sai tPag = 01 e vPag = 0.00
                      tpIntegra := StrToTpIntegra(OK,dtmDFe.cd_YAtpintegra.AsString);
                      if dtmDFe.cd_YAtpIntegra.AsInteger = 1 then
                        begin
                          tBand := strToBandeiraCartao(OK,dtmDFe.cd_YAtBand.AsString);
                          cAut := dtmDFe.cd_YAcAuto.AsString;
                          CNPJ := dtmDFe.cd_YACNPJ.AsString;
                        end;
                   end;
                 pag.vTroco  := strtofloatdef(dtmDFe.cd_YAvTroco.AsString,0);
                 dtmdfe.cd_YA.Next;
              end;
              Result := True;
          end;
      end;
     except
      on NFeException: EACBrNFeException do
      begin
        LogNFe(NFeException.Message);
        LogNFe('**Bloco de Informações de Pagamentos não pode ser carregado!**');
        Exit;
      end;
    end;
  finally
  end;
end;

no XML saiu assim

.........

.........
-<cobr>


    -<fat> 

            <nFat>19942</nFat>

           <vOrig>158.70</vOrig>

           <vLiq>158.70</vLiq>

     </fat>


    -<dup>

          <nDup>019942</nDup>

         <dVenc>2017-10-03</dVenc>

         <vDup>158.70</vDup>

   </dup>

</cobr>


-<pag>


       -<detPag>

               <tPag>01</tPag>

              <vPag>0.00</vPag>

        </detPag>

</pag>


-<infAdic>

........

Onde foi que eu errei...

Obs: o restante está tudo funcionando...já há tempos...

Editado por geanjesus
  • Moderadores
Postado
2 minutos atrás, geanjesus disse:

vPag := strToFloatDef(dtmDFe.cd_YAvPag.AsString,0); 

Se o valor string não for um float válido, o resultado será zero. 

Prefira usar Field.AsCurrency ou Field.AsFloat se o campo for de tipo compatível.

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

Projeto ACBr

 

 

  • Membros Pro
Postado (editado)

Ok BigWings,

mas é o tPag nao é float,  e ainda estou usando a conversão, e no meu sistema aparece lá string = '15'...

com a conversao  deveria aparecer no XML tPag=15, mas aparece 01, como se ele estivesse ignorando toda a carga do componente que fiz,

talvez eu esteja fazendo a carga do componente de forma errada....sei lá...  esse 01 do tPag deve ser algum default do acbr quando o forma esta em branco...sei lá...

Editado por geanjesus
  • Moderadores
Postado
14 minutos atrás, geanjesus disse:

esse 01 do tPag deve ser algum default do acbr quando o forma esta em branco...sei lá...

Isso mesmo.

Se não for um dos tipos do enumerado é retornado o padrão 01.

Veja se os teus fontes estão atualizados, o tPag 15 foi adicionado recentemente, na NT 2016.002 v1.30.

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

Projeto ACBr

 

 

  • Membros Pro
Postado

Olá Bigwings, no caso do vPag voce tinha razão, era problema de ponto e virgula, ja arrumei, mas no caso do tPag ainda esta com 01 e o correto é 15 ....

Olá , mais uma vez voce tem razão, olhei lá e nao tem a forma de pagamento 15, vou atualizar , valeu....>>>>

 

  • Membros Pro
Postado (editado)

Ok BigWings,

atualizei...na verdade reinstalei o acbr ultima versao... e ja funcionou...muito Brigado pels Dicas...valeu...

Agora , respondendo minha própria pergunta...porque a forma de pagamento e valor nao aparece no XML?... porque nao estava lá...rsrsr...

Editado por geanjesus
×
×
  • 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.