Ir para conteúdo
  • Cadastre-se

dev botao

Salvar XML na consulta


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

Recommended Posts

  • 9 meses depois ...
  • Moderadores

Gravei na base de dados a chave_cte e protocolo.; Só

gostaria de gerar o XML através de uma consulta, caso

apagarem o mesmo.

Não existe uma forma ainda de fazer download do CT-e após enviado, não existe o webservice como o da NF-e.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia sesistemas,

 

A resolução para esse tipo de problema é mais simples que você possa imaginar.

 

Vamos aos passos de quando você envia e depois como resolver o problema do usuário que apaga o XML sem querer querendo.

 

Passos para enviar:

 

1. Temos todos os dados pertinentes do conhecimento no banco de dados.

2. Alimentamos o componente com esses dados.

3. Se usarmos o comando Enviar(23) onde 23 (por exemplo) é o numero do lote, o XML é gerado em disco, assinado, validado, enviado, protocolado e o DACTE é impresso.

4. Enviar o e-mail para o tomando do serviço usando o EnviarEmail .

5. Salvar no banco de dados a chave, o protocolo de autorização de uso.

 

Agora vamos aos passos para recuperar o XML que foi apagado:

 

1. Temos todos os dados pertinentes do conhecimento no banco de dados.

2. Alimentamos o componente com esses dados.

3. Execute o comando Valida, pois este gera o XML em disco, assina e valida.

4. Execute o comando Consultar, pois este vai realizar uma consulta na SEFAZ e vai protocolar o XML.

 

Espero ter ajudado.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Olá Ìtalo, legal o seu exemplo.

 

Só que quando vamos recuperar o XML temos que colocar o mesmo numero de chave, isso não é problema pois temos o numero da chave na base de dados.

 

Como podemos fazer isso, sendo que o componente gera automaticamente o número da chave ? Onde eu atribuo o numero da chave que eu quero no componente ?

 

Desculpem minha ignorância. Meu conhecimento é pouco em Delphi.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Leandro,

 

Note que no XML do CTe temos duas TAGs: nCT e cCT

 

nCT =  numero do conhecimento

 

cCT = código do conhecimento

 

Ambos compõe a chave do CT-e, correto?

 

Alguns desenvolvedores simplismente atribuiem o valor de nCT a cCT ou seja, cCT = nCT.

 

Se você fizer isso o componente não gera aleatóriamente um valor para cCT.

 

Outros (como eu) preferem que o valor do cCT seja um numero aleatório, neste caso podemos fazer de duas formas.

 

1. atribuir o valor zero a cCT, neste caso o componente se encarrega de gerar um numero aleatório para o cCT.

2. a sua aplicação gera esse numero usando o Random e depois ele é salvo no banco de dados no campo CodigoCT (por exemplo), e ao alimentar o componente simplismente atribuimos esse valor ao cCT ou seja, cCT = CodigoCT

 

Se você seguir o segundo exemplo, você tem controle total da geração da chave do CT-e.

 

Ou seja você consegue gerar novamente o XML com a mesma chave, assinar, validar e depois realizar uma consulta para obter o protocolo de autorização.

 

Desta forma é possível gerar novamente o XML, assinado e protocolado que foi apagado sem querer querendo pelo usuário.

 

Veja:

 

Ao salvar os dados do conhecimento no banco de dados:

 

   Randomize;
   codigoNumerico := Random(99999999); // temos 8 noves, pois o código pode ter até 8 digitos.
  

O valor de codigoNumerico é salvo no campo CTChave.

 

Ao alimentar o componente:

 

 with ACBrCTe.Conhecimentos.Add.CTe do
  begin
   //
   // Dados de Identificação do CT-e
   //
   Ide.nCT   := DM_CNT.ConhecimentoNumero.AsInteger;    // Numero do conhecimento
   Ide.cCT   := DM_CNT.ConhecimentoCTChave.AsInteger;  // Código Aleatório

   (...)

 end;
 

Gostou?

 

Espero ter ajudado.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3933 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...