Jump to content

dev botao

C# - docAnt


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

Recommended Posts

Acredito que ela também não esteja sendo carregada com o ACBrCTe.CarregarXml();

Aproveitando também. As classes idDocAntPap e idDocAntEle estão em desacordo com o MOC, elas devem permitir que mais de uma ocorrência seja adicionada.

image.thumb.png.0ecf1d326665f1317ef8e3680f6adf09.png


Realizei a alteração delas para lista aqui para conseguirmos emitir da maneira correta, porém não fiz nenhuma implementação no CTe.cs pois não sei como o iniContent se comporta quando tem mais de uma ocorrência dessas tags, pois ele não vem no ObterIni(), vou ir verificando aqui, caso consiga fazer da maneira correta eu compartilho aqui no tópico.

 

  • Like 1
Link to comment
Share on other sites

Antes quando alimentava as classes e enviava o CT-e, me retornava uma rejeição referente aos child objects desse grupo de informações, seguindo a lógica de como eu fiz a implementação do infGTVe em um outro tópico que postei, fiz a implementação para ambas as classes no CTe.cs e consegui obter sucesso na alimentação das TAG's, a única coisa agora é que tá retornando o seguinte erro ao enviar: 

1840 - Element '{http://www.portalfiscal.inf.br/cte}tpDoc': [facet 'enumeration'] The value '00' is not an element of the set {'07', '08', '09', '10', '11', '12', '13'}.


Mesmo o tpDoc sendo alimentado corretamente na classe(No meu caso é "07 - ATRE"), parece que após usar o comando CarregarIni(CTe.ToString()) essa informação não está sendo alimentada corretamente no XML.

Alterações na classe CTe.cs
 

  • Alteração no método WriteToIni:
for (var i = 0; i < GrupoInformacoesNormalSubstituto.docAnt.emiDocAnt.Count; i++)
{
  var emiDocAnt = GrupoInformacoesNormalSubstituto.docAnt.emiDocAnt[i];
  iniData.WriteToIni(emiDocAnt, $"emiDocAnt{i + 1:000}");

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

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

 

  • Alterações no método ReadFromIni
var a = 0;
EmiDocAntCTe emiDocAnt;
do
{
  a++;
  emiDocAnt = iniData.ReadFromIni<EmiDocAntCTe>($"emiDocAnt{a:000}");

  if (emiDocAnt != null)
  {
    var b = 0;
    IdDocAntPapCTe idDocAntPap;
    do
    {
      b++;
      idDocAntPap = iniData.ReadFromIni<IdDocAntPapCTe>($"idDocAntPap{a:000}{b:000}");

      if (idDocAntPap != null) emiDocAnt.idDocAntPap.Add(idDocAntPap);

    } while (idDocAntPap != null);

    b = 0;
    IdDocAntEleCTe idDocAntEle;
    do
    {
      b++;
      idDocAntEle = iniData.ReadFromIni<IdDocAntEleCTe>($"idDocAntEle{a:000}{b:000}");

      if (idDocAntEle != null) emiDocAnt.idDocAntEle.Add(idDocAntEle);

    } while (idDocAntEle != null);

    GrupoInformacoesNormalSubstituto.docAnt.emiDocAnt.Add(emiDocAnt);
  }

} while (emiDocAnt != null);

 

  • Tag's em questão geradas corretamente, com exceção do campo tpDoc
<docAnt>
	<emiDocAnt>
		<CNPJ>17089484000190</CNPJ>
		<IE>256876460</IE>
		<UF>SC</UF>
		<xNome>SGBR SISTEMAS</xNome>
		<idDocAnt>
			<idDocAntPap>
				<tpDoc>00</tpDoc>
				<serie>2</serie>
				<subser>1</subser>
				<nDoc>811</nDoc>
				<dEmi>2023-07-25</dEmi>
			</idDocAntPap>
		</idDocAnt>
	</emiDocAnt>
</docAnt>

 

Aproveitando o gancho, fiz outra implementação na classe CTe.cs, mas essa é referente a tag dup (GrupoInformacoesNormalSubstituto.cobr.dup), realizando os testes aqui, observei que a classe não estava sendo alimentada quando enviado um CT-e, sendo assim consegui fazer sair certinho, realizando a seguinte implementação na classe CTe.cs:
 

  • Alterações no método WriteToIni
for (var i = 0; i < GrupoInformacoesNormalSubstituto.cobr.dup.Count; i++)
{
  var dup = GrupoInformacoesNormalSubstituto.cobr.dup[i];
  iniData.WriteToIni(dup, $"dup{i + 1:000}");
}

 

  • Alterações no método ReadFromIni
var r = 0;
DupCTe dup;
do
{
  r++;
  dup = iniData.ReadFromIni<DupCTe>($"dup{r:000}");

  if (dup != null) GrupoInformacoesNormalSubstituto.cobr.dup.Add(dup);

} while (dup != null);
Link to comment
Share on other sites

  • 2 weeks later...
  • Consultores
  • Solution

Bom dia!

Não tinha na rotina de geração do INI do componente nativo os grupos citados, por isso que o método CTe.ObterIni não trazia a informação.

Adicionado e enviado ao SVN na Rev-30284.

Mais uma vez, muito obrigado pelas contribuição nas classes C#, as alterações nas classes C# foram enviadas ao SVN na Rev-30285

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

Olá bom dia Diego, tudo bem?
Muito obrigado.
 

Referente a esse validação, é necessário aguardar a atualização das dlls relacionadas ao CTe, correto?

Citar
1840 - Element '{http://www.portalfiscal.inf.br/cte}tpDoc': [facet 'enumeration'] The value '00' is not an element of the set {'07', '08', '09', '10', '11', '12', '13'}.

 

Link to comment
Share on other sites

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

Olá bom dia Diego, tudo bem?
Muito obrigado.
 

Referente a esse validação, é necessário aguardar a atualização das dlls relacionadas ao CTe, correto?

 

Bom dia!

Pedi a equipe responsável se é possível gerar uma nova compilação da Lib para que você possa testar não só esta, mas as alterações de outros tópicos também.

  • Thanks 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á 393 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.