Olá,
Nós estamos enfrentando alguns problemas referente a Notas de exportação indireta. O que acontece é o seguinte:
Nosso cliente realiza a emissão de Notas de exportação indireta e ele nos comunicou que, conforme a portaria SECEX Nº 349, DE 21 DE MARÇO DE 2017, não será mais obrigatório a informação de NRE em notas de exportação.
O processo que o cliente nos informou é a seguinte: deve ser gerado a nota sem informar o NRE e enviar ao despachante aduaneiro. O despachante irá preencher a DU-E e ai sim será gerado uma NRE.
O problema surge nesse ponto, pois conforme o manual de orientação ao contribuinte versão 6.0, o campo NR-e é obrigatório dentro do grupo exportInd.
Se ele é obrigatório, ao tentar informar esse campo como vazio é retornado algumas rejeições pelo próprio ACBR devido ao método GerarDetProddetExport dentro do fonte pcnNFeW.
Código abaixo.
if (nfe.Det[i].Prod.detExport[j].nRE <> '') or (nfe.Det[i].Prod.detExport[j].chNFe <> '') then
begin
Gerador.wGrupo('exportInd', 'I52');
Gerador.wCampo(tcStr, 'I53', 'nRE ', 12, 12, 1, nfe.Det[i].Prod.detExport[j].nRE, DSC_NRE);
// AQUI ESTÁ VALIDANDO O NRE INFORMADO, SE FOR INFORMADO APENAS COM ZEROS, O MÉTODO ValidaRE NÃO DEIXARÁ PROSSEGUIR
if not ValidaRE(nfe.Det[i].Prod.detExport[j].nRE) then
Gerador.wAlerta('I53', 'nRE', DSC_NRE, ERR_MSG_INVALIDO);
Gerador.wCampo(tcEsp, 'I54', 'chNFe ', 44, 44, 1, OnlyNumber(nfe.Det[i].Prod.detExport[j].chNFe), DSC_REFNFE);
if not ValidarChave(nfe.Det[i].Prod.detExport[j].chNFe) then
Gerador.wAlerta('I54', 'chNFe', DSC_REFNFE, ERR_MSG_INVALIDO);
Gerador.wCampo(tcDe4, 'I55', 'qExport', 00, 15, 1, nfe.Det[i].Prod.detExport[j].qExport, DSC_QEXPORT);
Gerador.wGrupo('/exportInd');
end;
Para resolver essa situação, fiz alguns ajustes fazendo com que o NRe seja aceito quando informado como 000000000000 e a Sefaz autorizou sem mais problemas.
Acredito que para solucionar esse problema, seria necessário editar o método ValidaRE do fonte ACbreDFeUtil fazendo com que ele não rejeite quando informado o NRe com doze zeros.
O código que implementei foi o seguinte:
function ValidaRE(AValue: String): Boolean;
var
AnoData, AnoValue, SerieRE: integer;
begin
// AValue = AANNNNNNNSSS
// Onde: AA AnoData corrente da geração do documento
// NNNNNNN Número sequencial dentro do AnoData ( 7 dígitos )
// SSS Serie do RE (001, 002, ...)
Result := StrIsNumber(AValue) and (Length(AValue) = 12);
if Result then
begin
// CÓDIGO IMPLEMENTADO POR MIM
if (AValue = '000000000000') then
begin
Result := True;
Exit;
end;
AnoData := StrToInt(Copy(IntToStr(YearOf(Date)), 3, 2));
AnoValue := StrToInt(Copy(AValue, 1, 2));
SerieRE := StrToInt(Copy(AValue,10, 3));
Result := ((AnoValue >= (AnoData - 1)) and (AnoValue <= (AnoData + 1))) and
((SerieRE >= 1) and (SerieRE <= 999));
end;
end;
Com o código alterado acima, a SEFAZ autorizou o XML sem mais problemas. Segue em anexo o XML autorizado: 51181110671911000102550010000160011349418550-nfe.xml
Sei que o campo NRE no manual da SEFAZ diz que é obrigatório, porém a SEFAZ está autorizando quando informado apenas zeros, será que esse processo está correto?