diff --git a/PROMS/VEPROMS User Interface/dlgExportImport.cs b/PROMS/VEPROMS User Interface/dlgExportImport.cs index 676c0f5d..5e3c2215 100644 --- a/PROMS/VEPROMS User Interface/dlgExportImport.cs +++ b/PROMS/VEPROMS User Interface/dlgExportImport.cs @@ -436,7 +436,13 @@ namespace VEPROMS DialogResult dr = MessageBox.Show(this, msg, "Overwrite Existing Procedure", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); if (dr == DialogResult.Yes) { - ImportProcedureOverwrite(xd, pi); + bool success = ImportProcedureOverwrite(xd, pi); // C2018-020: check for successful Import + if (!success) + { + canceledPressed = true; + resolvedProcNum = false; + break; + } isImported = true; break; } @@ -549,7 +555,7 @@ namespace VEPROMS FixFloatingFoldouts(); File.Delete(fn); } - private void ImportProcedureOverwrite(XmlDocument xd, ProcedureInfo pi) + private bool ImportProcedureOverwrite(XmlDocument xd, ProcedureInfo pi) { floatFoldout = new Dictionary(); oldFormat = new Dictionary(); @@ -581,16 +587,30 @@ namespace VEPROMS } catch(Exception ex) { - ExternalTransitionItem = pi.HandleSqlExceptionOnDelete(ex); + // C2018-020: cannot overwrite the procedure because transitions point to this. Show dialog listing transitions and then + // return false to flag that import was not successful. + if (ex.Message.Contains("has External Transitions")) + { + using (TransitionInfoList exTrans = TransitionInfoList.GetExternalTransitionsToChildren(pi.ItemID)) + { + DialogResult ans = MessageBox.Show("Transitions exist to this procedure and cannot be adjusted automatically." + + "\r\nSteps with Problem Transitions:" + + exTrans.Summarize(), + "Cannot Overwrite procedure", MessageBoxButtons.OK, MessageBoxIcon.Question); + } + } + else + MessageBox.Show(ex.Message, "SQL Exception", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); File.Delete(fn); TurnChangeManagerOff.Execute(); // Assure that the Change Manager is off - return; + return false; } //add imported procedure _MyNewProcedure = AddProcedure(xd.DocumentElement, MyDocVersion, lastProcedure); //update transitions AddTransitions(PendingTransitions); FixFloatingFoldouts(); + return true; } private void LoadImportDataDocument() {