Bläddra i källkod

武九报表调整

MaiXinRong 6 år sedan
förälder
incheckning
db26c9f6c3

+ 17 - 0
DataModules/BGLDm.pas

@@ -136,6 +136,7 @@ type
     function LocateBGL(const ACode: string): Boolean;
     function LocateBGBills(ABGID: Integer; const AB_Code: string): Boolean;
     function GetTotalPrice: Double;
+    function GetEndTotalPrice(AEndPhase: Integer): Double;
   public
     constructor Create(AProjectData: TObject);
     destructor Destroy; override;
@@ -158,6 +159,7 @@ type
 
     property ProjectData: TObject read FProjectData;
     property TotalPrice: Double read GetTotalPrice;
+    property EndTotalPrice[AEndPhase: Integer]: Double read GetEndTotalPrice;
     property AfterCurrentBGLChanged: TAfterCurrentBGLChanged read FAfterCurrentBGLChanged write FAfterCurrentBGLChanged;
   end;
 
@@ -823,4 +825,19 @@ begin
   Result := fTotalPrice;
 end;
 
+function TBGLData.GetEndTotalPrice(AEndPhase: Integer): Double;
+var
+  fTotalPrice: Double;
+begin
+  fTotalPrice := 0;
+  cdsBGL.First;
+  while not cdsBGL.Eof do
+  begin
+    if (cdsBGLCreatePhaseID.AsInteger <= AEndPhase) then
+      fTotalPrice := fTotalPrice + cdsBGLTotalPrice.AsFloat;
+    cdsBGL.next;
+  end;
+  Result := fTotalPrice;
+end;
+
 end.

+ 64 - 44
DataModules/MainDataListDm.dfm

@@ -11,57 +11,77 @@ object MainListData: TMainListData
   end
   object sddMainDataList: TsdDataSet
     Active = False
