function ValidarCalcICMSUFDest : string; var _ResultadoValidacao : TStringList; _DSItem : TDataSet; begin _ResultadoValidacao := TStringList.Create; try _TotParcial := 0; _DSItem := FindDataSet('det'); _DSItem.First; while not _DSItem.Eof do begin if (_DSItem.FieldByName('vBCUFDest_NA03').AsString <> '') then begin if (StrToFloat(_DSItem.FieldByName('pICMSUFDest_NA07').AsString) - StrToFloat(_DSItem.FieldByName('pICMSInter_NA09').AsString)) <> StrToFloat(_DSItem.FieldByName('pICMSInterPart_NA11').AsString) then begin AdicionarAlertaICMS(_ResultadoValidacao,'Valor do diferencial da alíquota ou percentual do ICMS relativo ao Fundo de Combate à Pobreza (FCP) na UF de destino incorreto.', _DSItem.FieldByName('nItem_H02').AsString); end else begin _TotParcial := StrToFloat(_DSItem.FieldByName('vBCUFDest_NA03').AsString) * StrToFloat('0.' + Copy(_DSItem.FieldByName('pICMSInterPart_NA11').AsString,1,pos('.',_DSItem.FieldByName('pICMSInterPart_NA11').AsString) - 1)); if (StrToFloat(_DSItem.FieldByName('vICMSUFDest_NA15').AsString) <> (_TotParcial * 0.40)) or (StrToFloat(_DSItem.FieldByName('vICMSUFRemet_NA17').AsString) <> (_TotParcial * 0.60)) then begin AdicionarAlertaICMS(_ResultadoValidacao,'O cálculo da partilha do ICMS incorreto.',_DSItem.FieldByName('nItem_H02').AsString); end; end; end; _DSItem.Next; end; Result := trim(_ResultadoValidacao.Text); finally _ResultadoValidacao.Free; end; end;