Jump to content

dev botao

C# - CTe - infOutros


Go to solution Solved by Diego Foliene,
  • Este tópico foi criado há 394 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá bom dia, estamos com um cliente tentando fazer a emissão de um CT-e, e está retornando a seguinte exceção no Validar():
image.png.a36c64f8bf16f87fc76714c8e4e2d6f5.png

Optei por testar aqui da mesma forma que o cliente estava emitindo, e aqui também ocorreu, todas as dlls e as libs estão atualizadas.

Até na hora de carregar a nota no componente "CarregarINI(CTe.ToString())", o infOutros está preenchido, alimentei duas vars com o ObterIni e outra com o ObterCTe, ambas não estão com a infOutros preenchidos. Logo abaixo após o .Assinar, no .Validar, a validação de que a tag não está preenchida é disparada. Esse é um caso onde precisariamos de certa urgência visto que o cliente precisa emitir o CT-e.

image.thumb.png.afb35c24fa922fa2c726e5e3ac5c0119.png
 

Link to comment
Share on other sites

Pelo que dá pra perceber, é a validação quando algum campo não está preenchido, por exemplo, se eu adicionar todas as informações, menos a dEmi e a dPrev, essa validação é retornada no .Validar().
image.png.3459d764ab3dd1033af14cc026ca2b0e.png

image.thumb.png.203b2010369189b6846c14d5c2ceb009.png


Acredito que há uma possível discordância do .Validar() com o MOC 4.0
image.thumb.png.42c637aee655ab0140d6d017694efa5a.png
 

Da mesma forma, se eu informar apenas o tpDoc, vDocFisc e descOutros, a rejeição do primeiro comentário é retornada.

image.thumb.png.78d6b281a32c0be5f2f4cc9d38f0fd08.png

image.png.d83f2beb907b0b82663a4bd857d2051f.png

Edited by Lindomar S. Menezes
Link to comment
Share on other sites

  • Consultores

Boa tarde Lindomar,

Primeiramente temos que ter em mente que um CT-e só pode ter o grupo infNF ou infNFe ou infOutros, ou seja, somente um desses 3 grupos podem estar presentes no CT-e.

Vamos tomar como base o infOutros:

Analisando o manual temos que somente o campo tpDoc é obrigatório e os valores validos são: 

00 - Declaração; 10 - Dutoviário; 59 - CF-e SAT; 65 - NFC-e; 99 - Outros

Se for 99 devemos alimentar o campo descOutros.

Pela imagem que você anexou o valor atribuído a tpDoc é "declaracao", talvez seja esse o problema, no meu entendimento deveria ser "00"

  • Like 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

Boa tarde Italo, perfeito, então nessa situação abaixo está se enquadrando apenas o infOutros.

9 minutos atrás, Italo Giurizzato Junior disse:

Primeiramente temos que ter em mente que um CT-e só pode ter o grupo infNF ou infNFe ou infOutros, ou seja, somente um desses 3 grupos podem estar presentes no CT-e.

 

12 minutos atrás, Italo Giurizzato Junior disse:

Analisando o manual temos que somente o campo tpDoc é obrigatório e os valores validos são: 

00 - Declaração; 10 - Dutoviário; 59 - CF-e SAT; 65 - NFC-e; 99 - Outros

Se for 99 devemos alimentar o campo descOutros.

Pela imagem que você anexou o valor atribuído a tpDoc é "declaracao", talvez seja esse o problema, no meu entendimento deveria ser "00"

Referente ao tpDoc, pode ser que sim, mas o parâmetro tpDoc no infOutros é de tipo enumerado, pelo que vi os valores atribuídos a cada valor estão corretos. Alimentamos ele da seguinte forma:
image.png.e14182a109c447bfe9dda9f8da002ce2.png

image.png.91117e693a2ec3fb8f6c991e3328382d.png

Então acredito que a alimentação do mesmo esteja correta.

Mudei na classe definindo um EnumValue pra ver se ia correto, mas deu a mesma rejeição.
image.png.2c84b3f82a1352f17e0c03c5d724f8af.png

Link to comment
Share on other sites

  • Consultores

Lindomar,

Eu não trabalho com C# somente com Delphi logo não sei como ele vai passar esse valor para a Lib para que o XML seja gerado.

No Delphi temos o tipo:

  TpcteTipoDocumento = (tdDeclaracao, tdDutoviario, tdCFeSAT, tdNFCe, tdOutros);

