Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde.

Uma modificação recente na unit pcteCTeW.pas removeu a geração das Informações de Seguro da Carga (infCTeNorm.seg) para CT-es emitidos na versão 1.04.
Estas informações estão previstas no manual de orientações do contribuinte desta versão.

if CTe.infCTe.versao = 2 then
   GerarInfSeg;

Seria possível remover esta condição?

No aguardo.
Att. Allan

  • Consultores
Postado

Boa tarde Allan,

Quem ainda usa a versão 1.04 do CT-e?

Essa versão deixou de ser aceita pela SEFAZ em 01/06/2014.

E esta previsto o fim da versão 2.00 em 04/12/2017, a partir dessa data a SEFAZ só vai aceitar a versão 3.00 do CT-e.

Outra coisa para poder gerar o XML do CT-e segundo a versão 1.04 é preciso habilitar uma diretiva de compilação que encontra-se no arquivo ACBr.inc

Com isso será usado uma outra rotina para gerar o XML que por sinal nem sequer existe essa condição, ou seja, as informações do seguro é gerado independente de versão.

  • 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

Postado

Boa tarde, Italo.

Esta situação que mencionei não é para emissão de CT-e na versão 1.04, mas apenas para "gerar" um XML com base nas informações alimentadas no componente.
Temos um sistema que recupera os XMLs através da consulta via Chave de Acesso no portal da Sefaz.

Att.

  • Consultores
Postado

Allan,

Como dito para gerar o XML do CT-e na versão 1.04 é preciso habilitar uma diretiva de compilação.

Se você abrir o arquivo ACBr.inc vai encontrar as linhas abaixo:

// Definições para o compomente ACBrCTe
// Define o Pacote de Liberação / Descomente o pacote a ser utilizado 
// Atenção: descomente apenas uma das definições
//------------------------------------------------------------------------------
//{$DEFINE PL_103}
//{$DEFINE PL_104}
{$DEFINE PL_200}

Note que por padrão esta habilitado a diretiva da versão 2.00.

Para gerar o XML segundo a versão 1.03 temos que habilitar a diretiva PL_103, o mesmo ocorre com a versão 1.04 e 2.00

Não teremos uma nova diretiva para a versão 3.00 pois a estrutura do XML é muito parecida da versão 2.00, as diferenças conseguimos resolver com a propriedade VersaoDF.

Não vejo necessidade de remover a condição, pois a rotina que contem essa condição só é usada pela versão 2.00 ou 3.00, como dito anteriormente para gerar na versão 1.04 é outra rotina que nem sequer tem essa condição.

Ao habilitar a diretiva PL_104 é usada a rotina que se encontra no arquivo pcteCTeW_V104.inc

Para demostrar o que estou dizendo, abra o arquivo pcteCTeW.pas temos logo no inicio:

{$I ACBr.inc}

unit pcteCTeW;

interface

uses
  SysUtils, Classes, pcnAuxiliar, pcnConversao, pcnGerador, pcteCTe,
  ACBrUtil, pcteConversaoCTe, pcnConsts, pcteConsts;

{$IFDEF PL_103}
 {$I pcteCTeW_V103.inc}
{$ENDIF}

{$IFDEF PL_104}
 {$I pcteCTeW_V104.inc}
{$ENDIF}

{$IFDEF PL_200}
// {$I pcteCTeW_V200.inc}
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//              Gera o XML para a versão 2.00           //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

A linha em negrito e em vermelho foi colocada prevendo uma nova versão totalmente diferente da versão 2.00, mas isso não ocorreu.

Logo não existe o arquivo pcteCTeW_V200.inc

Espero ter deixado claro que não se faz necessário remover a condição.

  • 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

Postado

Obrigado pela explicação, Italo.

Vou analisar aqui como proceder neste caso, pois como a aplicação deve trabalhar com todas as versões do CT-e, não será possível utilizar a diretiva de compilação.
De qualquer forma foi muito esclarecedor e mais uma vez agradeço pela atenção.

Att.

  • Curtir 1
  • 6 meses depois ...
Postado

Boa tarde,

Na procedure GerarInfCTeNorm mas especificamente na linha 1519 do arquivo pcteCTeW.pas existe uma condição que menciona que se a versão do conhecimento for maior que a 3.00 e o modelo for igual a 67 ira colocar informações da seguradora, ...GerarInfSeg...., quando não ele so esta colocando quando a versão for a 2.00, sendo que a versão do nosso conhecimento já virou para 3.00

