Ir para conteúdo
  • Cadastre-se

dev botao

Contribuição ACBrCTe - C#


Ver Solução Respondido por Diego Foliene,
  • Este tópico foi criado há 242 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa tarde, pequena contribuição no ACBrCTe do C#, a classe InfDoc está em desacordo com o MOC, onde diz que o infOutros pode ter mais de uma ocorrência.
image.thumb.png.b0932393b0cd6a792da803f81b46e596.png

Na classe InfDocCTe.cs, apenas alterei o infOutros para lista:

public List<InfOutrosCTe> infOutros { get; set; } = new List<InfOutrosCTe>();


Na classe CTe.cs, inseri o código para ler e escrever o INI da infOutros:

Método ReadFromIni(ACBrIniFile iniData) da classe CTe.cs:

var q = 0;
InfOutrosCTe infOutros;
do
{
  q++;
  infOutros = iniData.ReadFromIni<InfOutrosCTe>($"infOutros{q:000}");

  if (infOutros != null) GrupoInformacoesNormalSubstituto.infDoc.infOutros.Add(infOutros);

} while (infOutros != null);


Método ACBrIniFile WriteToIni() da classe CTe.cs:

for (var i = 0; i < GrupoInformacoesNormalSubstituto.infDoc.infOutros.Count; i++)
{
  var infOutros = GrupoInformacoesNormalSubstituto.infDoc.infOutros[i];
  iniData.WriteToIni(infOutros, $"infOutros{i + 1:000}");
}


CT-e gerado:
image.png.5f4ef913419da046fda8fae504334383.png

 

InfDocCTe.cs

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Criada a TK-4249 para avaliação.

Obrigado pela contribução!

  • Obrigado 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

  • Membros Pro
55 minutos atrás, Alexandre de Paula disse:

Boa tarde,

Criada a TK-4249 para avaliação.

Obrigado pela contribução!

@Alexandre de Paula Obrigado.
Tenho mais algumas outras contribuições que vou ir postando no decorrer da semana, você acha interessante criar novo tópico e postar, ou dá pra ir postando neste tópico por exemplo?

Link para o comentário
Compartilhar em outros sites

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

@Alexandre de Paula Obrigado.
Tenho mais algumas outras contribuições que vou ir postando no decorrer da semana, você acha interessante criar novo tópico e postar, ou dá pra ir postando neste tópico por exemplo?

Boa tarde!

Como o intuito do tópico é disponibilizar uma contribuição, pode ser aqui mesmo.

Se for para relatar algum problema, que destoe muito ai é interessante criar outro tópico

  • 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

  • Membros Pro

Tag infPercurso(Identificacao.cs). em desacordo com MOC.
image.thumb.png.ff59444d7d7745eb4a73742b4f1a119c.png


Alterado para List(Classe em anexo).

public List<InfPercursoCTe> infPercurso { get; set; } = new List<InfPercursoCTe>() { };


Método ReadFromIni(ACBrIniFile iniData) da classe CTe.cs:

var m = 0;
InfPercursoCTe infPercurso;
do
{
  m++;
  infPercurso = iniData.ReadFromIni<InfPercursoCTe>($"infPercurso{m:000}");

  if (infPercurso != null) Identificacao.infPercurso.Add(infPercurso);

} while (infPercurso != null);



Método ACBrIniFile WriteToIni() da classe CTe.cs:

for (var i = 0; i < Identificacao.infPercurso.Count; i++)
{
  var infPercurso = Identificacao.infPercurso[i];
  iniData.WriteToIni(infPercurso, $"infPercurso{i + 1:000}");
}


A única coisa que não consegui testar, é que não estava alimentando a classe CT-e ali no ReadFromIni(ACBrIniFile iniData), por conta de não ter a tag no iniData, mas no Write estava escrevendo certinho, fui olhar mais a fundo, e cheguei a testar um outro CT-e OS emitido pelo Delphi com percurso informado, e o infPercurso não está sendo obtido pelo ObterIni(), acredito que seja por isso que não está alimentando a classe quando carregado um XML.

IdentificacaoCTe.cs

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Inclusão da propriedade CRT na classe Emitente.cs para atender a tag de acordo com o MOC 4.0.

public CRT CRT { get; set; }


Inclusão da classe enumerada CRT.cs no ACBrLib.Core para complementar a propriedade CRT na classe Emitente.cs do CTe.
Eu fiz a inclusão da classe em ACBr\Shared\ACBrLib.Core\CTe\CRT.cs, fiz nesse diretório pois achei que era o correto, seguinte o padrão de algumas classes de enumerados que já possuem lá.

Testado na geração das TAG's do XML.
image.png.3c529f4863d53134f2328670755ed111.png

EmitenteCTe.cs CRT.cs

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Inclusão da classe CancelamentoCTeResposta.cs e InutilzacaoCTeResposta.cs específicas para o CT-e, de acordo com o layout de retorno, assim como as mesmas estão presentes em outros DFe's, para auxiliar na leitura dos dados da resposta caso seja necessário, já efetuei os testes na prática e está funcionado tudo corretamente a principio, classes criadas dentro da pasta Repostas.
 

