Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão PCNNFeW.pas


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

Recommended Posts

  • Membros Pro

Boa tarde,

Há algum tempo eu uso o ACBr para emitir NF-e, no entanto o controle do chave de acesso eu faço de uma forma diferente e ao atualizar para o Trunk 2 percebi um problema.

No seguinte trecho do PCNNFeW.pas está:

function TNFeW.GerarXml: Boolean;
var
  chave: AnsiString;
  Gerar: Boolean;
  xProtNFe : String;
  xCNPJCPF : string;
begin
  
  Usar_tcDe4 := (NFe.infNFe.Versao >= 3.10);
  Versao     := Copy(NFe.infNFe.VersaoStr, 9, 4);

  chave := '';
  if NFe.infNFe.Versao >= 2 then
   begin
     xCNPJCPF := nfe.emit.CNPJCPF; 
     if not EstaVazio(nfe.Avulsa.CNPJ) then 
       xCNPJCPF := nfe.Avulsa.CNPJ;   
  
     if not GerarChave(Chave, nfe.ide.cUF, nfe.ide.cNF, nfe.ide.modelo, nfe.ide.serie,
       nfe.ide.nNF, StrToInt(TpEmisToStr(nfe.ide.tpEmis)), nfe.ide.dEmi, xCNPJCPF) then
       Gerador.wAlerta('A01', 'infNFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);
   end
  else
   begin
     if not GerarChaveCTe(chave, nfe.ide.cUF, nfe.ide.cNF, nfe.ide.modelo, nfe.ide.serie,
       nfe.ide.nNF, nfe.ide.dEmi, nfe.emit.CNPJCPF) then
       Gerador.wAlerta('A01', 'infNFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);
   end;

  nfe.infNFe.ID := chave;

No entanto como eu faço a geração da chave de acesso de outra forma, eu passo a chave de acesso na propriedade NFe.InfNFe.ID.

Fiz uma alteração aqui no código para resolver o problema, e vou deixar como sugestão essa alteração, pois a meu ver em nada altera o funcionamento normal.

Então, esse trecho do código ficaria assim:

function TNFeW.GerarXml: Boolean;
var
  chave: AnsiString;
  Gerar: Boolean;
  xProtNFe : String;
begin

  Usar_tcDe4 := (NFe.infNFe.Versao >= 3.10);
  Versao     := Copy(NFe.infNFe.VersaoStr, 9, 4);

  if (NFe.infNFe.ID = '')  then
  begin
    chave := '';
    if NFe.infNFe.Versao >= 2 then
    begin
      if not GerarChave(Chave, nfe.ide.cUF, nfe.ide.cNF, nfe.ide.modelo, nfe.ide.serie,
        nfe.ide.nNF, StrToInt(TpEmisToStr(nfe.ide.tpEmis)), nfe.ide.dEmi, nfe.emit.CNPJCPF) then
        Gerador.wAlerta('A01', 'infNFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);
    end
    else
    begin
      if not GerarChaveCTe(chave, nfe.ide.cUF, nfe.ide.cNF, nfe.ide.modelo, nfe.ide.serie,
        nfe.ide.nNF, nfe.ide.dEmi, nfe.emit.CNPJCPF) then
        Gerador.wAlerta('A01', 'infNFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);
    end;
    nfe.infNFe.ID := chave;
  end;

Se for verificado que realmente isso não muda em nada no funcionamento, eu gostaria de pedir que essa alteração fosse aplicada aos fontes do ACBr.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Ronaldo,

Essa alteração não será aplicada pois tivemos diversos problemas com outros desenvolvedores que estavam atribuindo valores inválidos a propriedade ID.

Chegamos a conclusão que o conteúdo da propriedade ID tem que ser gerada pelo próprio componente com os dados atribuídos as outras propriedades usadas na geração do mesmo.

Te faça uma pergunta, você gera por fora o conteúdo da propriedade ID do Inutilizar Numeração?

Acredito que não, sendo assim por que você quer gerar por fora a chave que é o conteúdo do atributo ID da nota?

Não faz nenhum sentido, você pode muito bem deixar o componente gerar essa informação e depois ler:

chave := ACBrNFe.NotasFiscais.Items[ X ].NumID;

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