Browse Source

project properties -- deal pay: modify enable without submit

MaiXinRong 8 years ago
parent
commit
982cee995e

+ 1 - 1
DataModules/OtherMeasureOnceDm.pas

@@ -29,7 +29,7 @@ type
     procedure Open(AConnection: TADOConnection);
     procedure Close;
     procedure Save;
-    
+
     property Decimal: TCalcDecimal read GetDecimal;
   end;
 

+ 22 - 1
DataModules/OtherMeasurePhaseDm.pas

@@ -46,6 +46,9 @@ type
 
     procedure LoadCurStageData;
 
+    procedure CalculateAll;
+    procedure CalculateRecord(ARec: TOMPhaseRecord);
+
     property Decimal: TCalcDecimal read GetDecimal;
     property FilterDeletedRec: Boolean read FFilterDeletedRec write SetFilterDeletedRec;
   end;
@@ -298,7 +301,7 @@ procedure TOtherMeasurePhaseData.sdvPhaseFilterRecord(
   ARecord: TsdDataRecord; var Allow: Boolean);
 begin
   if Assigned(ARecord) then
-    Allow := not ARecord.ValueByName('Deleted').AsBoolean; 
+    Allow := not ARecord.ValueByName('Deleted').AsBoolean;
 end;
 
 procedure TOtherMeasurePhaseData.SetFilterDeletedRec(const Value: Boolean);
@@ -328,4 +331,22 @@ begin
   Result := TProjectData(FProjectData).ProjProperties.DecimalManager.Common;
 end;
 
+procedure TOtherMeasurePhaseData.CalculateAll;
+var
+  i: Integer;
+  Rec: TOMPhaseRecord;
+begin
+  for i := 0 to sddPhase.RecordCount - 1 do
+  begin
+    Rec := TOMPhaseRecord(sddPhase.Records[i]);
+    CalculateRecord(Rec);
+  end;
+end;
+
+procedure TOtherMeasurePhaseData.CalculateRecord(ARec: TOMPhaseRecord);
+begin
+  ARec.SetFloatValue(ARec.EndTotalPrice, Decimal.TotalPrice.RoundTo(ARec.CurTotalPrice.AsFloat + ARec.PreTotalPrice.AsFloat));
+  ARec.SetFloatValue(ARec.AddTotalPrice, ARec.EndTotalPrice.AsFloat);
+end;
+
 end.

+ 6 - 4
Forms/ProjectPropertiesFrm.pas

@@ -273,25 +273,27 @@ end;
 procedure TProjectPropertiesForm.InitDealPay;
 begin
   leContractPrice.Text := FloatToStr(FProjProperties.ContractPrice);
-  leContractPrice.ReadOnly := FProjProperties.PhaseCount > 0;
+  leContractPrice.ReadOnly := (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0));
   SetWindowLong(leContractPrice.Handle, GWL_STYLE, GetWindowLong(leContractPrice.Handle, GWL_STYLE) or ES_RIGHT);
 
   leStartedSubsist.Text := FloatToStr(FProjProperties.StartedSubsisit);
-  leStartedSubsist.ReadOnly := FProjProperties.PhaseCount > 0;
+  leStartedSubsist.ReadOnly := (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0));
   SetWindowLong(leStartedSubsist.Handle, GWL_STYLE, GetWindowLong(leStartedSubsist.Handle, GWL_STYLE) or ES_RIGHT);
 
   leMaterialSubsist.Text := FloatToStr(FProjProperties.MaterialSubsist);
-  leMaterialSubsist.ReadOnly := FProjProperties.PhaseCount > 0;
+  leMaterialSubsist.ReadOnly := (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0));
   SetWindowLong(leMaterialSubsist.Handle, GWL_STYLE, GetWindowLong(leMaterialSubsist.Handle, GWL_STYLE) or ES_RIGHT);
 end;
 
 procedure TProjectPropertiesForm.SaveDealPay;
 begin
-  if FProjProperties.PhaseCount > 0 then Exit;
+  if (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0)) then Exit;
   FProjProperties.ContractPrice := StrToFloatDef(leContractPrice.Text, 0);
   FProjProperties.StartedSubsisit := StrToFloatDef(leStartedSubsist.Text, 0);
   FProjProperties.MaterialSubsist := StrToFloatDef(leMaterialSubsist.Text, 0);
   FProjectData.DealPaymentData.CalcStarted_RangePrice;
+  if FProjectData.PhaseData.Active then
+    FProjectData.PhaseData.PhasePayData.CalculateAll;                              
 end;
 
 procedure TProjectPropertiesForm.leContractPriceClick(Sender: TObject);

+ 3 - 1
Units/ProjectData.pas

@@ -1232,11 +1232,13 @@ begin
   FProjectGLData.CalculateAll; //묏죕송뀌
   FPhaseData.StageData.CalculateAll; //셕좆&헌데송뀌
   FBillsMeasureData.CalculateAll; //작셕
-  FPhaseData.PhasePayData.CalculateAll;
+  FPhaseData.PhasePayData.CalculateAll; // 북谿連마
+  FOtherMeasurePhaseData.CalculateAll;
 end;
 
 procedure TProjectData.ImportCloudTenderFile(const AFileName: string);
 
+
   function GetTempFile(const TempDir: string): string;
   var
     FXmlDocument: IXMLDocument;