Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

LoadFromFile Registro S-1060


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

Recommended Posts

  • Membros Pro

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

 

Link to comment
Share on other sites

  • Consultores

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.

  • Like 2
Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Consultores

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.

  • Like 1
Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • 3 weeks later...
  • Consultores
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?

  • Like 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.
Link to comment
Share on other sites

  • Membros Pro
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

Link to comment
Share on other sites

  • Consultores
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.

  • Like 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.
Link to comment
Share on other sites

  • Membros Pro
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.

Link to comment
Share on other sites

  • Consultores

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.

  • Like 2
Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.