소스 검색

其他台账,删除问题

MaiXinRong 5 년 전
부모
커밋
eee61b2771
4개의 변경된 파일25개의 추가작업 그리고 7개의 파일을 삭제
  1. 2 0
      DataModules/OtherMeasureOnceDm.dfm
  2. 10 0
      DataModules/OtherMeasureOnceDm.pas
  3. 1 0
      DataModules/OtherMeasurePhaseDm.dfm
  4. 12 7
      DataModules/OtherMeasurePhaseDm.pas

+ 2 - 0
DataModules/OtherMeasureOnceDm.dfm

@@ -11,8 +11,10 @@ object OtherMeasureOnceData: TOtherMeasureOnceData
   end
   object sddOnce: TsdDataSet
     Active = False
+    Filtered = False
     Provider = sdpOnce
     AfterAddRecord = sddOnceAfterAddRecord
+    BeforeDeleteRecord = sddOnceBeforeDeleteRecord
     Left = 48
     Top = 88
     FieldListData = {

+ 10 - 0
DataModules/OtherMeasureOnceDm.pas

@@ -16,6 +16,8 @@ type
       AValue: TsdValue; AColumn: TsdViewColumn; var Allow: Boolean);
     procedure sdvOnceGetText(var Text: String; ARecord: TsdDataRecord;
       AValue: TsdValue; AColumn: TsdViewColumn; DisplayText: Boolean);
+    procedure sddOnceBeforeDeleteRecord(ARecord: TsdDataRecord;
+      var Allow: Boolean);
   private
     FProjectData: TObject;
 
@@ -163,4 +165,12 @@ begin
   Result := TProjectData(FProjectData).ProjProperties.DecimalManager.Common;
 end;
 
+procedure TOtherMeasureOnceData.sddOnceBeforeDeleteRecord(
+  ARecord: TsdDataRecord; var Allow: Boolean);
+begin
+  if (ARecord.ValueByName('TotalPrice').AsFloat <> 0) and
+     (ARecord.ValueByName('CreatePhaseID').AsInteger < TProjectData(FProjectData).ProjProperties.PhaseCount) then
+    DataSetErrorMessage(Allow, '往期已计量,不允许删除');
+end;
+
 end.

+ 1 - 0
DataModules/OtherMeasurePhaseDm.dfm

@@ -11,6 +11,7 @@ object OtherMeasurePhaseData: TOtherMeasurePhaseData
   end
   object sddPhase: TsdDataSet
     Active = False
+    Filtered = False
     Provider = sdpPhase
     AfterValueChanged = sddPhaseAfterValueChanged
     OnGetRecordClass = sddPhaseGetRecordClass

+ 12 - 7
DataModules/OtherMeasurePhaseDm.pas

@@ -287,14 +287,19 @@ procedure TOtherMeasurePhaseData.sdvPhaseBeforeDeleteRecord(
   end;
 
 begin
-  Allow := CanDelete(ARecord);
-  if not Allow then
+  if (ARecord.ValueByName('PreTotalPrice').AsFloat = 0) then
   begin
-    ARecord.ValueByName('Deleted').AsBoolean := True;
-    ARecord.ValueByName('DeletePhaseID').AsInteger := TProjectData(FProjectData).PhaseIndex;
-    ARecord.ValueByName('DeleteStageID').AsInteger := TProjectData(FProjectData).StageIndex;
-    sdvPhase.RefreshFilter;
-  end;
+    Allow := CanDelete(ARecord);
+    if not Allow then
+    begin
+      ARecord.ValueByName('Deleted').AsBoolean := True;
+      ARecord.ValueByName('DeletePhaseID').AsInteger := TProjectData(FProjectData).PhaseIndex;
+      ARecord.ValueByName('DeleteStageID').AsInteger := TProjectData(FProjectData).StageIndex;
+      sdvPhase.RefreshFilter;
+    end;
+  end
+  else
+    DataSetErrorMessage(Allow, '往期已计量,不允许删除');
 end;
 
 procedure TOtherMeasurePhaseData.sdvPhaseFilterRecord(