|  | @@ -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.
 |