...

 if (CTe.infCTe.versao >= 3) and (CTe.ide.modelo = 67) then
    begin
      GerarinfServico;
      GerarinfDocRef;
      GerarInfSeg;
    end
    else
    begin
      GerarinfCarga;

      if (CTe.Ide.tpServ <> tsIntermediario) and (CTe.Ide.tpServ <> tsMultimodal) then
        GerarInfDoc;

      if CTe.infCTeNorm.docAnt.emiDocAnt.Count > 0 then
        GerarDocAnt;

      if CTe.infCTe.versao = 2 then //*** ALTERAR AQUI PARA >= 2
        GerarInfSeg;
    end;

...

Temos que alterar essa linha pois existiu a necessidade de enviar essa informação da seguradora no conhecimento aquaviario normal, e não esta indo.

  • 4 semanas depois ...
Postado

Pessoal preciso de ajuda,

ao gerar o xml com informacoes de docant sempre no primeiro item gera vazio porque?

minha rotina é:

   for i := 0 to Memo1.lines.Count -1 do
     begin
        xch:=Memo1.lines;
        with infCTeNorm.docAnt.emiDocAnt.add do
           begin
            CNPJCPF:=zquery2.FieldByName('cgc_cpf').AsString;
            IE:=zquery2.FieldByName('Insc_est').AsString;
            UF:=zquery2.FieldByName('UF').AsString;
            xNome:=zquery2.FieldByName('Nome').AsString;
            idDocAnt.Add.idDocAntEle.Add.chCTe := xch;
           end;
      end;
 

-<docAnt>

-<emiDocAnt>

<CNPJ>00000000000000</CNPJ>

<IE/>

<UF/>

<xNome/>


-<idDocAnt>


-<idDocAntEle>

<chCTe>29180120147617005291570010000110581999988947</chCTe>

</idDocAntEle>

</idDocAnt>

</emiDocAnt>

-<emiDocAnt>

<CNPJ>20147617001970</CNPJ>

<IE>0962759651</IE>

<UF>RS</UF>

<xNome>EMPRESA TESTE LTDA</xNome>


-<idDocAnt>


-<idDocAntEle>

<chCTe>29180120147617005291570010000110581999988947</chCTe>

</idDocAntEle>

</idDocAnt>

</emiDocAnt>

-<emiDocAnt>

<CNPJ>20147617001970</CNPJ>

<IE>0962759651</IE>

<UF>RS</UF>

<xNome>EMPRESA TESTE LTDA</xNome>

-<idDocAnt>

-<idDocAntEle>

<chCTe>25171220147617004724570010000145211999985470</chCTe>

</idDocAntEle>

</idDocAnt>

</emiDocAnt>

</docAnt>

  • Consultores
Postado

Otavio,

Altere para:

with infCTeNorm.docAnt.emiDocAnt.add do
begin
  CNPJCPF:=zquery2.FieldByName('cgc_cpf').AsString;
  IE:=zquery2.FieldByName('Insc_est').AsString;
  UF:=zquery2.FieldByName('UF').AsString;
  xNome:=zquery2.FieldByName('Nome').AsString;

  for i := 0 to Memo1.lines.Count -1 do
  begin
    xch:=Memo1.lines; <== isso esta correto ??? como eu faço para pegar o segunda chave caso tenha?
    idDocAnt.Add.idDocAntEle.Add.chCTe := xch;
  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 (editado)

with infCTeNorm.docAnt.emiDocAnt.add do
begin
  CNPJCPF:=zquery2.FieldByName('cgc_cpf').AsString;
  IE:=zquery2.FieldByName('Insc_est').AsString;
  UF:=zquery2.FieldByName('UF').AsString;
  xNome:=zquery2.FieldByName('Nome').AsString;
  i:=0;
  for i := 0 to Memo1.lines.Count -1 do
  begin
    idDocAnt.Add.idDocAntEle.Add.chCTe := memo1.lines(i)    ==> 
  end;
end;

CONTINUA NO XML NO PRIMEIRO ITEM VAZIO

NO MEMO: CONTEM 2 LINHAS CADA LINHA UMA CHAVE CTE

43180208329911000179570000001277621001277628-cte.xml

 

 

 

Editado por Otavio gasparovic
  • Consultores
Postado

Otavio,

Se no memo contem duas chaves, lhe pergunto esta correto o que você esta fazendo?

Você me garante que ao executar pela primeira vez a linha:

  idDocAnt.Add.idDocAntEle.Add.chCTe := Memo1.lines;

ele vai pegar a primeira chave e ao executar pela segunda vez ele vai pegar a segunda chave?

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á 2470 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.