diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs index 04e71963..66e49ec0 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/DisplayText.cs @@ -1012,13 +1012,18 @@ namespace VEPROMS.CSLA.Library (tran.MyContent.ContentItems[0].ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[tran.TranType].TransMenu.Contains("Proc") || tran.MyContent.ContentItems[0].ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[tran.TranType].TransMenu.Contains("other proc"))) { - string destProcNumber = tran.MyItemToID.MyProcedure.DisplayNumber; - foreach (ProcedureInfo prci in tran.MyContent.ContentItems[0].MyDocVersion.Procedures) + // B2022-148: cannot insert outside transition in a background document that references a related EOP – transition is converted to text + bool dvsLinked = DocVersionInfo.Linked(tran.MyItemToID.MyDocVersion, tran.MyContent.ContentItems[0].MyDocVersion); + if (!dvsLinked) { - if (prci.DisplayNumber == destProcNumber) + string destProcNumber = tran.MyItemToID.MyProcedure.DisplayNumber; + foreach (ProcedureInfo prci in tran.MyContent.ContentItems[0].MyDocVersion.Procedures) { - forceConvertToText = true; - break; + if (prci.DisplayNumber == destProcNumber) + { + forceConvertToText = true; + break; + } } } diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs index 9359df15..a937bde9 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/DocVersionExt.cs @@ -317,7 +317,41 @@ namespace VEPROMS.CSLA.Library AssociationConfig ac = new AssociationConfig(associationInfo); return ac.ROUpdate_LoadingFigures; } - + #region Enhanced + // B2022-148: cannot insert outside transition in a background document that references a related EOP – transition is converted to text + // Check if the 2 doc versions are linked, i.e. one is source and the other is enhanced linked to the source + public static bool Linked(DocVersionInfo dv1, DocVersionInfo dv2) + { + DocVersionConfig dvc1 = dv1.DocVersionConfig; + DocVersionConfig dvc2 = dv2.DocVersionConfig; + bool isLinked1 = dvc1 != null && (dvc1.MyEnhancedDocuments != null && dvc1.MyEnhancedDocuments.Count > 0); + bool isLinked2 = dvc2 != null && (dvc2.MyEnhancedDocuments != null && dvc2.MyEnhancedDocuments.Count > 0); + bool relatedEnh = false; + if (isLinked1 && isLinked2) + { + // does source point to this docversion as enhanced, and does this enhanced point to this source: + bool isSource1 = dvc1.MyEnhancedDocuments.Count == 1 && dvc1.MyEnhancedDocuments[0].Type == 0 && dvc1.MyEnhancedDocuments[0].VersionID == dv2.VersionID; + bool isSource2 = dvc2.MyEnhancedDocuments.Count == 1 && dvc2.MyEnhancedDocuments[0].Type == 0 && dvc2.MyEnhancedDocuments[0].VersionID == dv1.VersionID; + if (isSource1 || isSource2) + { + int sourceVersionID = isSource1 ? dv1.VersionID : dv2.VersionID; + DVEnhancedDocuments enhList = isSource1 ? dvc2.MyEnhancedDocuments : dvc1.MyEnhancedDocuments; + if (enhList != null) + { + foreach (DVEnhancedDocument ded in enhList) + { + if (ded.Type != 0 && ded.VersionID == sourceVersionID) // found it. + { + relatedEnh = true; + break; + } + } + } + } + } + return relatedEnh; + } + #endregion #region SearchPaths public string _SearchDVPath; public string SearchDVPath diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs index 8a84e18c..d29c4062 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs @@ -911,13 +911,18 @@ namespace VEPROMS.CSLA.Library (tran.MyContent.ContentItems[0].ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[tran.TranType].TransMenu.Contains("Proc") || tran.MyContent.ContentItems[0].ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[tran.TranType].TransMenu.Contains("other proc"))) { - string destProcNumber = tran.MyItemToID.MyProcedure.DisplayNumber; - foreach (ProcedureInfo prci in tran.MyContent.ContentItems[0].MyDocVersion.Procedures) + // B2022-148: cannot insert outside transition in a background document that references a related EOP – transition is converted to text + bool dvsLinked = DocVersionInfo.Linked(tran.MyItemToID.MyDocVersion, tran.MyContent.ContentItems[0].MyDocVersion); + if (!dvsLinked) { - if (prci.DisplayNumber == destProcNumber) + string destProcNumber = tran.MyItemToID.MyProcedure.DisplayNumber; + foreach (ProcedureInfo prci in tran.MyContent.ContentItems[0].MyDocVersion.Procedures) { - forceConvertToText = true; - break; + if (prci.DisplayNumber == destProcNumber) + { + forceConvertToText = true; + break; + } } }