Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Boa Tarde,

Para adequar a geração de XML a  Nota Técnica 2015_002, ao gerar o grupo "pag" com tpag = 03 ou 04 (cartão) passa a gerar também no grupo "card" o novo campo tpIntegra e para atender esta nota técnica, teremos que passar a gerar este campo sempre, mesmo que ele seja opcional, pois é a critério da UF.

Exemplo de XML quando tpIntegra =1 (TEF):
<pag>
  <tPag>03</tPag> 
  <vPag>20.00</vPag> 
  <card> 
    <tpIntegra>1</tpIntegra>   
    <CNPJ>79408498000186</CNPJ>   
    <tBand>01</tBand>   
    <cAut>12345678901234567890</cAut>   
  </card>
</pag>

Exemplo de XML quando tpIntegra =2 (POS):
<pag>
  <tPag>03</tPag>
  <vPag>20.00</vPag>
  <card>
    <tpIntegra>2</tpIntegra>
  </card>
</pag>


Em venda TEF quando o CNPJ da credenciadora estiver zerado/em branco, para que não ocorra a rejeição da NFC-e, passamos o campo “tPag” com valor 99 (Outros), sendo assim, o grupo “card” não será obrigatório (somente é obrigatório quando "tPag” = 03 ou 04 ).

Exemplo de XML quando CNPJ da credenciadora estiver zerado/em branco:

<pag>
  <tPag>99</tPag>
  <vPag>20.00</vPag>
</pag>

 

O Problema ocorre quando não informamos CNPJ para administradora em venda POS, o mesmo não gera o grupo "card" com o campo "tpIntegra", devido a está validação no código da Unit pcnNfceW.pas na função GerarPag:

    Gerador.wGrupo('pag', 'YA01');
    Gerador.wCampo(tcStr, 'YA02', 'tPag', 02, 02, 1, FormaPagamentoToStr(nfe.pag[i].tPag), DSC_TPAG);
    Gerador.wCampo(tcDe2, 'YA03', 'vPag', 01, 15, 1, nfe.pag[i].vPag, DSC_VPAG);
    if nfe.pag[i].CNPJ <> '' then
     begin
       Gerador.wGrupo('card', 'YA04');
       Gerador.wCampo(tcStr, 'YA04a', 'tpIntegra', 01, 01, 0, tpIntegraToStr(nfe.pag[i].tpIntegra), DSC_TPINTEGRA);
       Gerador.wCampo(tcStr, 'YA05', 'CNPJ ', 14, 14, 0, nfe.pag[i].CNPJ, DSC_CNPJ);
       Gerador.wCampo(tcStr, 'YA06', 'tBand', 02, 02, 0, BandeiraCartaoToStr(nfe.pag[i].tBand), DSC_TBAND);
       Gerador.wCampo(tcStr, 'YA07', 'cAut ', 01, 20, 0, nfe.pag[i].cAut, DSC_CAUT);
       Gerador.wGrupo('/card');
     end;
    Gerador.wGrupo('/pag');

 

Como sugestão:

Na Nota Técnica 2015_002 o grupo "card" é obrigatório quando tpag = 03 ou 04 (cartão), e a venda para Cartão POS não necessita dos demais campos, somente do tpIntegrarealizei está alteração no mesmo trecho de código :

    Gerador.wGrupo('pag', 'YA01');
    Gerador.wCampo(tcStr, 'YA02', 'tPag', 02, 02, 1, FormaPagamentoToStr(nfe.pag[i].tPag), DSC_TPAG);
    Gerador.wCampo(tcDe2, 'YA03', 'vPag', 01, 15, 1, nfe.pag[i].vPag, DSC_VPAG);
    if(NFe.pag[i].tPag in [fpCartaoDebito,fpCartaoCredito]) then
    begin
      Gerador.wGrupo('card', 'YA04');
      Gerador.wCampo(tcStr, 'YA04a', 'tpIntegra', 01, 01, 0, tpIntegraToStr(nfe.pag[i].tpIntegra), DSC_TPINTEGRA);
      if nfe.pag[i].CNPJ <> '' then
      begin
        Gerador.wCampo(tcStr, 'YA05', 'CNPJ ', 14, 14, 0, nfe.pag[i].CNPJ, DSC_CNPJ);
        Gerador.wCampo(tcStr, 'YA06', 'tBand', 02, 02, 0, BandeiraCartaoToStr(nfe.pag[i].tBand), DSC_TBAND);
        Gerador.wCampo(tcStr, 'YA07', 'cAut ', 01, 20, 0, nfe.pag[i].cAut, DSC_CAUT);
      end;
      Gerador.wGrupo('/card');
    end;
    Gerador.wGrupo('/pag');

 

Assim o grupo "card" sempre será gerado quando venda de cartão crédito/débito contendo o campo tpIntegra, porém os demais campos só serão gerados caso o CNPJ seja informado.

Editado por Leonardo_Sysmo
  • Curtir 1
Postado

Boa tarde,

já tinha percebido também essa situação levantada pelo Leonardo, incluí as alterações feitas por ele nos fontes e funcionou corretamente.

Daniel, Segue arquivo atualizado com as alterações.

Leonardo, obrigado pela colaboração.

pcnNFeW.pas

  • Curtir 1
  • Este tópico foi criado há 3312 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.