+    Filtered = False
     Provider = sdpMainDataList
     Left = 72
     Top = 88
     FieldListData = {
       0101044E616D65060750686173654944094669656C644E616D65060750686173
       6549440844617461547970650203084461746153697A6502040549734B657908
-      0F4E65656450726F636573734E616D65090001044E616D65060E4465616C546F
-      74616C5072696365094669656C644E616D65060E4465616C546F74616C507269
-      63650844617461547970650206084461746153697A6502080549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D65060C5163546F74616C
-      5072696365094669656C644E616D65060C5163546F74616C5072696365084461
-      7461547970650206084461746153697A6502080549734B6579080F4E65656450
-      726F636573734E616D65090001044E616D65060C5063546F74616C5072696365
-      094669656C644E616D65060C5063546F74616C50726963650844617461547970
-      650206084461746153697A6502080549734B6579080F4E65656450726F636573
-      734E616D65090001044E616D650610476174686572546F74616C507269636509
-      4669656C644E616D650610476174686572546F74616C50726963650844617461
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060E4465616C546F74616C5072696365094669656C
+      644E616D65060E4465616C546F74616C50726963650844617461547970650206
+      084461746153697A6502080549734B6579080F4E65656450726F636573734E61
+      6D650909507265636973696F6E02000453697A6502000001044E616D65060C51
+      63546F74616C5072696365094669656C644E616D65060C5163546F74616C5072
+      6963650844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060C5063546F74616C5072696365094669656C644E
+      616D65060C5063546F74616C5072696365084461746154797065020608446174
+      6153697A6502080549734B6579080F4E65656450726F636573734E616D650909
+      507265636973696F6E02000453697A6502000001044E616D6506104761746865
+      72546F74616C5072696365094669656C644E616D650610476174686572546F74
+      616C50726963650844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650909507265636973696F6E02
+      000453697A6502000001044E616D650611456E644465616C546F74616C507269
+      6365094669656C644E616D650611456E644465616C546F74616C507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D65060F456E645163546F74616C5072696365094669656C644E61
+      6D65060F456E645163546F74616C507269636508446174615479706502060844
+      61746153697A6502080549734B6579080F4E65656450726F636573734E616D65
+      0909507265636973696F6E02000453697A6502000001044E616D65060F456E64
+      5063546F74616C5072696365094669656C644E616D65060F456E645063546F74
+      616C50726963650844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650909507265636973696F6E02
+      000453697A6502000001044E616D650613456E64476174686572546F74616C50
+      72696365094669656C644E616D650613456E64476174686572546F74616C5072
+      6963650844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D6506115072654465616C546F74616C50726963650946
+      69656C644E616D6506115072654465616C546F74616C50726963650844617461
       547970650206084461746153697A6502080549734B6579080F4E65656450726F
-      636573734E616D65090001044E616D650611456E644465616C546F74616C5072
-      696365094669656C644E616D650611456E644465616C546F74616C5072696365
-      0844617461547970650206084461746153697A6502080549734B6579080F4E65
-      656450726F636573734E616D65090001044E616D65060F456E645163546F7461
-      6C5072696365094669656C644E616D65060F456E645163546F74616C50726963
-      650844617461547970650206084461746153697A6502080549734B6579080F4E
-      65656450726F636573734E616D65090001044E616D65060F456E645063546F74
-      616C5072696365094669656C644E616D65060F456E645063546F74616C507269
-      63650844617461547970650206084461746153697A6502080549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D650613456E6447617468
-      6572546F74616C5072696365094669656C644E616D650613456E644761746865
-      72546F74616C50726963650844617461547970650206084461746153697A6502
-      080549734B6579080F4E65656450726F636573734E616D65090001044E616D65
-      06115072654465616C546F74616C5072696365094669656C644E616D65061150
-      72654465616C546F74616C507269636508446174615479706502060844617461
-      53697A6502080549734B6579080F4E65656450726F636573734E616D65090001
-      044E616D65060F5072655163546F74616C5072696365094669656C644E616D65
-      060F5072655163546F74616C5072696365084461746154797065020608446174
-      6153697A6502080549734B6579080F4E65656450726F636573734E616D650900
-      01044E616D65060F5072655063546F74616C5072696365094669656C644E616D
-      65060F5072655063546F74616C50726963650844617461547970650206084461
-      746153697A6502080549734B6579080F4E65656450726F636573734E616D6509
-      0001044E616D650613507265476174686572546F74616C507269636509466965
-      6C644E616D650613507265476174686572546F74616C50726963650844617461
+      636573734E616D650909507265636973696F6E02000453697A6502000001044E
+      616D65060F5072655163546F74616C5072696365094669656C644E616D65060F
+      5072655163546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000001044E616D65060F5072655063546F
+      74616C5072696365094669656C644E616D65060F5072655063546F74616C5072
+      6963650844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D650613507265476174686572546F74616C5072696365
+      094669656C644E616D650613507265476174686572546F74616C507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D6506085068617365506179094669656C644E616D650608506861
+      73655061790844617461547970650206084461746153697A6502080549734B65
+      79080F4E65656450726F636573734E616D650909507265636973696F6E020004
+      53697A6502000001044E616D65060B456E645068617365506179094669656C64
+      4E616D65060B456E645068617365506179084461746154797065020608446174
+      6153697A6502080549734B6579080F4E65656450726F636573734E616D650909
+      507265636973696F6E02000453697A6502000001044E616D65060B5072655068
+      617365506179094669656C644E616D65060B5072655068617365506179084461
+      7461547970650206084461746153697A6502080549734B6579080F4E65656450
+      726F636573734E616D650909507265636973696F6E02000453697A6502000001
+      044E616D6506044A43545A094669656C644E616D6506044A43545A0844617461
       547970650206084461746153697A6502080549734B6579080F4E65656450726F
-      636573734E616D65090001044E616D6506085068617365506179094669656C64
-      4E616D6506085068617365506179084461746154797065020608446174615369
-      7A6502080549734B6579080F4E65656450726F636573734E616D65090001044E
-      616D65060B456E645068617365506179094669656C644E616D65060B456E6450
-      686173655061790844617461547970650206084461746153697A650208054973
-      4B6579080F4E65656450726F636573734E616D65090001044E616D65060B5072
-      655068617365506179094669656C644E616D65060B5072655068617365506179
-      0844617461547970650206084461746153697A6502080549734B6579080F4E65
-      656450726F636573734E616D65090000}
+      636573734E616D650909507265636973696F6E02000453697A6502000001044E
+      616D6506075072654A43545A094669656C644E616D6506075072654A43545A08
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D650607456E644A43545A094669656C644E616D650607456E644A
+      43545A0844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000000}
   end
 end

+ 12 - 2
DataModules/ReportMemoryDm/rmGridHeaderDm.dfm

@@ -56,6 +56,11 @@ object rmGridHeaderData: TrmGridHeaderData
         Name = 'DealType'
         DataType = ftWideString
         Size = 50
+      end
+      item
+        Name = 'PhaseStr'
+        DataType = ftWideString
+        Size = 10
       end>
     IndexDefs = <>
     Params = <>
