Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2059 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Bom dia a todos, 

Estou fazendo o carregamento XML com registros S-1060, o componente está Adicionando o Item no Objeto, porém os atriutos do item estão todos vazio.

Analisando o códígo, percebi que o XML é carregado apenas no atributo XML, e o XML não é "Lido" e os atributos não são alimentados.

image.thumb.png.21238158f12b24a03675552ee5d03287.png

 

Realmente não está implementado mesmo o ACBr, ou estou fazendo algo errado?

Se não tiver, existe algum problema se eu implementar?

 

Grato

 

  • Consultores
Postado

Boa tarde Ângelo,

Se tratando do eSocial, ao carregar o XML de um evento, a única propriedade que é alimentada é a: XML conforme a imagem que você anexou.

Nenhum campo dos eventos do eSocial é alimentado.

Temos uma unit para cada evento, nessa unit temos a rotina que gera o XML, a que lê o arquivo INI e chama a que gera o XML, mas não temos uma rotina que lê o XML e alimenta os campos.

Se desejar implementar fique a vontade, toda ajuda é bem vinda.

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

  • Consultores
Postado

Boa tarde Ângelo,

Muito obrigado pela colaboração, vamos analisar o que foi feito e se tudo estiver correto vamos disponibilizar no repositório.

Mas seria interessante que você e outros desenvolvedores também se dispusessem a fazer essa implementação nos demais eventos.

  • 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

  • 3 semanas depois ...
  • Consultores
Postado
Em 20/03/2019 at 14:05, angelosobreira disse:

Boa tarde, 

Desenvolvi o método conforme havia falado. Segue abaixo os fontes.

 

Grato

Fontes.zip 10 kB · 3 downloads

Olá,

   Enviei alterações baseadas nessa sugestão na revisão 16847. Mas suas alterações não foram implementadas totalmente.

   Notei que o método function TEventos.LoadFromString da unit ACBreSocialEventos.pas foi alterado removendo o SaveToFiles. Mas isso já é utilizado pelo componente.

   Qual o motivo dessa remoção?

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Postado
15 horas atrás, EMBarbosa disse:

Olá,

   Enviei alterações baseadas nessa sugestão na revisão 16847. Mas suas alterações não foram implementadas totalmente.

   Notei que o método function TEventos.LoadFromString da unit ACBreSocialEventos.pas foi alterado removendo o SaveToFiles. Mas isso já é utilizado pelo componente.

   Qual o motivo dessa remoção?

Removi o SaveToFile do LoadFromString porque toda vez que eu carregava um arquivo de uma pasta, o mesmo arquivo era salvo novamente no método SaveToFile, ou seja, meus arquivos eram duplicados dentro da pasta. Confesso que não entendi porque tem o SaveToFile dentro do LoadFromString.

Grato

  • Consultores
Postado
1 hora atrás, angelosobreira disse:

Removi o SaveToFile do LoadFromString porque toda vez que eu carregava um arquivo de uma pasta, o mesmo arquivo era salvo novamente no método SaveToFile, ou seja, meus arquivos eram duplicados dentro da pasta. Confesso que não entendi porque tem o SaveToFile dentro do LoadFromString.

Grato

Isso é feito porque você está carregando o xml de terceiros. O componente então vai verificar se o xml está assinado e se não estiver vai ser assinado e validado antes de colocá-lo na fila para enviar.

Essa alteração modifica o comportamento do componente e por isso precisamos ter um pouco de cautela.

Se isso for alterado, por exemplo, precisaria ser nos dois métodos ao mesmo tempo (LoadFromString e LoadFromStringINI).

Vou pedir uma ajuda ao @Italo Jurisato Junior pra ajudar a analisar essa questão.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Postado
40 minutos atrás, EMBarbosa disse:

Isso é feito porque você está carregando o xml de terceiros. O componente então vai verificar se o xml está assinado e se não estiver vai ser assinado e validado antes de colocá-lo na fila para enviar.

Essa alteração modifica o comportamento do componente e por isso precisamos ter um pouco de cautela.

Se isso for alterado, por exemplo, precisaria ser nos dois métodos ao mesmo tempo (LoadFromString e LoadFromStringINI).

Vou pedir uma ajuda ao @Italo Jurisato Junior pra ajudar a analisar essa questão.

Entendo, porém acredito que isso é um comportamento específico dos componentes do ACBreSOCIAL, pois no ACBrNFe, ACBrCTe e ACBrMDFe que eu uso a algum tempo eu nunca vi esse comportamento.

  • Consultores
Postado

Boa tarde Ângelo,

Os componentes ACBrNFe, ACBrCTe, ACBrMDFe o LoadFromFile (por exemplo) que se utiliza do LoadFromString possui um parâmetro que determina se é apendas para carregar o XML ou se é para gerar o XML novamente, veja:

function LoadFromFile(const CaminhoArquivo: String; AGerarNFe: Boolean = False): Boolean;
function LoadFromStream(AStream: TStringStream; AGerarNFe: Boolean = False): Boolean;
function LoadFromString(const AXMLString: String; AGerarNFe: Boolean = False): Boolean;

function LoadFromIni(const AIniString: String): Boolean;

Note que somente o LoadFromIni não tem o parâmetro AGerarNFe os demais tem e o seu valor padrão é False.

Como o Elton disse, o LoadFromString (que é utilizado pelo LoadFromFile e LoadFormStream) tem por objetivo carretar o XML de terceiros, ou seja, não foi gerado pelo componente.

Neste caso o componente checa se o XML esta assinado ou não, caso não esteja será assinado, validado e por fim salvo em disco, dai o motivo do SaveToFile.

Já o LoadFromStringIni tem como objetivo carregar os dados do evento que se encontram em um arquivo INI, gerar o XML, assinar, validar e salvar em disco.

Logo não devemos em hipótese nenhuma remover o SaveToFile.

Se esta ficando dois XML na pasta referente ao mesmo evento, isso significa que a sua aplicação esta gerando e salvando o XML com uma nomenclatura e o componente com outra.

Se você adotar a mesma nomenclatura, mesmo o componente salvando novamente só teremos um arquivo, visto que o Windows não aceita dois ou mais arquivos com o mesmo nome.

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

  • Este tópico foi criado há 2059 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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...