Browse Source

Epure Online, FillZero Bug

MaiXinRong 8 years ago
parent
commit
a1d693868f
3 changed files with 25 additions and 3 deletions
  1. 2 1
      Forms/SignOnlineReportsFrm.pas
  2. 1 1
      Frames/ProjectManagerFme.dfm
  3. 22 1
      Frames/ProjectManagerFme.pas

+ 2 - 1
Forms/SignOnlineReportsFrm.pas

@@ -1153,7 +1153,8 @@ end;
 procedure TSignOnlineReportsForm.cbFillZeroClick(Sender: TObject);
 begin
   PreviewComXML.FillZero := cbFillZero.Checked;
-  PreviewPage(TImage(FPreviewList.Items[0]), FCurPage);
+  if Assigned(FPreviewList) and (FPreviewList.Count > 0) then
+    PreviewPage(TImage(FPreviewList.Items[0]), FCurPage);
 end;
 
 procedure TSignOnlineReportsForm.InitForEpure;

+ 1 - 1
Frames/ProjectManagerFme.dfm

@@ -498,7 +498,7 @@ object ProjectManagerFrame: TProjectManagerFrame
     object actnEpure: TAction
       Caption = #25554#20837#35745#37327#33609#22270
       OnExecute = actnEpureExecute
-      OnUpdate = actnSignOnlineUpdate
+      OnUpdate = actnEpureUpdate
     end
   end
   object dxpmProjectManager: TdxBarPopupMenu

+ 22 - 1
Frames/ProjectManagerFme.pas

@@ -99,6 +99,7 @@ type
     procedure actnGuestExecute(Sender: TObject);
     procedure actnGuestUpdate(Sender: TObject);
     procedure actnEpureExecute(Sender: TObject);
+    procedure actnEpureUpdate(Sender: TObject);
   private
     FProjectManagerData: TProjectManagerData;
 
@@ -1906,7 +1907,7 @@ procedure TProjectManagerFrame.actnSignOnlineUpdate(Sender: TObject);
   end;
 
 begin
-  TAction(Sender).Visible := G_IsCloud and (not IsGuest) and (stdProjects.IDTree.Selected.Rec.ValueByName('WebAuthorID').AsInteger = PHPWeb.UserID);
+  TAction(Sender).Visible := G_IsCloud and (not IsGuest);
   TAction(Sender).Enabled := (FSignOnlineSwitch = 1) and
        Assigned(stdProjects.IDTree.Selected) and
       (stdProjects.IDTree.Selected.Rec.ValueByName('Type').AsInteger = 1) and
@@ -2003,4 +2004,24 @@ begin
   end;
 end;
 
+procedure TProjectManagerFrame.actnEpureUpdate(Sender: TObject);
+
+  function HasCompletePhase(ARec: TsdDataRecord): Boolean;
+  begin
+    if (ARec.ValueByName('PhaseCount').AsInteger > 1) then
+      Result := True
+    else if (ARec.ValueByName('PhaseCount').AsInteger < 1) then
+      Result := False
+    else
+      Result := ARec.ValueByName('AuditStatus').AsInteger = -1;
+  end;
+
+begin
+  TAction(Sender).Visible := G_IsCloud and (not IsGuest) and (stdProjects.IDTree.Selected.Rec.ValueByName('WebAuthorID').AsInteger = PHPWeb.UserID);
+  TAction(Sender).Enabled := (FSignOnlineSwitch = 1) and
+       Assigned(stdProjects.IDTree.Selected) and
+      (stdProjects.IDTree.Selected.Rec.ValueByName('Type').AsInteger = 1) and
+      HasCompletePhase(stdProjects.IDTree.Selected.Rec);
+end;
+
 end.