Selaa lähdekoodia

Task #1255 材料调差,新增费用合计

MaiXinRong 8 vuotta sitten
vanhempi
commit
484f4fcffb

+ 2 - 0
DataModules/PriceMarginBillsDm.pas

@@ -291,6 +291,8 @@ begin
       RefreshDetailBills(ARec.BillsID.AsInteger);
     // 更新合同支付
     //TProjectData(FProjectData).PhaseData.PhasePayData.CalculateAll;
+    // 更新合计值
+    TProjectData(FProjectData).ProjectGLData.RefreshGatherData;
   end;
 end;
 

+ 152 - 72
DataModules/ProjectGLDm.dfm

@@ -3,7 +3,7 @@ object ProjectGLData: TProjectGLData
   Left = 562
   Top = 408
   Height = 252
-  Width = 171
+  Width = 271
   object sdpProjectGL: TsdADOProvider
     TableName = 'ProjectGL'
     Left = 56
@@ -21,81 +21,104 @@ object ProjectGLData: TProjectGLData
     FieldListData = {
       0101044E616D6506024944094669656C644E616D650602494408446174615479
       70650203084461746153697A6502040549734B6579080F4E65656450726F6365
-      73734E616D65090001044E616D650604436F6465094669656C644E616D650604
-      436F64650844617461547970650203084461746153697A6502040549734B6579
-      080F4E65656450726F636573734E616D65090001044E616D6506044E616D6509
-      4669656C644E616D6506044E616D650844617461547970650218084461746153
-      697A6503C8000549734B6579080F4E65656450726F636573734E616D65090001
-      044E616D650605556E697473094669656C644E616D650605556E697473084461
-      7461547970650218084461746153697A6502140549734B6579080F4E65656450
-      726F636573734E616D65090001044E616D6506055370656373094669656C644E
-      616D65060553706563730844617461547970650218084461746153697A6503C8
-      000549734B6579080F4E65656450726F636573734E616D65090001044E616D65
-      0609426173655072696365094669656C644E616D650609426173655072696365
-      0844617461547970650206084461746153697A6502080549734B6579080F4E65
-      656450726F636573734E616D65090001044E616D6506095269736B52616E6765
-      094669656C644E616D6506095269736B52616E67650844617461547970650206
-      084461746153697A6502080549734B6579080F4E65656450726F636573734E61
-      6D65090001044E616D65060D43726561746550686173654944094669656C644E
-      616D65060D437265617465506861736549440844617461547970650203084461
-      746153697A6502040549734B6579080F4E65656450726F636573734E616D6509
-      0001044E616D65060D4C6F636B656450686173654944094669656C644E616D65
-      060D4C6F636B6564506861736549440844617461547970650203084461746153
-      697A6502040549734B6579080F4E65656450726F636573734E616D6509000104
-      4E616D650609496E666F5072696365094669656C644E616D650609496E666F50
-      726963650844617461547970650206084461746153697A6502080549734B6579
-      080F4E65656450726F636573734E616D65090001044E616D650608496E666F44
-      617465094669656C644E616D650608496E666F44617465084461746154797065
-      0218084461746153697A6502140549734B6579080F4E65656450726F63657373
-      4E616D65090001044E616D65060A44656C74615072696365094669656C644E61
-      6D65060A44656C74615072696365084461746154797065020608446174615369
-      7A6502080549734B6579080F4E65656450726F636573734E616D65090001044E
-      616D65060F56616C696444656C74615072696365094669656C644E616D65060F
-      56616C696444656C746150726963650844617461547970650206084461746153
-      697A6502080549734B6579080F4E65656450726F636573734E616D6509000104
-      4E616D65060B504D5F5175616E74697479094669656C644E616D65060B504D5F
-      5175616E746974790844617461547970650206084461746153697A6502080549
-      734B6579080F4E65656450726F636573734E616D65090001044E616D65060D50
-      4D5F546F74616C5072696365094669656C644E616D65060D504D5F546F74616C
-      50726963650844617461547970650206084461746153697A6502080549734B65
-      79080F4E65656450726F636573734E616D65090001044E616D65060C55736564
-      5175616E74697479094669656C644E616D65060C557365645175616E74697479
-      0844617461547970650206084461746153697A6502080549734B6579080F4E65
-      656450726F636573734E616D65090001044E616D65060E55736564546F74616C
-      5072696365094669656C644E616D65060E55736564546F74616C507269636508
+      73734E616D650909507265636973696F6E02000453697A6502000001044E616D
+      650604436F6465094669656C644E616D650604436F6465084461746154797065
+      0203084461746153697A6502040549734B6579080F4E65656450726F63657373
+      4E616D650909507265636973696F6E02000453697A6502000001044E616D6506
+      044E616D65094669656C644E616D6506044E616D650844617461547970650218
+      084461746153697A6503C8000549734B6579080F4E65656450726F636573734E
+      616D650909507265636973696F6E02000453697A6502000001044E616D650605
+      556E697473094669656C644E616D650605556E69747308446174615479706502
+      18084461746153697A6502140549734B6579080F4E65656450726F636573734E
+      616D650909507265636973696F6E02000453697A6502000001044E616D650605
+      5370656373094669656C644E616D650605537065637308446174615479706502
+      18084461746153697A6503C8000549734B6579080F4E65656450726F63657373
+      4E616D650909507265636973696F6E02000453697A6502000001044E616D6506
+      09426173655072696365094669656C644E616D65060942617365507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D6506095269736B52616E6765094669656C644E616D6506095269
+      736B52616E67650844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650909507265636973696F6E02
+      000453697A6502000001044E616D65060D437265617465506861736549440946
+      69656C644E616D65060D43726561746550686173654944084461746154797065
+      0203084461746153697A6502040549734B6579080F4E65656450726F63657373
+      4E616D650909507265636973696F6E02000453697A6502000001044E616D6506
+      0D4C6F636B656450686173654944094669656C644E616D65060D4C6F636B6564
+      506861736549440844617461547970650203084461746153697A650204054973
+      4B6579080F4E65656450726F636573734E616D650909507265636973696F6E02
+      000453697A6502000001044E616D650609496E666F5072696365094669656C64
+      4E616D650609496E666F50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000001044E616D650608496E666F446174
+      65094669656C644E616D650608496E666F446174650844617461547970650218
+      084461746153697A6502140549734B6579080F4E65656450726F636573734E61
+      6D650909507265636973696F6E02000453697A6502000001044E616D65060A44
+      656C74615072696365094669656C644E616D65060A44656C7461507269636508
       44617461547970650206084461746153697A6502080549734B6579080F4E6565
-      6450726F636573734E616D65090001044E616D65061050414C5F557365645175
-      616E74697479094669656C644E616D65061050414C5F557365645175616E7469
-      74790844617461547970650206084461746153697A6502080549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D65061250414C5F557365
-      64546F74616C5072696365094669656C644E616D65061250414C5F5573656454
-      6F74616C50726963650844617461547970650206084461746153697A65020805
-      49734B6579080F4E65656450726F636573734E616D65090001044E616D65060E
-      50414C5F44656C74615072696365094669656C644E616D65060E50414C5F4465
-      6C746150726963650844617461547970650206084461746153697A6502080549
-      734B6579080F4E65656450726F636573734E616D65090001044E616D65060950
-      414C5F546F74616C094669656C644E616D65060950414C5F546F74616C084461
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D65060F56616C696444656C74615072696365094669656C644E61
+      6D65060F56616C696444656C7461507269636508446174615479706502060844
+      61746153697A6502080549734B6579080F4E65656450726F636573734E616D65
+      0909507265636973696F6E02000453697A6502000001044E616D65060B504D5F
+      5175616E74697479094669656C644E616D65060B504D5F5175616E7469747908
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D65060D504D5F546F74616C5072696365094669656C644E616D65
+      060D504D5F546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000001044E616D65060C55736564517561
+      6E74697479094669656C644E616D65060C557365645175616E74697479084461
       7461547970650206084461746153697A6502080549734B6579080F4E65656450
-      726F636573734E616D65090001044E616D65060F507265557365645175616E74
-      697479094669656C644E616D65060F507265557365645175616E746974790844
-      617461547970650206084461746153697A6502080549734B6579080F4E656564
-      50726F636573734E616D65090001044E616D65061150726555736564546F7461
-      6C5072696365094669656C644E616D65061150726555736564546F74616C5072
-      6963650844617461547970650206084461746153697A6502080549734B657908
-      0F4E65656450726F636573734E616D65090001044E616D65061350726550414C
-      5F557365645175616E74697479094669656C644E616D65061350726550414C5F
-      557365645175616E746974790844617461547970650206084461746153697A65
-      02080549734B6579080F4E65656450726F636573734E616D65090001044E616D
-      65061550726550414C5F55736564546F74616C5072696365094669656C644E61
-      6D65061550726550414C5F55736564546F74616C507269636508446174615479
+      726F636573734E616D650909507265636973696F6E02000453697A6502000001
+      044E616D65060E55736564546F74616C5072696365094669656C644E616D6506
+      0E55736564546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000001044E616D65061050414C5F557365
+      645175616E74697479094669656C644E616D65061050414C5F55736564517561
+      6E746974790844617461547970650206084461746153697A6502080549734B65
+      79080F4E65656450726F636573734E616D650909507265636973696F6E020004
+      53697A6502000001044E616D65061250414C5F55736564546F74616C50726963
+      65094669656C644E616D65061250414C5F55736564546F74616C507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D65060E50414C5F44656C74615072696365094669656C644E616D
+      65060E50414C5F44656C74615072696365084461746154797065020608446174
+      6153697A6502080549734B6579080F4E65656450726F636573734E616D650909
+      507265636973696F6E02000453697A6502000001044E616D65060950414C5F54
+      6F74616C094669656C644E616D65060950414C5F546F74616C08446174615479
       70650206084461746153697A6502080549734B6579080F4E65656450726F6365
-      73734E616D65090001044E616D65061150726550414C5F44656C746150726963
-      65094669656C644E616D65061150726550414C5F44656C746150726963650844
-      617461547970650206084461746153697A6502080549734B6579080F4E656564
-      50726F636573734E616D65090001044E616D65060C50726550414C5F546F7461
-      6C094669656C644E616D65060C50726550414C5F546F74616C08446174615479
+      73734E616D650909507265636973696F6E02000453697A6502000001044E616D
+      65060F507265557365645175616E74697479094669656C644E616D65060F5072
+      65557365645175616E746974790844617461547970650206084461746153697A
+      6502080549734B6579080F4E65656450726F636573734E616D65090950726563
+      6973696F6E02000453697A6502000001044E616D65061150726555736564546F
+      74616C5072696365094669656C644E616D65061150726555736564546F74616C
+      50726963650844617461547970650206084461746153697A6502080549734B65
+      79080F4E65656450726F636573734E616D650909507265636973696F6E020004
+      53697A6502000001044E616D65061350726550414C5F557365645175616E7469
+      7479094669656C644E616D65061350726550414C5F557365645175616E746974
+      790844617461547970650206084461746153697A6502080549734B6579080F4E
+      65656450726F636573734E616D650909507265636973696F6E02000453697A65
+      02000001044E616D65061550726550414C5F55736564546F74616C5072696365
+      094669656C644E616D65061550726550414C5F55736564546F74616C50726963
+      650844617461547970650206084461746153697A6502080549734B6579080F4E
+      65656450726F636573734E616D650909507265636973696F6E02000453697A65
+      02000001044E616D65061150726550414C5F44656C7461507269636509466965
+      6C644E616D65061150726550414C5F44656C7461507269636508446174615479
+      70650206084461746153697A6502080549734B6579080F4E65656450726F6365
+      73734E616D650909507265636973696F6E02000453697A6502000001044E616D
+      65060C50726550414C5F546F74616C094669656C644E616D65060C5072655041
+      4C5F546F74616C0844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650909507265636973696F6E02
+      000453697A6502000001044E616D65060E504D5F5072655175616E7469747909
+      4669656C644E616D65060E504D5F5072655175616E7469747908446174615479
       70650206084461746153697A6502080549734B6579080F4E65656450726F6365
-      73734E616D65090000}
+      73734E616D650909507265636973696F6E02000453697A6502000001044E616D
+      650610504D5F507265546F74616C5072696365094669656C644E616D65061050
+      4D5F507265546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000000}
   end
   object sdvProjectGL: TsdDataView
     Active = False
