Ir para conteúdo
  • Cadastre-se

dev botao

Método Load da classe CTe.cs


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

Recommended Posts

  • Membros Pro

Boa tarde, estou com outra situação referente a classe CTe.cs.
 

using (DFeCTe dfe = new DFeCTe())
{
  dfe.ConfigurarComponente(GlobalVariables.ConfigEstacao.CodConfig);

  \\ Carrego meu XML no componente
  dfe.ACBrCTe.CarregarXML("C:\\SGBR\\Master\\Arquivos CTe\\XML\\17089484000190\\202307\\CTe\\42230717089484000190570020000007411944582580-cte.xml");

  \\ Carrego o INI do CT-e na minha var
  string strINI = dfe.ACBrCTe.ObterIni(0);

  \\ Carrego a classe com base no INI
  ACBrLib.CTe.CTe CTe = ACBrLib.CTe.CTe.Load(strINI);
  
  *Faço algumas alterações no CTe*

  \\ Carrego a minha classe com algumas alterações como um novo índice
  dfe.ACBrCTe.CarregarINI(CTe.ToString());

  \\ Somente para conferir o retorno da classe
  string strCTe = CTe.ToString();
  
  \\ Carrega o INI do CTe com as alterações
  strINI = dfe.ACBrCTe.ObterIni(1);

  \\ Grava o meu XML com as alterações
  dfe.ACBrCTe.GravarXml(1, "testelindomar-cte.xml", "C:\\SGBR\\Master\\Arquivos CTe\\XML\\17089484000190\\202307\\CTe\\");
}


string strINI - Em um primeiro momento, quando eu obtenho o arquivo INI do meu CTe (Index 0), a tag protCTe está presente no INI(Arquivo em anexo).
ACBrLib.CTe.CTe CTe CT-e - Carregando a classe, a classe ProtCTe também está presente (https://prnt.sc/GOR5B7WdibsS).
strCTe - Convertendo a classe para string(apenas para verificar se está gerando tudo certo), a classe ProtCTe também está presente. (Arquivo em anexo).

strINI(Último).txt - strINI - Obtendo o INI do índice 1, que é o meu CT-e com as alterações carregadas, a tag procCTe não está mais preenchida da forma devida por algum motivo, consequentemente gerando sem a tag no XML, ao utilizar o .GravarXML(). (Arquivo em anexo).

Algumas observações a serem feitas:
* Todos os arquivos em anexo.
* A classe protCTe foi feita por mim, se observarem até no strCTe tem algumas outras classes que fiz para atender nosso desenvolvimento, que vou disponibiliza-las também.
* Classe protCTe em anexo.

Alterações minhas na classe CTe.cs.

Construtor da classe CTe, apenas cria a propriedade ProtCTe:

Citar

ProtCTe = new ProtCTe();


Propriedade declarada:

Citar

public ProtCTe ProtCTe { get; }


Método WriteToIni()

Citar

iniData.WriteToIni(ProtCTe, "procCTe");


Método ReadFromIni()

Citar

iniData.ReadFromIni(ProtCTe, "procCTe");

 

strCTe.txt strINI(Último).txt strINI.txt 42230717089484000190570020000007411944582580-cte.xml ProtCTe.cs

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Fiz a implementação de dois métodos também na classe ACBrCTe.cs, mas para postar aqui no tópico utilizei as os métodos que já tinham, afim de não causar confusão, esses métodos apenas simplificam um pouco o uso de algumas práticas, são eles:

        public void CarregarCTe(CTe cte) => CarregarINI(cte.ToString());

        public CTe ObterCTe(int aIndex) => CTe.Load(ObterIni(aIndex));


Vou deixar também meu arquivo ACBrCTe.cs em anexo, o código com essas duas classes fica mais simplificado e compreensível, no ACBrNFe esses métodos já estão presentes, inclusive nós usamos ele também em outro projeto, apenas me fundamentei por lá.

Exemplo de código utilizando essas duas funções:

using (DFeCTe dfe = new DFeCTe())
{
  dfe.ConfigurarComponente(GlobalVariables.ConfigEstacao.CodConfig);

  dfe.ACBrCTe.CarregarXML("C:\\SGBR\\Master\\Arquivos CTe\\XML\\17089484000190\\202307\\CTe\\42230717089484000190570020000007411944582580-cte.xml");
  var CTe = dfe.ACBrCTe.ObterCTe(0);
  
  *Faço algumas alterações na var CTe*

  dfe.ACBrCTe.LimparLista();
  dfe.ACBrCTe.CarregarCTe(CTe);

  dfe.ACBrCTe.GravarXml(0, "testelindomar-cte.xml", "C:\\SGBR\\Master\\Arquivos CTe\\XML\\17089484000190\\202307\\CTe\\");
}

 

ACBrCTe.cs

Meu fontes está atualizado. Revision 30168.
Todas as Libs estão atualizadas.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Aproveitando o tópico, quando carrego o arquivo INI do índice 0, a tag tpAmb da sessão [ide] não está preenchida, seguindo o mesmo código do exemplo que dei lá em cima na primeira resposta, quando salvo meu XML, ou no strINI(Último).txt em anexo, a tag não tá preenchida, consequentemente se eu tenho uma nota de homologação, manipulo o xml e salvo, o tpAmb vai ficar em produção.

Se preferirem crio um novo tópico para essas coisas, mas estou aproveitando o gatilho por se tratar das classes todas juntas.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde!

Criada a #TK-4214 para análise da contribuição para possível inclusão no SVN, análise do problema relatado 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
10 minutos atrás, Lindomar S. Menezes disse:

Show, muito obrigado, tem alguma previsão + ou - ?

O sprint desta semana já foi definido.

A inclusão dela vai depender da disponibilidade dos consultores, caso contrário apenas no sprint da próxima semana.

  • 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

  • 3 semanas depois ...
  • Consultores
  • Solution

Boa tarde!

A sua contribuição da classe ProtCTe.cs e ajustes relacionados foi enviada ao SVN na Rev-30277.

A contribuição das funções ObterCTe e CarregarCTe foi enviada ao SVN na Rev-30278.

O motivo para não estar gerando o trecho de procCTe era porque a rotina de leitura do INI, não estava prevendo a leitura deste bloco.

A leitura e preenchimento das propriedades na classe, no componente nativo foi enviada ao SVN na Rev-30276.

O tipo ambiente não estava preenchendo na rotina de geração de INI, enviado ao SVN na Rev-30279.

As alterações no componente nativo serão englobadas na próxima compilação da Lib.

  • 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

Obrigado por reportar.

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

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á 255 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.