Boa tarde
Quando não é passado nada para a o campo VL_UNIT_ICMS_ST_CONV_COMPL o mesmo retorna o valor "0,00".
Segundo o guia prático da EFD e não pode ser "0" e sim vazio.
Fiz a modificação a seguir.
procedure TBloco_C.WriteRegistroC181(RegC100: TRegistroC100; RegC170: TRegistroC170);
var
intFor: integer;
begin
if Assigned( RegC170.RegistroC181 ) then
begin
if RegC170.RegistroC181.Count > 0 then
begin
if (RegC100.IND_OPER = tpSaidaPrestacao) or (FBloco_0.Registro0000.IND_PERFIL in [pfPerfilC]) then
Check(False, 'O RegistroC181, não deve ser gerado em movimentações de saída ou %s, conforme ATO COTEPE 09/08', ['PerfilC']);
end;
for intFor := 0 to RegC170.RegistroC181.Count - 1 do
begin
with RegC170.RegistroC181.Items[intFor] do
begin
Add( LFill('C181') +
LFill( COD_MOT_REST_COMPL ) +
LFill( QUANT_CONV,0,6 ) +
LFill( UNID) +
LFill( COD_MOD_SAIDA) +
LFill( SERIE_SAIDA) +
LFill( ECF_FAB_SAIDA) +
LFill( NUM_DOC_SAIDA) +
LFill( CHV_DFE_SAIDA) +
LFill( DT_DOC_SAIDA, 'ddmmyyyy' ) +
LFill( NUM_ITEM_SAIDA) +
DFill( VL_UNIT_CONV_SAIDA,0,True ) +
DFill( VL_UNIT_ICMS_OP_ESTOQUE_CONV_SAIDA,0,True ) +
DFill( VL_UNIT_ICMS_ST_ESTOQUE_CONV_SAIDA,0,True ) +
DFill( VL_UNIT_FCP_ICMS_ST_ESTOQUE_CONV_SAIDA,0,True ) +
DFill( VL_UNIT_ICMS_NA_OPERACAO_CONV_SAIDA,0,True ) +
DFill( VL_UNIT_ICMS_OP_CONV_SAIDA,0,True ) +
DFill( VL_UNIT_ICMS_ST_CONV_REST,0,True ) +
DFill( VL_UNIT_FCP_ST_CONV_REST,0,True ) +
DFill( VL_UNIT_ICMS_ST_CONV_COMPL,0,True ) +
DFill( VL_UNIT_FCP_ST_CONV_COMPL,0,True ));
end;
RegistroC990.QTD_LIN_C := RegistroC990.QTD_LIN_C + 1;
end;
/// Variavél para armazenar a quantidade de registro do tipo.
FRegistroC181Count := FRegistroC181Count + RegC170.RegistroC181.Count;
end;
ACBrEFDBloco_C_Class.pas