Boa tarde.
Mesmo que o registro D100 use uma lista diferente de tipos para o campo do indicador do frete no registro C100, creio que seja possível usar o mesmo tipo de dados e apenas mapear os valores ao gerar o conteúdo do arquivo.
Não vou postar as units porque uso uma versão modificada do projeto, com propriedades adicionais. Então, pra reduzir os conflitos, vou postar apenas o código modificado em cada unit.
ACBrEFDBlocos.pas
/// Indicador do tipo do frete
TACBrIndFrt = (tfPorContaEmitente, // 0 - Contratação do Frete por conta do Remetente (CIF)
tfPorContaDestinatario, // 1 - Contratação do Frete por conta do Destinatário (FOB)
tfPorContaTerceiros, // 2 - Contratação do Frete por conta de Terceiros
tfProprioPorContaRemetente, // 3 - Transporte Próprio por conta do Remetente
tfProprioPorContaDestinatario, // 4 - Transporte Próprio por conta do Destinatário
tfSemCobrancaFrete, // 9 - Sem Ocorrência de Transporte
tfNenhum // Preencher vazio
);
ACBrEFDBloco_D_Class.pas
if DT_INI < EncodeDate(2012,07,01) then
begin
case IND_FRT of
tfPorContaTerceiros: strIND_FRT := '0';
tfPorContaEmitente, tfProprioPorContaRemetente: strIND_FRT := '1';
tfPorContaDestinatario, tfProprioPorContaDestinatario: strIND_FRT := '2';
tfSemCobrancaFrete: strIND_FRT := '9';
tfNenhum: strIND_FRT := '';
end
end
else
begin
case IND_FRT of
tfPorContaEmitente, tfProprioPorContaRemetente: strIND_FRT := '0';
tfPorContaDestinatario, tfProprioPorContaDestinatario: strIND_FRT := '1';
tfPorContaTerceiros: strIND_FRT := '2';
tfSemCobrancaFrete: strIND_FRT := '9';
tfNenhum: strIND_FRT := '';
end;
end;
ACBrEFDBloco_C_Class.pas
if DT_INI < EncodeDate(2012,01,01) then
begin
case IND_FRT of
tfPorContaTerceiros: strIND_FRT := '0';
tfPorContaEmitente, tfProprioPorContaRemetente: strIND_FRT := '1';
tfPorContaDestinatario, tfProprioPorContaDestinatario: strIND_FRT := '2';
tfSemCobrancaFrete: strIND_FRT := '9';
tfNenhum: strIND_FRT := '';
end
end
else if DT_INI < EncodeDate(2018,01,01) then
begin
case IND_FRT of
tfPorContaEmitente, tfProprioPorContaRemetente: strIND_FRT := '0';
tfPorContaDestinatario, tfProprioPorContaDestinatario: strIND_FRT := '1';
tfPorContaTerceiros: strIND_FRT := '2';
tfSemCobrancaFrete: strIND_FRT := '9';
tfNenhum: strIND_FRT := '';
end;
end
else
begin
case IND_FRT of
tfPorContaEmitente: strIND_FRT := '0';
tfPorContaDestinatario: strIND_FRT := '1';
tfPorContaTerceiros: strIND_FRT := '2';
tfProprioPorContaRemetente: strIND_FRT := '3';
tfProprioPorContaDestinatario: strIND_FRT := '4';
tfSemCobrancaFrete: strIND_FRT := '9';
tfNenhum: strIND_FRT := '';
end;
end;