Ir para conteúdo
  • Cadastre-se

dev botao

Dificuldades em Carregar componente ACBrCTE e gerar XML


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

Recommended Posts

  • Membros Pro
Postado

Boa noite,  sou bem limitado com programação, e tenho tido dificuldades em carregar os dados do componente  e gerar XML.

Estou tentando gerar o XML para poder validar, transmitir no sistema na receita (até que eu não termine o meu)

fiz esse procedimento:

 

procedure TFRM_CteNEW.exportar_txtClick(Sender: TObject);
begin


  F_DM.ACBrCTe1.Conhecimentos.Clear;

  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.infCTe.versao := 4.0;
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Ide.cUF    := 0125 ; // UFtoCUF(edtEmitUF.Text);
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Ide.CFOP   := 6932;

  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.CNPJ              := IBQ_EMIT.FieldByName('CNPJ').AsString; // Trim(edtEmitCNPJ.Text);
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.IE                := IBQ_EMIT.FieldByName('INSCRICAO').AsString; // Trim(edtEmitIE.Text);
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.xNome             := Trim( IBQ_EMIT.FieldByName('RAZAO_SOCIAL').AsString ) ; // Trim(edtEmitRazao.Text);
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.xFant             := Trim( IBQ_EMIT.FieldByName('RAZAO_SOCIAL').AsString ) ; // Trim(edtEmitFantasia.Text);
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.enderEmit.xLgr    := Trim( IBQ_EMIT.FieldByName('ENTR_END').AsString );
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.enderEmit.nro     := Trim( IBQ_EMIT.FieldByName('ENTR_NUM').AsString );
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.enderEmit.xCpl    := Trim( IBQ_EMIT.FieldByName('ENTR_COMPL').AsString );
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.enderEmit.xBairro := Trim( IBQ_EMIT.FieldByName('ENTR_BAIRRO').AsString );
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.enderEmit.cMun    := StrToInt( IBQ_EMIT.FieldByName('ENTR_CODMUN').AsString );
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Emit.enderEmit.xMun    := Trim( IBQ_EMIT.FieldByName('ENTR_MUN').AsString );

    {Informações do Responsável Técnico pela emissão do DF-e}
    F_DM.ACBrCTe1.Conhecimentos.Add.CTe.infRespTec.xContato := '';
    F_DM.ACBrCTe1.Conhecimentos.Add.CTe.infRespTec.email    := '';
    F_DM.ACBrCTe1.Conhecimentos.Add.CTe.infRespTec.fone     := '';


    F_DM.ACBrCTe1.Conhecimentos.Items[0].GravarXML();

 

*** Carreguei todos os campos, só coloquei alguns aqui como exemplo para não ficar extenso.. mas em resumo:  

F_DM.ACBrCTe1.Conhecimentos.Clear;

F_DM.ACBrCTe1.Conhecimentos.Add.CTe. (todos os campos)

F_DM.ACBrCTe1.Conhecimentos.Items[0].GravarXML();

 

Porem, ele gera o XML conforme anexo (sem informações nenhumas)

 

podem me auxiliar e dizer se falta alguma informação??

 

 

obrigado

 

 

00991200000000000000570000000000001010196460-cte.xml 00991200000000000000570000000000001098568326-cte.xml

  • Consultores
  • Solution
Postado

Bom dia @PHCASTANHO,

Isso aqui esta errado:

  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.infCTe.versao := 4.0;
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Ide.cUF    := 0125 ; // UFtoCUF(edtEmitUF.Text);
  F_DM.ACBrCTe1.Conhecimentos.Add.CTe.Ide.CFOP   := 6932;
  (...)

 

O correto é:

With F_DM.ACBrCTe1.Conhecimentos.Add.CTe do
begin
  infCTe.versao := 4.0;
  Ide.cUF    := 0125 ; // UFtoCUF(edtEmitUF.Text);
  Ide.CFOP   := 6932;
  (...)
end;

Cada ADD executado o componente entende que você deseja adicionar mais um item (CT-e) a lista.

Outra coisa de onde você tirou o código 0125 ?

Todas as UF possuem um código IBGE formado por 2 dígitos.

Por favor estude o programa exemplo do componente, tenha em mãos os manuais do CT-e, caso contrario você não vai sair do lugar.

  • 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

  • Membros Pro
Postado (editado)

