Bom dia,
Tem um problema no registro C120, o campo NUM_ACDRAW é opcional e do tipo string, quando ele não é informado no registro, o componente está fazendo o preenchimento com zeros até o limite do tamanho do campo, isso causa erro no validador.
Detectei que o problema reside no método "WriteRegistroC120" do código abaixo que está no arquivo ACBrEPCBloco_C_Class.pas :
procedure TBloco_C.WriteRegistroC120(RegC100: TRegistroC100);
var
intFor: integer;
strCOD_DOC_IMP: string;
begin
if Assigned(RegC100.RegistroC120) then
begin
for intFor := 0 to RegC100.RegistroC120.Count - 1 do
begin
with RegC100.RegistroC120.Items[intFor] do
begin
case COD_DOC_IMP of
diImportacao : strCOD_DOC_IMP := '0';
diSimplificadaImport : strCOD_DOC_IMP := '1';
end;
Add( LFill('C120') +
LFill(strCOD_DOC_IMP) +
LFill(NUM_DOC__IMP) +
LFill(PIS_IMP,0,2) +
LFill(COFINS_IMP,0,2) +
LFill(NUM_ACDRAW, 20)) ;
//
RegistroC990.QTD_LIN_C := RegistroC990.QTD_LIN_C + 1;
end;
end;
// Variavél para armazenar a quantidade de registro do tipo.
FRegistroC120Count := FRegistroC120Count + RegC100.RegistroC120.Count;
end;
end;
O trecho LFill(NUM_ACDRAW, 20) causa esse comportamento, corrigi fazendo a alteração para LFill(NUM_ACDRAW).