Ir para conteúdo
  • Cadastre-se

dev botao

C# - CTe - infOutros


Ver Solução Respondido por Diego Foliene,
  • Este tópico foi criado há 398 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 para o comentário
Compartilhar em outros 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

Editado por Lindomar S. Menezes
Link para o comentário
Compartilhar em outros 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"

  • Curtir 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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.

  • Curtir 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 para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde!

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

  • Curtir 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 para o comentário
Compartilhar em outros 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.

  • Curtir 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 para o comentário
Compartilhar em outros sites

  • Consultores
Agora, Lindomar S. Menezes disse:

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

 

É sim.

  • Curtir 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 para o comentário
Compartilhar em outros sites

  • Consultores

sim. pode fazer os testes novamente por favor?

 

  • Curtir 1
Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

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

 

 

Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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.

  • Curtir 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 para o comentário
Compartilhar em outros 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.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por reportar.

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

  • Curtir 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 para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 398 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.