@@ -63,7 +68,7 @@ object rmGridHeaderData: TrmGridHeaderData
     Left = 56
     Top = 40
     Data = {
-      2F0100009619E0BD01000000180000000A0000000000030000002F010B50726F
+      4C0100009619E0BD01000000180000000B0000000000030000004C010B50726F
       6A6563744E616D6501004A000000010005574944544802000200640008446561
       6C436F646501004A000000010005574944544802000200280005434E616D6501
       004A000000010005574944544802000200640005534E616D6501004A00000001
@@ -72,7 +77,8 @@ object rmGridHeaderData: TrmGridHeaderData
       44544802000200C80009466C6F77496E646578040001000000000007534E616D
       655F3201004A000000010005574944544802000200640008446561646C696E65
       02004A000000010005574944544802000200FE01084465616C5479706501004A
-      00000001000557494454480200020064000000}
+      000000010005574944544802000200640008506861736553747201004A000000
+      01000557494454480200020014000000}
     object cdsGridHeaderProjectName: TWideStringField
       FieldName = 'ProjectName'
       Size = 50
@@ -111,5 +117,9 @@ object rmGridHeaderData: TrmGridHeaderData
       FieldName = 'DealType'
       Size = 50
     end
+    object cdsGridHeaderPhaseStr: TWideStringField
+      FieldName = 'PhaseStr'
+      Size = 10
+    end
   end
 end

+ 2 - 0
DataModules/ReportMemoryDm/rmGridHeaderDm.pas

@@ -18,6 +18,7 @@ type
     cdsGridHeaderSName_2: TWideStringField;
     cdsGridHeaderDeadline: TWideStringField;
     cdsGridHeaderDealType: TWideStringField;
+    cdsGridHeaderPhaseStr: TWideStringField;
   private
   public
     function AssginData(AProjectData: TProjectData): TDataSet;
@@ -47,6 +48,7 @@ begin
   cdsGridHeaderSName_2.AsString := AProjectData.ProjProperties.SName_2;
   cdsGridHeaderDeadline.AsString := AProjectData.ProjProperties.Deadline;
   cdsGridHeaderDealType.AsString := AProjectData.Projproperties.DealType;
+  cdsGridHeaderPhaseStr.AsString := Format('%.2d', [AProjectData.PhaseIndex]);
   cdsGridHeader.Post;
   Result := cdsGridHeader;
 end;

+ 2 - 2
DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.dfm

@@ -1,7 +1,7 @@
 object rmWuJiuZqzfGatherData: TrmWuJiuZqzfGatherData
   OldCreateOrder = False
-  Left = 591
-  Top = 352
+  Left = 880
+  Top = 278
   Height = 150
   Width = 215
   object cdsZqzf: TClientDataSet

+ 49 - 14
DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.pas

@@ -38,7 +38,6 @@ type
     FSp: Double;
     FWy: Double;
     FCljg: Double;
-    FBgh: Double;
     procedure GatherMainData(AProjectData: TProjectData);
     procedure LoadPhaseData(APhaseIndex: Integer; AProjectData: TProjectData = nil);
   public
@@ -47,7 +46,7 @@ type
 
 implementation
 
-uses BillsDm, BGLDm, DealPaymentDm, PhaseData, PhasePayDm;
+uses BillsDm, BGLDm, DealPaymentDm, PhaseData, PhasePayDm, ConstUnit;
 
 {$R *.dfm}
 
@@ -68,7 +67,7 @@ end;
 
 procedure TrmWuJiuZqzfGatherData.GatherMainData(AProjectData: TProjectData);
 
-  function FindNode(const AName: String; AParent: TsdIDTreeNode = nil): TsdIDTreeNode;
+  function FindChild(const AName: String; AParent: TsdIDTreeNode = nil): TsdIDTreeNode;
   var
     vNode: TsdIDTreeNode;
   begin
@@ -89,13 +88,43 @@ procedure TrmWuJiuZqzfGatherData.GatherMainData(AProjectData: TProjectData);
     end;
   end;
 
