From ce2131305422d8e92ceb7c2d63757eda47b2cbd4 Mon Sep 17 00:00:00 2001 From: "Infineon\\StieberD" Date: Thu, 10 Oct 2024 13:02:36 -0700 Subject: [PATCH] restored supplement notifications --- LSL2/STPROC/NDW_RDS_SUPPLEMENT_EVENTS.txt | 21 +- LSL2/STPROC/NDW_REMOVE_SUPPLEMENTS_EVENTS.txt | 380 +++++++++--------- LSL2/STPROC/SUPPLEMENT_SERVICES.txt | 168 ++++---- 3 files changed, 293 insertions(+), 276 deletions(-) diff --git a/LSL2/STPROC/NDW_RDS_SUPPLEMENT_EVENTS.txt b/LSL2/STPROC/NDW_RDS_SUPPLEMENT_EVENTS.txt index 5e9d486..84a182a 100644 --- a/LSL2/STPROC/NDW_RDS_SUPPLEMENT_EVENTS.txt +++ b/LSL2/STPROC/NDW_RDS_SUPPLEMENT_EVENTS.txt @@ -366,22 +366,28 @@ return SaveSupps: - ChangeCount = Dcount(OrigSelPos, @FM) - For I =1 to ChangeCount + Instructions = '' + RDSNotifyList = '' + ChangeCount = Dcount(OrigSelPos, @FM) + For I = 1 to ChangeCount CurrRowNum = OrigSelPos CurrRow = RDSList LotSupps = CurrRow<1,15> Swap CRLF with @FM in LotSupps SuppCount = Dcount(LotSupps, @FM) For J = 1 to SuppCount - ThisLot = CurrRow<1,5> - ThisStage = Field(LotSupps, ':', 1) - ThisSupp = Field(LotSupps, ': ', 2) - ThisSupp = TrimF(ThisSupp) - ret = Supplement_Services('CreateSupplement', 'RDS', ThisLot, ThisStage, ThisSupp, @USER4) + ThisLot = CurrRow<1,5> + RDSNotifyList<-1> = ThisLot + ThisStage = Field(LotSupps, ':', 1) + ThisSupp = Field(LotSupps, ': ', 2) + ThisSupp = TrimF(ThisSupp) + ret = Supplement_Services('CreateSupplement', 'RDS', ThisLot, ThisStage, ThisSupp, @User4) + Instructions = ThisSupp Next J Next I + If RDSNotifyList NE '' then Supplement_Services('SendNotifications', RDSNotifyList, 'Created', Instructions, @User4) + return @@ -404,4 +410,3 @@ EnableButtons: return - diff --git a/LSL2/STPROC/NDW_REMOVE_SUPPLEMENTS_EVENTS.txt b/LSL2/STPROC/NDW_REMOVE_SUPPLEMENTS_EVENTS.txt index cc87d86..ca65cb9 100644 --- a/LSL2/STPROC/NDW_REMOVE_SUPPLEMENTS_EVENTS.txt +++ b/LSL2/STPROC/NDW_REMOVE_SUPPLEMENTS_EVENTS.txt @@ -1,189 +1,191 @@ -Function NDW_Remove_Supplements_Events(CtrlEntId, Event, @PARAMS) -/*********************************************************************************************************************** - - This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written - permission from Infineon. - - Name : NDW_Remove_Supplements_Events - - Description : This function acts as a commuter module for all events related to this window. - - Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the - application-specific promoted event handler. This makes it possible to add QuickEvents that need to - execute Basic+ logic without having use the Form Designer to make the association, although this is - limited to the events which are currently promoted. - - If the form needs to call the commuter module directly then the QuickEvent parameters should be - formatted like this: - - '@SELF','@EVENT',['@PARAM1','@PARAMx'] - - Parameters : - CtrlEntId [in] -- The fully qualified name of the control calling the promoted event - Event [in] -- The event being executed. See the Notes section regarding "PRE" events - Param1-15 [in] -- Additional event parameter holders - EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in - EVENT_SETUP insert - - History : (Date, Initials, Notes) - 05/24/18 djs Created initial commuter module. - -***********************************************************************************************************************/ - -#pragma precomp SRP_PreCompiler -#Window NDW_ADD_SUPPLEMENT - -$insert APP_INSERTS -$insert EVENT_SETUP -$insert MSG_EQUATES -$Insert SUPPLEMENTS_EQUATES - -Declare subroutine SRP_Show_Window, Supplement_Services -Declare function SRP_Array, Supplement_Services - -SubclassInfo = Form_Services('FindSubclassControl') -Subclass = SubclassInfo<1> - -// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler. -If Event EQ 'OLE' then - Transfer Event to OIEvent - Transfer Param1 to Event - Transfer Param2 to Param1 - Transfer Param3 to Param2 -* Transfer Param4 to Param3 -* Transfer Param5 to Param4 -* Transfer Param6 to Param5 -* Transfer Param7 to Param6 -* Transfer Param8 to Param7 -end - -GoToEvent Event for CtrlEntID - -Return EventFlow else EVENT_CONTINUE$ - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Events -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -Event WINDOW.CREATE(CreateParam) - - Result = '' - SupplInst = '' - GoSub Setup_OLE_Controls - If CreateParam NE '' then - Gosub PopulateStages - Set_Property(@Window : '.CMB_STAGE', 'LIST', StageList) - Set_Property(@Window : '.CMB_STAGE', 'SELPOS', 1) - Set_Property(@Window : '.PUB_OK', 'ENABLED', True$) - end - - Gosub CheckForSupplements - SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize) - -end event - - -Event WINDOW.CLOSE(CancelFlag) - - Result = '' - Result<1> = False$ - End_Dialog(@Window, Result) - -end event - -Event CMB_STAGE.CHANGED(CreateParam) - - Gosub CheckForSupplements - -end event - - - -Event PUB_OK.CLICK() - - Removal = '' - StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT') - StageSel = Field(StageSel, '-', 2) - For Each RDSKey in @ReCur1 Using @VM - Removal = Supplement_Services('DeleteSupplementByLotStage', @USER4, 'RDS', RDSKey, StageSel) - Next RDSKey - - If Error_Services('NoError') then - Result = True$ - End else - - End - End_Dialog(@Window, Result) - -end event - - -Event PUB_CANCEL.CLICK() - - Result = '' - Result<1> = False$ - End_Dialog(@Window, Result) - -end event - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Internal GoSubs -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -Setup_OLE_Controls: - - Qualify = '' - Qualify<1> = 1 - Qualify<4> = 0 - -return - -PopulateStages: - - DraftStageList = '' - PlainTextStages = '' - RDSList = SRP_Array("Rotate", CreateParam) - @ReCur1 = RDSList<5> - - For Each RDSKey in @ReCur1 Using @VM - RDSStageList = Supplement_Services('GetStagesForLot', 'RDS', RDSKey) - RDSStageList2 = RDSStageList<2> :@FM: RDSStageList<1> - RDSStageList3 = SRP_Array("Rotate", RDSStageList2) - DraftStageList := RDSStageList3 :@FM - Next RDSKey - Swap @VM with ' -' in DraftStageList - StageList = SRP_Array('Clean', DraftStageList, "TrimAndMakeUnique", @FM) -return - - - -CheckForSupplements: - - SuppFound = '' - StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT') - Stage = Field(StageSel, '-', 2) - For Each RDSKey in @ReCur1 Using @VM - SuppFound = Supplement_Services('GetSupplementsForLot', 'RDS', RDSKey, Stage) - Until SuppFound NE False$ - Next RDSKey - If SuppFound NE False$ then - SuppText = Xlate('SUPPLEMENTS', SuppFound, SUPPLEMENTS_SUPPL_TEXT$, 'X', '') - If SuppText NE '' then - Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', SuppText) - Set_Property(@Window : '.PUB_OK', 'ENABLED', True$) - end else - Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '') - Set_Property(@Window : '.PUB_OK', 'ENABLED', False$) - end - end else - Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '') - Set_Property(@Window : '.PUB_OK', 'ENABLED', False$) - end - -return - - - - +Function NDW_Remove_Supplements_Events(CtrlEntId, Event, @PARAMS) +/*********************************************************************************************************************** + + This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written + permission from Infineon. + + Name : NDW_Remove_Supplements_Events + + Description : This function acts as a commuter module for all events related to this window. + + Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the + application-specific promoted event handler. This makes it possible to add QuickEvents that need to + execute Basic+ logic without having use the Form Designer to make the association, although this is + limited to the events which are currently promoted. + + If the form needs to call the commuter module directly then the QuickEvent parameters should be + formatted like this: + + '@SELF','@EVENT',['@PARAM1','@PARAMx'] + + Parameters : + CtrlEntId [in] -- The fully qualified name of the control calling the promoted event + Event [in] -- The event being executed. See the Notes section regarding "PRE" events + Param1-15 [in] -- Additional event parameter holders + EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in + EVENT_SETUP insert + + History : (Date, Initials, Notes) + 05/24/18 djs Created initial commuter module. + +***********************************************************************************************************************/ + +#pragma precomp SRP_PreCompiler +#Window NDW_ADD_SUPPLEMENT + +$insert APP_INSERTS +$insert EVENT_SETUP +$insert MSG_EQUATES +$Insert SUPPLEMENTS_EQUATES + +Declare subroutine SRP_Show_Window, Supplement_Services +Declare function SRP_Array, Supplement_Services + +SubclassInfo = Form_Services('FindSubclassControl') +Subclass = SubclassInfo<1> + +// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler. +If Event EQ 'OLE' then + Transfer Event to OIEvent + Transfer Param1 to Event + Transfer Param2 to Param1 + Transfer Param3 to Param2 + * Transfer Param4 to Param3 + * Transfer Param5 to Param4 + * Transfer Param6 to Param5 + * Transfer Param7 to Param6 + * Transfer Param8 to Param7 +end + +GoToEvent Event for CtrlEntID + +Return EventFlow else EVENT_CONTINUE$ + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Events +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +Event WINDOW.CREATE(CreateParam) + + Result = '' + SupplInst = '' + GoSub Setup_OLE_Controls + If CreateParam NE '' then + Gosub PopulateStages + Set_Property(@Window : '.CMB_STAGE', 'LIST', StageList) + Set_Property(@Window : '.CMB_STAGE', 'SELPOS', 1) + Set_Property(@Window : '.PUB_OK', 'ENABLED', True$) + end + + Gosub CheckForSupplements + SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize) + +end event + + +Event WINDOW.CLOSE(CancelFlag) + + Result = '' + Result<1> = False$ + End_Dialog(@Window, Result) + +end event + + +Event CMB_STAGE.CHANGED(CreateParam) + + Gosub CheckForSupplements + +end event + + +Event PUB_OK.CLICK() + + Removal = '' + StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT') + StageSel = Field(StageSel, '-', 2) + For Each RDSKey in @ReCur1 Using @VM + Removal = Supplement_Services('DeleteSupplementByLotStage', @USER4, 'RDS', RDSKey, StageSel) + Next RDSKey + + RDSNotifyList = @ReCur1 + Swap @VM with @FM in RDSNotifyList + If RDSNotifyList NE '' then Supplement_Services('SendNotifications', RDSNotifyList, 'Deleted', '', @User4) + + If Error_Services('NoError') then + Result = True$ + End else + Result = '' + End + End_Dialog(@Window, Result) + +end event + + +Event PUB_CANCEL.CLICK() + + Result = '' + Result<1> = False$ + End_Dialog(@Window, Result) + +end event + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Internal GoSubs +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +Setup_OLE_Controls: + + Qualify = '' + Qualify<1> = 1 + Qualify<4> = 0 + +return + + +PopulateStages: + + DraftStageList = '' + PlainTextStages = '' + RDSList = SRP_Array("Rotate", CreateParam) + @ReCur1 = RDSList<5> + + For Each RDSKey in @ReCur1 Using @VM + RDSStageList = Supplement_Services('GetStagesForLot', 'RDS', RDSKey) + RDSStageList2 = RDSStageList<2> :@FM: RDSStageList<1> + RDSStageList3 = SRP_Array("Rotate", RDSStageList2) + DraftStageList := RDSStageList3 :@FM + Next RDSKey + Swap @VM with ' -' in DraftStageList + StageList = SRP_Array('Clean', DraftStageList, "TrimAndMakeUnique", @FM) + +return + + +CheckForSupplements: + + SuppFound = '' + StageSel = Get_Property(@Window : '.CMB_STAGE', 'TEXT') + Stage = Field(StageSel, '-', 2) + For Each RDSKey in @ReCur1 Using @VM + SuppFound = Supplement_Services('GetSupplementsForLot', 'RDS', RDSKey, Stage) + Until SuppFound NE False$ + Next RDSKey + If SuppFound NE False$ then + SuppText = Xlate('SUPPLEMENTS', SuppFound, SUPPLEMENTS_SUPPL_TEXT$, 'X', '') + If SuppText NE '' then + Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', SuppText) + Set_Property(@Window : '.PUB_OK', 'ENABLED', True$) + end else + Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '') + Set_Property(@Window : '.PUB_OK', 'ENABLED', False$) + end + end else + Set_Property(@Window : '.EDL_SUPPL_INST', 'TEXT', '') + Set_Property(@Window : '.PUB_OK', 'ENABLED', False$) + end + +return + diff --git a/LSL2/STPROC/SUPPLEMENT_SERVICES.txt b/LSL2/STPROC/SUPPLEMENT_SERVICES.txt index 0fb160a..275e820 100644 --- a/LSL2/STPROC/SUPPLEMENT_SERVICES.txt +++ b/LSL2/STPROC/SUPPLEMENT_SERVICES.txt @@ -50,13 +50,15 @@ Compile function Supplement_Services(@Service, @Params) $insert APP_INSERTS $Insert SERVICE_SETUP $Insert SUPPLEMENTS_EQUATES +$Insert RDS_EQUATES +$Insert NOTIFICATION_EQUATES Equ COMMA$ to ',' Declare function Database_Services, Supplement_Services, Rti_Createguid, SRP_Array, Datetime, Signature_Services Declare function Environment_Services, Logging_Services, Select_Into Declare subroutine Database_Services, Rds_Services, Supplement_Services, Logging_Services, Set_Status, SRP_Stopwatch -Declare subroutine Btree.Extract +Declare subroutine Btree.Extract, obj_Notes GoToService else Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' module.') @@ -92,6 +94,7 @@ Options STAGES = 'VER', 'PREC','PREI', 'PRES', 'LOAD', 'FWII', 'FWIS', 'UNLOAD', //---------------------------------------------------------------------------------------------------------------------- Service CreateSupplement(LotType=LOTTYPES, LotID, Stage=STAGES, SupplText, EntryUser) + EditEvent = '' WriteNeeded = True$ Stages = Supplement_Services('GetStagesForLot', LotType, LotID) If Stages NE False$ then @@ -99,14 +102,14 @@ Service CreateSupplement(LotType=LOTTYPES, LotID, Stage=STAGES, SupplText, Entry If LotType NE '' AND LotID NE '' AND SupplText NE '' AND EntryUser NE '' then Existing = Supplement_Services('GetSupplementsForLot', LotType, LotID, Stage) If StageCheck NE 0 Then - If Existing EQ FALSE$ then + If Existing EQ False$ then SupplID = Rti_Createguid() end else SupplID = Existing OrigText = Xlate("SUPPLEMENTS", SupplID, SUPPLEMENTS_SUPPL_TEXT$, 'X', '') If OrigText EQ SupplText then - WriteNeeded = FALSE$ - Response = FALSE$ + WriteNeeded = False$ + Response = False$ end end end @@ -121,22 +124,23 @@ Service CreateSupplement(LotType=LOTTYPES, LotID, Stage=STAGES, SupplText, Entry Database_Services('WriteDataRow', 'SUPPLEMENTS', SupplID, NewSupRec, True$, False$, False$) If Error_Services('NoError') then Response = SupplID - If Existing EQ FALSE$ then - Supplement_Services('LogSupplementChange', NewSupRec, 'Created', EntryUser) + If Existing EQ False$ then + EditEvent = 'Created' end else - Supplement_Services('LogSupplementChange', NewSupRec, 'Edited', EntryUser) + EditEvent = 'Edited' end + Supplement_Services('LogSupplementChange', NewSupRec, EditEvent, EntryUser) end else - Response = FALSE$ + Response = False$ Error_Services('Add', 'Error creating Supplement record.') end end end else - Response = FALSE$ + Response = False$ Error_Services('Add', 'LotType, LotID, Stage, SupplText or EntryUser was missing in the ' : Service : ' service.') end end else - Response = FALSE$ + Response = False$ Error_Services('Add', 'Supplements can only be added to stages associated with the specified lot.') end @@ -293,43 +297,6 @@ Service GetSupplementsForLot(LotType=LOTTYPES, LotID, Stage=STAGES) end service -//---------------------------------------------------------------------------------------------------------------------- -// UpdateSupplementText -// -// SupplID - [Required] -// NewText - [Required] -// EntryUser - [Required] -// -// Modify the text of an existing Supplement. -// -//---------------------------------------------------------------------------------------------------------------------- -Service UpdateSupplementText(SupplID, NewText, EntryUser) - - Response = False$ - If ( (SupplID NE '') and (NewText NE '') ) then - OldRec = Xlate('SUPPLEMENTS', SupplID, '', 'X', '') - If OldRec NE '' then - NewRec = OldRec - NewRec = NewText - NewRec = EntryUser - NewRec = Datetime() - Database_Services('WriteDataRow', 'SUPPLEMENTS', SupplID, NewRec, True$, False$, False$) - If Error_Services('NoError') then - Response = SupplID - Supplement_Services('LogSupplementChange', OldRec, 'Edited', EntryUser) - end else - Error_Services('Add', 'Error editing Supplement record.') - end - end else - Error_Services('Add', 'Record does not exist.') - end - end else - Error_Services('Add', 'SupplID or NewText was missing in the ' : Service : ' service.') - end - -end service - - //---------------------------------------------------------------------------------------------------------------------- // DeleteSupplementByByLotStage // @@ -352,7 +319,7 @@ Service DeleteSupplementByLotStage(EntryUser, LotType=LOTTYPES, LotID, Stage=STA Database_Services('DeleteDataRow', 'SUPPLEMENTS', SupplID, True$, False$) If Error_Services('NoError') then Supplement_Services('LogSupplementChange', SupplRec, 'Deleted', EntryUser) - Response = TRUE$ + Response = True$ end else Error_Services('Add', 'Error deleting Supplement record.') end @@ -367,37 +334,6 @@ Service DeleteSupplementByLotStage(EntryUser, LotType=LOTTYPES, LotID, Stage=STA end service -//---------------------------------------------------------------------------------------------------------------------- -// DeleteSupplementByID -// -// SupplID - [Required] -// EntryUser - [Required] -// -// Delete an existing Supplement. -// -//---------------------------------------------------------------------------------------------------------------------- -Service DeleteSupplementByID(SupplID, EntryUser) - - Response = False$ - If SupplID NE '' then - If RowExists('SUPPLEMENTS', SupplID) then - Database_Services('DeleteDataRow', 'SUPPLEMENTS', SupplID, True$, False$) - If Error_Services('NoError') then - Supplement_Services('LogSupplementChange', TestRec, 'Deleted', EntryUser) - Response = TRUE$ - end else - Error_Services('Add', 'Error deleting Supplement record.') - end - end else - Error_Services('Add', 'Record does not exist.') - end - end else - Error_Services('Add', 'SupplID was missing in the ' : Service : ' service.') - end - -end service - - //---------------------------------------------------------------------------------------------------------------------- // GetStagesForLot // @@ -603,3 +539,77 @@ Service FileLogSuccessfulSupp(LogText, EntryUser, EditEvent) end service + +Service SendNotifications(RDSList, EditEvent, Instructions, EntryUser) + + Response = True$ + ErrorMsg = '' + If RowExists('RDS', RDSList) then + Begin Case + Case ( (EditEvent _EQC 'Created') or (EditEvent _EQC 'Edited') ) + + PSN = Xlate('RDS', RDSList<1>, RDS_PROD_SPEC_ID$, 'X') + WoNo = Xlate('RDS', RDSList<1>, RDS_WO$, 'X') + ReactorNo = Xlate('RDS', RDSList<1>, RDS_REACTOR$, 'X'); + + Message = 'This Supplement was created or updated by ':OConv( EntryUser, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' ):' on ':OConv( Date(), 'D2/' ):' at ':OConv( Time(), 'MTH' ):'.' : CRLF$ + Message := 'WO# : ' : WoNo : CRLF$ + Message := 'PSN : ' : PSN : CRLF$ + Message := 'Reactor No : ' : ReactorNo : CRLF$ + Message := CRLF$ + Message := 'RDS #s : ' : CRLF$ + + For each RDSNo in RDSList using @FM + Message := RDSNo : ' - ': Instructions :CRLF$ + Next RDSNo + + Recipients = XLATE('NOTIFICATION','SUPPLEMENTS',NOTIFICATION_USER_ID$,'X') + SendFrom = 'System' + Subject = 'New or Updated Supplement Created for WO# ': WoNo + AttachWindow = '' + AttachKey = '' + SendToGroup = '' + + Parms = Recipients:@RM:SendFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup + obj_Notes('Create',Parms) + + Case (EditEvent _EQC 'Deleted') + + PSN = XLATE('RDS', RDSList<1>, RDS_PROD_SPEC_ID$, 'X') + WoNo = XLATE('RDS', RDSList<1>, RDS_WO$, 'X') + ReactorNo = XLATE('RDS', RDSList<1>, RDS_REACTOR$, 'X'); + + Message = 'This Supplement was removed by ':OConv( EntryUser, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' ):' on ':OConv( Date(), 'D2/' ):' at ':OConv( Time(), 'MTH' ):'.' : CRLF$ + Message := 'WO# : ' : WoNo : CRLF$ + Message := 'PSN : ' : PSN : CRLF$ + Message := 'Reactor No : ' : ReactorNo : CRLF$ + Message := CRLF$ + Message := 'RDS #s : ' : CRLF$ + For each RDSNo in RDSList using @FM + Message := RDSNo :CRLF$ + Next RDSNo + + Recipients = XLATE('NOTIFICATION','SUPPLEMENTS',NOTIFICATION_USER_ID$,'X') + SendFrom = 'System' + Subject = 'Supplement Removed for WO# ': WoNo + AttachWindow = '' + AttachKey = '' + SendToGroup = '' + + Parms = Recipients:@RM:SendFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup + obj_Notes('Create',Parms) + + Case Otherwise$ + ErrorMsg = 'Error in ':Service:' service. Invalid EditEvent "':EditEvent:'" passed in.' + End Case + end else + ErrorMsg = 'Error in ':Service:' service. Invalid RDS record passed in.' + end + + If ErrorMsg NE '' then + Error_Services('Add', ErrorMsg) + Response = False$ + end + +end service +