|
@@ -75,6 +75,8 @@ type
|
|
|
procedure LockBillsBaseData;
|
|
|
procedure LockDealPaymentData;
|
|
|
procedure LockBGLData;
|
|
|
+ procedure LockProjectGLData;
|
|
|
+ procedure LockDetailGLData;
|
|
|
|
|
|
procedure UpdatePhaseData;
|
|
|
|
|
@@ -91,6 +93,8 @@ type
|
|
|
procedure SetCheckers(const Value: TCheckers);
|
|
|
function GetStageDataReadOnly: Boolean;
|
|
|
function GetPriceMarginReadOnly: Boolean;
|
|
|
+ function GetStageIndex: Integer;
|
|
|
+ procedure SetStageIndex(const Value: Integer);
|
|
|
public
|
|
|
constructor Create;
|
|
|
destructor Destroy; override;
|
|
@@ -106,7 +110,7 @@ type
|
|
|
{OpenForSubmit: ProjProperties, StaffData}
|
|
|
procedure OpenForSubmit(const AFileName: string);
|
|
|
procedure SaveAsForSubmit(const AFileName: string);
|
|
|
- {OpenForReply: ProjProperties, StaffData, PhaseData}
|
|
|
+ {OpenForReply: ProjProperties, StaffData, PhaseData, DetailGLData}
|
|
|
procedure OpenForReply(const AFileName: string);
|
|
|
procedure SaveForReply(const AFileName: string);
|
|
|
{OpenForReceive: ProjProperties, StaffData, PhaseData, StageData}
|
|
@@ -125,6 +129,7 @@ type
|
|
|
|
|
|
procedure SaveLastestPhaseMainData;
|
|
|
|
|
|
+ procedure CopyPreData;
|
|
|
procedure CreateNewPhase;
|
|
|
|
|
|
{重设所有LookUpDataset连接}
|
|
@@ -173,6 +178,7 @@ type
|
|
|
property BillsBookmarkData: TBillsBookmarkData read FBillsBookmarkData;
|
|
|
property DealBillsData: TDealBillsData read FDealBillsData;
|
|
|
property PhaseIndex: Integer read FPhaseIndex write SetPhaseIndex;
|
|
|
+ property StageIndex: Integer read GetStageIndex write SetStageIndex;
|
|
|
property PhaseData: TPhaseData read FPhaseData;
|
|
|
property ProjProperties: TProjProperties read FProjProperties;
|
|
|
property PhaseCompareData: TPhaseCompareData read FPhaseCompareData;
|
|
@@ -216,7 +222,8 @@ type
|
|
|
implementation
|
|
|
|
|
|
uses UtilMethods, Globals, ProjectCommands, sdIDTree, StageDm,
|
|
|
- ZJJLDm, PHPWebDm, XMLDoc, XMLIntf, ConstUnit, PasswordInputFrm;
|
|
|
+ ZJJLDm, PHPWebDm, XMLDoc, XMLIntf, ConstUnit, PasswordInputFrm,
|
|
|
+ mDataRecord;
|
|
|
|
|
|
{ TProjectData }
|
|
|
|
|
@@ -273,7 +280,6 @@ procedure TProjectData.CreateNewPhase;
|
|
|
var
|
|
|
sPhaseFileName: string;
|
|
|
begin
|
|
|
- FProjectGLData.Save;
|
|
|
FBillsData.LockedBaseData;
|
|
|
FProjProperties.PhaseCount := FProjProperties.PhaseCount + 1;
|
|
|
FProjProperties.AuditStatus := 0;
|
|
@@ -343,6 +349,8 @@ procedure TProjectData.LockedDataForReply;
|
|
|
begin
|
|
|
LockBillsBaseData;
|
|
|
LockDealPaymentData;
|
|
|
+ LockProjectGLData;
|
|
|
+ LockDetailGLData;
|
|
|
FPhaseData.PhaseProperty.FinalAudit := True;
|
|
|
// 有顺序限制,谨慎修改
|
|
|
FProjProperties.AuditCompany := FStaffData.FinalStaffCompany;
|
|
@@ -397,8 +405,6 @@ begin
|
|
|
UpdateSysProgress(65, '正在读取数据');
|
|
|
|
|
|
FBillsBookmarkData.Open;
|
|
|
- FProjectGLData.Open(FConnection.Connection);
|
|
|
- FDetailGLData.Open(FConnection.Connection);
|
|
|
UpdateSysProgress(70, '正在读取数据');
|
|
|
|
|
|
FDealBillsData.Open(FConnection.Connection);
|
|
@@ -412,6 +418,9 @@ begin
|
|
|
OpenLastPhaseData;
|
|
|
UpdateSysProgress(140, '正在读取数据');
|
|
|
|
|
|
+ // 价差数据应在当期数据打开后打开
|
|
|
+ FProjectGLData.Open(FConnection.Connection);
|
|
|
+ FDetailGLData.Open(FConnection.Connection);
|
|
|
FBGLData.Open(FConnection.Connection);
|
|
|
UpdateSysProgress(160, '正在读取数据');
|
|
|
|
|
@@ -430,7 +439,6 @@ begin
|
|
|
FProjProperties.PhaseIndex := FPhaseIndex;
|
|
|
FPhaseData.Open(Format('%sPhase%d.dat', [TempPath, FPhaseIndex]));
|
|
|
ResetPhaseDataLink;
|
|
|
- FProjectGLData.LoadCurPhaseInfoPrice;
|
|
|
end;
|
|
|
|
|
|
procedure TProjectData.Save;
|
|
@@ -509,6 +517,7 @@ procedure TProjectData.SetPhaseIndex(const Value: Integer);
|
|
|
|
|
|
begin
|
|
|
SaveLastestPhaseMainData;
|
|
|
+ FProjectGLData.Save;
|
|
|
FPhaseIndex := Value;
|
|
|
ProjProperties.PhaseIndex := FPhaseIndex;
|
|
|
ReCreatePhaseData;
|
|
@@ -516,6 +525,7 @@ begin
|
|
|
ResetPhaseDataLink;
|
|
|
// 须保存项目工料数据,重新加载当期的项目工料数据
|
|
|
FProjectGLData.LoadCurPhaseInfoPrice;
|
|
|
+ FProjectGLData.LoadStagePM_CalcData;
|
|
|
//BillsGatherData.RefreshBills;
|
|
|
end;
|
|
|
|
|
@@ -1099,12 +1109,11 @@ end;
|
|
|
|
|
|
procedure TProjectData.CalculateAll;
|
|
|
begin
|
|
|
- FBillsCompileData.CalculateAll;
|
|
|
- FProjectGLData.CalculateAll;
|
|
|
- if not FPhaseData.StageDataReadOnly then
|
|
|
- FPhaseData.StageData.CalculateAll;
|
|
|
- FBillsMeasureData.CalculateAll;
|
|
|
- // To Do
|
|
|
+ FBillsCompileData.CalculateAll; //台账
|
|
|
+ FProjectGLData.CalculateAll; //工料价差
|
|
|
+ FPhaseData.StageData.CalculateAll; //计量&清单价差
|
|
|
+ FBillsMeasureData.CalculateAll; //累计
|
|
|
+ FPhaseData.PhasePayData.CalculateAll;
|
|
|
end;
|
|
|
|
|
|
procedure TProjectData.ImportCloudTenderFile(const AFileName: string);
|
|
@@ -1338,10 +1347,12 @@ begin
|
|
|
FPhaseData.SimpleOpen(Format('%sPhase%d.dat', [TempPath, FPhaseIndex]));
|
|
|
end;
|
|
|
FStaffData.Open(FConnection.Connection);
|
|
|
+ FDetailGLData.Open(FConnection.Connection);
|
|
|
end;
|
|
|
|
|
|
procedure TProjectData.SaveForReply(const AFileName: string);
|
|
|
begin
|
|
|
+ FDetailGLData.Save;
|
|
|
FStaffData.Save;
|
|
|
if FPhaseData.Active then
|
|
|
FPhaseData.SimpleSave;
|
|
@@ -1605,4 +1616,60 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+procedure TProjectData.LockProjectGLData;
|
|
|
+const
|
|
|
+ sLockSql = 'Update ProjectGL As P, GLPrice As G' +
|
|
|
+ ' Set P.LockedPhaseID = %d'+
|
|
|
+ ' Where (P.ID = G.GLID) and (G.PM_Quantity_F <> 0) and (IsNull(P.LockedPhaseID) or (P.LockedPhaseID = 0))';
|
|
|
+var
|
|
|
+ sSql: string;
|
|
|
+begin
|
|
|
+ sSql := Format(sLockSql, [FProjProperties.PhaseCount]);
|
|
|
+ ExecuteSql(sSql);
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TProjectData.LockDetailGLData;
|
|
|
+const
|
|
|
+ sLockSql = 'Update DetailGL As D Set D.LockedPhaseID = %d' +
|
|
|
+ ' Where (D.LastBillsQuantity <> 0) and (IsNull(D.LockedPhaseID) or (D.LockedPhaseID = 0))';
|
|
|
+var
|
|
|
+ sSql: string;
|
|
|
+begin
|
|
|
+ sSql := Format(sLockSql, [FProjProperties.PhaseCount]);
|
|
|
+ ExecuteSql(sSql);
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TProjectData.CopyPreData;
|
|
|
+
|
|
|
+ procedure CopyPreGLPrice;
|
|
|
+ const
|
|
|
+ sCopySql = 'Insert Into GLPrice (GLID, PhaseID,' +
|
|
|
+ ' InfoPrice, InfoDate, DeltaPrice, ValidDeltaPrice,' +
|
|
|
+ ' PM_PreQuantity, PM_PreTotalPrice'+
|
|
|
+ ' Select GLID, %d,'+
|
|
|
+ ' InfoPrice, InfoDate, DeltaPrice, ValidDeltaPrice,'+
|
|
|
+ ' PM_PreQuantity+PM_Quantity_F, PM_PreTotalPrice+PM_TotalPrice_F'+
|
|
|
+ ' From GLPrice Where PhaseID = %d';
|
|
|
+ begin
|
|
|
+ if FProjProperties.PhaseCount > 1 then
|
|
|
+ ExecuteSql(Format(sCopySql, [FProjProperties.PhaseCount, FProjProperties.PhaseCount - 1]));
|
|
|
+ end;
|
|
|
+
|
|
|
+begin
|
|
|
+ CopyPreGLPrice;
|
|
|
+ PhaseData.CopyPreData;
|
|
|
+end;
|
|
|
+
|
|
|
+function TProjectData.GetStageIndex: Integer;
|
|
|
+begin
|
|
|
+ Result := FPhaseData.StageIndex;
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TProjectData.SetStageIndex(const Value: Integer);
|
|
|
+begin
|
|
|
+ FProjectGLData.Save;
|
|
|
+ FPhaseData.StageIndex := Value;
|
|
|
+ FProjectGLData.LoadStagePM_CalcData;
|
|
|
+end;
|
|
|
+
|
|
|
end.
|