浏览代码

Task #2534 甘肃武九中期支付汇总表

MaiXinRong 6 年之前
父节点
当前提交
d4aa037f6b

+ 16 - 0
DataModules/BGLDm.pas

@@ -135,6 +135,7 @@ type
 
     function LocateBGL(const ACode: string): Boolean;
     function LocateBGBills(ABGID: Integer; const AB_Code: string): Boolean;
+    function GetTotalPrice: Double;
   public
     constructor Create(AProjectData: TObject);
     destructor Destroy; override;
@@ -156,6 +157,7 @@ type
     procedure BatchWritePos_Reason;
 
     property ProjectData: TObject read FProjectData;
+    property TotalPrice: Double read GetTotalPrice;
     property AfterCurrentBGLChanged: TAfterCurrentBGLChanged read FAfterCurrentBGLChanged write FAfterCurrentBGLChanged;
   end;
 
@@ -807,4 +809,18 @@ begin
   end;
 end;
 
+function TBGLData.GetTotalPrice: Double;
+var
+  fTotalPrice: Double;
+begin
+  fTotalPrice := 0;
+  cdsBGL.First;
+  while not cdsBGL.Eof do
+  begin
+    fTotalPrice := fTotalPrice + cdsBGLTotalPrice.AsFloat;
+    cdsBGL.next;
+  end;
+  Result := fTotalPrice;
+end;
+
 end.

+ 37 - 0
DataModules/DealPayFinalDm.dfm

@@ -0,0 +1,37 @@
+object DealPayFinalData: TDealPayFinalData
+  OldCreateOrder = False
+  Left = 980
+  Top = 349
+  Height = 193
+  Width = 185
+  object sdpDealPayFinal: TsdADOProvider
+    TableName = 'DealPayFinal'
+    Left = 56
+    Top = 16
+  end
+  object sddDealPayFinal: TsdDataSet
+    Active = False
+    Filtered = False
+    Provider = sdpDealPayFinal
+    Left = 56
+    Top = 80
+    FieldListData = {
+      0101044E616D65060750686173654944094669656C644E616D65060750686173
+      6549440844617461547970650203084461746153697A6502040549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D6506064465616C4944094669656C644E616D65060644
+      65616C49440844617461547970650203084461746153697A6502040549734B65
+      79080F4E65656450726F636573734E616D650909507265636973696F6E020004
+      53697A6502000001044E616D65060A546F74616C5072696365094669656C644E
+      616D65060A546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000001044E616D65060D456E64546F7461
+      6C5072696365094669656C644E616D65060D456E64546F74616C507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D65060D507265546F74616C5072696365094669656C644E616D65
+      060D507265546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000000}
+  end
+end

+ 89 - 0
DataModules/DealPayFinalDm.pas

@@ -0,0 +1,89 @@
+unit DealPayFinalDm;
+
+interface
+
+uses
+  SysUtils, Classes, sdDB, sdProvider, ADODB, Variants;
+
+type
+  TDealPayFinalData = class(TDataModule)
+    sdpDealPayFinal: TsdADOProvider;
+    sddDealPayFinal: TsdDataSet;
+  private
+    FProjectData: TObject;
+  public
+    constructor Create(AProjectData: TObject);
+    destructor Destroy; override;
+
+    procedure Open(AConnection: TADOConnection);
+    procedure Close;
+    procedure Save;
+
+    procedure LoadLastestDealPayData;   
+  end;
+
+implementation
+
+uses
+  ProjectData, DealPaymentDm;
+
+{$R *.dfm}
+
+{ TDealPayFinalData }
+
+procedure TDealPayFinalData.Close;
+begin
+  sddDealPayFinal.Close;
+end;
+
+constructor TDealPayFinalData.Create(AProjectData: TObject);
+begin
+  inherited Create(nil);
+  FProjectData := AProjectData;
+end;
+
+destructor TDealPayFinalData.Destroy;
+begin
+  inherited;
+end;
+
+procedure TDealPayFinalData.Open(AConnection: TADOConnection);
+begin 
+  sdpDealPayFinal.Connection := AConnection;
+  sddDealPayFinal.Open;
+end;
+
+procedure TDealPayFinalData.Save;
+begin
+  sddDealPayFinal.Save;
+end;
+
+procedure TDealPayFinalData.LoadLastestDealPayData;
+var
+  iPhase, iRec: Integer;
+  vDealRec, vRec, vDealPayRec: TsdDataRecord;
+  sTpField: string;
+begin
+  iPhase := TProjectData(FProjectData).PhaseIndex;
+  sTpField := 'TotalPrice' + IntToStr(TProjectData(FProjectData).PhaseData.PhaseProperty.AuditCount);
+  for iRec := 0 to TProjectData(FProjectData).DealPaymentData.sddDealPayment.RecordCount - 1 do
+  begin
+    vDealRec := TProjectData(FProjectData).DealPaymentData.sddDealPayment.Records[iRec];
+    vRec := sddDealPayFinal.Locate('PhaseID;DealID', VarArrayOf([iPhase, vDealRec.ValueByName('ID').AsInteger]));
+    if not Assigned(vRec) then
+    begin
+      vRec := sddDealPayFinal.Add;
+      vRec.ValueByName('PhaseID').AsInteger := iPhase;
+      vRec.ValueByName('DealID').AsInteger := vDealRec.ValueByName('ID').AsInteger;
+    end;
+    vDealPayRec := TProjectData(FProjectData).PhaseData.PhasePayData.PayRecord(vDealRec.ValueByName('ID').AsInteger);
+    if Assigned(vDealPayRec) then
+    begin
+      vRec.ValueByName('TotalPrice').AsFloat := vDealPayRec.ValueByName(sTpField).AsFloat;
+      vRec.ValueByName('EndTotalPrice').AsFloat := vDealPayRec.ValueByName('End' + sTpField).AsFloat;
+      vRec.ValueByName('PreTotalPrice').AsFloat := vDealPayRec.ValueByName('Pre' + sTpField).AsFloat;
+    end;
+  end;
+end;
+
+end.

