Kaynağa Gözat

合同支付,截止上期金额调整

MaiXinRong 5 yıl önce
ebeveyn
işleme
d1a175150e
3 değiştirilmiş dosya ile 50 ekleme ve 18 silme
  1. 30 2
      DataModules/PhasePayDm.pas
  2. 3 13
      DataModules/StageDm.pas
  3. 17 3
      Units/PhaseData.pas

+ 30 - 2
DataModules/PhasePayDm.pas

@@ -36,6 +36,7 @@ type
 
     procedure SetFieldValidChar;
     function GetBqwc(AType: Integer): Double;
+    function GetTableName: string;
   public
     constructor Create(APhaseData: TObject);
     destructor Destroy; override;
@@ -52,8 +53,10 @@ type
     procedure CalculateCurPay;
 
     procedure UpdateDataForNewAudit;
-    procedure CopyPrePhasePayData;
+    procedure CopyPrePhasePayData; overload;
+    procedure CopyPrePhasePayData(const APreFile: string; APreFinalIndex: Integer); overload;
 
+    property TableName: string read GetTableName;
     property PayablePrice[AIndex: Integer]: Double read GetPayablePrice;
     // ±¾ÆÚÓ¦¸¶
     property CurPayable: Double read GetCurPayable;
@@ -67,7 +70,7 @@ type
 implementation
 
 uses
-  PhaseData, ProjectData, DealPaymentDm, BillsDm, ConstUnit;
+  PhaseData, ProjectData, DealPaymentDm, BillsDm, ConstUnit, UtilMethods;
 
 {$R *.dfm}
 
@@ -470,4 +473,29 @@ begin
     Result := Rec.ValueByName('Name').AsString;
 end;
 
+procedure TPhasePayData.CopyPrePhasePayData(const APreFile: string;
+  APreFinalIndex: Integer);
+const
+  sCopySql = 'Insert Into %s (' +
+             '    ID, PreTotalPrice0, EndTotalPrice0, Formula0, StopCalc' +
+             '  ) Select ID, PreTotalPrice%d, EndTotalPrice%d, Formula%d, StopCalc' +
+             ' From %s' +
+             ' In ''%s''';
+var
+  sPre, sSql: string;
+begin
+  try
+    sSql := Format(sCopySql, [TableName, APreFinalIndex, APreFinalIndex,
+      APreFinalIndex, TableName, APreFile]);
+    ExecuteSql(TPhaseData(FPhaseData).ADOConnection, sSql);
+  finally
+    sddPhasePay.Reload;
+  end;
+end;
+
+function TPhasePayData.GetTableName: string;
+begin
+  Result := sdpPhasePay.TableName;
+end;
+
 end.

+ 3 - 13
DataModules/StageDm.pas

@@ -102,7 +102,7 @@ type
     function StageRecordWithAdd(ABillsID: Integer): TStageRecord;
 
     // 将Bills表中存的累计计量数据拷贝至截止本期计量、截止上期计量,除新增一期计量外不可调用
-    procedure CopyPrePhaseData;
+    procedure CopyPrePhaseData(const APreFile, APreTable: string);
 
     property Active: Boolean read GetActive;
     property TableName: string read GetTableName Write SetTableName;
@@ -622,7 +622,7 @@ begin
   Result := Rec.ValueByName(sFieldName).AsFloat;
 end;
 
-procedure TStageData.CopyPrePhaseData;  
+procedure TStageData.CopyPrePhaseData(const APreFile, APreTable: string);
 const
   sCopySql = 'Insert Into %s (' +
              '    BillsID, ' +
@@ -647,21 +647,11 @@ const
              ' In ''%s''';
 var
   sPre, sSql: string;
-  FPrePhaseData: TPhaseData;
-  sTempFile: string;
 begin
-  FPrePhaseData := TPhaseData.Create(TPhaseData(FPhaseData).ProjectData);
-  sTempFile := GetTempFileName;
   try
-    FPrePhaseData.SimpleOpen(Format('%s\Phase%d.dat', [
-      TProjectData(TPhaseData(FPhaseData).ProjectData).TempPath,
-      TPhaseData(FPhaseData).PhaseIndex - 1]));
-    FPrePhaseData.SaveDebugFile(sTempFile);
-    sSql := Format(sCopySql, [TableName, FPrePhaseData.StageTableName[FPrePhaseData.PhaseProperty.AuditCount], sTempFile]);
+    sSql := Format(sCopySql, [TableName, APreTable, APreFile]);
     ExecuteSql(TPhaseData(FPhaseData).ADOConnection, sSql);
   finally
-    DeleteFile(sTempFile);
-    FPrePhaseData.Free;
     sddStage.Reload;
   end;
 end;

+ 17 - 3
Units/PhaseData.pas

@@ -225,11 +225,25 @@ begin
 end;
 
 procedure TPhaseData.CopyPreData;
+var
+  FPrePhaseData: TPhaseData;
+  sTempFile: string;
 begin
   if (PhaseIndex <= 1) then Exit;
-  
-  StageData.CopyPrePhaseData;
-  PhasePayData.CopyPrePhasePayData;
+
+  FPrePhaseData := TPhaseData.Create(ProjectData);
+  sTempFile := GetTempFileName;
+  try
+    FPrePhaseData.SimpleOpen(Format('%s\Phase%d.dat', [
+      TProjectData(ProjectData).TempPath, PhaseIndex - 1]));
+    FPrePhaseData.SaveDebugFile(sTempFile);
+
+    StageData.CopyPrePhaseData(sTempFile, FPrePhaseData.StageTableName[FPrePhaseData.PhaseProperty.AuditCount]);
+    PhasePayData.CopyPrePhasePayData(sTempFile, FPrePhaseData.PhaseProperty.AuditCount);
+  finally  
+    DeleteFile(sTempFile);
+    FPrePhaseData.Free;
+  end;
 end;
 
 function TPhaseData.GetADOConnection: TADOConnection;