Pessoal,
Quando tentamos emitir um danfe referente a uma nf-e complementar recebemos uma mensagem de erro.
Erro esse causado quando a propriedade do Danfe.ImprimirDescPorc está setada como True.
Para resolver fiz uma alteração testando se o valor total dos produtos é maior que zero e setando o valor Danfe.ImprimirDescPorc := False quando não.
Caso seja do interesse do pessoal corrigir, localizei a linha do codigo ACBr:
if FImprimirDescPorc = True then begin
dPercDesc := (vDesc * 100) / vProd;
cdsItens.FieldByName('VALORDESC').AsString :=
FormatFloat('###,###,###,##0.00', dPercDesc);
end
else
cdsItens.FieldByName('VALORDESC').AsString :=
FormatFloat('###,###,###,##0.00', vDesc);
Deveria ter um teste do tipo:
if FImprimirDescPorc = True then
begin
if vProd > 0 then
dPercDesc := (vDesc * 100) / vProd
else
dPercDesc := 0;
cdsItens.FieldByName('VALORDESC').AsString :=
FormatFloat('###,###,###,##0.00', dPercDesc);
end
else
cdsItens.FieldByName('VALORDESC').AsString :=
FormatFloat('###,###,###,##0.00', vDesc);