@@ -168,4 +191,61 @@ object ProjectGLData: TProjectGLData
     Left = 56
     Top = 144
   end
+  object smpGather: TsdMemoryProvider
+    Left = 152
+    Top = 24
+  end
+  object sddGather: TsdDataSet
+    Active = True
+    Provider = smpGather
+    Left = 152
+    Top = 80
+    FieldListData = {
+      0101044E616D6506024944094669656C644E616D650602494408446174615479
+      70650203084461746153697A6502040549734B6579080F4E65656450726F6365
+      73734E616D650809507265636973696F6E02000453697A6502000001044E616D
+      6506044E616D65094669656C644E616D6506044E616D65084461746154797065
+      0218084461746153697A6502320549734B6579080F4E65656450726F63657373
+      4E616D650809507265636973696F6E02000453697A6502000001044E616D6506
+      0D437572546F74616C5072696365094669656C644E616D65060D437572546F74
+      616C50726963650844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650809507265636973696F6E02
+      000453697A6502000001044E616D65060D507265546F74616C50726963650946
+      69656C644E616D65060D507265546F74616C5072696365084461746154797065
+      0206084461746153697A6502080549734B6579080F4E65656450726F63657373
+      4E616D650809507265636973696F6E02000453697A6502000001044E616D6506
+      0D456E64546F74616C5072696365094669656C644E616D65060D456E64546F74
+      616C50726963650844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650809507265636973696F6E02
+      000453697A6502000001044E616D65060D416464546F74616C50726963650946
+      69656C644E616D65060D416464546F74616C5072696365084461746154797065
+      0206084461746153697A6502080549734B6579080F4E65656450726F63657373
+      4E616D650809507265636973696F6E02000453697A6502000000}
+  end
+  object sdvGather: TsdDataView
+    Active = True
+    DataSet = sddGather
+    Filtered = False
+    Columns = <
+      item
+        FieldName = 'ID'
+      end
+      item
+        FieldName = 'Name'
+      end
+      item
+        FieldName = 'CurTotalPrice'
+      end
+      item
+        FieldName = 'PreTotalPrice'
+      end
+      item
+        FieldName = 'EndTotalPrice'
+      end
+      item
+        FieldName = 'AddTotalPrice'
+      end>
+    Left = 152
+    Top = 144
+  end
 end