Italo, bom dia, 

 

Obrigado pelo rápido retorno;

Este código já estava no exemplo, e não alterei para primeiro testar a alimentação do componente.

Com sua orientação o XML já foi carregado com as informações;

 

Se puder me auxiliar em mais uma orientação;  todos os campos que tem esses nomes estão dando como não declarada:  

tiRetrato;
teNormal;
taHomologacao;

mdRodoviario;
tsTranspValores;
inContribuinte;
 

 

Eu preciso aplicar algum comando para criar essas variaveis, ou carregar de algum lugar??

o restante está ficando bala.... segue novo XML

 

 

image.thumb.png.a7204a71fb2edfd4876c2d9669e9faba.png

25240215005858000116570010000000011000000016-cte.xml

eu acredito que preciso puxar do meu banco de dados, e estes sejam apenas nomes de exemplo; mas antes de alterar tudo, achei melhor perguntar :)

Editado por PHCASTANHO
  • Moderadores
Postado
4 horas atrás, PHCASTANHO disse:

Italo, bom dia, 

 

Obrigado pelo rápido retorno;

Este código já estava no exemplo, e não alterei para primeiro testar a alimentação do componente.

Com sua orientação o XML já foi carregado com as informações;

 

Se puder me auxiliar em mais uma orientação;  todos os campos que tem esses nomes estão dando como não declarada:  

tiRetrato;
teNormal;
taHomologacao;

mdRodoviario;
tsTranspValores;
inContribuinte;
 

 

Eu preciso aplicar algum comando para criar essas variaveis, ou carregar de algum lugar??

o restante está ficando bala.... segue novo XML

 

 

image.thumb.png.a7204a71fb2edfd4876c2d9669e9faba.png

25240215005858000116570010000000011000000016-cte.xml 3.84 kB · 1 download

eu acredito que preciso puxar do meu banco de dados, e estes sejam apenas nomes de exemplo; mas antes de alterar tudo, achei melhor perguntar :)

sim são enumeradores. que tu deve guardar no seu banco quando fizer o cadastro do conhecimento

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Membros Pro
Postado

Juliomar, obrgiado pelo retorno, aos poucos consegui me identificar aqui.  porém, travaram algumas informações:

a chave está dando como nao identificada.

 

e alguns campos que vou te relatar aqui com erro semelhante:

infCTeNorm.infCarga.InfQ.cUnid := uKg;
infCTeNorm.infCarga.InfQ.tpMed  := 'Kg';

infCTeNorm.infDoc.InfNFE.chave := ''     ( deixei com aspas, mas vou puxar ela do meu banco de dados)

    with vPrest.comp.New do
    begin
      vPrest.xNome := 'DFRNER KRTJ';     -> estes dois, mesmo erro...
      vPrest.vComp := 100.00;
    end;

 

Se puder me direcionar sobre estas falhas, eu agradeço.

 

 

 

image.thumb.png.1861174380dc43a2b0225274b35bcbd9.png

  • Membros Pro
Postado

completo não, muita coisa tenho dificuldade de interpretar, com o exemplo tive mais facilidade de adequar. mas de qualquer forma, eu vou ler novamente e tentar encontrar esses erros no manual.

  • Consultores
Postado

Bom dia @PHCASTANHO,

Complementando o que o @Juliomar Marchetti já lhe passou.

Você deve ter notado que alguns campos ao serem alimentados eles não são alimentados com um numero ou um string e sim com algo que chamamos de enumerados.

Exemplos:

tiRetrato;
teNormal;
taHomologacao;

mdRodoviario;
tsTranspValores;
inContribuinte;

Na unit que você tem a rotina que alimenta o componente com os dados do CTe, em uses devemos declarar a unit que contem a definição desses enumerados.

Exemplo:

uses
  pcnConversao, pcnConversaoCTe;

Alguns enumerados estão definidos na unit pcnConversao e outros em pcnConversaoCTe.

Como você esta usando o componente ACBrCTe tente informar somente o pcnConversaoCTe, se o Delphi reclamar a ausência de definição de mais algum enumerado, você declara também o pcnConversao.

  • 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

  • Membros Pro
Postado

Bom dia amigo… obrigado pelo retorno … depois de ler exemplos, pouco do manual, etc, notei e consegui gerar o xml… obrigado por enquanto !! 

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