Ir para conteúdo
  • Cadastre-se

dev botao

Erro Na Validação Da Di No Xml De Importação Na Aduana


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

Recommended Posts

Bom dia,
 
Estou com um problema relacionado a nota fiscal de importação, a qual foi emitida e enviada, mas na validação efetuada pelo despachante Aduaneiro está reportando o seguinte erro, "Número da DI informado na nota fiscal eletrônica 21506853210 diferente da DI informada no processo:1506853210"
 
Sei que o número 2 adicionado na frente do número da DI é para identificar se é DI ou DSI e que o dígito verificador também é calculado com o mesmo, já utilizo dessa forma há um bom tempo e ainda não tinha ocorrido nenhum problema referente, porém este erro repetiu em dois clientes, para resolver momentaneamente fiz uma pequena modificação na unit pcnNFeW.pas no procedimento GerarDetProdDI(const i: Integer) para não gerar o número 2 da DI apenas os números restantes no XML, permanecendo as validações anteriores ao processo, gostaria de saber se alguém passou por esse problema, também se o que fiz é o correto ou se a validação da Aduana está incorreta, aparentemente isso pode ser uma nova validação da NFe 3.10, mas não tenho certeza disso.
 
Att;

post-3634-0-06519500-1429538159_thumb.pn

Editado por EvertonEVN035
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...

Ao gerar uma nota de importação com dispensa da emissão da DI, DSI ou outro documento controlado pela RFB deve ser gerada a TAG <nDI> com a descrição NIHIL, porém ao informar este valor o ACBr acaba por não permitir gerando exceção.

Também na mesma função está ocorrendo erro ao validar o número da DI, a validação executada pelo módulo 11 está sendo efetuada com o carácter de identificação (2=DI ou 4=DSI), porém na aduana o cálculo é realizado sem o mesmo, para resolver os problemas identificados foram efetuados as seguintes alterações:

unit ACBrDFeUtil.pas
Repositório:
class function DFeUtil.ValidaDIDSI(AValue: string): Boolean;
var
 ano: Integer;
 sValue: String;
begin
 // AValue = TAANNNNNNND
 // Onde: T Identifica o tipo de documento ( 2 = DI e 4 = DSI )
 //       AA Ano corrente da geração do documento
 //       NNNNNNN Número sequencial dentro do Ano ( 7 ou 8 dígitos )
 //       D Dígito Verificador, Módulo 11, Pesos de 2 a 9

 AValue := LimpaNumero(AValue);
 ano := StrToInt(Copy(IntToStr(YearOf(Date)), 3, 2));
 if (length(AValue) < 11) or (length(AValue) > 12) then
   Result := False
 else if (copy(Avalue, 1, 1) <> '2') and (copy(Avalue, 1, 1) <> '4') then
        Result := False
      else if not ((StrToInt(copy(Avalue, 2, 2)) >= ano -1) and (StrToInt(copy(Avalue, 2, 2)) <= ano +1)) then
             Result := False
           else begin
             sValue := copy(AValue, 1, length(AValue)- 1);
             Result := copy(AValue, length(AValue), 1) = Modulo11(sValue);
           end;
end;


Ajuste:
class function DFeUtil.ValidaDIDSI(AValue: string): Boolean;
var
 ano: Integer;
 sValue: String;
begin
  // AValue = TAANNNNNNND
  // Onde: T Identifica o tipo de documento ( 2 = DI e 4 = DSI )
  //       AA Ano corrente da geração do documento
  //       NNNNNNN Número sequencial dentro do Ano ( 7 ou 8 dígitos )
  //       D Dígito Verificador, Módulo 11, Pesos de 2 a 9
  
  {
    Validação conforme orientação (Orientacao_da_NF-e_versao_2015.pdf)
    esta trata-se da dispensa da emissão da DI, DSI ou outro documento controlado pela RFB
  }
  if (UpperCase(AValue) = 'NIHIL') then
   Result := True
  else
    begin
    AValue := LimpaNumero(AValue);
    ano := StrToInt(Copy(IntToStr(YearOf(Date)), 3, 2));
    if (length(AValue) < 11) or (length(AValue) > 12) then
      Result := False
    else if (copy(Avalue, 1, 1) <> '2') and (copy(Avalue, 1, 1) <> '4') then
           Result := False
         else if not ((StrToInt(copy(Avalue, 2, 2)) >= ano -1) and (StrToInt(copy(Avalue, 2, 2)) <= ano +1)) then
                Result := False
              else begin
                 {Alterado para não calcular o módulo 11 com o dígito identificador do tipo de documento,
                 pois a aduana não calcula com este o dígito verificador}
                sValue := copy(AValue, 2, length(AValue)- 1);
                Result := copy(AValue, length(AValue), 1) = Modulo11(sValue);
              end;
  end;
end;


Caso alguém tenha passado pelo mesmo problema e puder informar uma possível solução para contribuir com os ajustes e se possível gostaria que fosse ajustado no ACBR.

Orientacao_da_NF-e_versao_2015.pdf

ACBrDFeUtil.pas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 10 meses depois ...
  • Moderadores
13 minutos atrás, ademar-datalan disse:

Boa tarde,

Estamos com o mesmo problema, quando não tem número de DI é informado o código NIHIL, fazendo isso não conseguimos processar a NF-e.

Teria que fazer um ajuste na validação que o AcBr está fazendo.

Tem quase um ano do último post!

acho que já foi resolvido e nesse ínterim foi mudado para o trunk2

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Boa noite, meu cliente utilizou esta rotina e acabou por gerar erro novamente,

de momento efetuei uma validação para quando enviar NIHIL não executar a função ValidaDIDSI, ou seja resultando True na função.

Outra situação é a DI que na Aduana quando importa o XML para a validação o dígito verificador é calculado com o primeiro digito, ou seja se informar 21600xxx-y vai ocorrer falha sendo necessário informar apenas 1600xxx-y sem o primeiro dígito no XML, também efetuei o ajuste para enviar para o XML somente o número da DI sem o primeiro dígito.

Também tive problemas com o nRE que em uma situação específica pode ser ZERO, aonde o número será gerado posteriormente na Aduana, assim também validei para enviar ZERO quando for o CFOP específico.

Link para o comentário
Compartilhar em outros sites

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