|
@@ -59,6 +59,8 @@ type
|
|
|
procedure RestoreTender(AID: Integer);
|
|
|
procedure RefreshSeedID;
|
|
|
|
|
|
+ procedure CalculateParentInfo(AID: Integer);
|
|
|
+
|
|
|
function BackupPath(AProjectID: Integer): String;
|
|
|
procedure AddOpenTenderBackup(AProjectID: Integer);
|
|
|
procedure AddSaveTenderBackup(AProjectID: Integer);
|
|
@@ -69,7 +71,7 @@ type
|
|
|
implementation
|
|
|
|
|
|
uses
|
|
|
- UtilMethods, UpdateDataBase, ProjectCommands, PHPWebDm, ConstUnit;
|
|
|
+ UtilMethods, UpdateDataBase, ProjectCommands, PHPWebDm, ConstUnit, Math;
|
|
|
|
|
|
{$R *.dfm}
|
|
|
|
|
@@ -655,4 +657,73 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+procedure TProjectManagerData.CalculateParentInfo(AID: Integer);
|
|
|
+
|
|
|
+ procedure ResetDigit(ANode: TsdIDTreeNode);
|
|
|
+ var
|
|
|
+ iChild, iCommonDigit, iDealPayDigit: Integer;
|
|
|
+ vChild: TsdIDTreeNode;
|
|
|
+ begin
|
|
|
+ iCommonDigit := 0;
|
|
|
+ iDealPayDigit := 0;
|
|
|
+ for iChild := 0 to ANode.ChildCount - 1 do
|
|
|
+ begin
|
|
|
+ vChild := ANode.ChildNodes[iChild];
|
|
|
+ iCommonDigit := Max(iCommonDigit, vChild.Rec.ValueByName('CommonDigit').AsInteger);
|
|
|
+ iDealPayDigit := Max(iDealPayDigit, vChild.Rec.ValueByName('DealPayDigit').AsInteger);
|
|
|
+ end;
|
|
|
+ ANode.Rec.ValueByName('CommonDigit').AsInteger := iCommonDigit;
|
|
|
+ ANode.Rec.ValueByName('DealPayDigit').AsInteger := iDealPayDigit;
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure ReCalculateInfo(ANode: TsdIDTreeNode);
|
|
|
+ var
|
|
|
+ fDeal, fDeal_BGL, fPhase, fEndDeal, fEndChange, fEnd, fPre, fPhasePay: Double;
|
|
|
+ iChild: Integer;
|
|
|
+ vChild: TsdIDTreeNode;
|
|
|
+ begin
|
|
|
+ fDeal := 0;
|
|
|
+ fDeal_BGL := 0;
|
|
|
+ fPhase := 0;
|
|
|
+ fEndDeal := 0;
|
|
|
+ fEndChange := 0;
|
|
|
+ fEnd := 0;
|
|
|
+ fPre := 0;
|
|
|
+ fPhasePay := 0;
|
|
|
+ for iChild := 0 to ANode.ChildCount - 1 do
|
|
|
+ begin
|
|
|
+ vChild := ANode.ChildNodes[iChild];
|
|
|
+ fDeal := fDeal + vChild.Rec.ValueByName('DealTotalPrice').AsFloat;
|
|
|
+ fDeal_BGL := fDeal_BGL + vChild.Rec.ValueByName('Deal_BGLTotalPrice').AsFloat;
|
|
|
+ fPhase := fPhase + vChild.Rec.ValueByName('PhaseTotalPrice').AsFloat;
|
|
|
+ fEndDeal := fEndDeal + vChild.Rec.ValueByName('EndDealTotalPrice').AsFloat;
|
|
|
+ fEndChange := fEndChange + vChild.Rec.ValueByName('EndChangeTotalPrice').AsFloat;
|
|
|
+ fEnd := fEnd + vChild.Rec.ValueByName('EndTotalPrice').AsFloat;
|
|
|
+ fPre := fPre + vChild.Rec.ValueByName('PreTotalPrice').AsFloat;
|
|
|
+ fPhasePay := fPhasePay + vChild.Rec.ValueByName('PhasePay').AsFloat;
|
|
|
+ end;
|
|
|
+ ANode.Rec.ValueByName('DealTotalPrice').AsFloat := fDeal;
|
|
|
+ ANode.Rec.ValueByName('Deal_BGLTotalPrice').AsFloat := fDeal_BGL;
|
|
|
+ ANode.Rec.ValueByName('PhaseTotalPrice').AsFloat := fPhase;
|
|
|
+ ANode.Rec.ValueByName('EndDealTotalPrice').AsFloat := fEndDeal;
|
|
|
+ ANode.Rec.ValueByName('EndChangeTotalPrice').AsFloat := fEndChange;
|
|
|
+ ANode.Rec.ValueByName('EndTotalPrice').AsFloat := fEnd;
|
|
|
+ ANode.Rec.ValueByName('PreTotalPrice').AsFloat := fPre;
|
|
|
+ ANode.Rec.ValueByName('PhasePay').AsFloat := fPhasePay;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ vNode, vChild: TsdIDTreeNode;
|
|
|
+ iChild: Integer;
|
|
|
+begin
|
|
|
+ if AID = -1 then Exit;
|
|
|
+ vNode := ProjectsTree.FindNode(AID);
|
|
|
+ if (not Assigned(vNode)) or (not vNode.HasChildren) then Exit;
|
|
|
+
|
|
|
+ ResetDigit(vNode);
|
|
|
+ ReCalculateInfo(vNode);
|
|
|
+
|
|
|
+ CalculateParentInfo(vNode.ParentID);
|
|
|
+end;
|
|
|
+
|
|
|
end.
|