Pesquisar na Comunidade
Showing results for tags 'drawback'.
Encontrado 2 registros
-
Função ValidaDrawback e o novo formato após a NT 2020/005 da NFe
um tópico no fórum postou Fábio dos Santos Amorim ACBrNFe
A atual função ValidaDrawback não está, na revisão atual do SVN (22620), contemplando a Nota Técnica 2020/005 da NFe que diz: *Esse novo tamanho é de 20 caracteres. Como pode ser observado no código abaixo, apenas número são aceitos, apesar do argumento ser String, e apenas códigos de tamanho 11 e 9 são aceitos. function ValidaDrawback(AValue: String): Boolean; var ano: integer; begin // AValue = AAAANNNNNND // Onde: AAAA Ano corrente do registro // NNNNNN Número sequencial dentro do Ano ( 6 dígitos ) // D Dígito Verificador, Módulo 11, Pesos de 2 a 9 AValue := OnlyNumber(AValue); ano := StrToInt(Copy(IntToStr(YearOf(Date)), 3, 2)); if length(AValue) = 11 then AValue := copy(AValue, 3, 9); if length(AValue) <> 9 then Result := False else if not ((StrToInt(copy(Avalue, 1, 2)) >= ano - 2) and (StrToInt(copy(Avalue, 1, 2)) <= ano + 2)) then Result := False else Result := copy(AValue, 9, 1) = Modulo11(copy(AValue, 1, 8)); end; Ainda não encontrei nenhum novo formato e o próprio arquivo de leiaute da SEFAZ informa o mesmo formato de antes para drawback. Como uso essa função no meu aplicativo para realizar a validação do código conforme o usuário edita as informações, no momento não consigo acompanhar essa mudança. Alguém sabe se há alguma iniciativa para alguma correção ou se alguém já descobriu esse novo formato? Obrigado. -
Olá gostaria de sugerir uma correção na validação do Drawback da NFe, me deparei essa semana com uma nota de importação de um cliente, o qual tem seu registro de Drawback iniciando com 2016, sua concessão do Drawback é valido por 2 anos, conforme anexo abaixo destaquei data de registro e validade, acontece que o ACBR NFe existe uma validação que estava retornando Falso o qual impedia a emissão da NFe, ajustei o método ValidaDrawback do fonte ACBrDFeUtil.pas, anexei nesse post tanto o fonte completo como o patch de correção do ACBr como for mais fácil para comparar com minha alteração. Também aproveito para postar aqui o código de como estava: function ValidaDrawback(AValue: String): Boolean; var ano: integer; begin // AValue = AAAANNNNNND // Onde: AAAA Ano corrente do registro // NNNNNN Número sequencial dentro do Ano ( 6 dígitos ) // D Dígito Verificador, Módulo 11, Pesos de 2 a 9 AValue := OnlyNumber(AValue); ano := StrToInt(Copy(IntToStr(YearOf(Date)), 3, 2)); if length(AValue) = 11 then AValue := copy(AValue, 3, 9); if length(AValue) <> 9 then Result := False else if not ((StrToInt(copy(Avalue, 1, 2)) >= ano - 1) and (StrToInt(copy(Avalue, 1, 2)) <= ano + 1)) then Result := False else Result := copy(AValue, 9, 1) = Modulo11(copy(AValue, 1, 8)); end; E como ficou depois da minha alteração: function ValidaDrawback(AValue: String): Boolean; var ano: integer; begin // AValue = AAAANNNNNND // Onde: AAAA Ano corrente do registro // NNNNNN Número sequencial dentro do Ano ( 6 dígitos ) // D Dígito Verificador, Módulo 11, Pesos de 2 a 9 AValue := OnlyNumber(AValue); ano := StrToInt(Copy(IntToStr(YearOf(Date)), 3, 2)); if length(AValue) = 11 then AValue := copy(AValue, 3, 9); if length(AValue) <> 9 then Result := False else if not ((StrToInt(copy(Avalue, 1, 2)) >= ano - 2) and (StrToInt(copy(Avalue, 1, 2)) <= ano + 2)) then Result := False else Result := copy(AValue, 9, 1) = Modulo11(copy(AValue, 1, 8)); end; Qualquer dúvida estou a disposição e agradeço caso a sugestão de alteração seja aceita. ACBrDFeUtil.pas.patch ACBrDFeUtil.pas