Ir para conteúdo
  • Cadastre-se

dev botao

Cte - Usando Eventos


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

Recommended Posts

Postado

Pessoal,

 

Não obtendo um erro ao testar a geração de ventos em ambiente de HOMOLOGAÇÃO (não tentei em produção).

 

Erro obtido:

 

 'Modal não encontrado no XML.'.
 
Abaixo como estou gerando o evento:
 
  ACBrCTe.Conhecimentos.Clear;
  ACBrCTe.Conhecimentos.LoadFromFile(sPathTEMP+schNfe+'.XML');
  ACBrCTe.EventoCTe.Evento.Clear;
  ACBrCTe.EventoCTe.idLote := 1;
  with ACBrCTe.EventoCTe.Evento.Add do
  begin
     infEvento.cOrgao              := StrToIntDef(Copy(g_EmitCodCidade, 1, 2), 0);
     if lHomologacao then
        InfEvento.tpAmb            := taHomologacao
     else
        InfEvento.tpAmb            := taProducao;
 
     infEvento.CNPJ                := g_EmitCNPJ;
     infEvento.chCTe               := schNfe;
     infEvento.dhEvento            := Now;
     infEvento.tpEvento            := StrToTpEvento(ok, sTipo);
     infEvento.nSeqEvento          := iSeqEvento;
     infEvento.detEvento.nProt     := sProtocolo;
     infEvento.detEvento.xJust     := Carta.Text;
     infEvento.detEvento.modal     := mdRodoviario;
     infEvento.detEvento.vICMS     := qryDados_CTe.FieldByName('A06VIC').AsCurrency;
     infEvento.detEvento.vTPrest   := qryDados_CTe.FieldByName('A06VLF').AsCurrency;
     infEvento.detEvento.vCarga    := qryDados_CTe.FieldByName('A06VLM').AsCurrency;
 
     If qryDados_CTe.FieldByName('A06CLI').AsString=qryDados_CTe.FieldByName('A06CGR').AsString then
         infEvento.detEvento.Toma:=tmRemetente
     else If qryDados_CTe.FieldByName('A06CLI').AsString=qryDados_CTe.FieldByName('A06CGD').AsString then
         infEvento.detEvento.Toma:=tmDestinatario
     else
        infEvento.detEvento.Toma:=tmOutros;
 
     //
     //  Dados do Tomador
     //
     qryClientes.Close;
     qryClientes.ParamByName('A01CGC').AsString := qryDados_CTe.FieldByName('A06CLI').AsString;
     qryClientes.Open;
     infEvento.detEvento.CNPJCPF    := qryDados_CTe.FieldByName('A06CLI').AsString;
     infEvento.detEvento.IE         := IfThen(qryClientes.FieldByName('A01INS').AsString='','ISENTO',qryClientes.FieldByName('A01INS').AsString);
     infEvento.detEvento.UF         := qryClientes.FieldByName('UF_ORIGEM').AsString;
     qryClientes.Close;
 
     infEvento.detEvento.UFIni      := g_EmitUF;
     infEvento.detEvento.UFFim      := qryDados_CTe.FieldByName('A06DUF').AsString;
  end;
  qryDados_CTe.Close;
  if ACBrCTe.EnviarEventoCTe(ACBrCTe.EventoCTe.idLote) then  // <<-- AQUI ocorre o ERRO
 

 

Alguma dica ?? 

 

Abraços,

Moacir

Postado

Bom Dia Italo,

 

Na verdade estou tentando enviar os dois tipos: Carta de correção e o Cancelamento e o erro ocorre nos dois casos.

Aproveito para perguntar: posso gerar o XML do evento e grava-lo antes de enviar ?

 

Forte abraço,

 

Moacir

  • Consultores
Postado

Moacir,

 

Segundo a NT 2013/006 que traz uma preliminar da versão 2.00 do Manual de Orientações do Contribuinte - CT-e, na página 2 temos:

 

(...)

Prazo para entrada em vigência das alterações:

Ambiente de Homologação: até 01/09/2013;

Ambiente de Produção: 01/11/2013.

(...)

 

E checando o Portal Nacional do CT-e não temos nenhuma informação que a data de liberação do ambiente de homologação foi antecipada.

 

Logo não temos condições de testar as rotinas implementadas no componente, visando atender a nova versão.

 

O jeito é aguardar.

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

  • Solution
Postado

Italo,

 

Mais uma vez meu muito obrigado.

 

Então vou me concentrar no Manifesto Eletrônico.

 

Um forte abraço e uma excelente semana ao amigo !

 

Moacir 

  • 2 meses depois ...
Postado

Olá pessoal,

 