CancelamentoCTeResposta.cs InutilizacaoCTeResposta.cs

Editado por Lindomar S. Menezes
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Inclusão da classe InfTributacaoFederal.cs para atender a TAG infTribFed de acordo com o MOC.

image.png.09bbc19d094bf9c7271e73ae00a65cca.png

InfTributacaoFederal.cs



Inclusão da classe InfServico.cs para atender a TAG infServico de acordo com o MOC.
image.png.a3dbb9da64b5ced7b6b4e3da9cd20abe.png

image.png.5afd2d31ab435263ef3196b5d5c74722.png

InfServico.cs

Editado por Lindomar S. Menezes
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Criado classe VeiculosCTe.cs para atender a tag veic de acordo com o MOC.

Criado classe Proprietario.cs para ser utilizada em conjunto com a classe VeiculosCTe.cs.

Criado classe enumerada TipoProprietario.cs em ACBr\Shared\ACBrLib.Core\CTe\ para ser utilizada em conjunto com a classe Proprietario.cs.

image.png.1c874aab9b153a63f629119037b9a15a.png

VeiculosCTe.cs

Proprietario.cs TipoProprietario.cs

Editado por Lindomar S. Menezes
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Criado classe InfFretamento.cs para preenchimento da tag infFretamento de acordo com o MOC.
Criado classe enumerada TipoFretamento.cs em ACBr\Shared\ACBrLib.Core\CTe\ para ser utilizada em conjunto com a classe InfFretamento.cs.

image.png.5345ec8cc4813ebf9034f97d7689b4a3.png
 

TipoFretamento.cs InfFretamento.cs

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Alterações na classe CTe.cs:

  • Inclusões no método WriteToIni() e ReadFromIni()

Inserido leitura e gravação das classes ProtCTe, InfRespTec, InfTributacaoFederal, GrupoInformacoesNormalSubstituto.infServico, GrupoInformacoesNormalSubstituto.infCTeSub, Rodoviario.veic, Rodoviario.infFretamento, RodoOS, ComponentesValorPrestação, AutXML, Identificação.infPercurso, GrupoInformacoesNormalSubstituto.veicNovos, GrupoInformacoesNormalSubstituto.infDocRef, GrupoInformacoesNormalSubstituto.seg, GrupoInformacoesNormalSubstituto.infDoc.infOutros e Rodoviario.RNTRC.
 

  • Alterações no SectionName do método WriteToIni() e ReadFromIni() (Nomeclatura), pois não estava alimentado as classes respectivas.

Ide > ide
Emit > emit
Rem > rem

Comp alterado para lista.

for (var i = 0; i < ComponentesValorPrestacao.Count; i++)
{
var compValPrest = ComponentesValorPrestacao[i];
iniData.WriteToIni(compValPrest, $"Comp{i + 1:000}");
}
  • Inserido criação ProcCTe, InfRespTec, InfTributacaoFederal no constructor do CTe(), ComponentesValorPrestacao removido, pois já é criado na declaração do próprio

ProtCTe = new ProtCTe();
InfRespTec = new InfRespTec();
InfTributacaoFederal = new InfTributacaoFederal();
  • Inserido parâmetro ProtCTe, InfRespTec, InfTributacaoFederal e AutXML nas properties

public ProtCTe ProtCTe { get; }
public InfRespTec InfRespTec { get; }
public InfTributacaoFederal InfTributacaoFederal { get; }
public List<AutXML> AutXML { get; } = new List<AutXML>();

 

  • ComponentesValorPrestacao alterado para List, por NT pode várias ocorrências.

public List<ComponentesValorPrestacaoCTe> ComponentesValorPrestacao { get; } = new List<ComponentesValorPrestacaoCTe>();

 

  • Removido essa linha do ObsFisco. pois já foi incluído o loop para alimentar a classe nas últimas revs.

iniData.ReadFromIni(ObsFisco, "ObsFisco");

CTe.cs

Editado por Lindomar S. Menezes
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

IdentificacaoCTe.cs

  • Alteração no InfPercursoCTe para List, por NT pode conter até 25 ocorrências.

public List<InfPercursoCTe> infPercurso { get; set; } = new List<InfPercursoCTe>() { };

IdentificacaoCTe.cs


InfServVincCTe.cs

  • infCTeMultimodal alterado para List, segundo NT pode ter mais de uma ocorrência.

public List<InfCTeMultimodalCTe> infCTeM

InfServVincCTe.cs

 

InfDocCTe.cs

  • infOutros transformado em lista, segundo NT pode conter mais de uma ocorrência.

public List<InfOutrosCTe> infOutros { get; set; } = new List<InfOutrosCTe>();

InfDocCTe.cs


EmitenteCTe.cs

  • Incluído parâmetro CRT

public CRT CRT { get; set; }

EmitenteCTe.cs

Editado por Lindomar S. Menezes
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

InfNFeCTe.cs

  • Adicionado campo PIN

public string PIN { get; set; }
  • Campos alterados para permitir null, pois não são obrigatórios por NT