+ 1 - 0
DataModules/PhasePayDm.dfm

@@ -11,6 +11,7 @@ object PhasePayData: TPhasePayData
   end
   object sddPhasePay: TsdDataSet
     Active = False
+    Filtered = False
     Provider = sdpPhasePay
     BeforeValueChange = sddPhasePayBeforeValueChange
     AfterValueChanged = sddPhasePayAfterValueChanged

+ 5 - 56
DataModules/ReportMemoryDm/rmGridHeaderDm.dfm

@@ -5,68 +5,13 @@ object rmGridHeaderData: TrmGridHeaderData
   Height = 150
   Width = 215
   object cdsGridHeader: TClientDataSet
-    Active = True
     Aggregates = <>
-    FieldDefs = <
-      item
-        Name = 'ProjectName'
-        DataType = ftWideString
-        Size = 50
-      end
-      item
-        Name = 'DealCode'
-        DataType = ftWideString
-        Size = 20
-      end
-      item
-        Name = 'CName'
-        DataType = ftWideString
-        Size = 50
-      end
-      item
-        Name = 'SName'
-        DataType = ftWideString
-        Size = 50
-      end
-      item
-        Name = 'PhaseIndex'
-        DataType = ftWideString
-        Size = 10
-      end
-      item
-        Name = 'DealName'
-        DataType = ftWideString
-        Size = 100
-      end
-      item
-        Name = 'FlowIndex'
-        DataType = ftInteger
-      end
-      item
-        Name = 'SName_2'
-        DataType = ftWideString
-        Size = 50
-      end
-      item
-        Name = 'Deadline'
-        DataType = ftWideString
-        Size = 255
-      end>
+    FieldDefs = <>
     IndexDefs = <>
     Params = <>
     StoreDefs = True
     Left = 56
     Top = 40
-    Data = {
-      120100009619E0BD01000000180000000900000000000300000012010B50726F
-      6A6563744E616D6501004A000000010005574944544802000200640008446561
-      6C436F646501004A000000010005574944544802000200280005434E616D6501
-      004A000000010005574944544802000200640005534E616D6501004A00000001
-      000557494454480200020064000A5068617365496E64657801004A0000000100
-      055749445448020002001400084465616C4E616D6501004A0000000100055749
-      44544802000200C80009466C6F77496E646578040001000000000007534E616D
-      655F3201004A000000010005574944544802000200640008446561646C696E65
-      02004A000000010005574944544802000200FE010000}
     object cdsGridHeaderProjectName: TWideStringField
       FieldName = 'ProjectName'
       Size = 50
@@ -101,5 +46,9 @@ object rmGridHeaderData: TrmGridHeaderData
       FieldName = 'Deadline'
       Size = 255
     end
+    object cdsGridHeaderDealType: TWideStringField
+      FieldName = 'DealType'
+      Size = 50
+    end
   end
 end

+ 2 - 0
DataModules/ReportMemoryDm/rmGridHeaderDm.pas

@@ -17,6 +17,7 @@ type
     cdsGridHeaderFlowIndex: TIntegerField;
     cdsGridHeaderSName_2: TWideStringField;
     cdsGridHeaderDeadline: TWideStringField;
+    cdsGridHeaderDealType: TWideStringField;
   private
   public
     function AssginData(AProjectData: TProjectData): TDataSet;
