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.