|
@@ -3,7 +3,7 @@ unit PhasePayDm;
|
|
|
interface
|
|
|
|
|
|
uses
|
|
|
- SysUtils, Classes, sdDB, sdProvider, ADODB, FormulaCalc;
|
|
|
+ SysUtils, Classes, sdDB, sdProvider, ADODB, FormulaCalc, CalcDecimal;
|
|
|
|
|
|
type
|
|
|
TPhasePayData = class(TDataModule)
|
|
@@ -17,6 +17,7 @@ type
|
|
|
FPayFormula: TPayFormula;
|
|
|
|
|
|
FBeforeChangeTotalPrice: Double;
|
|
|
+ FDecimal: TCalcDecimal;
|
|
|
|
|
|
function CheckMinus(AID: Integer): Boolean;
|
|
|
function GetFormula(AID: Integer): string;
|
|
@@ -57,6 +58,7 @@ type
|
|
|
// AType表示不同类型,取值如下:
|
|
|
// 1: 本期数据 2: 截止本期数据 3: 截止上期数据
|
|
|
property LastestPhasePay[AType: Integer]: Double read GetLastestPhasePay;
|
|
|
+ property Decimal: TCalcDecimal read FDecimal;
|
|
|
end;
|
|
|
|
|
|
implementation
|
|
@@ -74,7 +76,10 @@ begin
|
|
|
FPhaseData := APhaseData;
|
|
|
FPayFormula := TPayFormula.Create(TPhaseData(FPhaseData).ProjectData);
|
|
|
with TProjectData(TPhaseData(FPhaseData).ProjectData) do
|
|
|
+ begin
|
|
|
FPayFormula.Decimal := ProjProperties.DecimalManager.DealPay;
|
|
|
+ FDecimal := ProjProperties.DecimalManager.DealPay;
|
|
|
+ end;
|
|
|
end;
|
|
|
|
|
|
procedure TPhasePayData.Delete(AID: Integer);
|
|
@@ -200,7 +205,7 @@ begin
|
|
|
if Rec.ValueByName(sFField).AsString <> '' then
|
|
|
begin
|
|
|
// 初次达到起扣金额时,bqwc基数值取值为累计完成计量-起扣金额
|
|
|
- if Rec.ValueByName('Pre'+sTPField).AsFloat = 0 then
|
|
|
+ if FDecimal.TotalPrice.RoundTo(Rec.ValueByName('Pre'+sTPField).AsFloat) = 0 then
|
|
|
fTotalPrice := FPayFormula.Calculate(Rec.ValueByName(sFField).AsString, fStartedPrice)
|
|
|
else
|
|
|
fTotalPrice := FPayFormula.Calculate(Rec.ValueByName(sFField).AsString);
|
|
@@ -236,8 +241,8 @@ begin
|
|
|
end;
|
|
|
end;}
|
|
|
// 计算截止数据
|
|
|
- Rec.ValueByName('End' + sTPField).AsFloat := Rec.ValueByName(sTPField).AsFloat
|
|
|
- + Rec.ValueByName('Pre' + sTPField).AsFloat;
|
|
|
+ Rec.ValueByName('End' + sTPField).AsFloat := FDecimal.TotalPrice.RoundTo(Rec.ValueByName(sTPField).AsFloat
|
|
|
+ + Rec.ValueByName('Pre' + sTPField).AsFloat);
|
|
|
end;
|
|
|
|
|
|
function TPhasePayData.GetPayablePrice(AIndex: Integer): Double;
|