public int? mod { get; set; }
public DateTime? dPrev { get; set; }

InfNFeCTe.cs

 

TipoServicoCTe.cs

  • Adicionado demais tipos referentes ao CTe-OS

tsTransportePessoas = 6,
tsTransporteValores = 7,
tsExcessoBagagem = 8,
tsGTV = 9

TipoServicoCTe.cs

 

GrupoInformacoesNormalSubstitutoCTe.cs

  • Adicionada classe para alimentar a seguradora, pode ter mais de uma ocorrência.

public List<Seguro> seg { get; set; } = new List<Seguro>();
  • Adicionada classe para alimentar a tag infDocRef, pode ter mais de uma ocorrência.

public List<InfDocRef> infDocRef { get; set; } = new List<InfDocRef>();
  • veicNovos alterado para List, pode ter mais de uma ocorrência.

public List<VeicNovosCTe> veicNovos { get; set; } = new List<VeicNovosCTe>();
  • Incluído campo refCTeCanc;

public string refCTeCanc { get; set; }

GrupoInformacoesNormalSubstitutoCTe.cs

 

TomaICMSCTe.cs

  • Tipos alterados de long para string;

public string refNFe { get; set; }
public string refCTe { get; set; }

TomaICMSCTe.cs

 

RefNFCTe.cs

  • Campos alterados de Long para String

public string CNPJCPF { get; set; }

RefNFCTe.cs

 

RodoviarioCTe.cs

  • Criado parâmetros faltantes para preenchimento

public string CNPJCPF { get; set; }

public string NroRegEstadual { get; set; }

public InfFretamento infFretamento { get; set; } = new InfFretamento();

public string TAF { get; set; }

public VeiculosCTe veic { get; set; } = new VeiculosCTe();

RodoviarioCTe.cs

 

InfNFCTe.cs

 

public DateTime? dPrev { get; set; }
  • dPrev alterado de DateTime para DateTime?, não é obrigatório segundo NT

InfNFCTe.cs

 
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Consultores
  • Solution

Bom dia!

Mais uma vez muito obrigado pelas contribuições.

As mesmas foram avaliadas e disponibilizadas no SVN nos últimos dias.

 

Por favor, queira atualizar, realizar novos testes e reportar qualquer problema.

  • Curtir 1
  • Obrigado 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
3 minutos atrás, Lindomar S. Menezes disse:

Boa tarde Diego, tudo bem?
Excelente, assim que possível irei testar e lhe dar um retorno, precisa atualizar as dll's ACBrLib?

Vou lhe enviar no privado uma versão compilada.

  • Obrigado 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

Lib enviada via mensagem privada aqui no fórum.

  • 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

  • Membros Pro
Em 25/08/2023 at 10:26, Diego Foliene disse:

Ref. a classe InutilizacaoCTeReposta, acabei adicionando um parâmetro para puxar o N do protocolo da inutilização, porém foi depois de ter mandado o arquivo pra vocês aqui, é possível adicionar o mesmo?

Link para o comentário
Compartilhar em outros sites

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

Ref. a classe InutilizacaoCTeReposta, acabei adicionando um parâmetro para puxar o N do protocolo da inutilização, porém foi depois de ter mandado o arquivo pra vocês aqui, é possível adicionar o mesmo?

Sim, por favor, disponibilize a classe alterada.

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

  • Membros Pro
Em 25/08/2023 at 10:26, Diego Foliene disse:

Ao tentar emitir CT-e OS com os dados do Prop informados.

Citar

Falha na validação do Modal do Conhecimento: 47

TAG:<CTeOS xmlns="http://www.portalfiscal.inf.br/cte" versao="4.00"><infModal versaoModal="4.00"><CTeOS xmlns="http://www.portalfiscal.inf.br/cte" versao="4.00"><infModal versaoModal="4.00"><CTeOS xmlns="http://www.portalfiscal.inf.br/cte" versao="4.00"><infCTeNorm><infModal versaoModal="4.00"><rodoOS><veic><prop> ID:#14/UF(C�digo do UF (Unidade da Federa��o)) - Nenhum valor informado.

TAG:<CTeOS xmlns="http://www.portalfiscal.inf.br/cte" versao="4.00"><infModal versaoModal="4.00"><CTeOS xmlns="http://www.portalfiscal.inf.br/cte" versao="4.00"><infModal versaoModal="4.00"><CTeOS xmlns="http://www.portalfiscal.inf.br/cte" versao="4.00"><infCTeNorm><infModal versaoModal="4.00"><rodoOS><veic><prop> ID:#14/UF(Sigla da UF) - Conte�do inv�lido.

 --> 1871 - Element '{http://www.portalfiscal.inf.br/cte}UF': This element is not expected. Expected is one of ( {http://www.portalfiscal.inf.br/cte}IE, {http://www.portalfiscal.inf.br/cte}tpProp ).


O CT - e será salvo para posterior envio.[1]


Como está a alimentação da classe prop e veic (UF informada corretamente):
image.thumb.png.6a18a94fa9be2cd6e8b313ea3e33f5e6.png

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

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