Browse Source

Task #1303 国道306定制表需求变更

MaiXinRong 8 years ago
parent
commit
4b7f53d096
1 changed files with 29 additions and 11 deletions
  1. 29 11
      DataModules/ReportMemoryDm/rmHaBaiCustomizedDm.pas

+ 29 - 11
DataModules/ReportMemoryDm/rmHaBaiCustomizedDm.pas

@@ -155,7 +155,7 @@ type
     function GetGclChapterCount: Integer;
     function GetGclChapter(AIndex: Integer): TGclChapter;
   public
-    constructor Create(AProjectCount: Integer);
+    constructor Create(AProjectCount: Integer; AIsHaBai: Boolean);
     destructor Destroy;
 
     function AddGclNode(ANode: TMeasureBillsIDTreeNode; AProjectIndex: Integer): TGclNode;
@@ -322,7 +322,7 @@ type
     FDealPayControl: TDealPayControl;
     FDealTotalPrice: Double;
 
-    procedure BeforeGather(AProjectCount: Integer);
+    procedure BeforeGather(AProjectCount: Integer; AIsHaBai: Boolean);
     procedure AfterGather;
 
     procedure OpenProjectData(AProject: TSelectProject);
@@ -364,7 +364,7 @@ var
   iProject: Integer;
 begin
   FhbGatherType := AhbGatherType;
-  BeforeGather(AProjects.Count);
+  BeforeGather(AProjects.Count, AReCalc);
   try
     for iProject := 0 to AProjects.Count - 1 do
       GatherProject(TSelectProject(AProjects.Items[iProject]), iProject);
@@ -384,7 +384,7 @@ begin
   end;
 end;
 
-procedure TrmHaBaiCustomizedData.BeforeGather(AProjectCount: Integer);
+procedure TrmHaBaiCustomizedData.BeforeGather(AProjectCount: Integer; AIsHaBai: Boolean);
 begin
   cdsCustom2.DisableControls;
   cdsCustom2.Active := True;
@@ -410,7 +410,7 @@ begin
   cdsCustomCS_2.Active := True;
   cdsCustomCS_2.EmptyDataSet;
 
-  FGclControl := TGclControl.Create(AProjectCount);
+  FGclControl := TGclControl.Create(AProjectCount, AIsHaBai);
   FDealPayControl := TDealPayControl.Create;
   FDealTotalPrice := 0;
 end;
@@ -503,7 +503,10 @@ var
            SameText(Rec.ValueByName('Name').AsString, '本期应付') or
            SameText(Rec.ValueByName('Name').AsString, '本期实付') then
           Continue;
-        StageRec := FProjectData.PhaseData.PhasePayData.PayRecord(Rec.ValueByName('ID').AsInteger);
+        if FProjectData.PhaseData.Active then
+          StageRec := FProjectData.PhaseData.PhasePayData.PayRecord(Rec.ValueByName('ID').AsInteger)
+        else
+          StageRec := nil;
         DealPay := FDealPayControl.AddPayNode(Rec.ValueByName('Name').AsString, Rec.ValueByName('IsMinus').AsBoolean);
         if Assigned(StageRec) then
         begin
@@ -520,7 +523,10 @@ var
     Rec, StageRec: TsdDataRecord;
   begin
     Rec := FProjectData.DealPaymentData.DealPayRecord('本期完成计量');
-    StageRec := FProjectData.PhaseData.PhasePayData.PayRecord(Rec.ValueByName('ID').AsInteger);
+    if FProjectData.PhaseData.Active then
+      StageRec := FProjectData.PhaseData.PhasePayData.PayRecord(Rec.ValueByName('ID').AsInteger)
+    else
+      StageRec := nil;
     if not Assigned(StageRec) then Exit;
 
     with FDealPayControl.CompletePayNode do
@@ -536,7 +542,11 @@ var
     Rec, StageRec: TsdDataRecord;
   begin
     Rec := FProjectData.DealPaymentData.DealPayRecord('本期应付');
-    StageRec := FProjectData.PhaseData.PhasePayData.PayRecord(Rec.ValueByName('ID').AsInteger);
+    if FProjectData.PhaseData.Active then
+      StageRec := FProjectData.PhaseData.PhasePayData.PayRecord(Rec.ValueByName('ID').AsInteger)
+    else
+      StageRec := nil;
+
     if not Assigned(StageRec) then Exit;
 
     with FDealPayControl.GatherPayNode do
@@ -1141,7 +1151,7 @@ begin
   end;
 end;
 
-constructor TGclControl.Create(AProjectCount: Integer);
+constructor TGclControl.Create(AProjectCount: Integer; AIsHaBai: Boolean);
 
   function CreateGclChapter(AChapterID: Integer; const AName: string): TGclChapter;
   begin
@@ -1161,8 +1171,16 @@ begin
   CreateGclChapter(5, '隧 道');
   CreateGclChapter(6, '安全设计及预埋管线');
   CreateGclChapter(7, '绿化及环境保护工程');
-  CreateGclChapter(8, '房建工程');
-  CreateGclChapter(9, '机电工程');
+  if AIsHaBai then
+  begin
+    CreateGclChapter(8, '房建工程');
+    CreateGclChapter(9, '机电工程');
+  end
+  else
+  begin
+    CreateGclChapter(8, '机电工程');
+    CreateGclChapter(9, '房建工程');
+  end;
   FOtherGcl := TGclChapter.Create(19, '非标准清单', FProjectCount);
   FGclChapterGather := TGclChapter.Create(20, '第100章至900章合计', FProjectCount);
 end;