+  function FindNode(const AName: String; AParent: TsdIDTreeNode = nil): TsdIDTreeNode;
+  var
+    vNode: TsdIDTreeNode;
+    i, iCount: Integer;
+  begin
+    Result := nil;
+    i := 0;
+    if Assigned(AParent) then
+    begin
+      vNode := AParent.FirstChild;
+      iCount := AParent.PosterityCount;
+    end
+    else
+    begin
+      vNode := AProjectData.BillsCompileData.BillsCompileTree.FirstNode;
+      iCount := AProjectData.BillsCompileData.BillsCompileTree.Count;
+    end;
+    while Assigned(vNode) and (i < iCount) do
+    begin
+      if Pos(AName, vNode.Rec.ValueByName('Name').AsString) > 0 then
+      begin
+        Result := vNode;
+        Break;
+      end
+      else
+        vNode := vNode.NextNode;
+      Inc(i);
+    end;
+  end;
+
 var
   vQtFyNode, vChild: TsdIDTreeNode;
 begin
   // 签约合同金额
   FQyht := AProjectData.ProjProperties.ContractPrice;
   // 复核清单金额
-  vQtFyNode := FindNode('建安工程量其他费用');
+  vQtFyNode := FindChild('建安工程其他费用', AProjectData.BillsCompileData.BillsCompileTree.FindNode(1));
   with AProjectData.BillsData do
     FFhqd := FirstPart[0] + SecondPart[0] + ThirdPart[0] + ReservedFee[0];
   if Assigned(vQtFyNode) then
@@ -111,16 +140,15 @@ begin
   // 违约罚金
   vChild := FindNode('违约罚金', vQtFyNode);
   if Assigned(vChild) then
-    FSp := vChild.Rec.ValueByName('TotalPrice').AsFloat
+    FWy := vChild.Rec.ValueByName('TotalPrice').AsFloat
   else
-    FSp := 0;
+    FWy := 0;
   // 材料价格调整金额
   vChild := FindNode('价差调整', vQtFyNode);
   if Assigned(vChild) then
-    FSp := vChild.Rec.ValueByName('TotalPrice').AsFloat
+    FCljg := vChild.Rec.ValueByName('TotalPrice').AsFloat
   else
