diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs index f1c8cc92..16ac84ba 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs @@ -367,8 +367,9 @@ namespace VEPROMS.CSLA.Library int tpIndx = GetSmartTemplateIndex(topType, (int)MyContent.Type); if (tpIndx != -1) { - ItemInfo siblingSmart = null; - ItemInfo firstSmart = null; + ItemInfo siblingSmart = null; // keep track of sibling + ItemInfo firstSmart = null; // hls or top template step + ItemInfo parentSmart = null; // keep track of parent as creating children int level = ActiveFormat.PlantFormat.FormatData.Templates[tpIndx].level; string tmptext = ActiveFormat.PlantFormat.FormatData.NewTemplateFormat ? text : ActiveFormat.PlantFormat.FormatData.Templates[tpIndx].text; int prevlevel = level; @@ -377,32 +378,35 @@ namespace VEPROMS.CSLA.Library if (firstSmart == null) { firstSmart = NewItemInfoFetch(ItemID, adPart, number, tmptext, type, null, null, null, DateTime.Now, Volian.Base.Library.VlnSettings.UserID); - siblingSmart = firstSmart; + siblingSmart = parentSmart = firstSmart; newItemID = firstSmart.ItemID; } else { E_FromType fromType = E_FromType.Step; - EAddpingPart addPart = EAddpingPart.Child; // level > previous, add a child. - if (level == prevlevel) addPart = EAddpingPart.After; - if (level < prevlevel) + EAddpingPart addPart = EAddpingPart.Child; // level > previous, add a child. + if (level == prevlevel) addPart = EAddpingPart.After; // level = previous, add a sibling + if (level < prevlevel) // level < previous, go up to previous level's id { if (ActiveFormat.PlantFormat.FormatData.Templates[tpIndx].type == 39) { fromType = E_FromType.RNO; addPart = EAddpingPart.Child; + newItemID = firstSmart.ItemID; } else { addPart = EAddpingPart.After; + newItemID = parentSmart.ItemID; } - newItemID = siblingSmart.ItemID; } - tmptext = /*ActiveFormat.PlantFormat.FormatData.NewTemplateFormat ? " ": */ActiveFormat.PlantFormat.FormatData.Templates[tpIndx].text; + tmptext = ActiveFormat.PlantFormat.FormatData.Templates[tpIndx].text; tmp = NewItemInfoFetch(newItemID, addPart, null, tmptext, ActiveFormat.PlantFormat.FormatData.Templates[tpIndx].type + 20001, (int?)fromType, null, null, DateTime.Now, Volian.Base.Library.VlnSettings.UserID); newItemID = tmp.ItemID; - if (level < prevlevel) siblingSmart = tmp; + if (level < prevlevel) siblingSmart = parentSmart; + else if (level > prevlevel) parentSmart = siblingSmart; + if (level == prevlevel) siblingSmart = tmp; } tpIndx++; prevlevel = level; diff --git a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs index 9368c020..c5f9c3ad 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs @@ -288,7 +288,22 @@ namespace VEPROMS.CSLA.Library string[] tmpOld = tpl.Split(" ".ToCharArray()); level = Convert.ToInt32(tmpOld[0]); type = Convert.ToInt32(tmpOld[1]); - stmp = tmpOld.Length <= 2 ? null : tmpOld[2]; + if (tmpOld.Length <= 2) + stmp = null; + else if (tmpOld.Length > 3) + { + // Braidwood has spaces as part of the text in the 3rd field, i.e. (See Deviation Document) + // handle this special case + int indxx = tpl.IndexOf(" "); + if (indxx < 0) stmp = null; + else + { + indxx = tpl.IndexOf(" ", indxx+1); + stmp = (indxx > -1) ? tpl.Substring(indxx) : null; + } + } + else + stmp = tmpOld[2]; } else {