@@ -45,6 +46,7 @@ begin
   cdsGridHeaderFlowIndex.AsInteger := 0;
   cdsGridHeaderSName_2.AsString := AProjectData.ProjProperties.SName_2;
   cdsGridHeaderDeadline.AsString := AProjectData.ProjProperties.Deadline;
+  cdsGridHeaderDealType.AsString := AProjectData.Projproperties.DealType;
   cdsGridHeader.Post;
   Result := cdsGridHeader;
 end;

+ 1 - 1
Units/Connections.pas

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

+ 14 - 0
Units/DataBaseTables.pas

@@ -721,6 +721,20 @@ const
     // [截止上期]实付
     (FieldName: 'PrePhasePay'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False)
   );
+  {合同支付 - 最终数据缓存}
+  SDealPayFinal = 'DealPayFinal';
+  tdDealPayFinal: array [0..4] of TScFieldDef =(
+    // 第几期
+    (FieldName: 'PhaseID'; FieldType: ftInteger; Size: 0; Precision: 0; NotNull: True; PrimaryKey: True; ForceUpdate: False),
+    // 合同支付项ID
+    (FieldName: 'DealID'; FieldType: ftInteger; Size: 0; Precision: 0; NotNull: True; PrimaryKey: True; ForceUpdate: False),  
+    // 本期金额
+    (FieldName: 'TotalPrice'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
+    // 截止上期金额
+    (FieldName: 'PreTotalPrice'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False),
+    // 截止本期金额
+    (FieldName: 'EndTotalPrice'; FieldType: ftDouble; Size: 0; Precision: 0; NotNull: False; PrimaryKey: False; ForceUpdate: False)
+  );
 
   {其他台账 -- 全额计量}
   SOtherMeasureOnce = 'OtherMeasureOnce';

+ 16 - 2
Units/ProjectData.pas

@@ -7,7 +7,7 @@ uses
   PhaseCompareDm, DealPaymentDm, SearchDm, DealBillsDm, MainDataListDm,
   BillsGatherDm, BGLDm, StaffDm, BillsCompileDm, BillsMeasureDm,
   BillsBookmarkDm, UpFileManageUnit, ProjectGLDm, PriceMarginBillsDm,
-  DetailGLDm, OtherMeasureOnceDm, OtherMeasurePhaseDm,
+  DetailGLDm, OtherMeasureOnceDm, OtherMeasurePhaseDm, DealPayFinalDm,
   Classes, SysUtils, ADODB, sdDB, Checker;
 
 type
@@ -41,6 +41,7 @@ type
     FStaffData: TStaffData;
     FSearchData: TSearchData;
     FMainListData: TMainListData;
+    FDealPayFinalData: TDealPayFinalData;
 
     FProjectGLData: TProjectGLData;
     FDetailGLData: TDetailGLData;
@@ -157,6 +158,7 @@ type
     procedure SaveTempDataBaseFile(const AFileName: string);
 
     procedure SaveLastestPhaseMainData;
+    procedure SaveDealPayFinalData;
 
     procedure CopyPreData;
     procedure CreateNewPhase;
@@ -325,6 +327,7 @@ begin
   FStaffData := TStaffData.Create(Self);
   FSearchData := TSearchData.Create(Self);
   FMainListData := TMainListData.Create(Self);
+  FDealPayFinalData := TDealPayFinalData.Create(Self);
   FProjectGLData := TProjectGLData.Create(Self);
   FDetailGLData := TDetailGLData.Create(Self);
   FPriceMarginBillsData := TPriceMarginBillsData.Create(Self);
@@ -356,6 +359,7 @@ begin
     FPriceMarginBillsData.Free;
     FDetailGLData.Free;
     FProjectGLData.Free;
+    FDealPayFinalData.Free;
     FMainListData.Free;
     FSearchData.Free;
     FStaffData.Free;
@@ -493,6 +497,7 @@ begin
 
   //FBillsGatherData.RefreshBills;
   FMainListData.Open(FConnection.Connection);
+  FDealPayFinalData.Open(FConnection.Connection);
   UpdateSysProgress(190, '正在读取数据');
   FOtherMeasureOnceData.Open(FConnection.Connection);
   FOtherMeasurePhaseData.Open(FConnection.Connection);
@@ -571,6 +576,7 @@ var
   iOrgPhaseIndex: Integer;
 begin
   SaveLastestPhaseMainData;
+  SaveDealPayFinalData;
   FProjectGLData.Save;
   FOtherMeasurePhaseData.Save;
 
@@ -2150,11 +2156,13 @@ begin
     CheckCalcBeforeSave;
 
     UpdateSysProgress(5, '正在保存数据');
-    SaveLastestPhaseMainData;
+    SaveLastestPhaseMainData; 
+    SaveDealPayFinalData;
     UpdateSysProgress(10, '正在保存数据');
     if (FPhaseData.Active) and (FPhaseIndex = ProjProperties.PhaseCount) then
       FPhaseData.Save;
     UpdateSysProgress(40, '正在保存数据');
+    FDealPayFinalData.Save;
     FMainListData.Save;
     FDealPaymentData.Save;
     UpdateSysProgress(50, '正在保存数据');
@@ -2329,4 +2337,10 @@ begin
   end;
 end;
 
+procedure TProjectData.SaveDealPayFinalData;
+begin
+  if (FPhaseIndex = ProjProperties.PhaseCount) and PhaseData.IsLastStage then
+    FDealPayFinalData.LoadLastestDealPayData;
+end;
+
 end.

+ 6 - 2
Units/ReportManager.pas

@@ -8,7 +8,7 @@ uses
   rmGclBillsAuditCompareDm, rmDealInfosDm, rmXmjBGLDetailDm,
   rmOtherReport1Dm, rmGcl_XmjBillsDm, rmGclBillsPlaneDm,
   rmMentalCustomized1Dm, rmCustomized2Dm, rmHaBaiCustomizedDm,
-  rmWeiWuZjjlGatherDm, rmZhongKaiDm,
+  rmWeiWuZjjlGatherDm, rmZhongKaiDm, rmWuJiuZqzfGatherDm,
   rmTestFrm,
   ReportInteractInfo,
   Classes, ScFileArchiver, IniFiles, Graphics, DB, ProjectData,
@@ -226,6 +226,7 @@ type
     FrmHaBaiCustomizedData: TrmHaBaiCustomizedData;
     FrmWeiWuZjjlGatherData: TrmWeiWuZjjlGatherData;
     FrmZhongKaiData: TrmZhongKaiData;
+    FrmWuJiuZqzfGatherData: TrmWuJiuZqzfGatherData;
 
     FMemoryQuery: TADOQuery;
 
@@ -665,6 +666,7 @@ begin
   FrmHaBaiCustomizedData := TrmHaBaiCustomizedData.Create(nil);
   FrmWeiWuZjjlGatherData := TrmWeiWuZjjlGatherData.Create(nil);
   FrmZhongKaiData := TrmZhongKaiData.Create(nil);
+  FrmWuJiuZqzfGatherData := TrmWuJiuZqzfGatherData.Create(nil);
 
   FMemoryQuery := TADOQuery.Create(nil);
 
@@ -690,6 +692,7 @@ begin
 
   FMemoryQuery.Free;
 
+  FrmWuJiuZqzfGatherData.Free;
   FrmZhongKaiData.Free;
   FrmWeiWuZjjlGatherData.Free;
   FrmHaBaiCustomizedData.Free;
@@ -735,7 +738,7 @@ end;
 function TMemoryReportManager.GetMemoryDataSet(
   ADataSetID: Integer; AProjectData: TProjectData): TDataSet;
 begin
-  //ADataSetID := 58;
+  //ADataSetID := 59;
   case ADataSetID of
     1: Result := FrmGridHeaderData.AssginData(AProjectData);   // 몹깊깊庫
     2: Result := FrmGclBillsBGData.AssignData(AProjectData, rmtPhaseGather, rmgtGather); // 묏넋좆헌데[굶퍅供냥]
@@ -774,6 +777,7 @@ begin
     43: Result := FrmGcl_XmjBillsData.AssignData(AProjectData, gxtWithoutXmj); // 暾켓깃硫깊,데깃뙈헌데삠悧깊
     51: Result := FrmHaBaiCustomizedData.AssignAssistantData(hbgt_CS); //코촁뮴벗겜、벌돛306땍齡깊--삔푯릅燎깊
     56: Result := FrmWeiWuZjjlGatherData.AssignData(AProjectData); // 맵據關嶠 -- 데깃뙈、셕좆連마삠悧깊
+    59: Result := FrmWuJiuZqzfGatherData.AssignData(AProjectData);
   end;
   // For Inner Test
   //if _IsDebugView then

+ 1 - 0
Units/UpdateDataBase.pas

@@ -100,6 +100,7 @@ begin
     Updater.AddTableDef(SStaff, @tdStaff, Length(tdStaff), False, False);
     Updater.AddTableDef(SDealBills, @tdDealBills, Length(tdDealBills), False, False);
     Updater.AddTableDef(SMainDataList, @tdMainDataList, Length(tdMainDataList), False, False);
+    Updater.AddTableDef(SDealPayFinal, @tdDealPayFinal, Length(tdDealPayFinal), False, False);
     Updater.AddTableDef(SProjectGL, @tdProjectGL, Length(tdProjectGL), False, False);
     Updater.AddTableDef(SGLPrice, @tdGLPrice, Length(tdGLPrice), False, False);
     Updater.AddTableDef(SDetailGL, @tdDetailGL, Length(tdDetailGL), False, False);