Pessoal a rotina abaixo está gravando C001 e C010 para cada C100, fiz este ajuste apenas para
testar, porém, a contagem dos registro C0999 ficou errado.
procedure TBloco_C.WriteRegistroC001 ;
begin
if Assigned(FRegistroC001) then
begin
if (RegistroC990.QTD_LIN_C = 0) then // Já gravou o C001 ?
begin
with FRegistroC001 do
begin
Add( LFill( 'C001' ) +
LFill( Integer(IND_MOV), 0 ) ) ;
end;
end
else
if FRegistroC001.IND_MOV = imComDados then
begin
WriteRegistroC010(FRegistroC001) ;
end;
RegistroC990.QTD_LIN_C := RegistroC990.QTD_LIN_C + 1;
end;
end;
procedure TBloco_C.WriteRegistroC010(RegC001: TRegistroC001) ;
var
strIND_ESCRI: string;
intFor: Integer;
begin
if Assigned(RegC001.RegistroC010) then
begin
for intFor := 0 to RegC001.RegistroC010.Count - 1 do
begin
with RegC001.RegistroC010.Items[intFor] do
begin
if (RegistroC990.QTD_LIN_C = 1) then // Já gravou o C010 ?
begin
Check(funChecaCNPJ(CNPJ), '(0-010) ESTABELECIMENTO: O CNPJ "%s" digitado é inválido!', [CNPJ]);
Add( LFill('C010') +
LFill(CNPJ, 14)+
LFill(Integer(IND_ESCRI), 1) ) ;
end;
end;
// Registros FILHOS
if (RegistroC990.QTD_LIN_C > 1) then // Já gravou o C010 ?
begin
WriteRegistroC100( RegC001.RegistroC010.Items[intFor] );
WriteRegistroC180( RegC001.RegistroC010.Items[intFor] );
WriteRegistroC190( RegC001.RegistroC010.Items[intFor] );
WriteRegistroC380( RegC001.RegistroC010.Items[intFor] );
WriteRegistroC395( RegC001.RegistroC010.Items[intFor] );
WriteRegistroC490( RegC001.RegistroC010.Items[intFor] );
WriteRegistroC500( RegC001.RegistroC010.Items[intFor] );
WriteRegistroC600( RegC001.RegistroC010.Items[intFor] );
end;
//
RegistroC990.QTD_LIN_C := RegistroC990.QTD_LIN_C + 1;
end;
// Variavél para armazenar a quantidade de registro do tipo.
FRegistroC010Count := FRegistroC010Count + RegC001.RegistroC010.Count;
end;
end;