+ 105 - 1
DataModules/ProjectGLDm.pas

@@ -6,10 +6,15 @@ uses
   SysUtils, Classes, sdDB, sdProvider, ADODB, mDataRecord, CalcDecimal;
 
 type
+
+
   TProjectGLData = class(TDataModule)
     sdpProjectGL: TsdADOProvider;
     sddProjectGL: TsdDataSet;
     sdvProjectGL: TsdDataView;
+    smpGather: TsdMemoryProvider;
+    sddGather: TsdDataSet;
+    sdvGather: TsdDataView;
     procedure sddProjectGLAfterAddRecord(ARecord: TsdDataRecord);
     procedure sddProjectGLAfterValueChanged(AValue: TsdValue);
     procedure sdvProjectGLGetText(var Text: String; ARecord: TsdDataRecord;
@@ -44,6 +49,8 @@ type
     procedure SaveGLPrice;
     procedure SavePM_CurData;
 
+    procedure CalcRecGather(ARec: TsdDataRecord; const AFieldName, APreFieldName: string);
+
     procedure BeforeBatchOperation;
     procedure AfterBatchOperation;
 
@@ -65,6 +72,8 @@ type
     procedure CalculateGL_PM(AGLID: Integer);
     procedure CalculateGLs_PM(ADetailGLs: TList);
 
+    procedure RefreshGatherData;
+
     property ProjectData: TObject read FProjectData write FProjectData;
     property Active: Boolean read GetActive;
 
@@ -128,6 +137,8 @@ var
 
         Rec.UsedQuantity.AsFloat := vQuery.FieldByName('UsedQuantity').AsFloat;
         Rec.UsedTotalPrice.AsFloat := vQuery.FieldByName('UsedTotalPrice').AsFloat;
+        Rec.PreUsedQuantity.AsFloat := vQuery.FieldByName('PreUsedQuantity').AsFloat;
+        Rec.PreUsedTotalPrice.AsFloat := vQuery.FieldByName('PreUsedTotalPrice').AsFloat;
       end
       else
       begin
@@ -138,6 +149,8 @@ var
 
         Rec.UsedQuantity.AsFloat := 0;
         Rec.UsedTotalPrice.AsFloat := 0;
+        Rec.PreUsedQuantity.AsFloat := 0;
+        Rec.PreUsedTotalPrice.AsFloat := 0;
       end;
     end;
   end;
@@ -170,6 +183,7 @@ begin
   sdvProjectGL.IndexName := 'idxCode';
   LoadCurPhaseInfoPrice;
   LoadStagePM_CalcData;
+  RefreshGatherData;
 end;
 
 procedure TProjectGLData.Save;
@@ -226,10 +240,12 @@ begin
     CalculatePALRela(TProjectGLRecord(AValue.Owner));
     //CalculateRelaBills(TProjectGLRecord(AValue.Owner));
     TProjectData(FProjectData).PriceMarginBillsData.RefreshAllDetailBills;
+    RefreshGatherData;
   end;
   if SameText(AValue.FieldName, 'UsedQuantity') then
   begin
     CalculatePALRela(TProjectGLRecord(AValue.Owner));
+    RefreshGatherData;
   end;
 end;
 
@@ -283,6 +299,7 @@ procedure TProjectGLData.CalculateAll;
 begin
   CalculatePrice;
   CalculatePriceMargin;
+  RefreshGatherData;
 end;
 
 procedure TProjectGLData.ExecuteSql(const ASql: string);
@@ -543,20 +560,34 @@ var
         Rec.PM_Quantity.AsFloat := vQuery.FieldByName('PM_Quantity').AsFloat;
         Rec.PM_TotalPrice.AsFloat := vQuery.FieldByName('PM_TotalPrice').AsFloat;
 
+        Rec.PM_PreQuantity.AsFloat := vQuery.FieldByName('PM_PreQuantity').AsFloat;
+        Rec.PM_PreTotalPrice.AsFloat := vQuery.FieldByName('PM_PreTotalPrice').AsFloat;
+
         Rec.PAL_UsedQuantity.AsFloat := vQuery.FieldByName('PAL_UsedQuantity').AsFloat;
         Rec.PAL_UsedTotalPrice.AsFloat := vQuery.FieldByName('PAL_UsedTotalPrice').AsFloat;
         Rec.PAL_DeltaPrice.AsFloat := vQuery.FieldByName('PAL_DeltaPrice').AsFloat;
         Rec.PAL_Total.AsFloat := vQuery.FieldByName('PAL_Total').AsFloat;
+
+        Rec.PrePAL_UsedQuantity.AsFloat := vQuery.FieldByName('PrePAL_UsedQuantity').AsFloat;
+        Rec.PrePAL_UsedTotalPrice.AsFloat := vQuery.FieldByName('PrePAL_UsedTotalPrice').AsFloat;
+        Rec.PrePAL_DeltaPrice.AsFloat := vQuery.FieldByName('PrePAL_DeltaPrice').AsFloat;
+        Rec.PrePAL_Total.AsFloat := vQuery.FieldByName('PrePAL_Total').AsFloat;
       end
       else
       begin
         Rec.PM_Quantity.AsFloat := 0;
-        Rec.PM_TotalPrice.AsFloat := 0;
+        Rec.PM_TotalPrice.AsFloat := 0; 
+        Rec.PM_PreQuantity.AsFloat := 0;
+        Rec.PM_PreTotalPrice.AsFloat := 0;
 
         Rec.PAL_UsedQuantity.AsFloat := 0;
         Rec.PAL_UsedTotalPrice.AsFloat := 0;
         Rec.PAL_DeltaPrice.AsFloat := 0;
         Rec.PAL_Total.AsFloat := 0;
+        Rec.PrePAL_UsedQuantity.AsFloat := 0;
+        Rec.PrePAL_UsedTotalPrice.AsFloat := 0;
+        Rec.PrePAL_DeltaPrice.AsFloat := 0;
+        Rec.PrePAL_Total.AsFloat := 0;
       end;
     end;
   end;
@@ -634,4 +665,77 @@ begin
   end;
 end;
 
+procedure TProjectGLData.RefreshGatherData;
+var
+  Rec: TsdDataRecord;
+begin
+  sddGather.BeginUpdate;
+  sddGather.DeleteAll;
+
+  Rec := sddGather.Add;
+  Rec.ValueByName('ID').AsInteger := 0;
+  Rec.ValueByName('Name').AsString := '材料调差';
+  CalcRecGather(Rec, 'PM_TotalPrice', 'PM_PreTotalPrice');
+
+  Rec := sddGather.Add;
+  Rec.ValueByName('ID').AsInteger := 1;
+  Rec.ValueByName('Name').AsString := '实耗数量差';
+  CalcRecGather(Rec, 'PAL_UsedTotalPrice', 'PrePAL_UsedTotalPrice');
+
+  Rec := sddGather.Add;
+  Rec.ValueByName('ID').AsInteger := 2;
+  Rec.ValueByName('Name').AsString := '实耗价差';
+  CalcRecGather(Rec, 'PAL_DeltaPrice', 'PrePAL_DeltaPrice');
+
+  Rec := sddGather.Add;
+  Rec.ValueByName('ID').AsInteger := 3;
+  Rec.ValueByName('Name').AsString := '节余金额';
+  CalcRecGather(Rec, 'PAL_Total', 'PrePAL_Total');
+
+  sddGather.EndUpdate;
+end;
+
+procedure TProjectGLData.CalcRecGather(ARec: TsdDataRecord;
+  const AFieldName, APreFieldName: string);
+const
+  sSelectSql = 'Select (Sum(%s)+Sum(%s_F)) As AddGather'+
+               '  From GLPrice, (Select Max(PhaseID) As MaxPhaseID From GLPrice)'+
+               '  Where PhaseID = MaxPhaseID';
+var
+  iRec: Integer;
+  RecGL: TsdDataRecord;
+  vQuery: TADOQuery;
+begin
+  ARec.ValueByName('CurTotalPrice').AsFloat := 0;
+  ARec.ValueByName('PreTotalPrice').AsFloat := 0;
+  ARec.ValueByName('EndTotalPrice').AsFloat := 0;
+  ARec.ValueByName('AddTotalPrice').AsFloat := 0;
+
+  for iRec := 0 to sddProjectGL.RecordCount - 1 do
+  begin
+    RecGL := sddProjectGL.Records[iRec];
+    ARec.ValueByName('CurTotalPrice').AsFloat := ARec.ValueByName('CurTotalPrice').AsFloat + RecGL.ValueByName(AFieldName).AsFloat;
+    ARec.ValueByName('PreTotalPrice').AsFloat := ARec.ValueByName('PreTotalPrice').AsFloat + RecGL.ValueByName(APreFieldName).AsFloat;
+  end;
+  ARec.ValueByName('EndTotalPrice').AsFloat := ARec.ValueByName('PreTotalPrice').AsFloat + ARec.ValueByName('CurTotalPrice').AsFloat;
+  ARec.ValueByName('AddTotalPrice').AsFloat := ARec.ValueByName('EndTotalPrice').AsFloat;
+
+  with TProjectData(FProjectData) do
+  begin
+    if PhaseIndex <> ProjProperties.PhaseCount then
+    begin
+      vQuery := TADOQuery.Create(nil);
+      vQuery.Connection := ADOConnection;
+      try
+        vQuery.SQL.Clear;
+        vQuery.SQL.Add(Format(sSelectSql, [APreFieldName, AFieldName]));
+        vQuery.Open;
+        ARec.ValueByName('AddTotalPrice').AsFloat := vQuery.FieldByName('AddGather').AsFloat;
+      finally
+        vQuery.Free;
+      end;
+    end;
+  end;
+end;
+
 end.

+ 156 - 129
DataModules/StageDm.dfm

@@ -19,139 +19,166 @@ object StageData: TStageData
     FieldListData = {
       0101044E616D65060742696C6C734944094669656C644E616D65060742696C6C
       7349440844617461547970650203084461746153697A6502040549734B657908
-      0F4E65656450726F636573734E616D65090001044E616D65060C4465616C5175
-      616E74697479094669656C644E616D65060C4465616C5175616E746974790844
-      617461547970650206084461746153697A6502080549734B6579080F4E656564
-      50726F636573734E616D65090001044E616D65060E4465616C546F74616C5072
-      696365094669656C644E616D65060E4465616C546F74616C5072696365084461
-      7461547970650206084461746153697A6502080549734B6579080F4E65656450
-      726F636573734E616D65090001044E616D6506084465616C466C616709466965
-      6C644E616D6506084465616C466C616708446174615479706502030844617461
-      53697A6502040549734B6579080F4E65656450726F636573734E616D65090001
-      044E616D65060B4465616C466F726D756C61094669656C644E616D65060B4465
-      616C466F726D756C610844617461547970650201084461746153697A6503FF00
-      0549734B6579080F4E65656450726F636573734E616D65090001044E616D6506
-      0A51635175616E74697479094669656C644E616D65060A51635175616E746974
-      790844617461547970650206084461746153697A6502080549734B6579080F4E
-      65656450726F636573734E616D65090001044E616D65060C5163546F74616C50
-      72696365094669656C644E616D65060C5163546F74616C507269636508446174
-      61547970650206084461746153697A6502080549734B6579080F4E6565645072
-      6F636573734E616D65090001044E616D6506095163466F726D756C6109466965
-      6C644E616D6506095163466F726D756C61084461746154797065020108446174
-      6153697A6503FF000549734B6579080F4E65656450726F636573734E616D6509
-      0001044E616D6506065163466C6167094669656C644E616D6506065163466C61
-      670844617461547970650203084461746153697A6502040549734B6579080F4E
-      65656450726F636573734E616D65090001044E616D650609516342474C436F64
-      65094669656C644E616D650609516342474C436F646508446174615479706502
-      10084461746153697A6503A00F0549734B6579080F4E65656450726F63657373
-      4E616D65090001044E616D650608516342474C4E756D094669656C644E616D65
-      0608516342474C4E756D0844617461547970650210084461746153697A6503A0
-      0F0549734B6579080F4E65656450726F636573734E616D65090001044E616D65
-      060A50635175616E74697479094669656C644E616D65060A50635175616E7469
-      74790844617461547970650206084461746153697A6502080549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D65060C5063546F74616C
-      5072696365094669656C644E616D65060C5063546F74616C5072696365084461
-      7461547970650206084461746153697A6502080549734B6579080F4E65656450
-      726F636573734E616D65090001044E616D6506065063466C6167094669656C64
-      4E616D6506065063466C61670844617461547970650203084461746153697A65
-      02040549734B6579080F4E65656450726F636573734E616D65090001044E616D
-      6506095063466F726D756C61094669656C644E616D6506095063466F726D756C
-      610844617461547970650201084461746153697A6503FF000549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D650609506342474C436F
-      6465094669656C644E616D650609506342474C436F6465084461746154797065
-      0210084461746153697A6503A00F0549734B6579080F4E65656450726F636573
-      734E616D65090001044E616D650608506342474C4E756D094669656C644E616D
-      650608506342474C4E756D0844617461547970650210084461746153697A6503
-      A00F0549734B6579080F4E65656450726F636573734E616D65090001044E616D
-      65060E4761746865725175616E74697479094669656C644E616D65060E476174
-      6865725175616E746974790844617461547970650206084461746153697A6502
-      080549734B6579080F4E65656450726F636573734E616D65090001044E616D65
-      0610476174686572546F74616C5072696365094669656C644E616D6506104761
-      74686572546F74616C5072696365084461746154797065020608446174615369
-      7A6502080549734B6579080F4E65656450726F636573734E616D65090001044E
-      616D65060F456E644465616C5175616E74697479094669656C644E616D65060F
-      456E644465616C5175616E746974790844617461547970650206084461746153
-      697A6502080549734B6579080F4E65656450726F636573734E616D6509000104
-      4E616D650611456E644465616C546F74616C5072696365094669656C644E616D
-      650611456E644465616C546F74616C5072696365084461746154797065020608
-      4461746153697A6502080549734B6579080F4E65656450726F636573734E616D
-      65090001044E616D65060D456E6451635175616E74697479094669656C644E61
-      6D65060D456E6451635175616E74697479084461746154797065020608446174
-      6153697A6502080549734B6579080F4E65656450726F636573734E616D650900
-      01044E616D65060F456E645163546F74616C5072696365094669656C644E616D
-      65060F456E645163546F74616C50726963650844617461547970650206084461
-      746153697A6502080549734B6579080F4E65656450726F636573734E616D6509
-      0001044E616D65060C456E64516342474C436F6465094669656C644E616D6506
-      0C456E64516342474C436F64650844617461547970650210084461746153697A
-      6503A00F0549734B6579080F4E65656450726F636573734E616D65090001044E
-      616D65060B456E64516342474C4E756D094669656C644E616D65060B456E6451
-      6342474C4E756D0844617461547970650210084461746153697A6503A00F0549
-      734B6579080F4E65656450726F636573734E616D65090001044E616D65060D45
-      6E6450635175616E74697479094669656C644E616D65060D456E645063517561
-      6E746974790844617461547970650206084461746153697A6502080549734B65
-      79080F4E65656450726F636573734E616D65090001044E616D65060F456E6450
-      63546F74616C5072696365094669656C644E616D65060F456E645063546F7461
-      6C50726963650844617461547970650206084461746153697A6502080549734B
-      6579080F4E65656450726F636573734E616D65090001044E616D65060C456E64
-      506342474C436F6465094669656C644E616D65060C456E64506342474C436F64
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060C4465616C5175616E74697479094669656C644E
+      616D65060C4465616C5175616E74697479084461746154797065020608446174
+      6153697A6502080549734B6579080F4E65656450726F636573734E616D650909
+      507265636973696F6E02000453697A6502000001044E616D65060E4465616C54
+      6F74616C5072696365094669656C644E616D65060E4465616C546F74616C5072
+      6963650844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D6506084465616C466C6167094669656C644E616D6506
+      084465616C466C61670844617461547970650203084461746153697A65020405
+      49734B6579080F4E65656450726F636573734E616D650909507265636973696F
+      6E02000453697A6502000001044E616D65060B4465616C466F726D756C610946
+      69656C644E616D65060B4465616C466F726D756C610844617461547970650201
+      084461746153697A6503FF000549734B6579080F4E65656450726F636573734E
+      616D650909507265636973696F6E02000453697A6502000001044E616D65060A
+      51635175616E74697479094669656C644E616D65060A51635175616E74697479
+      0844617461547970650206084461746153697A6502080549734B6579080F4E65
+      656450726F636573734E616D650909507265636973696F6E02000453697A6502
+      000001044E616D65060C5163546F74616C5072696365094669656C644E616D65
+      060C5163546F74616C5072696365084461746154797065020608446174615369
+      7A6502080549734B6579080F4E65656450726F636573734E616D650909507265
+      636973696F6E02000453697A6502000001044E616D6506095163466F726D756C
+      61094669656C644E616D6506095163466F726D756C6108446174615479706502
+      01084461746153697A6503FF000549734B6579080F4E65656450726F63657373
+      4E616D650909507265636973696F6E02000453697A6502000001044E616D6506
+      065163466C6167094669656C644E616D6506065163466C616708446174615479
+      70650203084461746153697A6502040549734B6579080F4E65656450726F6365
+      73734E616D650909507265636973696F6E02000453697A6502000001044E616D
+      650609516342474C436F6465094669656C644E616D650609516342474C436F64
       650844617461547970650210084461746153697A6503A00F0549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D65060B456E6450634247
-      4C4E756D094669656C644E616D65060B456E64506342474C4E756D0844617461
+      4E65656450726F636573734E616D650909507265636973696F6E02000453697A
+      6502000001044E616D650608516342474C4E756D094669656C644E616D650608
+      516342474C4E756D0844617461547970650210084461746153697A6503A00F05
+      49734B6579080F4E65656450726F636573734E616D650909507265636973696F
+      6E02000453697A6502000001044E616D65060A50635175616E74697479094669
+      656C644E616D65060A50635175616E7469747908446174615479706502060844
+      61746153697A6502080549734B6579080F4E65656450726F636573734E616D65
+      0909507265636973696F6E02000453697A6502000001044E616D65060C506354
+      6F74616C5072696365094669656C644E616D65060C5063546F74616C50726963
+      650844617461547970650206084461746153697A6502080549734B6579080F4E
+      65656450726F636573734E616D650909507265636973696F6E02000453697A65
+      02000001044E616D6506065063466C6167094669656C644E616D650606506346
+      6C61670844617461547970650203084461746153697A6502040549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D6506095063466F726D756C61094669656C644E616D65
+      06095063466F726D756C610844617461547970650201084461746153697A6503
+      FF000549734B6579080F4E65656450726F636573734E616D6509095072656369
+      73696F6E02000453697A6502000001044E616D650609506342474C436F646509
+      4669656C644E616D650609506342474C436F6465084461746154797065021008
+      4461746153697A6503A00F0549734B6579080F4E65656450726F636573734E61
+      6D650909507265636973696F6E02000453697A6502000001044E616D65060850
+      6342474C4E756D094669656C644E616D650608506342474C4E756D0844617461
       547970650210084461746153697A6503A00F0549734B6579080F4E6565645072
-      6F636573734E616D65090001044E616D650611456E644761746865725175616E
-      74697479094669656C644E616D650611456E644761746865725175616E746974
-      790844617461547970650206084461746153697A6502080549734B6579080F4E
-      65656450726F636573734E616D65090001044E616D650613456E644761746865
-      72546F74616C5072696365094669656C644E616D650613456E64476174686572
-      546F74616C50726963650844617461547970650206084461746153697A650208
-      0549734B6579080F4E65656450726F636573734E616D65090001044E616D6506
-      0F5072654465616C5175616E74697479094669656C644E616D65060F50726544
-      65616C5175616E746974790844617461547970650206084461746153697A6502
-      080549734B6579080F4E65656450726F636573734E616D65090001044E616D65
+      6F636573734E616D650909507265636973696F6E02000453697A650200000104
+      4E616D65060E4761746865725175616E74697479094669656C644E616D65060E
+      4761746865725175616E74697479084461746154797065020608446174615369
+      7A6502080549734B6579080F4E65656450726F636573734E616D650909507265
+      636973696F6E02000453697A6502000001044E616D650610476174686572546F
+      74616C5072696365094669656C644E616D650610476174686572546F74616C50
+      726963650844617461547970650206084461746153697A6502080549734B6579
+      080F4E65656450726F636573734E616D650909507265636973696F6E02000453
+      697A6502000001044E616D65060F456E644465616C5175616E74697479094669
+      656C644E616D65060F456E644465616C5175616E746974790844617461547970
+      650206084461746153697A6502080549734B6579080F4E65656450726F636573
+      734E616D650909507265636973696F6E02000453697A6502000001044E616D65
+      0611456E644465616C546F74616C5072696365094669656C644E616D65061145
+      6E644465616C546F74616C507269636508446174615479706502060844617461
+      53697A6502080549734B6579080F4E65656450726F636573734E616D65090950
+      7265636973696F6E02000453697A6502000001044E616D65060D456E64516351
+      75616E74697479094669656C644E616D65060D456E6451635175616E74697479
+      0844617461547970650206084461746153697A6502080549734B6579080F4E65
+      656450726F636573734E616D650909507265636973696F6E02000453697A6502
+      000001044E616D65060F456E645163546F74616C5072696365094669656C644E
+      616D65060F456E645163546F74616C5072696365084461746154797065020608
+      4461746153697A6502080549734B6579080F4E65656450726F636573734E616D
+      650909507265636973696F6E02000453697A6502000001044E616D65060C456E
+      64516342474C436F6465094669656C644E616D65060C456E64516342474C436F
+      64650844617461547970650210084461746153697A6503A00F0549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060B456E64516342474C4E756D094669656C644E61
+      6D65060B456E64516342474C4E756D0844617461547970650210084461746153
+      697A6503A00F0549734B6579080F4E65656450726F636573734E616D65090950
+      7265636973696F6E02000453697A6502000001044E616D65060D456E64506351
+      75616E74697479094669656C644E616D65060D456E6450635175616E74697479
+      0844617461547970650206084461746153697A6502080549734B6579080F4E65
+      656450726F636573734E616D650909507265636973696F6E02000453697A6502
+      000001044E616D65060F456E645063546F74616C5072696365094669656C644E
+      616D65060F456E645063546F74616C5072696365084461746154797065020608
+      4461746153697A6502080549734B6579080F4E65656450726F636573734E616D
+      650909507265636973696F6E02000453697A6502000001044E616D65060C456E
+      64506342474C436F6465094669656C644E616D65060C456E64506342474C436F
+      64650844617461547970650210084461746153697A6503A00F0549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060B456E64506342474C4E756D094669656C644E61
+      6D65060B456E64506342474C4E756D0844617461547970650210084461746153
+      697A6503A00F0549734B6579080F4E65656450726F636573734E616D65090950
+      7265636973696F6E02000453697A6502000001044E616D650611456E64476174
+      6865725175616E74697479094669656C644E616D650611456E64476174686572
+      5175616E746974790844617461547970650206084461746153697A6502080549
+      734B6579080F4E65656450726F636573734E616D650909507265636973696F6E
+      02000453697A6502000001044E616D650613456E64476174686572546F74616C
+      5072696365094669656C644E616D650613456E64476174686572546F74616C50
+      726963650844617461547970650206084461746153697A6502080549734B6579
+      080F4E65656450726F636573734E616D650909507265636973696F6E02000453
+      697A6502000001044E616D65060F5072654465616C5175616E74697479094669
+      656C644E616D65060F5072654465616C5175616E746974790844617461547970
+      650206084461746153697A6502080549734B6579080F4E65656450726F636573
+      734E616D650909507265636973696F6E02000453697A6502000001044E616D65
       06115072654465616C546F74616C5072696365094669656C644E616D65061150
       72654465616C546F74616C507269636508446174615479706502060844617461
-      53697A6502080549734B6579080F4E65656450726F636573734E616D65090001
-      044E616D65060D50726551635175616E74697479094669656C644E616D65060D
-      50726551635175616E746974790844617461547970650206084461746153697A
-      6502080549734B6579080F4E65656450726F636573734E616D65090001044E61
-      6D65060F5072655163546F74616C5072696365094669656C644E616D65060F50
-      72655163546F74616C5072696365084461746154797065020608446174615369
-      7A6502080549734B6579080F4E65656450726F636573734E616D65090001044E
-      616D65060C507265516342474C436F6465094669656C644E616D65060C507265
-      516342474C436F64650844617461547970650210084461746153697A6503A00F
-      0549734B6579080F4E65656450726F636573734E616D65090001044E616D6506
-      0B507265516342474C4E756D094669656C644E616D65060B507265516342474C
-      4E756D0844617461547970650210084461746153697A6503A00F0549734B6579
-      080F4E65656450726F636573734E616D65090001044E616D65060D5072655063
-      5175616E74697479094669656C644E616D65060D50726550635175616E746974
-      790844617461547970650206084461746153697A6502080549734B6579080F4E
-      65656450726F636573734E616D65090001044E616D65060F5072655063546F74
-      616C5072696365094669656C644E616D65060F5072655063546F74616C507269
-      63650844617461547970650206084461746153697A6502080549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D65060C50726550634247
-      4C436F6465094669656C644E616D65060C507265506342474C436F6465084461
-      7461547970650210084461746153697A6503A00F0549734B6579080F4E656564
-      50726F636573734E616D65090001044E616D65060B507265506342474C4E756D
-      094669656C644E616D65060B507265506342474C4E756D084461746154797065
-      0210084461746153697A6503A00F0549734B6579080F4E65656450726F636573
-      734E616D65090001044E616D6506115072654761746865725175616E74697479
-      094669656C644E616D6506115072654761746865725175616E74697479084461
+      53697A6502080549734B6579080F4E65656450726F636573734E616D65090950
+      7265636973696F6E02000453697A6502000001044E616D65060D507265516351
+      75616E74697479094669656C644E616D65060D50726551635175616E74697479
+      0844617461547970650206084461746153697A6502080549734B6579080F4E65
+      656450726F636573734E616D650909507265636973696F6E02000453697A6502
+      000001044E616D65060F5072655163546F74616C5072696365094669656C644E
+      616D65060F5072655163546F74616C5072696365084461746154797065020608
+      4461746153697A6502080549734B6579080F4E65656450726F636573734E616D
+      650909507265636973696F6E02000453697A6502000001044E616D65060C5072
+      65516342474C436F6465094669656C644E616D65060C507265516342474C436F
+      64650844617461547970650210084461746153697A6503A00F0549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060B507265516342474C4E756D094669656C644E61
+      6D65060B507265516342474C4E756D0844617461547970650210084461746153
+      697A6503A00F0549734B6579080F4E65656450726F636573734E616D65090950
+      7265636973696F6E02000453697A6502000001044E616D65060D507265506351
+      75616E74697479094669656C644E616D65060D50726550635175616E74697479
+      0844617461547970650206084461746153697A6502080549734B6579080F4E65
+      656450726F636573734E616D650909507265636973696F6E02000453697A6502
+      000001044E616D65060F5072655063546F74616C5072696365094669656C644E
+      616D65060F5072655063546F74616C5072696365084461746154797065020608
+      4461746153697A6502080549734B6579080F4E65656450726F636573734E616D
+      650909507265636973696F6E02000453697A6502000001044E616D65060C5072
+      65506342474C436F6465094669656C644E616D65060C507265506342474C436F
+      64650844617461547970650210084461746153697A6503A00F0549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060B507265506342474C4E756D094669656C644E61
+      6D65060B507265506342474C4E756D0844617461547970650210084461746153
+      697A6503A00F0549734B6579080F4E65656450726F636573734E616D65090950
+      7265636973696F6E02000453697A6502000001044E616D650611507265476174
+      6865725175616E74697479094669656C644E616D650611507265476174686572
+      5175616E746974790844617461547970650206084461746153697A6502080549
+      734B6579080F4E65656450726F636573734E616D650909507265636973696F6E
+      02000453697A6502000001044E616D650613507265476174686572546F74616C
+      5072696365094669656C644E616D650613507265476174686572546F74616C50
+      726963650844617461547970650206084461746153697A6502080549734B6579
+      080F4E65656450726F636573734E616D650909507265636973696F6E02000453
+      697A6502000001044E616D65060B486173426F6F6B6D61726B094669656C644E
+      616D65060B486173426F6F6B6D61726B08446174615479706502050844617461
+      53697A6502010549734B6579080F4E65656450726F636573734E616D65090950
+      7265636973696F6E02000453697A6502000001044E616D6506084D61726B4D65
+      6D6F094669656C644E616D6506084D61726B4D656D6F08446174615479706502
+      18084461746153697A6503FF000549734B6579080F4E65656450726F63657373
+      4E616D650909507265636973696F6E02000453697A6502000001044E616D6506
+      10504D5F507265546F74616C5072696365094669656C644E616D650610504D5F
+      507265546F74616C50726963650844617461547970650206084461746153697A
+      6502080549734B6579080F4E65656450726F636573734E616D65090950726563
+      6973696F6E02000453697A6502000001044E616D65060D504D5F546F74616C50
+      72696365094669656C644E616D65060D504D5F546F74616C5072696365084461
       7461547970650206084461746153697A6502080549734B6579080F4E65656450
-      726F636573734E616D65090001044E616D650613507265476174686572546F74
-      616C5072696365094669656C644E616D650613507265476174686572546F7461
-      6C50726963650844617461547970650206084461746153697A6502080549734B
-      6579080F4E65656450726F636573734E616D65090001044E616D65060B486173
-      426F6F6B6D61726B094669656C644E616D65060B486173426F6F6B6D61726B08
-      44617461547970650205084461746153697A6502010549734B6579080F4E6565
-      6450726F636573734E616D65090001044E616D6506084D61726B4D656D6F0946
-      69656C644E616D6506084D61726B4D656D6F0844617461547970650218084461
-      746153697A6503FF000549734B6579080F4E65656450726F636573734E616D65
-      090001044E616D650610504D5F507265546F74616C5072696365094669656C64
-      4E616D650610504D5F507265546F74616C507269636508446174615479706502
-      06084461746153697A6502080549734B6579080F4E65656450726F636573734E
-      616D65090001044E616D65060D504D5F546F74616C5072696365094669656C64
-      4E616D65060D504D5F546F74616C507269636508446174615479706502060844
-      61746153697A6502080549734B6579080F4E65656450726F636573734E616D65
-      090000}
+      726F636573734E616D650909507265636973696F6E02000453697A6502000000}
   end
 end

