diff --git a/PROMS/Formats/fmtall/FNPCASall.xml b/PROMS/Formats/fmtall/FNPCASall.xml
index af8aa1db..8afc0ba9 100644
Binary files a/PROMS/Formats/fmtall/FNPCASall.xml and b/PROMS/Formats/fmtall/FNPCASall.xml differ
diff --git a/PROMS/Formats/fmtall/FNPDEVall.xml b/PROMS/Formats/fmtall/FNPDEVall.xml
index e7748639..5ce54f99 100644
Binary files a/PROMS/Formats/fmtall/FNPDEVall.xml and b/PROMS/Formats/fmtall/FNPDEVall.xml differ
diff --git a/PROMS/Formats/fmtall/FNPEBKall.xml b/PROMS/Formats/fmtall/FNPEBKall.xml
index aa0d7830..30d5ff99 100644
Binary files a/PROMS/Formats/fmtall/FNPEBKall.xml and b/PROMS/Formats/fmtall/FNPEBKall.xml differ
diff --git a/PROMS/Formats/fmtall/FNPSAM1all.xml b/PROMS/Formats/fmtall/FNPSAM1all.xml
index 0e1b5101..4198c0db 100644
Binary files a/PROMS/Formats/fmtall/FNPSAM1all.xml and b/PROMS/Formats/fmtall/FNPSAM1all.xml differ
diff --git a/PROMS/Formats/fmtall/FNP_00all.xml b/PROMS/Formats/fmtall/FNP_00all.xml
index ec446118..3ae14422 100644
Binary files a/PROMS/Formats/fmtall/FNP_00all.xml and b/PROMS/Formats/fmtall/FNP_00all.xml differ
diff --git a/PROMS/Formats/fmtall/FNP_01all.xml b/PROMS/Formats/fmtall/FNP_01all.xml
index 3a42b1bd..a8c6dda6 100644
Binary files a/PROMS/Formats/fmtall/FNP_01all.xml and b/PROMS/Formats/fmtall/FNP_01all.xml differ
diff --git a/PROMS/Formats/fmtall/FNPall.xml b/PROMS/Formats/fmtall/FNPall.xml
index 75dfa919..d3295de4 100644
Binary files a/PROMS/Formats/fmtall/FNPall.xml and b/PROMS/Formats/fmtall/FNPall.xml differ
diff --git a/PROMS/Formats/fmtall/fnpnmpall.xml b/PROMS/Formats/fmtall/fnpnmpall.xml
index 8c75ffc0..7912aa34 100644
Binary files a/PROMS/Formats/fmtall/fnpnmpall.xml and b/PROMS/Formats/fmtall/fnpnmpall.xml differ
diff --git a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/RODefFrm.cs b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/RODefFrm.cs
index f2dc6f34..e60a329c 100644
--- a/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/RODefFrm.cs
+++ b/PROMS/ReferencedObjects/Exe/RefObj/ROEditor/RODefFrm.cs
@@ -1584,7 +1584,7 @@ namespace ROEditor
if (i + 1 < InUseList.Count) inuserecs = inuserecs + " ";
}
}
- if (inuserecs != origFieldsInUse)
+ if ((inuserecs ?? "") != (origFieldsInUse ?? ""))
return true;
@@ -1599,7 +1599,7 @@ namespace ROEditor
if (i + 1 < InUseApplcList.Count) applicfieldrecs = applicfieldrecs + " ";
}
}
- if (applicfieldrecs != origApplicFields)
+ if ((applicfieldrecs ?? "") != (origApplicFields ?? ""))
return true;
//nothing has changed
diff --git a/PROMS/ReferencedObjects/LibSource/RODBInterface/VlnXml.cs b/PROMS/ReferencedObjects/LibSource/RODBInterface/VlnXml.cs
index 82cbd45f..f44c1a8e 100644
--- a/PROMS/ReferencedObjects/LibSource/RODBInterface/VlnXml.cs
+++ b/PROMS/ReferencedObjects/LibSource/RODBInterface/VlnXml.cs
@@ -834,7 +834,7 @@ namespace RODBInterface
ValueType |= FldType;
if (PCApplicability)
text = GetPCReturnValues(theDb, pcChildern, elm, PCApplicability, inusename, text); // C2021-026 Get P/C Children return values
- strbld.Append(text);
+ strbld.Append(text.Replace("{", "&123;").Replace("}", "&125;"));
}
else
{
diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql
index 47fcf4af..0d9474cf 100644
--- a/PROMS/VEPROMS User Interface/PROMSFixes.Sql
+++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql
@@ -19791,9 +19791,11 @@ GO
*****************************************************************************/
/*
==========================================================================================================
- Author: Jake Ropar
Create Date: 06/23/2022
Description: Inserts New Rofst Child Record / Default Values
+ Modified: 02/19/2025
+ Modification
+ Description: Added support for ROs with brackets in Unit Values
==========================================================================================================
*/
Create Procedure [dbo].[vesp_RofstChildInsert]
@@ -19806,19 +19808,26 @@ GO
@title VarChar(Max),
@roid VarChar(50),
@appid VarChar(Max) = null,
- @value VarChar(Max) = null
+ @value VarChar(Max) = null,
+ @missingDefaultValue VarChar(Max) = null
)
With Execute as Owner
As
Begin
- Declare @AccPageID VarChar(Max) = null;
+ Declare @BaseAccPageID VarChar(Max) = null;
Declare @DefaultValues VarChar(Max);
+ Declare @RoidExt VarChar(Max);
+ Declare @AccPageExt VarChar(Max);
- -- Create Rofst Child/Group Record
+ -- Default missing value if Null (Null values not allowed for the [value] field in the RofstDefaultValue table
+ if (DataLength(IsNull(@missingDefaultValue, '')) <= 0)
+ Set @missingDefaultValue = '[TBD]';
+
+ -- Create Rofst Child/Group Record --> [Roid = (12) Digits]
Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value])
- Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value);
+ Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, REPLACE(REPLACE(@value, '&123;', '{'), '&125;', '}'));
-- Check for appid, if exists, then insert the default value for each return type if multi-value
@@ -19826,37 +19835,58 @@ GO
Begin
-- Get Accessory Page ID
- Select @AccPageID = Concat(d.dbiAP, '-', @appid)
+ Select @BaseAccPageID = dbo.vefn_RofstDataCleanUnitInfoTags(Concat(d.dbiAP, '-', @appid), 1)
From RofstDatabase d with (NoLock)
Where d.RofstID = @RofstID And d.dbiID = @dbiID;
- -- Insert Rofst Default Value (Parent RoChild) [roid = 12]
- Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
- Values (@RofstID, @roid, Replace(@title, '\u160?', ' '), @AccPageID);
+ Select @DefaultValues = dbo.vefn_RofstDataReplaceVars(@value);
- -- Insert Rofst Default Value(s) (Children RoChild) [roid = 16] (Do Not Insert Duplicates)
- Select @DefaultValues = Replace(dbo.vefn_RofstDataReplaceVars(@value), '{', '');
+ If (PatIndex('%=%', @DefaultValues) > 0)
+ Begin
+
+ -- Insert Rofst Default Values (Multi-Values) --> [Roid = (16) Digits]
+ Select @DefaultValues = Replace(@DefaultValues, '{', '');
- With ChildrenValues as
- (
- Select (x.ListPosition + 40) as 'OffsetIndex',
- Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue'
- From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x
- Where Len(x.ListValue) > 0
- )
- Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
- Select @RofstID as 'RofstID',
- Concat(@roid, Cast(Format(Min(OffsetIndex), 'D4') as VarChar(4))) as 'roid',
- DefaultValue as 'value',
- null as 'AccPageID'
- From ChildrenValues
- Group By DefaultValue
- Order By Min(OffsetIndex) Asc
+ With ChildrenValues as
+ (
+ Select x.ListPosition as 'OffsetIndex',
+ Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue'
+ From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x
+ Where Len(x.ListValue) > 0
+ )
+ Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
+ Select @RofstID as 'RofstID',
+ Concat(@roid, re.RoidExt) as 'roid',
+ Case When (DataLength(cv.DefaultValue) > 0) Then
+ REPLACE(REPLACE(REPLACE(dbo.vefn_RofstDataCleanUnitInfoTags(cv.DefaultValue, 0), '&123;', '{'), '&125;}', '}'), '&125;', '}')
+ Else @missingDefaultValue End as 'value',
+ Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID'
+ From ChildrenValues cv
+ inner join vwRofstData_RofstExtensions re on re.Offset = cv.OffsetIndex
+ Order By cv.OffsetIndex Asc
+
+ End
+ Else
+ Begin
+
+ -- Insert Rofst Default Value (Single Value) --> [Roid = (16) Digits]
+ Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
+ Select @RofstID as 'RofstID',
+ Concat(@roid, re.RoidExt) as 'roid',
+ Case When (DataLength(@DefaultValues) > 0) Then
+ REPLACE(REPLACE(REPLACE(dbo.vefn_RofstDataCleanUnitInfoTags(@DefaultValues, 0), '&123;', '{'), '&125;}', '}'), '&125;', '}')
+ Else @missingDefaultValue End as 'value',
+ Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID'
+ From vwRofstData_RofstExtensions re
+ Where re.Offset = 1;
+
+ End
End -- (Len(@appid) > 0)
Return;
+
End
Go
@@ -20448,98 +20478,6 @@ GO
ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetExtensions] Error on Creation'
GO
-
-
-
- /****** Object: StoredProcedure [dbo].[vesp_RofstChildInsert] ***********************/
- If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstChildInsert' AND type in (N'P'))
- DROP PROCEDURE [dbo].[vesp_RofstChildInsert]
- GO
-
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
-
- /*****************************************************************************
- Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
- Copyright 2020 - Volian Enterprises, Inc. All rights reserved.
- *****************************************************************************/
- /*
- ==========================================================================================================
- Author: Jake Ropar
- Create Date: 03/24/2022
- Description:
- ==========================================================================================================
- */
- Create Procedure [dbo].[vesp_RofstChildInsert]
- (
- @RofstID Int,
- @ID Int,
- @ParentID Int,
- @dbiID Int,
- @type Int,
- @title VarChar(Max),
- @roid VarChar(50),
- @appid VarChar(Max) = null,
- @value VarChar(Max) = null
- )
- With Execute as Owner
- As
- Begin
-
- Declare @BaseAccPageID VarChar(Max) = null;
- Declare @DefaultValues VarChar(Max);
-
-
- -- Create Rofst Child/Group Record --> [Roid = (12) Digits]
- Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value])
- Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value);
-
-
- -- Check for appid, if exists, then insert the default value for each return type if multi-value
- If (Len(@appid) > 0)
- Begin
-
- -- Get Accessory Page ID
- Select @BaseAccPageID = dbo.vefn_RofstDataCleanUnitInfoTags(Concat(d.dbiAP, '-', @appid), 1)
- From RofstDatabase d with (NoLock)
- Where d.RofstID = @RofstID And d.dbiID = @dbiID;
-
- -- Insert Rofst Default Value(s) (Children RoChild) --> [Roid = (16) Digits]
- Select @DefaultValues = Replace(dbo.vefn_RofstDataReplaceVars(@value), '{', '');
-
- With ChildrenValues as
- (
- Select x.ListPosition as 'OffsetIndex',
- Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue'
- From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x
- Where Len(x.ListValue) > 0
- )
- Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
- Select @RofstID as 'RofstID',
- Concat(@roid, re.RoidExt) as 'roid',
- Case When (Len(RTrim(LTrim(cv.DefaultValue))) > 0 ) Then dbo.vefn_RofstDataCleanUnitInfoTags(cv.DefaultValue, 0) Else '[TBD]' End as 'value',
- Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID'
- From ChildrenValues cv
- inner join vwRofstData_RofstExtensions re on re.Offset = cv.OffsetIndex
- Order By cv.OffsetIndex Asc
-
-
- End -- (Len(@appid) > 0)
-
-
- Return;
-
- End
- Go
-
- IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstChildInsert] Succeeded'
- ELSE PRINT 'Procedure Creation: [vesp_RofstChildInsert] Error on Creation'
- GO
-
-
-
/****** Object: StoredProcedure [dbo].[vesp_RofstDataSearch] ***********************/
If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataSearch' AND type in (N'P'))
DROP PROCEDURE [dbo].[vesp_RofstDataSearch]
@@ -21239,121 +21177,6 @@ GO
==========================================================================================================
*/
-
-IF EXISTS (Select * From dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_RofstChildInsert]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
- DROP Procedure [dbo].[vesp_RofstChildInsert];
-GO
-
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-
-/*****************************************************************************
- Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
- Copyright 2020 - Volian Enterprises, Inc. All rights reserved.
-*****************************************************************************/
-/*
-==========================================================================================================
- Author: Jake Ropar
- Create Date: 03/24/2022
- Description: Inserts the RO Child object and associated return values
-==========================================================================================================
- */
-Create Procedure [dbo].[vesp_RofstChildInsert]
-(
- @RofstID Int,
- @ID Int,
- @ParentID Int,
- @dbiID Int,
- @type Int,
- @title VarChar(Max),
- @roid VarChar(50),
- @appid VarChar(Max) = null,
- @value VarChar(Max) = null
-)
-With Execute as Owner
-As
-Begin
-
- Declare @BaseAccPageID VarChar(Max) = null;
- Declare @DefaultValues VarChar(Max);
-
- Declare @RoidExt VarChar(Max);
- Declare @AccPageExt VarChar(Max);
-
-
- -- Create Rofst Child/Group Record --> [Roid = (12) Digits]
- Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value])
- Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value);
-
-
- -- Check for appid, if exists, then insert the default value for each return type if multi-value
- If (Len(@appid) > 0)
- Begin
-
- -- Get Accessory Page ID
- Select @BaseAccPageID = dbo.vefn_RofstDataCleanUnitInfoTags(Concat(d.dbiAP, '-', @appid), 1)
- From RofstDatabase d with (NoLock)
- Where d.RofstID = @RofstID And d.dbiID = @dbiID;
-
- Select @DefaultValues = dbo.vefn_RofstDataReplaceVars(@value);
-
- If (PatIndex('%=%', @DefaultValues) > 0)
- Begin
-
- -- Insert Rofst Default Values (Multi-Values) --> [Roid = (16) Digits]
- Select @DefaultValues = Replace(@DefaultValues, '{', '');
-
- With ChildrenValues as
- (
- Select x.ListPosition as 'OffsetIndex',
- Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue'
- From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x
- Where Len(x.ListValue) > 0
- )
- Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
- Select @RofstID as 'RofstID',
- Concat(@roid, re.RoidExt) as 'roid',
- Case When (Len(RTrim(LTrim(cv.DefaultValue))) > 0 ) Then dbo.vefn_RofstDataCleanUnitInfoTags(cv.DefaultValue, 0) Else '[TBD]' End as 'value',
- Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID'
- From ChildrenValues cv
- inner join vwRofstData_RofstExtensions re on re.Offset = cv.OffsetIndex
- Order By cv.OffsetIndex Asc
-
- End
- Else
- Begin
-
- -- Insert Rofst Default Value (Single Value) --> [Roid = (16) Digits]
- Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
- Select @RofstID as 'RofstID',
- Concat(@roid, re.RoidExt) as 'roid',
- Case When (Len(RTrim(LTrim(@DefaultValues))) > 0 ) Then dbo.vefn_RofstDataCleanUnitInfoTags(@DefaultValues, 0) Else '[TBD]' End as 'value',
- Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID'
- From vwRofstData_RofstExtensions re
- Where re.Offset = 1;
-
- End
-
- End -- (Len(@appid) > 0)
-
-
- Return;
-
-End
-Go
-
-IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstChildInsert] Succeeded'
-ELSE PRINT 'Procedure Creation: [vesp_RofstChildInsert] Error on Creation'
-GO
-
-
-
-
-
If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataReplaceVars' AND type in (N'FN'))
DROP FUNCTION [dbo].[vefn_RofstDataReplaceVars]
GO
@@ -21632,124 +21455,6 @@ GO
ELSE PRINT 'Function Creation: [vefn_RofstDataCleanUnitInfoTags] Error on Creation'
GO
-
-
- If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstChildInsert' AND type in (N'P'))
- DROP PROCEDURE [dbo].[vesp_RofstChildInsert]
- GO
-
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
-
- /*****************************************************************************
- Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
- Copyright 2020 - Volian Enterprises, Inc. All rights reserved.
- *****************************************************************************/
- /*
- ==========================================================================================================
- Author: Jake Ropar
- Create Date: 03/24/2022
- Description: Inserts the RO Child object and associated return values
- ==========================================================================================================
- */
- Create Procedure [dbo].[vesp_RofstChildInsert]
- (
- @RofstID Int,
- @ID Int,
- @ParentID Int,
- @dbiID Int,
- @type Int,
- @title VarChar(Max),
- @roid VarChar(50),
- @appid VarChar(Max) = null,
- @value VarChar(Max) = null,
- @missingDefaultValue VarChar(Max) = null
- )
- With Execute as Owner
- As
- Begin
-
- Declare @BaseAccPageID VarChar(Max) = null;
- Declare @DefaultValues VarChar(Max);
-
- Declare @RoidExt VarChar(Max);
- Declare @AccPageExt VarChar(Max);
-
- -- Default missing value if Null (Null values not allowed for the [value] field in the RofstDefaultValue table
- if (DataLength(IsNull(@missingDefaultValue, '')) <= 0)
- Set @missingDefaultValue = '[TBD]';
-
- -- Create Rofst Child/Group Record --> [Roid = (12) Digits]
- Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value])
- Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value);
-
-
- -- Check for appid, if exists, then insert the default value for each return type if multi-value
- If (Len(@appid) > 0)
- Begin
-
- -- Get Accessory Page ID
- Select @BaseAccPageID = dbo.vefn_RofstDataCleanUnitInfoTags(Concat(d.dbiAP, '-', @appid), 1)
- From RofstDatabase d with (NoLock)
- Where d.RofstID = @RofstID And d.dbiID = @dbiID;
-
- Select @DefaultValues = dbo.vefn_RofstDataReplaceVars(@value);
-
- If (PatIndex('%=%', @DefaultValues) > 0)
- Begin
-
- -- Insert Rofst Default Values (Multi-Values) --> [Roid = (16) Digits]
- Select @DefaultValues = Replace(@DefaultValues, '{', '');
-
- With ChildrenValues as
- (
- Select x.ListPosition as 'OffsetIndex',
- Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue'
- From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x
- Where Len(x.ListValue) > 0
- )
- Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
- Select @RofstID as 'RofstID',
- Concat(@roid, re.RoidExt) as 'roid',
- Case When (DataLength(cv.DefaultValue) > 0) Then dbo.vefn_RofstDataCleanUnitInfoTags(cv.DefaultValue, 0) Else @missingDefaultValue End as 'value',
- Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID'
- From ChildrenValues cv
- inner join vwRofstData_RofstExtensions re on re.Offset = cv.OffsetIndex
- Order By cv.OffsetIndex Asc
-
- End
- Else
- Begin
-
- -- Insert Rofst Default Value (Single Value) --> [Roid = (16) Digits]
- Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID)
- Select @RofstID as 'RofstID',
- Concat(@roid, re.RoidExt) as 'roid',
- Case When (DataLength(@DefaultValues) > 0) Then dbo.vefn_RofstDataCleanUnitInfoTags(@DefaultValues, 0) Else @missingDefaultValue End as 'value',
- Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID'
- From vwRofstData_RofstExtensions re
- Where re.Offset = 1;
-
- End
-
- End -- (Len(@appid) > 0)
-
-
- Return;
-
- End
- Go
-
-
-
- IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstChildInsert] Succeeded'
- ELSE PRINT 'Procedure Creation: [vesp_RofstChildInsert] Error on Creation'
- GO
-
-
-
/*
==========================================================================================================
End: B2022-124: [JPR] Blank RO Values (All Spaces) printing as ?
@@ -24132,8 +23837,8 @@ BEGIN TRY -- Try Block
DECLARE @RevDate varchar(255)
DECLARE @RevDescription varchar(255)
- set @RevDate = '10/28/2024 11:24'
- set @RevDescription = 'Add the ability for PROMS to remember the procedure tabs that were open when you closed PROMS'
+ set @RevDate = '2/19/2025 11:24'
+ set @RevDescription = 'Added support for legacy ROs with brackets in Unit Values'
Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription
PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription
diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs
index 856f91f7..287d8e12 100644
--- a/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs
+++ b/PROMS/VEPROMS.CSLA.Library/Extension/AuditExt.cs
@@ -194,6 +194,23 @@ namespace VEPROMS.CSLA.Library
public partial class AnnotationAuditInfoList
{
+
+ ///
+ /// C2024- 038 - Summary of Changes report generation enhancements
+ /// Constructor - takes a Generic list of AnnotationAuditInfo
+ /// and creates a AnnotationAuditInfoList
+ ///
+ public AnnotationAuditInfoList(List lst)
+ {
+ IsReadOnly = false;
+ if (lst != null)
+ {
+ foreach (AnnotationAuditInfo itm in lst)
+ this.Add(itm);
+ }
+ IsReadOnly = true;
+ }
+
///
/// Return a list of all AnnotationAuditInfo by ItemID.
///
@@ -487,6 +504,23 @@ namespace VEPROMS.CSLA.Library
public partial class ContentAuditInfoList
{
+
+ ///
+ /// C2024- 038 - Summary of Changes report generation enhancements
+ /// Constructor - takes a Generic list of ContentAuditInfo
+ /// and creates a ContentAuditInfoList
+ ///
+ public ContentAuditInfoList(List lst)
+ {
+ IsReadOnly = false;
+ if (lst != null)
+ {
+ foreach (ContentAuditInfo itm in lst)
+ this.Add(itm);
+ }
+ IsReadOnly = true;
+ }
+
///
/// Return a list of all ContentAuditInfo by ContentID.
///
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.cs b/PROMS/Volian.Controls.Library/DisplayHistory.cs
index 8e647378..a66c6952 100644
--- a/PROMS/Volian.Controls.Library/DisplayHistory.cs
+++ b/PROMS/Volian.Controls.Library/DisplayHistory.cs
@@ -10,6 +10,7 @@ using System.IO;
using System.Text.RegularExpressions;
using JR.Utils.GUI.Forms;
using Volian.Base.Library;
+using System.Linq;
namespace Volian.Controls.Library
{
@@ -163,7 +164,7 @@ namespace Volian.Controls.Library
else
{
DateTime revDate;
- if (!DateTime.TryParse(cfg.Print_RevDate, out revDate)) revDate = MyProcedureInfo.ChangeBarDate; // DateTime.Now;
+ if (!DateTime.TryParse(cfg.Print_RevDate, out revDate)) revDate = MyProcedureInfo.ChangeBarDate; // DateTime.Now;
SetRevDate(revDate);
//SetRevDate(DateTime.Parse(cfg.Print_RevDate));
}
@@ -263,7 +264,7 @@ namespace Volian.Controls.Library
{
AnnotationTypeInfo ati = AnnotationTypeInfo.Get(aai.TypeID);
// B2023-066: Crash when trying to access a deleted annotation type (added the ati==null check)
- tn = annotationDeleted.Nodes.Add(ati==null?"Deleted Annotation Type":ati.Name);
+ tn = annotationDeleted.Nodes.Add(ati == null ? "Deleted Annotation Type" : ati.Name);
}
TreeNode cn = tn.Nodes.Add(aai.ListString());
cn.Tag = aai;
@@ -517,7 +518,7 @@ namespace Volian.Controls.Library
if (delC.Type >= 0 && delC.Type < 1000)
{
int indx = delC.Config.IndexOf("DelProcReason");
- if (indx >= 0 && delC.Config.Length > indx+15) // 15 accounts for 'DelProcReason = "'
+ if (indx >= 0 && delC.Config.Length > indx + 15) // 15 accounts for 'DelProcReason = "'
{
string reason = delC.Config.Substring(indx + 15);
if (reason != null && reason.Length > 0)
@@ -529,7 +530,7 @@ namespace Volian.Controls.Library
}
}
}
- TreeNode tnn = deletedItems.Nodes.Add(iai.ToString()+"; Reason: " + strR);
+ TreeNode tnn = deletedItems.Nodes.Add(iai.ToString() + "; Reason: " + strR);
tnn.Tag = iai;
#endregion
}
@@ -558,7 +559,7 @@ namespace Volian.Controls.Library
if (MyProcedureInfo == null)
{
this.ParentForm.Cursor = Cursors.Default;
- btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
+ btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = cbSumExcludeAnn.Enabled = DT_SumAsOf.Enabled = lbChanges.Items.Count > 0;
return;
}
ContentAuditInfoList cail2;
@@ -586,7 +587,7 @@ namespace Volian.Controls.Library
// B2020-156: When procedure title is changed, it does not print in Summary/Chronolgy of changes.
// Need to only check the date (not the date/time) for some procedures, the original item was listed
// in the list box and should not be because some MyRevDate's did not have time included.
- if (CompareDateOrDateTime(cai.DTS,MyRevDate) || cai.ActionWhen > MyRevDate)
+ if (CompareDateOrDateTime(cai.DTS, MyRevDate) || cai.ActionWhen > MyRevDate)
{
string itemTitle = FixPath(cai.Path);
lbChanges.Items.Add(cai);
@@ -614,7 +615,7 @@ namespace Volian.Controls.Library
}
//Console.WriteLine("WalkProcedure fini: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
this.ParentForm.Cursor = Cursors.Default;
- btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
+ btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = cbSumExcludeAnn.Enabled = DT_SumAsOf.Enabled = lbChanges.Items.Count > 0;
RefreshRequired = false;
return;
}
@@ -648,9 +649,73 @@ namespace Volian.Controls.Library
//_AnnotationList = AnnotationAuditInfoList.GetChronology(0, 0, MyProcedureInfo.ChangeBarDate);
//added setting selected slave in order for reports to replace unit number,etc jcb 20101010
MyItemInfo.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = ApplDisplayMode;
- // OnSummaryPrintRequest(new DisplayHistoryReportEventArgs(Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MySummary.pdf", MyItemInfo.MyProcedure, _SummaryAuditList, _AnnotationList));
- OnSummaryPrintRequest(new DisplayHistoryReportEventArgs(string.Format(@"{0}\{1} Summary of Changes.pdf", Volian.Base.Library.VlnSettings.TemporaryFolder, MyItemInfo.MyProcedure.PDFNumber), MyItemInfo.MyProcedure, _SummaryAuditList, _AnnotationList));
- //}
+
+ var dhr = new DisplayHistoryReportEventArgs(string.Format(@"{0}\{1} Summary of Changes.pdf", Volian.Base.Library.VlnSettings.TemporaryFolder, MyItemInfo.MyProcedure.PDFNumber), MyItemInfo.MyProcedure, null, null);
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ //check if need to modify
+ // _SummaryAuditList
+ if (DT_SumAsOf.Checked)
+ dhr.AuditList = FilterSummaryByDate(_SummaryAuditList, DT_SumAsOf.Value);
+ else
+ dhr.AuditList = _SummaryAuditList;
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ // if Exclude Annotations Checked
+ // send an empty list instead of
+ //_AnnotationList
+ if (cbSumExcludeAnn.Checked)
+ dhr.AnnotationList = new AnnotationAuditInfoList(null);
+ else if (DT_SumAsOf.Checked)
+ dhr.AnnotationList = FilterSummaryByDate_Annotations(_AnnotationList, DT_SumAsOf.Value);
+ else
+ { dhr.AnnotationList = _AnnotationList; }
+
+ OnSummaryPrintRequest(dhr);
+ }
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ //modify _SummaryAuditList
+ //to limit to a specific date
+ private ContentAuditInfoList FilterSummaryByDate(ContentAuditInfoList summaryAuditList, DateTime value)
+ {
+ List slst = summaryAuditList.Clone().ToList();
+
+ //Grab the first change to each item before the date and set that to the AsOf date
+ foreach (ContentAuditInfo firstbeforedate in slst.GroupBy(x => x.ItemID).Select(x => x.OrderByDescending(y => y.DTS).FirstOrDefault(d => d.DTS < value)))
+ {
+ if (firstbeforedate != null && firstbeforedate.ActionWhat != "Deleted")
+ {
+ firstbeforedate.ActionWhat = $"As Of: {value.ToShortDateString()}";
+ }
+ }
+ //remove all items before the date we are checking against
+ //note that for deleted - sometimes the DTS is not correct and
+ //need to use the ActionWhen
+ slst.RemoveAll(x => x.DTS < value && !x.ActionWhat.StartsWith("As Of:") && (x.ActionWhat != "Deleted" || (x.ActionWhen < x.DTS ? x.DTS : x.ActionWhen) < value));
+
+ //remove all items where first text matches the last text
+ //unless it was added after the date we are checking against
+ //or the last item is a deletion that occurred after
+ //the date we are checking against
+ var itms = slst.Select(x => x.ItemID).Distinct().ToList();
+ foreach (int itmID in itms)
+ {
+ ContentAuditInfo first = slst.Where(i => i.ItemID == itmID).OrderBy(y => y.DTS).FirstOrDefault();
+ ContentAuditInfo last = slst.Where(i => i.ItemID == itmID).OrderByDescending(y => y.DTS).FirstOrDefault();
+ if (first != null && last != null && first.DTS < value && (last.ActionWhat != "Deleted" || (last.ActionWhen < last.DTS ? last.DTS : last.ActionWhen) < value) && ItemInfo.ConvertToDisplayText(first.Text) == ItemInfo.ConvertToDisplayText(last.Text))
+ slst.RemoveAll(x => x.ItemID == itmID);
+ }
+
+ return new ContentAuditInfoList(slst);
+ }
+
+ //C2024- 038 - Summary of Changes report generation enhancements
+ //modify _SummaryAuditList
+ //to limit to a specific date
+ private AnnotationAuditInfoList FilterSummaryByDate_Annotations(AnnotationAuditInfoList annotationAuditList, DateTime value)
+ {
+ return new AnnotationAuditInfoList(annotationAuditList.Where(x => x.DTS >= value).ToList());
}
private void btnRefresh_Click(object sender, EventArgs e)
{
@@ -1060,7 +1125,7 @@ namespace Volian.Controls.Library
set { _AuditList = value; }
}
private AnnotationAuditInfoList _AnnotationList;
- public AnnotationAuditInfoList AnnotationList
+ public AnnotationAuditInfoList AnnotationList
{
get { return _AnnotationList; }
set { _AnnotationList = value; }
diff --git a/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs b/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs
index 87fcb3ce..0475e1c8 100644
Binary files a/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs and b/PROMS/Volian.Controls.Library/DisplayHistory.designer.cs differ
diff --git a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs
index 4e00b55f..33fc65fe 100644
Binary files a/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs and b/PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs differ
diff --git a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
index e615e5de..1510659d 100644
--- a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
+++ b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj
@@ -443,6 +443,9 @@
DisplayBookMarks.cs
Designer
+
+ DisplayHistory.cs
+
DisplayLibDocs.cs
Designer
diff --git a/PROMS/Volian.Print.Library/PDFChronologyReport.cs b/PROMS/Volian.Print.Library/PDFChronologyReport.cs
index b0111d5c..73e7ca1e 100644
--- a/PROMS/Volian.Print.Library/PDFChronologyReport.cs
+++ b/PROMS/Volian.Print.Library/PDFChronologyReport.cs
@@ -1090,7 +1090,7 @@ namespace Volian.Print.Library
firstCAI = null;
lastCAI = null;
}
- else if (firstCAI.ActionWhat == lastCAI.ActionWhat)
+ else if (firstCAI.ActionWhat == lastCAI.ActionWhat || firstCAI.ActionWhat.StartsWith("As Of:"))
{
auditList1.Add(firstCAI);
auditList1.Add(lastCAI);
@@ -1153,7 +1153,7 @@ namespace Volian.Print.Library
firstCAI = null;
lastCAI = null;
}
- else if (firstCAI.ActionWhat == lastCAI.ActionWhat)
+ else if (firstCAI.ActionWhat == lastCAI.ActionWhat || firstCAI.ActionWhat.StartsWith("As Of:"))
{
auditList1.Add(firstCAI);
auditList1.Add(lastCAI);
diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs
index 381a3c95..73b089b4 100644
--- a/PROMS/Volian.Print.Library/vlnParagraph.cs
+++ b/PROMS/Volian.Print.Library/vlnParagraph.cs
@@ -647,8 +647,10 @@ namespace Volian.Print.Library
}
if (MyItemInfo.IsHigh)
{
+ // C2025-014 change the zoom setting on the bookmark of a step from FITBH to FITV so that instead of zooming in
+ // on the step it will zoom to the page level ( like it does when you select a bookmark on a section.
MyPageHelper.PageBookmarks.Add(MyItemInfo, (MyItemInfo.MyTab == null) ? "" : MyItemInfo.MyTab.CleanText + " " + MyItemInfo.DisplayText,
- new PdfDestination(PdfDestination.FITBH, yLocation + YVeryTop - YTopMost + SixLinesPerInch));
+ new PdfDestination(PdfDestination.FITV, yLocation + YVeryTop - YTopMost + SixLinesPerInch));
}
}
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.WolfcreekCKLFormat)