From a203bc199bbde0979b869790cd08d78c44a07043 Mon Sep 17 00:00:00 2001 From: Kathy Date: Thu, 20 May 2021 14:31:59 +0000 Subject: [PATCH] C2021-027: Procedure level PC/PC --- PROMS/Formats/fmtall/BNPPalrall.xml | Bin 175560 -> 175592 bytes .../DlgPrintProcedure.cs | 50 ++++++++++-------- .../dlgApproveProcedure.cs | 41 ++++++++------ PROMS/VEPROMS User Interface/frmVEPROMS.cs | 3 +- .../VEPROMS.CSLA.Library/Config/ProcConfig.cs | 5 +- .../VEPROMS.CSLA.Library/Extension/ItemExt.cs | 35 +++++++++++- .../Format/PlantFormat.cs | 8 +++ .../DisplayApplicability.cs | 18 +++++-- .../Volian.Controls.Library/DisplayTabItem.cs | 3 +- .../Volian.Controls.Library/StepTabRibbon.cs | 21 ++++++-- PROMS/Volian.Controls.Library/vlnTreeView.cs | 5 ++ 11 files changed, 138 insertions(+), 51 deletions(-) diff --git a/PROMS/Formats/fmtall/BNPPalrall.xml b/PROMS/Formats/fmtall/BNPPalrall.xml index 6211148b780575dea0190c38b2a91f9de07c3c3a..22656b11b086f7270b14306353fdec00f3c3ab57 100644 GIT binary patch delta 45 zcmX?co9o4Gt_^0qf(i@)3`Gq249N_R3 0) if (SelectedSlave > 0) { - MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = SelectedSlave; - SetupForProcedure(); - pbPDFsStatus.TextVisible = true; - pbPDFsStatus.Text = string.Format("Creating PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n); - pbPDFsStatus.Value = i; - // this.Text = string.Format("Create PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n); - MyProcedure = ProcedureInfo.GetItemAndChildrenByUnit(MyProcedure.ItemID, 0, MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave); - // C2018-015 add the procedure tree path and the procedure number and title to the meta file - if (BaselineMetaFile.IsOpen && i == 1) BaselineMetaFile.WriteLine("!! {0}", MyProcedure.SearchDVPath.Replace("\a", " | ")); - if (BaselineMetaFile.IsOpen) BaselineMetaFile.WriteLine("!! {0} | {1}", MyProcedure.DisplayNumber, MyProcedure.DisplayText); - string myPDFPath = GetMultiunitPDFPath(); - _MergedPdfPath = myPDFPath; // If Slave, need its subdirectory/unit path for merging - // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. - frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNumAndDate, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, - cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, myPDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50), - swtbtnBlankPgsForDuplex.Value, _AllProcedures || Automatic, Prefix, SaveLinks, RemoveTrailingHardReturnsAndManualPageBreaks, swtbtnPROMSVersion.Value, true, tbBlankPage.Text, _MergedPfd);//C2018-009 print PROMS version - frmStatus.CloseWhenDone = true; - Application.DoEvents(); - frmStatus.CancelStop = true; - frmStatus.ShowDialog(); - locpdfname = frmStatus.PdfFile; - if (frmStatus.CancelPrinting) break; - AddToMergeList(myProc, locpdfname); + bool includeProc = MyProcedure.ApplInclude(SelectedSlave); // C2021-027: Procedure level PC/PC + if (includeProc) + { + MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = SelectedSlave; + SetupForProcedure(); + pbPDFsStatus.TextVisible = true; + pbPDFsStatus.Text = string.Format("Creating PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n); + pbPDFsStatus.Value = i; + // this.Text = string.Format("Create PDF for {0} ({1} of {2})", myProc.DisplayNumber, ++i, n); + MyProcedure = ProcedureInfo.GetItemAndChildrenByUnit(MyProcedure.ItemID, 0, MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave); + // C2018-015 add the procedure tree path and the procedure number and title to the meta file + if (BaselineMetaFile.IsOpen && i == 1) BaselineMetaFile.WriteLine("!! {0}", MyProcedure.SearchDVPath.Replace("\a", " | ")); + if (BaselineMetaFile.IsOpen) BaselineMetaFile.WriteLine("!! {0} | {1}", MyProcedure.DisplayNumber, MyProcedure.DisplayText); + string myPDFPath = GetMultiunitPDFPath(); + _MergedPdfPath = myPDFPath; // If Slave, need its subdirectory/unit path for merging + // RHM 20120925 Overlay the bottom of the dialog so that cancel button is covered. + frmPDFStatusForm frmStatus = new frmPDFStatusForm(MyProcedure, RevNumAndDate, pw.ToString(), cbxDebug.Checked, cbxOrPgBrk.Checked, + cbxOpenAfterCreate2.Checked, cbxOverwritePDF2.Checked, myPDFPath, cbd, txbPDFName.Text, new Point(Left, Bottom - 50), + swtbtnBlankPgsForDuplex.Value, _AllProcedures || Automatic, Prefix, SaveLinks, RemoveTrailingHardReturnsAndManualPageBreaks, swtbtnPROMSVersion.Value, true, tbBlankPage.Text, _MergedPfd);//C2018-009 print PROMS version + frmStatus.CloseWhenDone = true; + Application.DoEvents(); + frmStatus.CancelStop = true; + frmStatus.ShowDialog(); + locpdfname = frmStatus.PdfFile; + if (frmStatus.CancelPrinting) break; + AddToMergeList(myProc, locpdfname); + } } // This is a master/slave for printing of all slaves (SelectedSave == 0) else if (SelectedSlave == 0) diff --git a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs index 86d86e12..c1f09fdb 100644 --- a/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs +++ b/PROMS/VEPROMS User Interface/dlgApproveProcedure.cs @@ -74,8 +74,12 @@ namespace VEPROMS SetupComboBoxes(); foreach (ProcedureInfo pi in myDocVersion.Procedures) { - pi.MyDocVersion.DocVersionConfig.SelectedSlave = ApplicabilityIndex; - _MyApproval.AddProcedure(pi); + bool includeProc = pi.ApplInclude(ApplicabilityIndex); // C2021-027: Procedure level PC/PC + if (includeProc) + { + pi.MyDocVersion.DocVersionConfig.SelectedSlave = ApplicabilityIndex; + _MyApproval.AddProcedure(pi); + } } SetupMyApproval(); // C2018-008 redesign of user interface @@ -188,22 +192,26 @@ namespace VEPROMS dpl.Clear(); foreach (ProcedureInfo pi in _MyDocVersion.Procedures) { - OwnerInfo oi = OwnerInfo.GetByItemID(pi.ItemID, CheckOutType.Procedure); - pi.MyDocVersion.DocVersionConfig.SelectedSlave = _MyDocVersion.DocVersionConfig.SelectedSlave; - if (clbMore.Items.Contains(pi.DisplayNumber)) + bool includeProc = pi.ApplInclude(ApplicabilityIndex); // C2021-027: Procedure level PC/PC + if (includeProc) { - if (!dpl.Contains(pi.DisplayNumber)) dpl.Add(pi.DisplayNumber); //C2020-036 add to duplicate proc number list - continue; + OwnerInfo oi = OwnerInfo.GetByItemID(pi.ItemID, CheckOutType.Procedure); + pi.MyDocVersion.DocVersionConfig.SelectedSlave = _MyDocVersion.DocVersionConfig.SelectedSlave; + if (clbMore.Items.Contains(pi.DisplayNumber)) + { + if (!dpl.Contains(pi.DisplayNumber)) dpl.Add(pi.DisplayNumber); //C2020-036 add to duplicate proc number list + continue; + } + // B2018-083: check for null MySessionInfo. + if (oi != null && MySessionInfo != null && oi.SessionID != MySessionInfo.SessionID) + { + string prcNumber = pi.DisplayNumber + string.Format(" Checked out to {0}", oi.SessionUserID); + clbMore.Items.Add(prcNumber); + } + else + clbMore.Items.Add(pi.DisplayNumber); + tmpProcedures.Add(pi.DisplayNumber, pi); } - // B2018-083: check for null MySessionInfo. - if (oi != null && MySessionInfo != null && oi.SessionID != MySessionInfo.SessionID) - { - string prcNumber = pi.DisplayNumber + string.Format(" Checked out to {0}", oi.SessionUserID); - clbMore.Items.Add(prcNumber); - } - else - clbMore.Items.Add(pi.DisplayNumber); - tmpProcedures.Add(pi.DisplayNumber, pi); } } if (dpl.Count > 0) return false; // C2018-025 cannot load list of procedure - duplicate proc numbers @@ -267,6 +275,7 @@ namespace VEPROMS // C2018-008 redesign of user interface expAddProcConChk.Expanded = true; _initializing = true; + ApplicabilityIndex = myDocVersion.DocVersionConfig.SelectedSlave; InitializePanelApprove(); InitializePanelSelect(); _initializing = false; diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 1b5b6d7e..110cb946 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -3569,7 +3569,8 @@ namespace VEPROMS displayTags.IsVisible = true; } infotabHistory.Visible = true; - if (args.MyItemInfo.MyDocVersion.MultiUnitCount > 1 && !args.MyItemInfo.IsProcedure) + // C2021-027: Procedure level PC/PC + if (args.MyItemInfo.MyDocVersion.MultiUnitCount > 1 && args.MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ProcAppl) //&& !args.MyItemInfo.IsProcedure) { infotabApplicability.Visible = true; displayApplicability.MyItemInfo = args.MyEditItem.MyItemInfo; diff --git a/PROMS/VEPROMS.CSLA.Library/Config/ProcConfig.cs b/PROMS/VEPROMS.CSLA.Library/Config/ProcConfig.cs index a2cd8534..a9f4d6af 100644 --- a/PROMS/VEPROMS.CSLA.Library/Config/ProcConfig.cs +++ b/PROMS/VEPROMS.CSLA.Library/Config/ProcConfig.cs @@ -987,7 +987,10 @@ namespace VEPROMS.CSLA.Library } set { - _Xp["MasterSlave", "Applicability"] = value.FlagList; + if (value != null) + _Xp["MasterSlave", "Applicability"] = value.FlagList; + else + _Xp["MasterSlave", "Applicability"] = null; OnPropertyChanged("MasterSlave_Applicability"); } } diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index 8b1fc4e0..913662be 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -2740,7 +2740,11 @@ namespace VEPROMS.CSLA.Library return true; ItemInfo parent = this.ActiveParent as ItemInfo; IItemConfig cfg = this.MyConfig as IItemConfig; - return (this.IsProcedure || parent.IsApplicable(apple)) && (cfg.MasterSlave_Applicability.GetFlags().Count == 0 || cfg.MasterSlave_Applicability.GetFlags().Contains(apple)); + if (IsProcedure) // C2021-027: Procedure level PC/PC. if procedure, don't go to parent. + { + return (cfg.MasterSlave_Applicability.GetFlags().Count == 0 || cfg.MasterSlave_Applicability.GetFlags().Contains(apple)); + } + return (parent.IsApplicable(apple)) && (cfg.MasterSlave_Applicability.GetFlags().Count == 0 || cfg.MasterSlave_Applicability.GetFlags().Contains(apple)); } //end jcb added inherited applicability public string FormattedDisplayText @@ -5282,6 +5286,7 @@ namespace VEPROMS.CSLA.Library { if (_SectionCheckOffHeader == null) { + if (ActiveSection == null) return _SectionCheckOffHeader; // first check if format has checkoff data, including checkoffheaders. ProcData pd = ActiveFormat.PlantFormat.FormatData.ProcData; if (pd.CheckOffData == null || pd.CheckOffData.CheckOffHeaderList == null || pd.CheckOffData.CheckOffHeaderList.MaxIndex <= 1) _SectionCheckOffHeader = string.Empty; @@ -6906,6 +6911,34 @@ namespace VEPROMS.CSLA.Library [Serializable()] public partial class ProcedureInfo : ItemInfo, IVEDrillDownReadOnly { + // C2021-027: Procedure level PC/PC. these 2 methods determine whether a procedure is included, either by an integer index + // or by a string name of the unit + public bool ApplInclude(int ApplicabilityIndex) + { + if (ActiveFormat.PlantFormat.FormatData.ProcData.ProcAppl) + { + ProcedureConfig cfg = MyConfig as ProcedureConfig; + return (cfg.MasterSlave_Applicability.GetFlags().Count == 0 || cfg.MasterSlave_Applicability.GetFlags().Contains(ApplicabilityIndex)); + } + return true; + } + public bool ApplIncludeFromStr(string s) + { + // s is the unitname, find this name in list of applicabilities & then see if this one is used + if (ActiveFormat.PlantFormat.FormatData.ProcData.ProcAppl) + { + // get index + int i = 1; + foreach (string str in MyDocVersion.UnitNames) + { + if (str == s) break; + i++; + } + ProcedureConfig cfg = MyConfig as ProcedureConfig; + return (cfg.MasterSlave_Applicability.GetFlags().Count == 0 || cfg.MasterSlave_Applicability.GetFlags().Contains(i)); + } + return true; + } private bool? _ProcHasSupInfoData = null; public bool ProcHasSupInfoData { diff --git a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs index d4676111..81629204 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs @@ -1395,6 +1395,14 @@ namespace VEPROMS.CSLA.Library return LazyLoad(ref _NotesToFootnotes, "@NotesToFootnotes"); } } + private LazyLoad _ProcAppl; + public bool ProcAppl // C2021-027: Procedure level PC/PC + { + get + { + return LazyLoad(ref _ProcAppl, "@ProcAppl"); + } + } private LazyLoad _CountFoldoutPages; public bool CountFoldoutPages { diff --git a/PROMS/Volian.Controls.Library/DisplayApplicability.cs b/PROMS/Volian.Controls.Library/DisplayApplicability.cs index 01d34897..67f01532 100644 --- a/PROMS/Volian.Controls.Library/DisplayApplicability.cs +++ b/PROMS/Volian.Controls.Library/DisplayApplicability.cs @@ -214,7 +214,13 @@ namespace Volian.Controls.Library List invalidTrans = WillTransitionsBeValidCommand.Execute(MyItemInfo.ItemID, MyApplicability); if (invalidTrans.Count == 0) { - if (MyItemInfo.IsSection) + // C2021 - 027: Procedure level PC/PC + if (MyItemInfo.IsProcedure && MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ProcAppl) + { + ProcedureConfig sc = MyItemInfo.MyConfig as ProcedureConfig; + sc.MasterSlave_Applicability = Volian.Base.Library.BigNum.MakeBigNum(MyApplicability); + } + else if (MyItemInfo.IsSection) { SectionConfig sc = MyItemInfo.MyConfig as SectionConfig; sc.MasterSlave_Applicability = Volian.Base.Library.BigNum.MakeBigNum(MyApplicability); @@ -237,6 +243,9 @@ namespace Volian.Controls.Library FlexibleMessageBox.Show(sb.ToString(), "Transitions Affected By Applicability Change"); MyItemInfo = MyItemInfo; } + // C2021 - 027: Procedure level PC/PC - checkbox for applicability changed, fix ribbon's menus + if (MyItemInfo.IsProcedure) _MyDisplayTabItem.MyStepTabPanel.MyStepTabRibbon.SetParentChildCreatePDFButton(MyItemInfo.MyDocVersion.UnitNames, MyItemInfo); + //using (Content cnt = Content.Get(MyItemInfo.MyContent.ContentID)) //{ // cnt.DTS = DateTime.Now; @@ -375,9 +384,12 @@ namespace Volian.Controls.Library EnableCheckboxes(); OnApplicabilityViewModeChanged(); EditItem ei = MyDisplayTabItem.MyStepTabPanel.SelectedEditItem; - while (ei.Enabled == false) + while (ei!=null && ei.Enabled == false) ei = ei.MyParentEditItem ?? ei.MyPreviousEditItem; - ei.MyStepRTB.Focus(); + // C2021 - 027: Procedure level PC/PC - handle procedure level too for viewing in editor + if (MyDisplayTabItem.MyStepTabPanel.SelectedItemInfo != null && MyDisplayTabItem.MyStepTabPanel.SelectedItemInfo.IsProcedure) + ei = MyDisplayTabItem.MyStepTabPanel.SelectedEditItem; + if (ei != null) ei.MyStepRTB.Focus(); } } diff --git a/PROMS/Volian.Controls.Library/DisplayTabItem.cs b/PROMS/Volian.Controls.Library/DisplayTabItem.cs index f82986cc..1b52b32c 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabItem.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabItem.cs @@ -263,8 +263,9 @@ namespace Volian.Controls.Library if (dvi == null) return; if (dvi.VersionType > 127) MyStepTabPanel.MyStepPanel.VwMode = E_ViewMode.View; + // C2021 - 027: Procedure level PC/PC - add _MyIteminfo to argument list if (dvi.MultiUnitCount > 1) - this.MyStepTabPanel.MyStepTabRibbon.SetParentChildCreatePDFButton(dvi.UnitNames); //C2020-013 add parent/child sub menu items for printing specific children (units) + this.MyStepTabPanel.MyStepTabRibbon.SetParentChildCreatePDFButton(dvi.UnitNames, _MyItemInfo); //C2020-013 add parent/child sub menu items for printing specific children (units) } void _MyItemInfo_Changed(object sender) { diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.cs index 9d36a1c0..e3ba9d34 100644 --- a/PROMS/Volian.Controls.Library/StepTabRibbon.cs +++ b/PROMS/Volian.Controls.Library/StepTabRibbon.cs @@ -716,6 +716,9 @@ namespace Volian.Controls.Library // if in Calvert Alarms Condition/Response, disable insert of Cautions and Notes //if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvertAlarm) //btnInsCaut.Enabled = btnInsNote.Enabled = btnCMInsCaution.Enabled = btnCMInsNote.Enabled = allow && !MyItemInfo.IsInCalvertConditionResponse; + // C2021 - 027: Procedure level PC/PC - if text changed, i.e. applicability may have changed, redo the print menus + if (MyItemInfo != null && MyItemInfo.MyDocVersion.MultiUnitCount > 1) + SetParentChildCreatePDFButton(MyItemInfo.MyDocVersion.UnitNames, MyItemInfo); } void MyFlexGrid_SelChange(object sender, EventArgs e) @@ -1916,7 +1919,7 @@ namespace Volian.Controls.Library } MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave = 0; // unselect the unit (child) } - public void SetParentChildCreatePDFButton(string[] unitNames) + public void SetParentChildCreatePDFButton(string[] unitNames, ItemInfo ii) { btnPdfCreate.SubItems.Clear(); btnPdfCreate.Tag = null; @@ -1930,15 +1933,23 @@ namespace Volian.Controls.Library int k = 0; foreach (string s in unitNames) { + // C2021-027: Procedure level PC/PC - see if menu items for unit should be enabled + bool procAppl = ii.MyProcedure.ApplIncludeFromStr(s); k++; - btnPdfCreate.SubItems.Add(MakeSubMenuButton(s,k,miMultiUnit_Click)); - btnReviewCreatePDF.SubItems.Add(MakeSubMenuButton(s, k, miMultiUnit_Click)); - btnCASCreate.SubItems.Add(MakeSubMenuButton(s, k, miMultiUnit_Click)); + ButtonItem btn = MakeSubMenuButton(s, k, miMultiUnit_Click); + btn.Enabled = procAppl; + btnPdfCreate.SubItems.Add(btn); + btn = MakeSubMenuButton(s, k, miMultiUnit_Click); + btn.Enabled = procAppl; + btnReviewCreatePDF.SubItems.Add(btn); + btn = MakeSubMenuButton(s, k, miMultiUnit_Click); + btn.Enabled = procAppl; + btnCASCreate.SubItems.Add(btn); } btnPdfCreate.AutoExpandOnClick = true; btnReviewCreatePDF.AutoExpandOnClick = true; btnCASCreate.AutoExpandOnClick = true; - } + } private DevComponents.DotNetBar.ButtonItem MakeSubMenuButton(string s, object tag, EventHandler ehandler) { DevComponents.DotNetBar.ButtonItem bi = new DevComponents.DotNetBar.ButtonItem(); diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index f790684d..f7c27750 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -829,12 +829,17 @@ namespace Volian.Controls.Library int k = 0; foreach (string s in pri.MyDocVersion.UnitNames) { + // C2021-027: Procedure level PC/PC - see if menu items for unit should be enabled + bool procAppl = pri.ApplIncludeFromStr(s); k++; MenuItem mp = mip.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + mp.Enabled = procAppl; mp.Tag = k; MenuItem ma = mia.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + ma.Enabled = procAppl; ma.Tag = k; MenuItem mc = micas.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + mc.Enabled = procAppl; mc.Tag = k; } cm.MenuItems.Add(micas);