diff --git a/LSL2/STPROC/COMM_WO_PROD_EPI.txt b/LSL2/STPROC/COMM_WO_PROD_EPI.txt index f878b0b..4c28dd5 100644 --- a/LSL2/STPROC/COMM_WO_PROD_EPI.txt +++ b/LSL2/STPROC/COMM_WO_PROD_EPI.txt @@ -794,7 +794,7 @@ CreateRDS: CassSubPartNo = WOMatRec CassSubInvID = '' ;* This isn't being used CassOrderItem = WOMatRec - + CassSubVendCode = WOMatRec WORec = XLATE('WO_LOG',WONo,'','X') @@ -845,7 +845,9 @@ CreateRDS: Parms := CassLotNo:@RM Parms := CassPartNo:@RM Parms := CassWaferQty:@RM - Parms := CassSubPartNo + Parms := CassSubPartNo:@RM + Parms := '':@RM ; // QXJ flag + Parms := CassSubVendCode RDSNo = obj_RDS('Create',Parms) @@ -1015,3 +1017,4 @@ RETURN + diff --git a/LSL2/STPROC/LOT_SERVICES.txt b/LSL2/STPROC/LOT_SERVICES.txt index 944d172..39c459a 100644 --- a/LSL2/STPROC/LOT_SERVICES.txt +++ b/LSL2/STPROC/LOT_SERVICES.txt @@ -28,7 +28,7 @@ LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' L Headers = 'Logging DTM' : @FM : 'Lot Id' : @FM : 'Event Type' : @FM : 'Operator' : @FM : 'Begin Wafer Qty' : @FM : 'End Wafer Qty' : @FM : 'Bonus Wafer Qty' : @FM : 'Reduce Wafer Qty' : @FM : 'Message' objLotEventLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$) -Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION' +Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD' Options LOT_TYPES = 'TW', 'RDS', 'WM_OUT', 'WM_IN' GoToService @@ -78,6 +78,145 @@ Service GenerateNewLotId(LotType) Response = NewLotID end service + +Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, VendorCode, Username, PrinterID, LotId) + ; //649491 , 03M6241, 814474, SP + CreatedLotNumber = '' + ErrorMessage = '' + Begin Case + Case LotType EQ 'RDS' + NewLotId = LotId + If NewLotId NE '' then + If RowExists('LOT', NewLotId) EQ False$ then + LotRec = '' + LotRec = LotType + LotRec = '' + LotRec = LotQty + LotRec = LotQty + LotRec = VendorPartNo + LotRec = VendorLotNo + LotRec = VendorCode + Database_Services('WriteDataRow', 'LOT', NewLotId, LotRec) + If Error_Services('HasError') then + ErrorMessage = 'Error in ':Service:' service. ':Error_Services('GetMessage') + end + end else + ErrorMessage = 'Error in ':Service:' service. LOT record "':NewLotId:'" already exists.' + end + end else + ErrorMessage = 'Error in ':Service:' service. No lot ID passed in.' + end + Case LotType EQ 'TW' + If ProdName NE '' then + TWProdID = Test_Wafer_Prod_Services('GetTestWaferProdIDsByPartName', ProdName) + If TWProdID NE '' then + If DCount(TWProdID, @VM) EQ 1 then + NewLotId = Lot_Services('GenerateNewLotId', 'TW');//Don't use this + If NewLotId NE '' then + If RowExists('LOT', NewLotId) then + LotRec = Database_Services('ReadDataRow', 'LOT', NewLotId) + //Ensure the lot record is empty + If LotRec EQ '' AND LotRec EQ '' AND LotRec EQ '' AND LotRec EQ '' then + LotRec = LotType + LotRec = TWProdID + LotRec = LotQty + LotRec = LotQty + LotRec = VendorPartNo + LotRec = VendorLotNo + LotRec = VendorCode + Database_Services('WriteDataRow', 'LOT', NewLotId, LotRec) + //Now Ensure that the written lot matches what was just written + LotRecCheck = Database_Services('ReadDataRow', 'LOT', NewLotId) + If LotRecCheck EQ LotRec then + //Lot Created successfully + CreatedLotNumber = NewLotId + If RowExists('LOT', CreatedLotNumber) then + Lot_Services('CreateInitialLotOperationRecords', CreatedLotNumber) + If Error_Services('NoError') then + //Check in at first operation + //Get Curr Operation(Should be first one in sequence) + ThisLotCurrOpId = Lot_Services('GetLotCurrOperation', CreatedLotNumber) + If ThisLotCurrOpId NE '' then + Lot_Services('MoveInLot', NewLotId, LotQty, Username) + if Error_Services('NoError') then + //Set lot to open + Lot_Services('OpenLot', CreatedLotNumber) + if Error_Services('NoError') then + If PrinterID NE 'WEB' then + //If PrinterID is set to WEB this means the request comes from OI_Wizard and the client is going to handle printing. + Labeling_Services('PrintTestWaferLotLabel', CreatedLotNumber, Username, PrinterID) + If Error_Services('HasError') then + ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : CreatedLotNumber : ' , ' : Error_Services('GetMessage') + end + end + Lot_Services('MoveOutLot', NewLotId, LotQty, Username) + If Error_Services('NoError') then + Lot_Services('MoveInLot', NewLotId, LotQty, Username) + If Error_Services('HasError') then + ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, error getting current operation for lot: ' : NewLotId + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') + end + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, Lot attributes did not write correctly for lot: ' : NewLotId + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, Lot already had data, lot: ' : NewLotId + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, Created lot: ' : NewLotId : ' not found in LOT table.' + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, no lot id returned.' + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, ambiguous product passed to routine OR no matching products found.' + end + end else + ErrorMessage = 'Error in Create New Test Wafer Lot Process, product(':ProdName:') passed to routine not found.' + end + end else + ErrorMessage = 'Null value passed in for ProdID' + end + Case Otherwise$ + ErrorMessage = 'Error in ':Service:' service. Lot Type "':LotType:'" is not currently supported.' + End Case + + If ErrorMessage EQ '' then + LogData = '' + LogData<1> = LoggingDTM + LogData<2> = ProdName + LogData<3> = Username + LogData<4> = 'Successfully created lot id ' : CreatedLotNumber : ' of product type ' : ProdName '.' + Logging_Services('AppendLog', objTWCreationLog, LogData, @RM, @FM, False$) + end else + Error_Services('Add', ErrorMessage) + LogData = '' + LogData<1> = LoggingDTM + LogData<2> = ProdName + LogData<3> = Username + LogData<4> = ErrorMessage + Logging_Services('AppendLog', objTWCreationLog, LogData, @RM, @FM, False$) + end + Response = CreatedLotNumber + +End Service + + Service CreateNewTestWaferLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, VendorCode, Username, PrinterID) CreatedLotNumber = '' ErrorMessage = '' @@ -511,6 +650,7 @@ Service MoveOutLot(LotID, WaferQty, Operator) end service Service CreateLotEvent(LotId, LotType=LOT_TYPES, EventDatetime, EventType=EVENT_TYPES, EventNote, EventEquipmentId, ReduceWaferQty, BonusWaferQty, OperationId, OperatorId) + ErrorMessage = '' BeginWaferQty = '' EndWaferQty = '' @@ -574,7 +714,55 @@ Service CreateLotEvent(LotId, LotType=LOT_TYPES, EventDatetime, EventType=EVENT_ ErrorMessage = 'Error in Create Lot Event routine, Missing event type or Operator ID.' end Case LotType EQ 'RDS' - ErrorMessage = 'Error in Create Lot Event routine, Lot type RDS was passed to routine and this is currently not supported.' + If EventType NE '' AND OperatorId NE '' then + If RowExists('LOT', LotId) then + ValidId = False$ + NewEventId = '' + Loop + NewEventId = RTI_CreateGUID() + If Not(RowExists('LOT_EVENT', NewEventId)) then + ValidId = True$ + end + Until ValidId EQ True$ + Repeat + BeginWaferQty = Xlate('LOT', LotId, LOT_WAFER_QTY$, 'X') + If ReduceWaferQty NE '' then + If Num(ReduceWaferQty) then + EndWaferQty = BeginWaferQty - ReduceWaferQty + end + end + If BonusWaferQty NE '' then + If Num(BonusWaferQty) then + EndWaferQty = BeginWaferQty + BonusWaferQty + end + end + If Not(Num(EventDatetime)) then EventDatetime = IConv(EventDatetime, 'DT') + NewEventRec = '' + NewEventRec = LotId + NewEventRec = EventType + NewEventRec = EventDatetime + NewEventRec = EventNote + NewEventRec = EventEquipmentId + NewEventRec = ReduceWaferQty + NewEventRec = BonusWaferQty + NewEventRec = BeginWaferQty + NewEventRec = EndWaferQty + NewEventRec = OperationId + NewEventRec = OperatorId + NewEventSequence = Lot_Services('GetLotEventNextSequence', LotId) + NewEventRec = NewEventSequence + + Database_Services('WriteDataRow', 'LOT_EVENT', NewEventId, NewEventRec) + if Error_Services('HasError') then + ErrorMessage = 'Error in Create Lot Event routine, Error writing Lot Event record, ' : Error_Services('GetMessage') + end + end else + ErrorMessage = 'Error in Create Lot Event routine, Lot Id passed to routine was not found in LOT table.' + end + end else + ErrorMessage = 'Error in Create Lot Event routine, Missing event type or Operator ID.' + end + Case LotType EQ 'WM_OUT' ErrorMessage = 'Error in Create Lot Event routine, Lot type WM_OUT was passed to routine and this is currently not supported.' Case LotType EQ 'WM_IN' @@ -799,3 +987,4 @@ end service + diff --git a/LSL2/STPROC/OBJ_RDS.txt b/LSL2/STPROC/OBJ_RDS.txt index 25b8d82..e8d133f 100644 --- a/LSL2/STPROC/OBJ_RDS.txt +++ b/LSL2/STPROC/OBJ_RDS.txt @@ -21,7 +21,7 @@ DECLARE FUNCTION obj_RDS2, obj_RDS_Test, obj_WO_Mat, obj_Clean_Insp, obj_PRS_Pro DECLARE FUNCTION Logging_Services, Environment_Services, Error_Services, Signature_Services DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, obj_WO_Step, obj_RDS_Layer, obj_RDS_Test, obj_WM_In DECLARE SUBROUTINE Btree.Extract, RDS_React_Run, Environment_Services, Logging_Services, Error_Services, Send_Info -DECLARE SUBROUTINE SRP_Stopwatch, Database_Services +DECLARE SUBROUTINE SRP_Stopwatch, Database_Services, Lot_Services $INSERT MSG_EQUATES $INSERT WO_VERIFY_EQU @@ -264,6 +264,7 @@ Create: WaferQty = Parms[COL2()+1,@RM] SubPartNo = Parms[COL2()+1,@RM] QXJFlag = Parms[COL2()+1,@RM] + SubVendCd = Parms[COL2()+1,@RM] ErrorMsg = '' IF WONo = '' THEN ErrorMsg := 'Null Parameter "WONo" passed to routine. (':Method:')' @@ -499,7 +500,8 @@ Create: Logging_Services('AppendLog', objLog, LoggingDTM : ',' : @USER4 : ',' : RDSNo : ',' : 'Error writing new RDS record. Error code: ':errCode) Result = '' END ELSE - Result = RDSNo + Lot_Services('CreateNewLot', 'RDS', '', WaferQty, SubPartNo, LotNo, SubVendCd, @User4, '', RDSNo) + Result = RDSNo END * * * * * * * @@ -1471,3 +1473,4 @@ CalcThickTarget: RETURN + diff --git a/LSL2/STPROC/OBJ_WO_LOG.txt b/LSL2/STPROC/OBJ_WO_LOG.txt index 136a67b..d7bf85c 100644 --- a/LSL2/STPROC/OBJ_WO_LOG.txt +++ b/LSL2/STPROC/OBJ_WO_LOG.txt @@ -1089,13 +1089,14 @@ FOR WOStep = 1 TO WOStepCnt IF WOStepRec = '' THEN WOMatRec = XLATE('WO_MAT',WoNo:'*':CassNo,'','X') - CassLotNo = WOMatRec - CassWaferQty = WOMatRec - CassCustPartNo = WOMatRec - CassSubPartNo = WOMatRec - CassSubInvID = '' - CassOrderItem = WOMatRec - ReprocessedMat = WOMatRec + CassLotNo = WOMatRec + CassWaferQty = WOMatRec + CassCustPartNo = WOMatRec + CassSubPartNo = WOMatRec + CassSubInvID = '' + CassOrderItem = WOMatRec + ReprocessedMat = WOMatRec + CassSubVendCd = WOMatRec IF OrderNo = '' THEN QuoteNo = '' @@ -1121,7 +1122,8 @@ FOR WOStep = 1 TO WOStepCnt Parms := CassCustPartNo:@RM Parms := CassWaferQty:@RM Parms := CassSubPartNo:@RM - Parms := '' ;* QXJ Flag + Parms := '':@RM ;* QXJ Flag + Parms := CassSubVendCd Send_Info('Creating RDS for Cass No: ':CassNo:'...') ;** - Messaging - ** @@ -3016,3 +3018,4 @@ RETURN + diff --git a/LSL2/STPROC/QA_SERVICES.txt b/LSL2/STPROC/QA_SERVICES.txt index 419a0fd..d131ac4 100644 --- a/LSL2/STPROC/QA_SERVICES.txt +++ b/LSL2/STPROC/QA_SERVICES.txt @@ -143,7 +143,7 @@ Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_ Declare subroutine Set_Status, Sleepery, Winyield, Yield, SRP_COM, QA_Services, Logging_Services, Obj_RDS Declare subroutine Validate, obj_WO_Mat, obj_WO_Mat_Log, obj_React_Status, Record_Lock, obj_React_State, obj_Post_Log Declare subroutine RDS_Services, obj_WO_React, RDS_React_Run, Signature_Services, SQL_Services, SRP_Stopwatch -Declare subroutine Override_Services, Reactor_Services +Declare subroutine Override_Services, Reactor_Services, Lot_Services Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services Declare function Min, Max, SRPSendMail, Btree.Extract, GetTickCount, HTTPClient_Services, Obj_RDS, SQL_Services @@ -2517,6 +2517,8 @@ Service SignLoadStage(RDSNo, Username, WaferQty, LLSide, ScanEntry) Error_Services('Set', ErrorMsg) Response = False$ return + end else + Lot_Services('CreateLotEvent', RDSNo, 'RDS', Datetime(), 'LOAD', 'Load stage signed', Reactor, '', '', '', Username) end IF ReactorType NE 'EPP' THEN @@ -2541,7 +2543,6 @@ Service SignLoadStage(RDSNo, Username, WaferQty, LLSide, ScanEntry) SigTime = RDSRec owmParms = WONo:@RM:CassNo:@RM:WOStep:@RM:'LOAD':@RM:RDSSig:@RM:SigDate:' ':SigTime * Sets LOAD signature -* obj_WO_Mat('SetSignature',owmParms) IF Get_Status(errCode) THEN ErrorMsg = 'Process Error: Error calling obj_WO_Mat("SetSignature"). Error code: ':errCode Error_Services('Set', ErrorMsg) @@ -2659,10 +2660,6 @@ Service SignLoadStage(RDSNo, Username, WaferQty, LLSide, ScanEntry) IdleTime = obj_React_Status('ReactorLoad',Reactor:@RM:WONo:@RM:InCassettes:@RM:LoadDTM:@RM:RDSNo) IF Get_Status(errCode) THEN -* ErrorMsg = 'Process Error: Error calling obj_React_Status("ReactorLoad"). Error code: ':errCode -* Error_Services('Set', ErrorMsg) -* Response = False$ -* Return LogData = '' LogData<1> = LoggingDTM LogData<2> = @User4 @@ -3904,3 +3901,4 @@ return + diff --git a/LSL2/STPROC/RDS_ACTIONS.txt b/LSL2/STPROC/RDS_ACTIONS.txt index 49493d8..be8a596 100644 --- a/LSL2/STPROC/RDS_ACTIONS.txt +++ b/LSL2/STPROC/RDS_ACTIONS.txt @@ -58,12 +58,13 @@ $Insert QA_MET_EQUATES $Insert PRS_STAGE_EQUATES $Insert WO_MAT_EQUATES $Insert WO_MAT_QA_EQUATES +$Insert LOT_EVENT_EQUATES Equ COMMA$ to ',' -Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Services, Environment_Services, SRP_Math -Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services, obj_WO_Mat -Declare function Rds_Services +Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Services, Environment_Services +Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services +Declare function Rds_Services, SRP_DateTime, SRP_Math, obj_WO_Mat, Lot_Services, SRP_Array Declare subroutine Error_Services, Database_Services, Logging_Services, Set_Status, Schedule_Services Declare subroutine Work_Order_Services, Material_Services, Set_FSError @@ -86,8 +87,6 @@ Headers = 'Logging DTM' : @FM : 'Results' ColumnWidths = 20 : @FM : 100 objLog2 = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) - - If KeyID then GoSub Initialize_System_Variables Begin Case @@ -691,6 +690,46 @@ WRITE_RECORD_PRE: PostDTM = IConv(OConv({POST_EPI_SIG_DATE}, 'D'):' ':OConv({POST_EPI_SIG_TIME}, 'MT'), 'DT') FQADTM = IConv(OConv({SUP_VER_SIG_DATE}, 'D'):' ':OConv({SUP_VER_SIG_TIME}, 'MT'), 'DT') + If NewLoadSig EQ '' then + // Audit the LOT_EVENT table for missing LOAD event (i.e., signature) + If RowExists('LOT', RDSNo) then + LotEvents = Lot_Services('GetLotEventsInSequence', RDSNo) + If LotEvents NE '' then + LotEventsRev = SRP_Array('Reverse', LotEvents, @FM) + LotEventsTypesRev = Xlate('LOT_EVENT', LotEventsRev, LOT_EVENT_LOT_EVENT_TYPE$, 'X') + If LotEventsTypesRev NE '' then + Done = False$ + For each LotEventType in LotEventsTypesRev using @FM setting EventPos + Begin Case + Case LotEventType EQ 'LOAD' + Done = True$ + If NewLoadSig EQ '' then + // Load signature is missing from RDS record + NewLoadSig = Xlate('LOT_EVENT', LotEventsRev, LOT_EVENT_EVENT_OPERATOR_ID$, 'X') + NewLoadSigDtm = Xlate('LOT_EVENT', LotEventsRev, LOT_EVENT_EVENT_DATETIME$, 'X') + NewLoadDate = SRP_DateTime("Date", NewLoadSigDtm) + NewLoadTime = SRP_DateTime("Time", NewLoadSigDtm) + Record = NewLoadSig + Record = NewLoadDate + Record = NewLoadTime + LogData = '' + LogData<1> = LoggingDTM + LogData<2> = @User4 + LogData<3> = RDSKeyID + LogData<4> = 'Detected missing LOAD signature from RDS record. Restored signature from LOT_EVENT table.' + Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) + end + Case LotEventType EQ 'UNSIGN_LOAD' + Done = True$ + // No need to check for missing load signature + End Case + Until Done + Next LotEventType + end + end + end + end + Begin Case Case LoadDTM NE '' and UnloadDTM EQ '' and UnloadEx1DTM EQ '' // Cassette still running... @@ -1005,4 +1044,3 @@ Restore_System_Variables: return - diff --git a/LSL2/STPROC/RDS_EVENTS.txt b/LSL2/STPROC/RDS_EVENTS.txt index 35817a2..c4e7687 100644 --- a/LSL2/STPROC/RDS_EVENTS.txt +++ b/LSL2/STPROC/RDS_EVENTS.txt @@ -86,8 +86,10 @@ EQU READONLY_GREEN$ TO 192 + (220*256) + (192*65536) Declare subroutine ErrMsg, Set_Status, obj_WO_Mat, obj_WO_Mat_Log, obj_RDS, Set_Property, Send_Event, Database_Services Declare subroutine Dialog_Box, Qa_Services, Obj_React_Ll, Start_Window, obj_React_Status, Reactor_Services, Rds_Services +Declare subroutine Lot_Services Declare function Dialog_Box, Msg, MemberOf, obj_WO_Mat, Database_Services, Get_Property, obj_React_Status, Get_Status Declare function QA_Services, Database_Services, Rds_Services, Obj_Calendar, Override_Log_Services, Max, Supplement_Services +Declare function Datetime SubclassInfo = Form_Services('FindSubclassControl') Subclass = SubclassInfo<1> @@ -396,23 +398,17 @@ Event PUB_SIGN.CLICK() ErrMsg(ErrorMessage) Return 0 end + // 3. Lead/Supervisor/Engineer/EngTech override Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4 : @FM : 'LEAD' : @VM : 'SUPERVISOR':@VM:'ENGINEER':@VM:'ENG_TECH') Valid = Response<1> OverrideUser = Response<2> + If Valid then - // 4. Remove RDS Unload signature, date, and time - Set_Property(@Window:'.OP_IN', 'TEXT', '') - Set_Property(@Window:'.OP_IN_NAME', 'TEXT', '') - Set_Property(@Window:'.OP_IN_DATE', 'TEXT', '') - Set_Property(@Window:'.OP_IN_TIME', 'TEXT', '') - IOOptions = Get_Property(@Window, 'IOOPTIONS') - IOOptions<6> = True$ - Set_Property(@Window, 'IOOPTIONS', IOOptions) - Send_Event(@Window, 'WRITE') - IOOptions<6> = False$ - Set_Property(@Window, 'IOOPTIONS', IOOptions) - // 5. Remove WO_MAT Unload signature, date, and time + + Lot_Services('CreateLotEvent', RDSNo, 'RDS', Datetime(), 'UNSIGN_LOAD', 'Load stage unsigned', Reactor, '', '', '', @User4) + + // 4. Remove WO_MAT Unload signature, date, and time WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) SigProf = WOMatRec Sigs = WOMatRec @@ -424,7 +420,8 @@ Event PUB_SIGN.CLICK() WOMatRec = SigDTMs obj_React_Status('HandleLoadUnsign',Reactor:@RM:WONo:@RM:CassNo:@RM:RDSNo:@RM:OverrideUser) end - // 6. Remove '1LOAD' material log entry (i.e. WO_MAT columns) + + // 5. Remove '1LOAD' material log entry (i.e. WO_MAT columns) InvActions = WOMatRec Locate '1LOAD' in InvActions using @VM setting vPos then WOMatRec = Delete(WOMatRec, 0, vPos, 0) @@ -439,10 +436,24 @@ Event PUB_SIGN.CLICK() end Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$) + // 6. Remove RDS Unload signature, date, and time + // NOTE: This needs to occur before item #5 to avoid RDS_ACTIONS restoring the load signature + Set_Property(@Window:'.OP_IN', 'TEXT', '') + Set_Property(@Window:'.OP_IN_NAME', 'TEXT', '') + Set_Property(@Window:'.OP_IN_DATE', 'TEXT', '') + Set_Property(@Window:'.OP_IN_TIME', 'TEXT', '') + IOOptions = Get_Property(@Window, 'IOOPTIONS') + IOOptions<6> = True$ + Set_Property(@Window, 'IOOPTIONS', IOOptions) + Send_Event(@Window, 'WRITE') + IOOptions<6> = False$ + Set_Property(@Window, 'IOOPTIONS', IOOptions) + Reactor = Get_Property(@Window:'.REACTOR', 'TEXT') Rds_Services('AddComment', RDSNo, 'Load Stage Unsigned from Reactor ' : Reactor) ReactorRec = Database_Services('ReadDataRow', 'REACTOR', Reactor) PreviousRotrOverrideRds = ReactorRec + // Check if ROTR override was preformed when signing this load If (PreviousRotrOverrideRds EQ RDSNo) then // Reset the override flag @@ -456,7 +467,8 @@ Event PUB_SIGN.CLICK() If ReactorType EQ 'EPP' then Reactor_Services('DecrementWfrMetrics', RDSNo) end - Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign') + Set_Property(@Window:'.PUB_SIGN', 'TEXT', 'Sign') + end else Return 0 end @@ -659,3 +671,4 @@ return +