diff --git a/LSL2/STPROC/COMM_PROD_SPEC.txt b/LSL2/STPROC/COMM_PROD_SPEC.txt
index 5bf6499..d559198 100644
--- a/LSL2/STPROC/COMM_PROD_SPEC.txt
+++ b/LSL2/STPROC/COMM_PROD_SPEC.txt
@@ -10,6 +10,7 @@ COMPILE FUNCTION Comm_Prod_Spec(Instruction, Parm1,Parm2)
equate statement PRS_PROP_UNITS_ORG$.
07/27/2020 - JRO - Updated COL$ Equate for the LS table due to adding new cols.
02/23/2020 - JRO - Added in methods for Parameter checks
+ 10/10/2024 - DJM - Changed QUOTE_SIGS to Security groups to be tied into AD groups.
*/
DECLARE SUBROUTINE Set_Property, End_Dialog, Send_Event, Set_Status, Center_Window, Post_Event, obj_Tables
@@ -804,6 +805,28 @@ StatusClick:
OldStatus = XLATE('PROD_SPEC', PSNo, PROD_SPEC_STATUS$ ,'X')
NewStatus = Get_Property(@WINDOW:'.STATUS','DEFPROP')
+ CtrlID = @WINDOW:'.MODE_CODE'
+
+ ModeArray = Get_Property(CtrlID,'DEFPROP')
+
+ ActivationAllowed = FALSE$
+
+ BEGIN CASE
+ CASE ModeArray
NE ''
+ ActivationAllowed = TRUE$
+ CASE ModeArray NE ''
+ ActivationAllowed = TRUE$
+ CASE ModeArray NE ''
+ ActivationAllowed = TRUE$
+ CASE ModeArray NE ''
+ ActivationAllowed = FALSE$
+ Error_Services('Add', 'Both the Pre Qual and the Qual signatures must be signed in order for the PSN to be activated.')
+ CASE 1
+ ActivationAllowed = FALSE$
+ Error_Services('Add', 'Both the Pre Qual and the Qual signatures must be signed in order for the PSN to be activated.')
+ END CASE
+
+
IF PSNo = '' THEN RETURN
If NewStatus NE OldStatus then
IF NewStatus = 'I' THEN
@@ -912,18 +935,24 @@ StatusClick:
//Activation Parameters Check JRO - 2-24-2021
IF NewStatus = 'A' then
- Error_Services('Clear')
- MsgStruct = ""
- MsgStruct = MSG_WIDTH$
- GoSub ReactorVerification
- If Error_Services('NoError') then
- GoSub SpecVerification
- end
- If Error_Services('NoError') then
- GoSub ProdVerVerification
- end
- If Error_Services('NoError') then
- GoSub StageVerification
+ If ActivationAllowed EQ TRUE$ then
+ Error_Services('Clear')
+ MsgStruct = ""
+ MsgStruct = MSG_WIDTH$
+ GoSub ReactorVerification
+ If Error_Services('NoError') then
+ GoSub SpecVerification
+ end
+ If Error_Services('NoError') then
+ GoSub ProdVerVerification
+ end
+ If Error_Services('NoError') then
+ GoSub StageVerification
+ end
+ end else
+ Set_Property(@WINDOW:'.STATUS','DEFPROP', OldStatus)
+ Error = Error_Services('GetMessage')
+ ErrMsg(Error)
end
end
end else
@@ -1418,6 +1447,8 @@ SignNextMode:
ModeArray = Get_Property(CtrlID,'DEFPROP')
+ Qualified = FALSE$
+
BEGIN CASE
CASE ModeArray NE '' ; NextSigPos = ''
CASE ModeArray NE '' ; NextSigPos = 4 ; NextMode = ModeArray
@@ -1426,17 +1457,17 @@ SignNextMode:
CASE 1 ; NextSigPos = 1 ; NextMode = ModeArray
END CASE
- SigInfo = XLATE('CONFIG','QUOTE_SIGS','','X')
BEGIN CASE
- CASE NextSigPos = 4 ; QualUsers = SigInfo
- CASE NextSigPos = 3 ; QualUsers = SigInfo
- CASE NextSigPos = 2 ; QualUsers = SigInfo
- CASE NextSigPos = 1 ; QualUsers = SigInfo
- CASE 1 ; QualUsers = ''
+ CASE NextSigPos = 4 ; Qualified = (MemberOf(@USER4,'PSN_PROD'))
+ CASE NextSigPos = 3 ; Qualified = (MemberOf(@USER4,'PSN_PRE_PROD'))
+ CASE NextSigPos = 2 ; Qualified = (MemberOf(@USER4,'PSN_QUAL'))
+ CASE NextSigPos = 1 ; Qualified = (MemberOf(@USER4,'PSN_PRE_QUAL'))
+ CASE 1 ; Qualified = FALSE$
END CASE
+
- LOCATE @USER4 IN QualUsers USING @VM SETTING Pos THEN
+ If Qualified EQ TRUE$ THEN
Valid = Dialog_Box( 'QUOTE_SIG_PWD_ENTRY', @WINDOW, @USER4:@VM:XLATE( 'LSL_USERS', @USER4, LSL_USERS_PASSWORD$, 'X' ) )
END ELSE
ErrorMsg = 'Current user is not an authorized ':NextMode:' signer.'
@@ -1471,6 +1502,8 @@ UnsignCurrMode:
ModeArray = Get_Property(CtrlID,'DEFPROP')
+ Qualified = FALSE$
+
BEGIN CASE
CASE ModeArray NE '' ; UnsigPos = 4 ; UnsignMode = ModeArray
CASE ModeArray NE '' ; UnsigPos = 3 ; UnsignMode = ModeArray
@@ -1479,17 +1512,16 @@ UnsignCurrMode:
CASE 1 ; UnsigPos = ''
END CASE
- SigInfo = XLATE('CONFIG','QUOTE_SIGS','','X')
BEGIN CASE
- CASE UnsigPos = 4 ; QualUsers = SigInfo
- CASE UnsigPos = 3 ; QualUsers = SigInfo
- CASE UnsigPos = 2 ; QualUsers = SigInfo
- CASE UnsigPos = 1 ; QualUsers = SigInfo
- CASE 1 ; QualUsers = ''
+ CASE UnsigPos = 4 ; Qualified = (MemberOf(@USER4,'PSN_PROD'))
+ CASE UnsigPos = 3 ; Qualified = (MemberOf(@USER4,'PSN_PRE_PROD'))
+ CASE UnsigPos = 2 ; Qualified = (MemberOf(@USER4,'PSN_QUAL'))
+ CASE UnsigPos = 1 ; Qualified = (MemberOf(@USER4,'PSN_PRE_QUAL'))
+ CASE 1 ; Qualified = FALSE$
END CASE
- LOCATE @USER4 IN QualUsers USING @VM SETTING Pos THEN
+ If Qualified EQ TRUE$ THEN
Valid = Dialog_Box( 'QUOTE_SIG_PWD_ENTRY', @WINDOW, @USER4:@VM:XLATE( 'LSL_USERS', @USER4, LSL_USERS_PASSWORD$, 'X' ) )
END ELSE
ErrorMsg = 'Current user is not an authorized ':UnsignMode:' signer.'
@@ -1497,7 +1529,6 @@ UnsignCurrMode:
RETURN
END
- Valid = Dialog_Box( 'QUOTE_SIG_PWD_ENTRY', @WINDOW, @USER4:@VM:XLATE( 'LSL_USERS', @USER4, LSL_USERS_PASSWORD$, 'X' ) )
IF Valid = 1 THEN
CurrDate = OCONV(Date(),'D4/')