| 
					
				 | 
			
			
				@@ -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. 
			 |