Ir para conteúdo
  • Cadastre-se

dev botao

C# - Classe infGTVe


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

Recommended Posts

Bom dia, o componente não atendia as informações do infGTVe do MOC 4.0.

Classe InfGTVe: InfGTVe.cs
A classe possui o campo chCTe de acordo com o MOC, e possui o grupo Comp para preenchimento das informações do Componente GTVe.

Classe ComponentesValGTVe.cs: ComponentesValGTVe.cs
A classe possui os dados para preenchimento do grupo Comp da tag infGTVe.

Classe TipoComponenteGTVe: TipoComponenteGTVe.cs
Classe enumerada para preenchimento do TipoComponente na classe ComponentesValGTVe.
Essa classe foi criada em ACBr\Shared\ACBrLib.Core\CTe, segui o padrão dos demais arquivos, por isso criei neste local.

Alterações na classe GrupoInformacoesNormalSubstituto.cs

  • Criado propriedade infGTVe para preenchimento da mesma de acordo com o MOC 4.0
public List<InfGTVe> infGTVe { get; set; } = new List<InfGTVe>();


Alterações na classe CTe.cs:

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

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

 

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

  if (infGTVe != null)
  {

    var u = 0;
    ComponentesValGTVe compValGTVe;
    do
    {
      u++;
      compValGTVe = iniData.ReadFromIni<ComponentesValGTVe>($"infGTVeComp{t:000}{u:000}");

      if (compValGTVe != null) infGTVe.Comp.Add(compValGTVe);

    } while (compValGTVe != null);

    GrupoInformacoesNormalSubstituto.infGTVe.Add(infGTVe);
  }

} while (infGTVe != null);


Obs: no ObterIni, a infGTVe é retornada como se fosse uma TAG de varias ocorrências(infGTVe001), porém ela é uma TAG de apenas uma ocorrência, não deveria ser apenas infGTVe?

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

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

Obs: no ObterIni, a infGTVe é retornada como se fosse uma TAG de varias ocorrências(infGTVe001), porém ela é uma TAG de apenas uma ocorrência, não deveria ser apenas infGTVe?

Desconsiderar essa parte por gentileza, era pra eu ter removido antes de postar mas esqueci.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde,

Criada a TK-4267 para avaliação.

Obrigado pela contribuição.

  • Curtir 1
  • 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

Boa tarde, alimentamos a classe, e chegando nos testes, obtemos o seguinte erro aqui no ACBrLibHandle.

Na seguinte linha: 

ACBrCTe.CarregarIni(CTe.ToString());



A parte do WriteToIni() que converte a classe para Ini, está sendo feita corretamente, debugando o método ele passa do WriteToIni e carrega tudo certinho no iniData, e quando cai no método CarregarIni do ACBrCTe, a seguinte exceção é disparada:

System.ApplicationException: 'List index (1) out of bounds'


Apenas para informação mesmo.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores
  • Solution

Bom dia!

Mais uma vez, muito obrigado pela contribuição.

As classes foram enviadas ao SVN na Rev-30343.

Em 01/08/2023 at 11:13, Lindomar S. Menezes disse:

Classe enumerada para preenchimento do TipoComponente na classe ComponentesValGTVe.
Essa classe foi criada em ACBr\Shared\ACBrLib.Core\CTe, segui o padrão dos demais arquivos, por isso criei neste local.

As classes do ACBrLib.Core\CTe, são classes que podem vir a ser usadas por outros DFes, geralmente são classes de configuração da Lib.

Por causa disso, optei por colocar essa junto as demais em ..\ACBrLib\Demos\C#\CTe\Imports\Dinamico\Shared.

Em 01/08/2023 at 18:04, Lindomar S. Menezes disse:

A parte do WriteToIni() que converte a classe para Ini, está sendo feita corretamente, debugando o método ele passa do WriteToIni e carrega tudo certinho no iniData, e quando cai no método CarregarIni do ACBrCTe, a seguinte exceção é disparada:

System.ApplicationException: 'List index (1) out of bounds'


Apenas para informação mesmo.

Verificado que a rotina de leitura nativa estava usando o índice errado.

Correção enviada ao SVN na Rev-30342

  • 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

A alteração no componente nativo foi enviada hoje para o SVN.

Por isso não foi englobada na compilação da Lib que foi feita ontém.

Vou gerar uma compilação local e lhe enviar no privado para que você possa testar.

Só confirmando, você usa Cdecl, Multi-Thread, X64, correto?

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

Compilação da Lib enviada via mensagem privada aqui no fórum.

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

The popup will be closed in 10 segundos...