-    FSp := 0;
-  FBgh := FFhqd + FBg + FSp + FWy + FCljg;
+    FCljg := 0;
 end;
 
 procedure TrmWuJiuZqzfGatherData.LoadPhaseData(APhaseIndex: Integer;
@@ -155,12 +183,13 @@ begin
     PhaseData.SimpleOpen(Format('%s\Phase%d.dat', [AProjectData.TempPath, APhaseIndex]));
     cdsZqzf.Append;
     cdsZqzfPhaseIndex.AsInteger := APhaseIndex;
-    cdsZqzfQyht.AsFloat := FQyht;
-    cdsZqzfBg.AsFloat := FBg;
+    cdsZqzfQyht.AsFloat := FQyht;              
+    cdsZqzfFhqd.AsFloat := FFhqd;
+    cdsZqzfBg.AsFloat := AProjectData.BGLData.EndTotalPrice[APhaseIndex];
     cdsZqzfSp.AsFloat := FSp;
     cdsZqzfWy.AsFloat := FWy;
-    cdsZqzfCljg.AsFloat := FCljg;
-    cdsZqzfBgh.AsFloat := FBgh;
+    cdsZqzfCljg.AsFloat := FCljg;//PhaseData.StageData.PriceMargin[2, 4];
+    cdsZqzfBgh.AsFloat := cdsZqzfFhqd.AsFloat + cdsZqzfBg.AsFloat + cdsZqzfSp.AsFloat + cdsZqzfWy.AsFloat + cdsZqzfCljg.AsFloat;
     sTPField := 'TotalPrice' + IntToStr(TPhaseData(PhaseData).PhaseProperty.AuditCount);
     with PhaseData.PhasePayData do
     begin
@@ -182,6 +211,12 @@ begin
       begin
         cdsZqzfAddKhNmggz.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
         cdsZqzfCurKhNmggz.AsFloat := Rec.ValueByName(sTPField).AsFloat;
+      end;                                            
+      iDealPayId := GetDealPayID('动员预付款', false);
+      Rec := sddPhasePay.Locate('ID', iDealPayId);
+      if Assigned(Rec) then
+      begin
+        cdsZqzfDyyfk.AsFloat := Rec.ValueByName(sTPField).AsFloat;
       end;
       iDealPayId := GetDealPayID('动员预付款', true);
       Rec := sddPhasePay.Locate('ID', iDealPayId);
@@ -197,7 +232,7 @@ begin
         cdsZqzfAddKAddedTax.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
         cdsZqzfCurKAddedTax.AsFloat := Rec.ValueByName(sTPField).AsFloat;
       end;
-      iDealPayId := GetDealPayID('本期付');
+      iDealPayId := GetDealPayID('本期付');
       Rec := sddPhasePay.Locate('ID', iDealPayId);
       if Assigned(Rec) then
       begin

+ 1 - 0
DataModules/StageDm.dfm

@@ -10,6 +10,7 @@ object StageData: TStageData
   end
   object sddStage: TsdDataSet
     Active = False
+    Filtered = False
     Provider = sdpStage
     BeforeValueChange = sddStageBeforeValueChange
     AfterValueChanged = sddStageAfterValueChanged

+ 8 - 0
DataModules/StageDm.pas

@@ -68,6 +68,7 @@ type
     function GetActive: Boolean;
     procedure SetTableName(const Value: string);
     function GetChapterStageGather(AChapter: Integer): Double;
+    function GetPriceMargin(AType, AIndex: Integer): Double;
   public
     constructor Create(APhaseData: TObject);
     destructor Destroy; override;
@@ -130,6 +131,8 @@ type
     property OtherProjectFee[AType, AIndex: Integer]: Double read GetOtherProjectFee;
     // 本期结算价
     property StageSettlement[AType, AIndex: Integer]: Double read GetStageSettlement;
+    // 价差
+    property PriceMargin[AType, AIndex: Integer]: Double read GetPriceMargin;
 
     // 100/200/.../900章本期完成计量
     property ChapterStageGather[AChapter: Integer]: Double read GetChapterStageGather;
@@ -1032,4 +1035,9 @@ begin
   UpdateComplete(ABillsID, fQuantity, fTotalPrice);
 end;
 
+function TStageData.GetPriceMargin(AType, AIndex: Integer): Double;
+begin
+  Result := GetTotalPrice(iPriceMarginID, AType, AIndex);
+end;
+
 end.

+ 1 - 1
Units/Connections.pas

@@ -8,7 +8,7 @@ uses
 const
   ProductName = 'Measure';
   EmptyFileVersion = '1.0.0.0';
-  FileVersion = '1.0.1.22';
+  FileVersion = '1.0.1.23';
   EncryptVersion = 'Auto1.0';
   SAdoConnectStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +
                    'User ID=Admin;Password='''';Persist Security Info=True';

+ 8 - 2
Units/DataBaseTables.pas

@@ -687,7 +687,7 @@ const
 
   {各期总数据 -- 为更新项目管理而储存的缓存数据}
   SMainDataList = 'MainDataList';
-  tdMainDataList: array [0..15] of TScFieldDef =(
+  tdMainDataList: array [0..18] of TScFieldDef =(
     // 第几期
     (FieldName: 'PhaseID'; FieldType: ftInteger; Size: 0; Precision: 0; NotNull: True; PrimaryKey: True; ForceUpdate: False),
     // [本期]合同计量
@@ -719,7 +719,13 @@ const
     // [截止本期]实付
     (FieldName: 'EndPhasePay'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
     // [截止上期]实付
-    (FieldName: 'PrePhasePay'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False)
+    (FieldName: 'PrePhasePay'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
+    // [本期]价差
+    (FieldName: 'JCTZ'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
+    // [截止上期]价差
+    (FieldName: 'PreJCTZ'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
+    // [截止本期]价差
+    (FieldName: 'EndJCTZ'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False)
   );
   {合同支付 - 最终数据缓存}
   SDealPayFinal = 'DealPayFinal';

+ 3 - 0
Units/ProjectData.pas

@@ -1249,6 +1249,9 @@ begin
     Rec.ValueByName('PhasePay').AsFloat := PhaseData.PhasePayData.LastestPhasePay[1];
     Rec.ValueByName('EndPhasePay').AsFloat := PhaseData.PhasePayData.LastestPhasePay[2];
     Rec.ValueByName('PrePhasePay').AsFloat := PhaseData.PhasePayData.LastestPhasePay[3];
+    Rec.ValueByName('JCTZ').AsFloat := PhaseData.StageData.PriceMargin[1, 4];           
+    Rec.ValueByName('EndJCTZ').AsFloat := PhaseData.StageData.PriceMargin[2, 4];
+    Rec.ValueByName('PreJCTZ').AsFloat := PhaseData.StageData.PriceMargin[3, 4];
   end;
 end;
 

+ 2 - 2
Units/ReportManager.pas

@@ -780,8 +780,8 @@ begin
     59: Result := FrmWuJiuZqzfGatherData.AssignData(AProjectData);
   end;
   // For Inner Test
-  //if _IsDebugView then
-    //ShowTestForm(Result);
+  if _IsDebugView then
+    ShowTestForm(Result);
 end;
 
 function TMemoryReportManager.GetSqlResultDataSet(const ASql: string;