Creio que não tive o direito de passar por uma analise do código enviado. Como eu disse anteriormente, eu me atentei ao fato de manter a compatibilidade com quem já preenche a tag E1 e P1 para popular nos registros que sofrem a herança.
Segue código com minhas alterações e indicativos da compatibilidade aplicada:
procedure TPAF_P.WriteRegistroP2;
...
for intFor := 0 to FRegistroP2.Count - 1 do
begin
with FRegistroP2.Items[intFor] do
begin
if trim(CNPJ) = trim('') then ===> Se o CNPJ não for alimentado na classe do P2, será herdado da P1, assim, mantendo compatibilidade.
CNPJ := FRegistroP1.CNPJ;
///Check movido para dentro do with, antes estava acima dele.
Check(funChecaCNPJ(CNPJ), '(P2) ESTOQUE: O CNPJ "%s" digitado é inválido!', [CNPJ]);
Add( LFill('P2') +
LFill(CNPJ, 14) +
...
end;
procedure TPAF_E.WriteRegistroE2;
...
with FRegistroE2.Items[intFor] do
begin
if trim(CNPJ) = trim('') then ===> Se o CNPJ não for alimentado na classe do E2, será herdado da E1, assim, mantendo compatibilidade.
CNPJ := FRegistroE1.CNPJ;
///Check movido para dentro do with, antes estava acima dele.
Check(funChecaCNPJ(CNPJ), '(E2) ESTOQUE: O CNPJ "%s" digitado é inválido!', [CNPJ]);
Add( LFill('E2') +
LFill(CNPJ, 14) +
...
end;
Aguardo uma nova analise e agradeço pela atenção. Att Gefferson