Vocês tem novidades a respeito dos eventos para o CT-e?

 

Estou fazendo alguns testes aqui, e como estou no ES, o ACBrCTe altera o código do órgão de 32 para 91 (pcteEventoCTe.pas, linha 276), mas essa informação não é aceita pelo schema.

 

Valew!

 

Itamar

Itamar Bermond

Ibersoft Sistemas
Governador Valadares, MG

  • Consultores
Postado

Boa tarde a todos,

 

Fiz uma alteração na function GetcOrgao, favor atualizar os fontes e testar novamente.

 

Lembrando que essa alteração tem haver com o envio de eventos que vai ser muito usada na versão 2.0 do CT-e.

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

Postado

Bom Dia Srs, tudo bem?

 

Estou tentando enviar a CC-e do CT-e 2.0, mas ele apresenta este erro, que descrevo abaixo:

 

Falha na validação dos dados do Envio de Evento 
'A Carta de Correcao e disciplinada pelo Art. 58-B do CONVENIO/SINIEF 06/89: Fica permitida a utilizacao de carta de correcao...' viola a restrição enumeration de 'A Carta de Correção é disciplinada pelo Art. 58-B do CONVÊNIO/SINIEF 06/89: Fica permitida a utilização de carta de correção...'.
 
Ele está validando o xCondUso que não consigo igualar as informações. Alguma sugestão para acertar o problema?
 
Aproveitando o post, poderá ser impresso o Cancelamento e a CC-e como acontece na NF-e? Muito Obrigado!
 
Atenciosamente,
Fernando Dutra.
  • Consultores
Postado

Boa tarde Fernando,

 

Tinha um erro na montagem do XML da CC-e para o CT-e versão 2.0, favor atualizar os fontes e tentar novamente.

 

Quanto a impressão da CC-e aos moldes que foi feito para a NF-e, ainda não foi implementado, se desejar arregaçar as mangas e implementar, seja bem vindo.

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

  • 2 semanas depois ...
Postado

Boa Tarde Ítalo, tudo bem?

 

Estive ausente por um tempo, por isso a demora, mesmo atualizando o componente, ainda não consegui ter êxito. Abaixo coloco como está a estrutura do meu código, e as tentativas que fiz para solucionar. Se puder me ajudar por favor. Não estou conseguindo achar o problema. Enquanto ao desenvolvimento, vou verificar como faço para ajudar. Muito Obrigado pela força!

 

infEvento.tpEvento := teCCe;
infEvento.nSeqEvento := 1;
infEvento.detEvento.descEvento := 'Carta de Correcao';
 
InfEvento.detEvento.infCorrecao.Add;
InfEvento.detEvento.infCorrecao.Items[0].grupoAlterado := 'enderRem';
InfEvento.detEvento.infCorrecao.Items[0].campoAlterado := 'nro';
InfEvento.detEvento.infCorrecao.Items[0].valorAlterado := '123';
//nfEvento.detEvento.infCorrecao.Items[0].nroItemAlterado := 1;
 
//InfEvento.detEvento.xCondUso := '';
 
// InfEvento.detEvento.xCondUso := 'A Carta de Correcao e disciplinada pelo Art. 58-B do CONVENIO/SINIEF 06/89: '+
//                                 'Fica permitida a utilizacao de carta de correcao, para regularizacao de erro ocorrido na '+
//                                 'emissao de documentos fiscais relativos a prestacao de servico de transporte, desde que o '+
//                                 'erro nao esteja relacionado com: I - as variaveis que determinam o valor do imposto tais como: '+
//                                 'base de calculo, aliquota, diferenca de preco, quantidade, valor da prestacao;II - a correcao '+
//                                 'de dados cadastrais que implique mudança do emitente, tomador, remetente ou do destinatario;III - '+
//                                 'a data de emissao ou de saida.';
 
//InfEvento.detEvento.xCondUso := 'A Carta de Correção é disciplinada pelo Art. 58-B do CONVÊNIO/SINIEF 06/89: '+
//                                'Fica permitida a utilização de carta de correção, para regularização de erro '+
//                                'ocorrido na emissão de documentos fiscais relativos à prestação de serviço de '+
//                                'transporte, desde que o erro não esteja relacionado com: I - as variáveis que '+
//                                'determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de '+
//                                'preço, quantidade, valor da prestação;II - a correção de dados cadastrais que '+
//                                'implique mudança do emitente, tomador, remetente ou do destinatário;III - a '+
//                                'data de emissão ou de saída.';
  • Consultores
Postado

Bom dia Fernando,

 