+ 1 - 0
DataModules/StageDm.pas

@@ -935,6 +935,7 @@ begin
     begin
       DetailGLData.LoadDetailGLs(ABillsID, vGLs);
       ProjectGLData.CalculateGLs_PM(vGLs);
+      ProjectGLData.RefreshGatherData;
     end;
   finally
     vGLs.Free;

+ 80 - 1
Frames/ProjectGLFme.dfm

@@ -7,7 +7,7 @@ object ProjectGLFrame: TProjectGLFrame
   object zgProjectGL: TZJGrid
     Left = 0
     Top = 0
-    Width = 946
+    Width = 646
     Height = 313
     Options = [goRangeSelect, goRowSizing, goColSizing, goCellNotMaintainData, goFixedRowShowNo, goFixedColShowNo, goAlwaysShowSelection]
     OptionsEx = []
@@ -24,6 +24,23 @@ object ProjectGLFrame: TProjectGLFrame
     OnMouseDown = zgProjectGLMouseDown
     Align = alClient
   end
+  object zgGather: TZJGrid
+    Left = 646
+    Top = 0
+    Width = 300
+    Height = 313
+    Options = [goRangeSelect, goRowSizing, goColSizing, goCellNotMaintainData, goFixedRowShowNo, goFixedColShowNo, goAlwaysShowSelection]
+    OptionsEx = []
+    ColCount = 4
+    ShowGridLine = False
+    DefaultColWidth = 73
+    DefaultFixedColWidth = 25
+    Selection.AlphaBlend = False
+    Selection.TransparentColor = False
+    FrozenCol = 0
+    FrozenRow = 0
+    Align = alRight
+  end
   object saProjectGL: TsdGridDBA
     Columns = <
       item