as funções de conversão:

function TpDocumentoToStr(const t: TpcteTipoDocumento): string;
begin
  result := EnumeradoToStr(t, ['00', '10', '59', '65', '99'],
                              [tdDeclaracao, tdDutoviario, tdCFeSAT, tdNFCe, tdOutros]);
end;

function StrToTpDocumento(out ok: boolean; const s: string): TpcteTipoDocumento;
begin
  result := StrToEnumerado(ok, s, ['00', '10', '59', '65', '99'],
                                  [tdDeclaracao, tdDutoviario, tdCFeSAT, tdNFCe, tdOutros]);

as linhas responsáveis por gerar as tags:

    Gerador.wCampo(tcStr, '#320', 'tpDoc     ', 02, 002, 1, TpDocumentoToStr(CTe.infCTeNorm.infDoc.InfOutros[i].tpDoc), DSC_TPDOC);
    Gerador.wCampo(tcStr, '#321', 'descOutros', 01, 100, 0, CTe.infCTeNorm.infDoc.InfOutros[i].descOutros, DSC_OUTROS);
    Gerador.wCampo(tcStr, '#322', 'nDoc      ', 01, 020, 0, CTe.infCTeNorm.infDoc.InfOutros[i].nDoc, DSC_NRO);
    Gerador.wCampo(tcDat, '#323', 'dEmi      ', 10, 010, 0, CTe.infCTeNorm.infDoc.InfOutros[i].dEmi, DSC_DEMI);
    Gerador.wCampo(tcDe2, '#324', 'vDocFisc  ', 01, 015, 0, CTe.infCTeNorm.infDoc.InfOutros[i].vDocFisc, DSC_VDOC);
    Gerador.wCampo(tcDat, '#325', 'dPrev     ', 10, 010, 0, CTe.infCTeNorm.infDoc.infOutros[i].dPrev, DSC_DPREV);

Uma informação importante é que o grupo infOutros é uma lista, ou seja, o XML do CT-e pode conter vários grupos infOutros, no manual diz que podemos ter N ocorrências, no componente limitamos em 990.

Essas classes do C# vão ter que criar a lista InfOutros e alimentar os seus campos corretamente, pode ser ai que a coisa esteja pegando.

  • Like 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

  • Consultores

Boa tarde!

Criada a #TK-4414 para análise do caso e parecer do consultor responsável.

  • Like 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Consultores
  • Solution

O problema estava na rotina de leitura do arquivo INI do componente nativo.

Para ler a seção infOutros no INI, ele considerava o campo nDoc. Campo este que não é obrigatório.

Por isso, não gerava quando você não informava.

Enviado alteração ao SVN na Rev-30565 para que considere o campo obrigatório tpDoc.

Na próxima compilação da Lib ja é para estar disponível.

  • Like 2
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Consultores
Agora, Lindomar S. Menezes disse:

Essa atualização da LIB é pra conter as alterações? (Quarta as 18:46)

 

É sim.

  • Like 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Consultores
27 minutos atrás, Lindomar S. Menezes disse:

Está retornando essa validação caso não seja preenchido a dPrev.

image.png.82bcb3d15751e7dd3e33bff453ffa67d.png 

image.png

Ambos dPrev e dEmi tem ocorrência 0-1 no MOC, podendo não ser informados.

Enviado ao SVN na Rev-30571 alteração na classe infOutrosCTe.cs tornando dPrev e dEmi nullables para que não sejam gerados no INI caso não atribuídos.

Por favor, queira atualizar e testar novamente.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Consultores

Bom dia Lindomar,

Pelo que me recordo o campo dPrev tem que ser um campo cujo tipo seja numérico de ponto flutuante.

Devemos informar o valor zero quando não queremos informar uma determinada data.

  • Like 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link to comment
Share on other sites

19 minutos atrás, Diego Foliene disse:

Ambos dPrev e dEmi tem ocorrência 0-1 no MOC, podendo não ser informados.

Enviado ao SVN na Rev-30571 alteração na classe infOutrosCTe.cs tornando dPrev e dEmi nullables para que não sejam gerados no INI caso não atribuídos.

Por favor, queira atualizar e testar novamente.

Testado e funcionando, muito obrigado pela atenção.

  • Like 2
Link to comment
Share on other sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

  • Like 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Este tópico foi criado há 394 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • 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.

The popup will be closed in 10 seconds...