Tente alimentar o componente desta forma:

 

 

 ACBrCTe.EventoCTe.Evento.Clear;

 with ACBrCTe.EventoCTe.Evento.Add do
  begin
   infevento.chCTe    := sChave;
   infEvento.CNPJ     := sCNPJ;
   infEvento.dhEvento := now;
   infEvento.tpEvento := teCCe;

   infEvento.detEvento.xCondUso := '';

   with InfEvento.detEvento.infCorrecao.Add do
    begin
         grupoAlterado := 'enderRem';
         campoAlterado := 'nro';
         valorAlterado   := '123';
         nroItemAlterado := 1;
    end;
  end;

 

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

Postado

Bom Dia Ítalo, tudo bem?

 

Eu copiei o código acima mudando apenas o nome das variáveis, e infelizmente dá o mesmo erro. Eu até baixei novamente os arquivos que foram alterados Desculpe a ignorância em algum aspecto. Segue o exemplo que criei. Obrigado!

 

 

ACBrCTe1.EventoCTe.Evento.Clear;
with ACBrCTe1.EventoCTe.Evento.Add do
 begin
  if (wCTEPRODUCAO = 'S') then
     InfEvento.tpAmb := taProducao
  else
    InfEvento.tpAmb := taHomologacao;
 
  infevento.chCTe    := wIDNFE;
  infEvento.CNPJ     := wCnpj;
  infEvento.dhEvento := now;
  infEvento.tpEvento := teCCe;
  infEvento.detEvento.xCondUso := '';
 
  with InfEvento.detEvento.infCorrecao.Add do
   begin
      grupoAlterado := 'enderRem';
      campoAlterado := 'nro';
      valorAlterado   := '123';
      nroItemAlterado := 1;
   end;
 end;
 
Result := ACBrCTe1.EnviarEventoCTe(1);

 

  • Consultores
Postado

Fernando,

 

Esta ocorrendo falha na validação do XML, mais precisamente na TAG xCondUso ?

 

Se sim, o motivo é simples, a SEFAZ tinha publicado um schema errado, favor atualizar os schemas.

 

Dentro da pasta: ...\Exemplos\ACBrCTe\Delphi\Schemas\V200 temos o arquivo: PL_CTe_200a_NT2013_013.zip

 

Utilize os schemas deste arquivo.

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

Postado

Bom Dia Ítalo, tudo bem?

 

Aproveitando o post, os cc-e's que eram gerados e aprovados, estavam sendo salvos em outro diretório, quando a rotina de "proc do evento" era realizado. Eu alterei o trecho de código, que segue abaixo, e resolveu esta questão. Espero ter ajudado. Obrigado!

 

 

//código antigo
if FConfiguracoes.Geral.Salvar then
   FConfiguracoes.Geral.Save(NomeArq, Texto);
 
if FConfiguracoes.Arquivos.Salvar then
 begin
   if (FEvento.Evento.Items[0].InfEvento.tpEvento = teCCe) and not FConfiguracoes.Arquivos.SalvarCCeCanEvento  then
 FConfiguracoes.Geral.Save(NomeArq, Texto,
FConfiguracoes.Arquivos.GetPathEvento(FEvento.Evento.Items[0].InfEvento.tpEvento))
   else if (FEvento.Evento.Items[0].InfEvento.tpEvento = teCancelamento) and not FConfiguracoes.Arquivos.SalvarCCeCanEvento then
 FConfiguracoes.Geral.Save(NomeArq, Texto, FConfiguracoes.Arquivos.GetPathCan)
   else
 FConfiguracoes.Geral.Save(NomeArq, Texto, FConfiguracoes.Arquivos.GetPathEvento(FEvento.Evento.Items[0].InfEvento.tpEvento));
 end; 
 
 
// código novo
if FConfiguracoes.Geral.Salvar then
   FConfiguracoes.Geral.Save(NomeArq, Texto);
 
if FConfiguracoes.Arquivos.Salvar then
 begin
   if (FEvento.Evento.Items[0].InfEvento.tpEvento = teCCe) and not FConfiguracoes.Arquivos.SalvarCCeCanEvento  then
 FConfiguracoes.Geral.Save(NomeArq, Texto, FConfiguracoes.Arquivos.GetPathCCe)
   else if (FEvento.Evento.Items[0].InfEvento.tpEvento = teCancelamento) and not FConfiguracoes.Arquivos.SalvarCCeCanEvento then
 FConfiguracoes.Geral.Save(NomeArq, Texto, FConfiguracoes.Arquivos.GetPathCan)
   else
 FConfiguracoes.Geral.Save(NomeArq, Texto, FConfiguracoes.Arquivos.GetPathEvento(FEvento.Evento.Items[0].InfEvento.tpEvento));
 end;

 

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