@@ -378,4 +395,66 @@ object ProjectGLFrame: TProjectGLFrame
       OnExecute = actnCalculatePriceMarginExecute
     end
   end
+  object saGather: TsdGridDBA
+    Columns = <
+      item
+        Title.Caption = #36153#29992#21517#31216
+        Title.CaptionAcrossCols = '1'
+        Title.Font.Charset = GB2312_CHARSET
+        Title.Font.Color = clWindowText
+        Title.Font.Height = -12
+        Title.Font.Name = #23435#20307
+        Title.Font.Style = []
+        Alignment = taLeftJustify
+        Font.Charset = GB2312_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = #23435#20307
+        Font.Style = []
+        FieldName = 'Name'
+        Width = 80
+        ReadOnly = True
+      end
+      item
+        Title.Caption = #26412#26399#37329#39069'('#20803')'
+        Title.CaptionAcrossCols = '1'
+        Title.Font.Charset = GB2312_CHARSET
+        Title.Font.Color = clWindowText
+        Title.Font.Height = -12
+        Title.Font.Name = #23435#20307
+        Title.Font.Style = []
+        Alignment = taRightJustify
+        Font.Charset = GB2312_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = #23435#20307
+        Font.Style = []
+        FieldName = 'CurTotalPrice'
+        Width = 85
+        ReadOnly = True
+      end
+      item
+        Title.Caption = #32047#35745#37329#39069'('#20803')'
+        Title.CaptionAcrossCols = '1'
+        Title.Font.Charset = GB2312_CHARSET
+        Title.Font.Color = clWindowText
+        Title.Font.Height = -12
+        Title.Font.Name = #23435#20307
+        Title.Font.Style = []
+        Alignment = taRightJustify
+        Font.Charset = GB2312_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = #23435#20307
+        Font.Style = []
+        FieldName = 'AddTotalPrice'
+        Width = 85
+        ReadOnly = True
+      end>
+    Grid = zgGather
+    ExtendRowCount = 0
+    Options = []
+    Left = 744
+    Top = 104
+  end
 end

+ 3 - 0
Frames/ProjectGLFme.pas

@@ -16,6 +16,8 @@ type
     dxpmProjectGL: TdxBarPopupMenu;
     actnProjectGL: TActionList;
     actnCalculatePriceMargin: TAction;
+    saGather: TsdGridDBA;
+    zgGather: TZJGrid;
     procedure zgProjectGLMouseDown(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
     procedure dxpmProjectGLPopup(Sender: TObject);
@@ -43,6 +45,7 @@ begin
   inherited Create(nil);
   FProjectGLData := AProjectGLData;
   saProjectGL.DataView := FProjectGLData.sdvProjectGL;
+  saGather.DataView := FProjectGLData.sdvGather;
   ResetViewControl;
 end;
 

+ 6 - 4
Units/ProjectData.pas

@@ -561,6 +561,7 @@ begin
   // 须保存项目工料数据,重新加载当期的项目工料数据
   FProjectGLData.LoadCurPhaseInfoPrice;
   FProjectGLData.LoadStagePM_CalcData;
+  FProjectGLData.RefreshGatherData;
   //BillsGatherData.RefreshBills;
 end;
 
@@ -1851,10 +1852,10 @@ procedure TProjectData.CopyPreData;
                '    PrePAL_DeltaPrice, PrePAL_Total)'+
                '  Select GLID, %d,'+
                '    InfoPrice, InfoDate, DeltaPrice, ValidDeltaPrice,'+
-               '    PreUsedQuantity+UsedQuantity, PreUsedTotalPrice+UsedTotalPrice,'+
-               '    PM_PreQuantity+PM_Quantity_F, PM_PreTotalPrice+PM_TotalPrice_F,'+
-               '    PrePAL_UsedQuantity+PAL_UsedQuantity_F, PrePAL_UsedTotalPrice+PAL_UsedTotalPrice_F,'+
-               '    PrePAL_DeltaPrice+PAL_DeltaPrice_F, PrePAL_Total+PAL_Total_F'+
+               '    iif(IsNull(PreUsedQuantity), 0, PreUsedQuantity)+UsedQuantity, iif(IsNull(PreUsedTotalPrice), 0, PreUsedTotalPrice)+UsedTotalPrice,'+
+               '    iif(IsNull(PM_PreQuantity), 0, PM_PreQuantity)+PM_Quantity_F, iif(IsNull(PM_PreTotalPrice), 0, PM_PreTotalPrice)+PM_TotalPrice_F,'+
+               '    iif(IsNull(PrePAL_UsedQuantity), 0, PrePAL_UsedQuantity)+PAL_UsedQuantity_F, iif(IsNull(PrePAL_UsedTotalPrice), 0, PrePAL_UsedTotalPrice)+PAL_UsedTotalPrice_F,'+
+               '    iif(IsNull(PrePAL_DeltaPrice), 0, PrePAL_DeltaPrice)+PAL_DeltaPrice_F, iif(IsNull(PrePAL_Total), 0, PrePAL_Total)+PAL_Total_F'+
                '  From GLPrice Where PhaseID = %d';
   begin
     if FProjProperties.PhaseCount > 1 then
@@ -1866,6 +1867,7 @@ begin
   PhaseData.CopyPreData;
   ProjectGLData.LoadCurPhaseInfoPrice;
   ProjectGLData.LoadStagePM_CalcData;
+  FProjectGLData.RefreshGatherData;
   BillsMeasureData.ResetTreeNodeStageRec;
 end;
 

+ 6 - 0
Units/mDataRecord.pas

@@ -673,11 +673,17 @@ begin
 
   FUsedQuantity := ValueByName('UsedQuantity');
   FUsedTotalPrice := ValueByName('UsedTotalPrice');
+  FPreUsedQuantity := ValueByName('PreUsedQuantity');
+  FPreUsedTotalPrice := ValueByName('PreUsedTotalPrice');
 
   FPAL_UsedQuantity := ValueByName('PAL_UsedQuantity');
   FPAL_UsedTotalPrice := ValueByName('PAL_UsedTotalPrice');
   FPAL_DeltaPrice := ValueByName('PAL_DeltaPrice');
   FPAL_Total := ValueByName('PAL_Total');
+  FPrePAL_UsedQuantity := ValueByName('PrePAL_UsedQuantity');
+  FPrePAL_UsedTotalPrice := ValueByName('PrePAL_UsedTotalPrice');
+  FPrePAL_DeltaPrice := ValueByName('PrePAL_DeltaPrice');
+  FPrePAL_Total := ValueByName('PrePAL_Total');
 end;
 
 { TDetailGLRecord }