updated headers for nica order request Added reactor type support to nica checklists. Refactored flow logic to just use NICA_CHECKLISTS table. added feature flag support gated Feature Flags menu item to supervisors removed debug added auto comment for intr maint flows on reactor log, intr maint flow id to react servs form, and cancel order on unsign reactor log added exceptions for lamp and tc services, added control to edit flow id on react servs form, added auto-reactor log comment, added cancel order on unsign event removed debug modified NicaOrdersServices to use env variables for group resource name added logic to filter out service flow ids for servics with is_intrusive set to false, modified security group for feature flag menu, added ability to clear intr main flow id to react serv form removed unused equates
1684 lines
44 KiB
Plaintext
1684 lines
44 KiB
Plaintext
COMPILE FUNCTION COMM_REACTOR_LOG(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
|
|
/*
|
|
Commuter module for COMM_REACTOR_LOG (Reactor_Log) window
|
|
|
|
09/9/2013 - John C. Henry, J.C. Henry & Co., Inc.
|
|
*/
|
|
|
|
|
|
Declare Subroutine Set_Property, End_Dialog, Send_Event, Set_Status, Center_Window, Post_Event, Set_List_Box_Data
|
|
Declare Subroutine obj_Tables, Print_RootCause_Analysis, Database_Services, obj_React_Reads, obj_React_Event
|
|
Declare Subroutine ErrMsg, Send_Message, Set_Property, Send_Event, Btree.Extract, obj_AppWindow, Dialog_Box, Yield
|
|
Declare Subroutine obj_Notes, Security_Err_Msg, End_Window, Forward_Event, Start_Window, obj_Reactor_Log, obj_Post_Log
|
|
Declare Subroutine Reactor_Log_Events, Reactor_Log_Services, Error_Services, React_Servs_Services, Reactor_Services
|
|
Declare Subroutine Override_Log_Services, SRP_List, Nica_Orders_Services
|
|
|
|
Declare Function Get_Property, Get_Status, Dialog_Box, Utility, Popup, Collect.Ixvals, EntID, Repository, NextKey
|
|
Declare Function Send_Message, Msg, Security_Check, obj_React_Item, Select_Into, MemberOf, Create_Dialog, obj_Calendar
|
|
Declare Function GetAsyncKeyState, obj_Tables, MemberOf, Environment_Services, Database_Services, Rds_Services
|
|
Declare Function Reactor_Services, Error_Services, React_Servs_Services, Reactor_Log_Services, Send_Event, SRP_List
|
|
Declare Function Nica_Orders_Services
|
|
|
|
$Insert MSG_EQUATES
|
|
$Insert APPCOLORS
|
|
$Insert LSL_USERS_EQU
|
|
$Insert SECURITY_RIGHTS_EQU
|
|
$Insert POPUP_EQUATES
|
|
$Insert RTI_STYLE_EQUATES
|
|
$Insert RLIST_EQUATES
|
|
$Insert REACT_SERVS_EQUATES
|
|
$Insert REACT_PROB_CAT_EQUATES
|
|
$Insert REACTOR_LOG_EQUATES
|
|
$Insert REACT_SERV_CAT_EQUATES
|
|
$Insert REACT_ITEM_EQUATES
|
|
$Insert REACT_INJECTOR_EQUATES
|
|
$Insert REACT_STATE_EQUATES
|
|
$Insert EXCEL_EQU
|
|
$Insert REACTOR_PM_EQUATES
|
|
$Insert REACTOR_EQUATES
|
|
$Insert RDS_EQUATES
|
|
$Insert LOGICAL
|
|
|
|
EQU WM_USER$ TO 1024
|
|
EQU DTM_EDITCURCELL$ TO WM_USER$ + 95
|
|
EQU DT_BEGINEDIT$ TO 1
|
|
EQU DT_ENDEDIT$ TO 2
|
|
EQU DT_ABORTEDIT$ TO 3
|
|
|
|
EQU CRLF$ TO \0D0A\
|
|
EQU TAB$ TO \09\
|
|
|
|
EQU COL$PROB_CAT TO 1 ;* Used in .SERV_INFO
|
|
EQU COL$PROB_CAT_DESC TO 2
|
|
EQU COL$SERV_ID TO 3
|
|
EQU COL$SERV_ID_DESC TO 4
|
|
EQU COL$SCHED TO 5
|
|
EQU COL$ITEM_TYPE TO 6
|
|
EQU COL$ITEM_ID TO 7
|
|
EQU COL$ITEM_RI_NO TO 8
|
|
EQU COL$MFR_PART_NO TO 9
|
|
EQU COL$REV TO 10
|
|
EQU COL$SERIAL_NO TO 11
|
|
|
|
EQU COL$RI_NO TO 1 ;* Used in .REM_RI_NO and .INST_RI_NO
|
|
EQU COL$RI_SERIAL TO 2
|
|
EQU COL$RI_TYPE TO 3
|
|
EQU COL$RI_PART_NO TO 4
|
|
EQU COL$RI_PART_REV TO 5
|
|
EQU COL$RI_SERIAL_NO TO 6
|
|
EQU COL$RI_DISP TO 7
|
|
EQU COL$RI_DISPOSITION TO 8
|
|
EQU COL$RI_INST_RL_ID TO 9
|
|
EQU COL$INST_DTM TO 10
|
|
EQU COL$INST_RIH_KEY TO 11
|
|
|
|
EQU COL$INST_RHI_KEY TO 7
|
|
EQU COL$REM_RHI_KEY TO 9
|
|
|
|
EQU COL$CURR_RI_NO TO 1 ;* Used in .CURR_REACT_ITEMS
|
|
EQU COL$CURR_SERIAL TO 2
|
|
EQU COL$CURR_RI_TYPE TO 3
|
|
EQU COL$CURR_INST_DTM TO 4
|
|
EQU COL$CURR_DESC TO 5
|
|
EQU COL$CURR_RL_ID TO 6
|
|
|
|
LastServCol = COL$ITEM_ID
|
|
|
|
EQU COL$SIG TO 1
|
|
EQU COL$SIG_DTM TO 2
|
|
EQU COL$SIG_NOTE TO 3
|
|
|
|
EQU HIDDEN$ TO 32
|
|
EQU SKIPPED$ TO 4100
|
|
|
|
ErrTitle = 'Error in Reactor_Log'
|
|
ErrorMsg = ''
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE EntID = @WINDOW
|
|
BEGIN CASE
|
|
CASE Event = 'CREATE' ; GOSUB Create
|
|
CASE Event = 'CLEAR' ; GOSUB Clear
|
|
CASE Event = 'CLOSE' ; GOSUB Close
|
|
CASE Event = 'WRITE' ; GOSUB Write
|
|
CASE Event = 'READ' ; GOSUB Read
|
|
CASE Event = 'PAGE' ; GOSUB Page
|
|
CASE Event = 'VSCROLL' ; GOSUB VScroll
|
|
CASE Event = 'DELETE' ; GOSUB Delete
|
|
CASE Event[1,3] = 'QBF' ; GOSUB Refresh
|
|
|
|
END CASE
|
|
|
|
CASE EntID = @WINDOW:'.LOTO' AND Event = 'CLICK' ; GOSUB LOTOClick
|
|
CASE EntID = @WINDOW:'.LO_NA' AND Event = 'CLICK' ; GOSUB Refresh
|
|
CASE EntID = @WINDOW:'.LO_REVIEWED' AND Event = 'CLICK' ; GOSUB Refresh
|
|
CASE EntID = @WINDOW:'.LU_RL_NO' AND Event = 'CLICK' ; GOSUB LURLNo
|
|
CASE EntID = @WINDOW:'.NEW_BUTTON' AND Event = 'CLICK' ; GOSUB New
|
|
CASE EntID = @WINDOW:'.TAB' AND Event = 'CLICK' ; GOSUB Page
|
|
CASE EntID = @WINDOW:'.ADD_BUTTON' AND Event = 'CLICK' ; GOSUB CopyRemove
|
|
CASE EntID = @WINDOW:'.POST_BUTTON' AND Event = 'CLICK' ; GOSUB PostItems
|
|
CASE EntID = @WINDOW:'.TECH_SIGN' AND Event = 'CLICK' ; GOSUB TechSign
|
|
CASE EntID = @WINDOW:'.REACT_WAFER_CNT' AND Event = 'LOSTFOCUS' ; GOSUB Refresh
|
|
CASE EntID = @WINDOW:'.INJ_SETTING' AND Event = 'LOSTFOCUS' ; GOSUB SettingLF
|
|
CASE EntID = @WINDOW:'.INJ_SETTING_HIST' AND Event = 'CLICK' ; GOSUB InjHistory
|
|
CASE EntID = @WINDOW:'.TEMP_INJ_POST' AND Event = 'CLICK' ; GOSUB InjPost
|
|
CASE EntID = @WINDOW:'.PRINT_ROOT_CAUSE' AND Event = 'CLICK' ; GOSUB PrintRootCause
|
|
|
|
CASE EntID = @WINDOW:'.SERV_INFO'
|
|
BEGIN CASE
|
|
CASE Event = 'POSCHANGED' ; GOSUB SvcsPC
|
|
CASE Event = 'OPTIONS' ; GOSUB SvcsOptions
|
|
CASE Event = 'GOTFOCUS' ; GOSUB SvcsGF
|
|
CASE Event = 'LOSTFOCUS' ; GOSUB SvcsLF
|
|
CASE Event = 'DBLCLK' ; GOSUB SvcsDC
|
|
END CASE
|
|
|
|
CASE EntID = @WINDOW:'.SHIFT_SIG'
|
|
BEGIN CASE
|
|
CASE Event = 'POSCHANGED' ; GOSUB ShiftSigPC
|
|
CASE Event = 'DBLCLK' ; GOSUB ShiftSigDC
|
|
END CASE
|
|
|
|
CASE EntID = @WINDOW:'.REM_RI_NO'
|
|
|
|
BEGIN CASE
|
|
CASE Event = 'DBLCLK' ; GOSUB RemRIDC
|
|
CASE Event = 'OPTIONS' ; GOSUB RemOptions
|
|
|
|
END CASE
|
|
|
|
CASE EntID = @WINDOW:'.CURR_REACT_ITEMS'
|
|
|
|
BEGIN CASE
|
|
CASE Event = 'DBLCLK' ; GOSUB CurrRIDC
|
|
END CASE
|
|
|
|
CASE 1
|
|
|
|
ErrorMsg = 'Unknown Parameters ':EntID:' - ':Event:' passed to commuter'
|
|
ErrMsg(ErrorMsg)
|
|
|
|
END CASE
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
ErrMsg(ErrTitle:@SVM:ErrorMsg)
|
|
END
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
Create:
|
|
* * * * * * *
|
|
|
|
IF NOT(MemberOf(@USER4,'MAINTENANCE')) AND NOT(MemberOf(@USER4,'SUPERVISOR')) THEN
|
|
ErrMsg('Please contact the System Administrator if you require access to this window')
|
|
Send_Event(@WINDOW,'CLOSE')
|
|
RETURN
|
|
END
|
|
|
|
obj_Appwindow('Create',@WINDOW)
|
|
|
|
Reactor_Log_Events(@Window, 'CREATE')
|
|
|
|
IF MemberOf(@USER4, 'OI_SUPERUSER') THEN
|
|
Set_Property(@WINDOW:'.TEMP_INJ_POST','VISIBLE',1)
|
|
|
|
END ELSE
|
|
Set_Property(@WINDOW:'.TEMP_INJ_POST','VISIBLE',0)
|
|
END
|
|
|
|
Keys = Field( Parm1, '*', 1 )
|
|
IF LEN(Keys) THEN
|
|
IF INDEX(Keys,@VM,1) THEN
|
|
Set_Property(@WINDOW,'QBFLIST',Keys)
|
|
END ELSE
|
|
obj_AppWindow('LoadFormKeys',@WINDOW:@RM:Keys)
|
|
END
|
|
END
|
|
|
|
IF Security_Check( 'Reactor Log', Read$ ) THEN
|
|
Set_List_Box_Data( @WINDOW )
|
|
END ELSE
|
|
Security_Err_Msg( 'Reactor Log', Read$ )
|
|
Send_Event(@WINDOW,'CLOSE')
|
|
RETURN
|
|
END
|
|
|
|
IF NOT(Security_Check( 'Reactor Log', Edit$ )) THEN
|
|
Security_Err_Msg( 'Reactor Log', Edit$ )
|
|
END
|
|
|
|
IF NOT(MemberOf( @USER4, 'MAINTENANCE' )) THEN
|
|
Set_Property(@WINDOW:'.SERV_BUTTON_MULTI', 'VISIBLE', 0 )
|
|
END
|
|
|
|
col1Style = Send_Message(@WINDOW:'.SERV_INFO','STYLE_BY_POS',COL$PROB_CAT,0)
|
|
col1Style = bitor(col1Style,DTCS_OPTIONSBUTTON$)
|
|
col1Style = Send_Message(@WINDOW:'.SERV_INFO','STYLE_BY_POS',COL$PROB_CAT,0,col1Style)
|
|
|
|
col3Style = Send_Message(@WINDOW:'.SERV_INFO','STYLE_BY_POS',COL$SERV_ID,0)
|
|
col3Style = bitor(col3Style,DTCS_OPTIONSBUTTON$)
|
|
col3Style = Send_Message(@WINDOW:'.SERV_INFO','STYLE_BY_POS',COL$SERV_ID,0,col3Style)
|
|
|
|
col8Style = Send_Message(@WINDOW:'.SERV_INFO','STYLE_BY_POS',COL$ITEM_ID,0)
|
|
col8Style = bitor(col8Style,DTCS_OPTIONSBUTTON$)
|
|
col8Style = Send_Message(@WINDOW:'.SERV_INFO','STYLE_BY_POS',COL$ITEM_ID,0,col8Style)
|
|
|
|
colStyle = Send_Message(@WINDOW:'.REM_RI_NO','STYLE_BY_POS',COL$RI_DISP,0)
|
|
colStyle = bitor(colStyle,DTCS_OPTIONSBUTTON$)
|
|
colStyle = Send_Message(@WINDOW:'.REM_RI_NO','STYLE_BY_POS',COL$RI_DISP,0,colStyle)
|
|
|
|
ReactorType = Get_Property(@WINDOW:'.REACT_TYPE','TEXT')
|
|
IF ReactorType = 'EPP' THEN
|
|
Set_Property(@Window:'.CHB_WAFERS_REMOVED', 'VISIBLE', False$)
|
|
end
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Clear:
|
|
* * * * * * *
|
|
|
|
Page = 1
|
|
|
|
Send_Event(@WINDOW,'VSCROLL',Page)
|
|
Send_Event(@WINDOW,'PAGE',Page)
|
|
|
|
Reactor_Log_Events(@Window, 'CLEAR')
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Page:
|
|
* * * * * * *
|
|
|
|
Page = Get_Property(@WINDOW:'.TAB', 'VALUE')
|
|
|
|
Set_Property(@WINDOW,'VPOSITION', Page)
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
VScroll:
|
|
* * * * * * *
|
|
|
|
Page = Parm1
|
|
|
|
Set_Property(@WINDOW:'.TAB','VALUE', Page)
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
New:
|
|
* * * * * * *
|
|
|
|
RLId = Get_Property(@WINDOW:'.REACTOR_LOG_NO','DEFPROP')
|
|
|
|
IF RLId = '' THEN
|
|
NextRLId = NextKey('REACTOR_LOG')
|
|
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:NextRLId)
|
|
END
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
* * * * * * *
|
|
Close:
|
|
* * * * * * *
|
|
|
|
ParentWindow = Get_Property(@WINDOW,'@PARENT')
|
|
|
|
If ParentWindow = 'REACT_MODE_CHG' Then
|
|
Send_Event(ParentWindow:'.CANCEL','CLICK')
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
* * * * * * *
|
|
Write:
|
|
* * * * * * *
|
|
|
|
RLId = Get_Property(@WINDOW:'.REACTOR_LOG_NO','DEFPROP')
|
|
ChangeDt = Get_Property(@WINDOW:'.END_DATE','TEXT')
|
|
ChangeTm = Get_Property(@WINDOW:'.END_TIME','TEXT')
|
|
ReactHrs = Get_Property(@WINDOW:'.REACT_HRS_START','DEFPROP')
|
|
ReactWaferCnt = Get_Property(@WINDOW:'.REACT_WAFER_CNT','DEFPROP')
|
|
ReactNo = Get_Property(@WINDOW:'.REACTOR','DEFPROP')
|
|
Notes = Get_Property(@WINDOW:'.NOTES','DEFPROP')
|
|
|
|
IF ChangeDt NE '' AND ChangeTm NE '' THEN
|
|
|
|
ChangeDTM = ChangeDt:' ':ChangeTm
|
|
EnteredBy = @USER4
|
|
|
|
* Log new Reactor Read if the EndDate and EndTime if this record is newer than the last one logged for the reactor
|
|
|
|
IF ReactWaferCnt NE '' AND ReactNo NE '0' THEN
|
|
thisChangeDTM = ICONV(ChangeDTM,'DT')
|
|
|
|
LastWfrReadDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X')
|
|
|
|
IF thisChangeDTM > LastWfrReadDTM THEN
|
|
|
|
obj_React_Reads('Create',ReactNo:@RM:EnteredBy:@RM:ChangeDTM:@RM:ReactWaferCnt)
|
|
errCode = ''
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode)
|
|
END
|
|
END
|
|
END
|
|
|
|
* Log Maintenance event in Reactor Event
|
|
|
|
oREParms = ReactNo:@RM
|
|
oREParms := ChangeDTM:@RM
|
|
oREParms := 'MTC':@RM
|
|
oREParms := EnteredBy:@RM
|
|
oREParms := Notes:@RM
|
|
oREParms := '':@RM ;* Not a mode change
|
|
oREParms := XLATE('REACTOR',ReactNo,'CURR_MODE','X') ;* Curr reactor mode
|
|
|
|
obj_React_Event('Create',oREParms)
|
|
|
|
END ;* End of check for ChangeDt and ChangeTm filled in
|
|
|
|
ROTRCheckStatus = Get_Property(@Window:'.CHECK_BOX_ROTR', 'CHECK')
|
|
If ROTRCheckStatus EQ False$ then
|
|
// Prompt user whether or not maintenance event is ROTR related
|
|
MsgHead = 'ROTR Reminder'
|
|
MsgText = 'Is this maintenance ROTR related?'
|
|
|
|
Response = Msg(@Window,'','YESNO','',MsgHead:@FM:MsgText)
|
|
|
|
If Response EQ True$ then
|
|
Set_Property(@Window:'.CHECK_BOX_ROTR', 'CHECK', True$)
|
|
end
|
|
end
|
|
|
|
IOOptions = Get_Property(@Window, 'IOOPTIONS')
|
|
IOOptions<6> = True$
|
|
Set_Property(@Window, 'IOOPTIONS', IOOptions)
|
|
Reactor_Log_Events(@Window, 'WRITE')
|
|
Reactor_Log_Events(@Window, 'READ')
|
|
Result = 1
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Delete:
|
|
* * * * * * *
|
|
|
|
* Pre-Event called from DELETE event handler on window
|
|
|
|
IF Security_Check( 'Reactor Log', Delete$ ) THEN
|
|
Result = 1
|
|
END ELSE
|
|
Security_Err_Msg( 'Reactor Log', Delete$ )
|
|
Result = 0
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Read:
|
|
* * * * * * *
|
|
|
|
* Check for and Set Entry data if null *
|
|
|
|
EntryID = Get_Property(@WINDOW:'.ENTRY_ID','DEFPROP')
|
|
|
|
IF EntryID = '' THEN
|
|
Set_Property(@WINDOW:'.ENTRY_ID','INVALUE',@USER4)
|
|
Set_Property(@WINDOW:'.ENTRY_DATE','DEFPROP',OCONV(Date(),'D4/'))
|
|
END
|
|
|
|
* Check for and Set Start data if null *
|
|
|
|
IF Get_Property(@WINDOW:'.START_DATE','DEFPROP') = '' THEN
|
|
|
|
Set_Property(@WINDOW:'.START_DATE','DEFPROP',OCONV(Date(),'D4/'))
|
|
Set_Property(@WINDOW:'.START_TIME','DEFPROP',OCONV(Time(),'MTS'))
|
|
|
|
END
|
|
|
|
* Check for any pending Reactor PM records *
|
|
|
|
|
|
ReactNo = Get_Property(@WINDOW:'.REACTOR','DEFPROP')
|
|
|
|
IF RowExists('REACTOR',ReactNo) THEN
|
|
|
|
TechSig = Get_Property(@WINDOW:'.TECH_SIG','TEXT')
|
|
EndDate = Get_Property(@WINDOW:'.END_DATE','TEXT')
|
|
IDs = ''
|
|
|
|
IF ReactNo NE '' AND EndDate = '' THEN
|
|
|
|
* Check for PM's due
|
|
|
|
ReactPMIds = ''
|
|
Today = Date()
|
|
AWeekAndADayFromNow = OCONV(Today + 8, 'D2/' )
|
|
|
|
Statement = 'SELECT REACTOR_PM WITH COMPLETE_DATE = ""'
|
|
Statement := ' AND WITH NEXT_DONE < ':QUOTE( AWeekAndADayFromNow )
|
|
Statement := ' AND WITH REACTOR = ':ReactNo
|
|
Statement := ' BY NEXT_DONE'
|
|
|
|
RList( Statement, TARGET_ACTIVELIST$, '', '', '' )
|
|
|
|
@RN.COUNTER = 0
|
|
|
|
Done = 0
|
|
LOOP
|
|
READNEXT ReactPMId ELSE Done = 1
|
|
UNTIL Done
|
|
ReactPMIds<-1> = ReactPMId
|
|
REPEAT
|
|
|
|
IF ReactPMIds NE '' THEN
|
|
Dialog_Box( 'REACTOR_LOG_TODO', @WINDOW, ReactPMIds:CHAR(245):ReactNo)
|
|
END
|
|
END ;* End of check for ReactNo and no End Date)
|
|
|
|
|
|
END
|
|
|
|
GOSUB CalcRIHKeys
|
|
|
|
Reactor_Log_Events(@Window, 'READ')
|
|
|
|
|
|
* * * * * * *
|
|
Refresh:
|
|
* * * * * * *
|
|
|
|
LOReviewed = Get_Property(@WINDOW:'.LO_REVIEWED','CHECK')
|
|
LONotApp = Get_Property(@WINDOW:'.LO_NA','CHECK')
|
|
|
|
IF LOReviewed OR LONotApp THEN
|
|
Set_Property(@WINDOW:'.TECH_SIGN','ENABLED',1)
|
|
END ELSE
|
|
Set_Property(@WINDOW:'.TECH_SIGN','ENABLED',0)
|
|
END
|
|
|
|
TechSig = Get_Property(@WINDOW:'.TECH_SIG','DEFPROP')
|
|
PostSig = Get_Property(@WINDOW:'.RI_POST_BY','DEFPROP')
|
|
|
|
IF TechSig NE '' OR PostSig NE '' THEN
|
|
Set_Property(@WINDOW:'.REACTOR','ENABLED',0)
|
|
END ELSE
|
|
Set_Property(@WINDOW:'.REACTOR','ENABLED',1)
|
|
END
|
|
|
|
IF PostSig = '' THEN
|
|
RemText = 'Items Being Removed'
|
|
InstText = 'Items Being Installed'
|
|
ButtonText = 'Post Items'
|
|
END ELSE
|
|
RemText = 'Items Removed'
|
|
InstText = 'Items Installed'
|
|
ButtonText = 'Unpost Items'
|
|
END
|
|
|
|
Ctrls = @WINDOW:'.POST_BUTTON':@RM ; Props = 'TEXT':@RM ; Vals = ButtonText:@RM
|
|
Ctrls := @WINDOW:'.REMOVE_GROUP':@RM ; Props := 'TEXT':@RM ; Vals := RemText:@RM
|
|
Ctrls := @WINDOW:'.INST_GROUP' ; Props := 'TEXT' ; Vals := InstText
|
|
|
|
Set_Property(Ctrls,Props,Vals)
|
|
|
|
* Load ReactWfrCntEnd value ***************************************************
|
|
|
|
ItemArray = Get_Property(@WINDOW:'.SERV_INFO','DEFPROP')
|
|
ItemTypes = ICONV(ItemArray<COL$ITEM_TYPE>,'[CONV_CODE_DESC,REACT_ITEM_TYPE]')
|
|
|
|
StartWfrCnt = Get_Property(@WINDOW:'.REACT_WAFER_CNT','DEFPROP')
|
|
|
|
IF INDEX(ItemTypes,'T',1) THEN
|
|
EndWfrCnt = 0 ;* Tube being installed
|
|
Set_Property(@WINDOW:'.RESET_REMINDER','VISIBLE',1)
|
|
END ELSE
|
|
EndWfrCnt = StartWfrCnt ;* No tube change -> no reset
|
|
Set_Property(@WINDOW:'.RESET_REMINDER','VISIBLE',0)
|
|
END
|
|
|
|
Set_Property(@WINDOW:'.REACT_WFR_CNT_END','DEFPROP',EndWfrCnt) ;* New tubes start with zero wafers
|
|
|
|
* QBF buttons
|
|
|
|
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
|
|
|
|
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
|
|
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
|
|
END ELSE
|
|
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
|
|
END
|
|
|
|
Set_Property(Ctrls,Props,Vals)
|
|
|
|
* Turn edit table symbolic column backgrounds to green *
|
|
|
|
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
|
|
|
|
ETCtrls = ETSymbolics<1>
|
|
ETCols = ETSymbolics<2>
|
|
|
|
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
|
|
ETCtrl = ETCtrls<1,I>
|
|
ETList = Get_Property(ETCtrl,'LIST')
|
|
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
|
|
IF ETList<Line,1> NE '' THEN
|
|
FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '')
|
|
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$)
|
|
NEXT N
|
|
END
|
|
NEXT I
|
|
NEXT I
|
|
|
|
* CurrItems Flagged for removal
|
|
|
|
IF Get_Property(@WINDOW:'.RI_POST_BY','DEFPROP') ='' THEN
|
|
|
|
RemRINos = Get_Property(@WINDOW:'.REM_RI_NO','ARRAY')<COL$RI_NO>
|
|
|
|
IF RemRINos NE '' THEN
|
|
CurrRINos = Get_Property(@WINDOW:'.CURR_REACT_ITEMS','ARRAY')<COL$CURR_RI_NO>
|
|
|
|
RemCnt = COUNT(RemRINos,@VM) + (RemRINos NE '')
|
|
|
|
FOR I = 1 TO RemCnt
|
|
RemRINo = RemRINos<1,I>
|
|
LOCATE RemRINo IN CurrRINos USING @VM SETTING Pos THEN
|
|
FOR N = 1 TO COL$CURR_RL_ID
|
|
stat = Send_Message(@WINDOW:'.CURR_REACT_ITEMS','COLOR_BY_POS',N,Pos,YELLOW$)
|
|
NEXT N
|
|
END
|
|
|
|
NEXT I
|
|
END ;* End of check for RemRINos
|
|
END ;* End of check for RI Posted signature
|
|
|
|
GoSub FillServInfoCalcCols
|
|
GoSub ColorRemRiTable
|
|
|
|
Reactor_Log_Events(@Window, 'OMNIEVENT')
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LURLNo:
|
|
* * * * * * *
|
|
|
|
FocusControl = Parm1
|
|
FocusPos = Parm2
|
|
|
|
RetVal = Dialog_Box('REACTOR_LOG_QUERY',@WINDOW,'')
|
|
|
|
IF RetVal = '' THEN RETURN
|
|
|
|
CONVERT @FM TO @VM IN RetVal
|
|
|
|
TypeOver = ''
|
|
TypeOver<PMODE$> = 'K'
|
|
TypeOver<PDISPLAY$> = RetVal
|
|
|
|
RetVal = Popup( @WINDOW , TypeOver , 'REACTOR_LOG_QUERY' )
|
|
|
|
IF RetVal = '' THEN RETURN
|
|
|
|
IF INDEX(RetVal,@VM,1) THEN
|
|
Set_Property(@WINDOW,'QBFLIST',RetVal)
|
|
END ELSE
|
|
oaParms = RetVal:@RM:@WINDOW:'.':FocusControl
|
|
obj_Appwindow('LUValReturn',oaParms)
|
|
END
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
TechSign:
|
|
* * * * * * *
|
|
|
|
Action = Get_Property(@Window:'.TECH_SIGN', 'TEXT')
|
|
|
|
If Action EQ 'Sign' then
|
|
TechSig = Get_Property(@WINDOW:'.TECH_SIG','DEFPROP')
|
|
|
|
IF TechSig NE '' THEN
|
|
ErrMsg('Application Message':@SVM:'This log has already been signed.')
|
|
RETURN
|
|
END
|
|
|
|
AtRecord = Get_Property(@WINDOW,'ATRECORD')
|
|
ReactNo = AtRecord<REACTOR_LOG_REACTOR$>
|
|
|
|
wafersRemoved = Get_Property(@Window:'.CHB_WAFERS_REMOVED', 'CHECK')
|
|
If wafersRemoved EQ True$ then
|
|
RdsKeys = Reactor_Services('GetLoadedRds', ReactNo)
|
|
SelectedRdsKeys = ''
|
|
Begin Case
|
|
Case ((RdsKeys<1> NE '') and (RdsKeys<2> NE ''))
|
|
selectedLoadLocks = Dialog_Box("NDW_WAFERS_REMOVED_RDS_PROMPT", @Window)
|
|
|
|
For each selectedLoadLock in selectedLoadLocks using @VM
|
|
For idx = 1 to 2
|
|
rdsLoadLockSide = Xlate('RDS', RdsKeys<idx>, RDS_LOAD_LOCK_SIDE$, 'X')
|
|
If (rdsLoadLockSide _EQC selectedLoadLock) then
|
|
If (SelectedRdsKeys NE '') then SelectedRdsKeys := @VM
|
|
SelectedRdsKeys := RdsKeys<idx>
|
|
end
|
|
Next idx
|
|
Next selectedLoadLock
|
|
Case RdsKeys<1> NE ''
|
|
SelectedRdsKeys = RdsKeys<1>
|
|
Case RdsKeys<2> NE ''
|
|
SelectedRdsKeys = RdsKeys<2>
|
|
End Case
|
|
|
|
Set_Property(@Window:'.EDL_WAFERS_REMOVED_RDS', 'TEXT', SelectedRdsKeys)
|
|
end
|
|
|
|
PrevOptions = Get_Property(@Window, 'IOOPTIONS')
|
|
NewOptions = PrevOptions
|
|
NewOptions<6> = True$ ; // Do not clear the form on write
|
|
Set_Property(@Window, 'IOOPTIONS', NewOptions)
|
|
Send_Event(@Window, 'WRITE')
|
|
Set_Property(@Window, 'IOOPTIONS', PrevOptions)
|
|
ReactorlogNo = Get_Property(@Window:'.REACTOR_LOG_NO', 'TEXT')
|
|
|
|
Valid = Dialog_Box('QUOTE_SIG_PWD_ENTRY', @WINDOW, @USER4:@VM:XLATE( 'LSL_USERS', @USER4, LSL_USERS_PASSWORD$, 'X' ) )
|
|
|
|
If Valid then
|
|
Def = ""
|
|
Def<MCAPTION$> = "Signing Reactor Log..."
|
|
Def<MCOL$> = -2
|
|
Def<MROW$> = -2
|
|
Def<MTYPE$> = "U"
|
|
MsgUp = Msg(@window, Def)
|
|
|
|
SuccessfulSign = Reactor_Log_Services('SignReactorLog', ReactorLogNo, @USER4)
|
|
|
|
Msg(@window, MsgUp) ;* take down the message
|
|
|
|
If Not(SuccessfulSign) then
|
|
Error_Services('DisplayError')
|
|
ActiveRlNicaOrderIds = Nica_Orders_Services('GetActiveOrders', 'REACTOR_LOG', ReactorLogNo)
|
|
ActiveChecklist = (ActiveRlNicaOrderIds NE '')
|
|
If ActiveChecklist then
|
|
OverrideGroups = 'MAINTENANCE':@VM:'SUPERVISOR'
|
|
UserMsg = "Reactor Log PM must be processed in NICA. Override required from a member of "
|
|
UserMsg := "the MAINTENANCE or SUPERVISOR groups to bypass NICA."
|
|
UserVerification = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:OverrideGroups:@FM:'':@FM:UserMsg)
|
|
Override = UserVerification<1>
|
|
If Override EQ True$ then
|
|
ResponseComment = Dialog_Box('NDW_ADD_COMMENT', @WINDOW)<2>
|
|
ResponseComment = ''
|
|
ActiveRlNicaOrderTypes = Xlate('NICA_ORDERS', ActiveRlNicaOrderIds, 'ORDER_TYPE', 'X')
|
|
For each ActiveRlNicaOrderId in ActiveRlNicaOrderIds using @VM setting Idx
|
|
Nica_Orders_Services('CancelOrder', ActiveRlNicaOrderId)
|
|
If ResponseComment NE '' then ResponseComment := ', '
|
|
ResponseComment := ActiveRlNicaOrderTypes<0, Idx>
|
|
Next ActiveRlNicaOrderId
|
|
|
|
Override_Log_Services('Create', 'REACTOR_LOG', ReactorLogNo, UserVerification<2>, ResponseComment, 'REACTOR_LOG_PM')
|
|
|
|
SuccessfulSign = Reactor_Log_Services('SignReactorLog', ReactorLogNo, @USER4)
|
|
If Not(SuccessfulSign) then Error_Services('DisplayError')
|
|
|
|
SRP_List('Release', PmOrderList)
|
|
SRP_List('Release', PmTypeList)
|
|
end
|
|
end
|
|
Send_Event(@Window, 'READ')
|
|
RETURN
|
|
end
|
|
Send_Event(@Window, 'READ')
|
|
end else
|
|
ErrMsg('Application Message':@SVM:'Invalid user password.')
|
|
end
|
|
|
|
end else
|
|
|
|
// Unsign the reactor log
|
|
RLKey = Get_Property(@Window:'.REACTOR_LOG_NO', 'TEXT')
|
|
If RLKey NE '' then
|
|
Set_Property(@Window, 'SAVEWARN', False$)
|
|
|
|
Def = ""
|
|
Def<MCAPTION$> = "Unsigning Reactor Log..."
|
|
Def<MCOL$> = -2
|
|
Def<MROW$> = -2
|
|
Def<MTYPE$> = "U"
|
|
MsgUp = Msg(@window, Def)
|
|
|
|
Reactor_Log_Services('ClearSignature', RLKey)
|
|
|
|
Msg(@window, MsgUp) ;* take down the message
|
|
|
|
If Error_Services('NoError') then
|
|
Post_Event(@Window, 'READ')
|
|
end else
|
|
Error_Services('DisplayError')
|
|
end
|
|
end
|
|
end
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
InjPost:
|
|
* * * * * * *
|
|
|
|
* This is a temporary routine hooked to a temporary button for debugging JCH 2/13/2014
|
|
|
|
AtRecord = Get_Property(@WINDOW,'ATRECORD')
|
|
|
|
IF AtRecord<REACTOR_LOG_INJ_SETTING$> NE '' THEN
|
|
|
|
ReactNo = AtRecord<REACTOR_LOG_REACTOR$>
|
|
RLId = Get_Property(@WINDOW:'.REACTOR_LOG_NO','DEFPROP')
|
|
|
|
plParms = 'REACT_STATE':@RM
|
|
plParms := ReactNo:@RM
|
|
plParms := REACT_STATE_CURR_INJ_RL_ID$:@RM
|
|
plParms := RLId:@RM
|
|
obj_Post_Log('Create',plParms)
|
|
|
|
END ;* End of check for Injector Settings entered
|
|
|
|
Send_Event(@WINDOW,'WRITE')
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
SvcsGF:
|
|
* * * * * * *
|
|
|
|
ReactNo = Get_Property(@WINDOW:'.REACTOR','DEFPROP')
|
|
|
|
IF ReactNo = '' THEN
|
|
ErrMsg('Application Message':@SVM:'Reactor No is required')
|
|
Set_Property(@WINDOW:'.REACTOR','FOCUS',1)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
SvcsPC:
|
|
* * * * * * *
|
|
|
|
GoSub FillServInfoCalcCols
|
|
|
|
CtrlEntID = 'REACTOR_LOG.SERV_INFO'
|
|
|
|
PrevSelPos = Get_Property(CtrlEntID,'PREVSELPOS')
|
|
PrevCol = PrevSelPos<1>
|
|
PrevRow = PrevSelPos<2>
|
|
|
|
SelPos = Get_Property(CtrlEntID,'SELPOS')
|
|
CurCol = SelPos<1>
|
|
CurRow = SelPos<2>
|
|
|
|
ListData = Get_Property(CtrlEntID,'LIST')
|
|
ArrayData = Get_Property(CtrlEntID,'DEFPROP')
|
|
|
|
CurRowData = ListData<CurRow>
|
|
|
|
* Move Up to non-empty row or first row *
|
|
|
|
TestRow = CurRowData
|
|
CONVERT @VM TO '' IN TestRow
|
|
|
|
IF TestRow = '' THEN
|
|
CurLine = CurRow
|
|
LOOP
|
|
Col1Val = ListData<CurLine-1,1>
|
|
UNTIL Col1Val NE '' OR CurLine = 1
|
|
CurLine -=1
|
|
REPEAT
|
|
Set_Property(CtrlEntId,"SELPOS",1:@FM:CurLine)
|
|
|
|
END ELSE
|
|
BadCol = ''
|
|
Mesg = ''
|
|
|
|
BEGIN CASE
|
|
|
|
CASE CurCol > COL$PROB_CAT AND CurRowData<1,COL$PROB_CAT> = ''
|
|
Mesg = 'Please fill in the Prob Cat column.'
|
|
BadCol = COL$PROB_CAT
|
|
|
|
CASE CurCol > COL$SERV_ID AND CurRowData<1,COL$SERV_ID> = ''
|
|
Mesg = 'Please fill in the Serv ID column.'
|
|
BadCol = COL$SERV_ID
|
|
|
|
CASE CurCol > COL$SCHED AND CurRowData<1,COL$SCHED> = ''
|
|
Mesg = 'Please fill in the Sched column.'
|
|
BadCol = COL$SCHED
|
|
|
|
END CASE
|
|
|
|
|
|
IF BadCol THEN
|
|
Msg('',Mesg)
|
|
Set_Property(CtrlEntID,'SELPOS',BadCol:@FM:CurRow)
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
CurrWindow = CtrlEntID[1,'.']
|
|
|
|
IF PrevCol = COL$PROB_CAT THEN
|
|
ProbCat = CurRowData<1,PrevCol>
|
|
|
|
If ProbCat = 44 Then ;* Added by dkk 4/8/15
|
|
|
|
NotesRequired = XLATE('REACT_PROB_CAT',ProbCat,REACT_PROB_CAT_NOTES$,'X')
|
|
|
|
IF NotesRequired THEN
|
|
Notes = Get_Property(@WINDOW:'.NOTES','DEFPROP')
|
|
Notes = TRIM(Notes)
|
|
|
|
IF Notes = '' THEN
|
|
MsgInfo = ''
|
|
MsgInfo<mtext$> = 'Notes required when #44 - Problem ID not found.'
|
|
MsgInfo<micon$> = 'H'
|
|
Void = Msg( '', MsgInfo )
|
|
Set_Property( @WINDOW:'.NOTES', "FOCUS", 1 )
|
|
Post_Event( @WINDOW:'.NOTES', 'GOTFOCUS' )
|
|
END
|
|
End ;* Added by dkk 4/8/15
|
|
|
|
END
|
|
END
|
|
|
|
|
|
IF PrevCol = COL$SERV_ID THEN
|
|
|
|
IF CurRowData<1,COL$SERV_ID> NE '' THEN
|
|
|
|
ReactServsRec = XLATE('REACT_SERVS',CurRowData<1,COL$SERV_ID>,'','X')
|
|
InjectorFlag = ReactServsRec<REACT_SERVS_INJECTOR_CHANGE$>
|
|
NotesRequired = ReactServsRec<REACT_SERVS_NOTE_REQ$>
|
|
|
|
IF InjectorFlag THEN
|
|
|
|
Set_Property(CurrWindow:'.TAB','VALUE',4)
|
|
Send_Event(CurrWindow:'.TAB','CLICK')
|
|
|
|
Set_Property(CurrWindow:'.INJ_SETTING','FOCUS',1)
|
|
Set_Property(CurrWindow:'.INJ_SETTING','SELPOS',1:@FM:1)
|
|
|
|
hTable = Get_Property(CurrWindow:'.INJ_SETTING','HANDLE')
|
|
|
|
IF NOT(hTable) THEN
|
|
ErrMsg('Problem Getting the handle to the INJ_SETTINGS control.')
|
|
RETURN
|
|
END
|
|
|
|
void = Send_Message(hTable,DTM_EDITCURCELL$,DT_BEGINEDIT$,0)
|
|
|
|
RETURN
|
|
|
|
END
|
|
|
|
IF NotesRequired THEN
|
|
|
|
Notes = Get_Property(@WINDOW:'.NOTES','DEFPROP')
|
|
Notes = TRIM(Notes)
|
|
|
|
IF Notes = '' THEN
|
|
MsgInfo = ''
|
|
MsgInfo<mtext$> = 'Notes required when no Service ID is found.'
|
|
MsgInfo<micon$> = 'H'
|
|
Void = Msg( '', MsgInfo )
|
|
Set_Property( @WINDOW:'.NOTES', "FOCUS", 1 )
|
|
Post_Event( @WINDOW:'.NOTES', 'GOTFOCUS' )
|
|
END
|
|
|
|
END
|
|
|
|
END
|
|
END
|
|
|
|
IF PrevCol = COL$ITEM_ID THEN
|
|
CurrWindow = CtrlEntID[1,'.']
|
|
|
|
IF CurRowData<1,COL$ITEM_TYPE> = 'Tube' THEN
|
|
RINo = CurRowData<1,COL$ITEM_RI_NO>
|
|
|
|
IF RINo NE '' THEN
|
|
obj_AppWindow('ViewRelated','REACT_ITEM':@RM:RINo)
|
|
Set_Property('REACT_ITEM.TUBE_GRADE','FOCUS',1)
|
|
END
|
|
|
|
END ;* End of check for Tube Change
|
|
|
|
GoSub VerifyReactItems
|
|
|
|
END
|
|
* Skip calculated columns *
|
|
|
|
IF CurCol = COL$PROB_CAT_DESC THEN
|
|
Set_Property(CtrlEntId,'SELPOS',COL$SERV_ID:@FM:CurRow)
|
|
END
|
|
|
|
IF CurCol = COL$SERV_ID_DESC THEN
|
|
Set_Property(CtrlEntId,'SELPOS',COL$SCHED:@FM:CurRow)
|
|
END
|
|
|
|
IF CurCol = COL$ITEM_TYPE THEN
|
|
Set_Property(CtrlEntId,'SELPOS',COL$ITEM_ID:@FM:CurRow)
|
|
END
|
|
|
|
IF PrevCol = COL$ITEM_ID THEN GOSUB CalcRIHKeys
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
SettingLF:
|
|
* * * * * * *
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
InjHistory:
|
|
* * * * * * *
|
|
|
|
ReactNo = Get_Property(@WINDOW:'.REACTOR','DEFPROP')
|
|
|
|
IF ReactNo NE '' THEN
|
|
|
|
TypeOver = ''
|
|
TypeOver<PDISPLAY$> = 'WITH INJ_SET_REACT_NO = ':ReactNo:' BY-DSND INJ_SET_DTM'
|
|
|
|
void = Popup(@WINDOW,TypeOver,'REACT_INJ_SETTINGS')
|
|
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
SvcsOptions:
|
|
* * * * * * *
|
|
|
|
SelPos = Get_Property(@WINDOW:'.SERV_INFO','SELPOS')
|
|
CurCol = SelPos<1>
|
|
CurRow = SelPos<2>
|
|
CurrArray = Get_Property(@WINDOW:'.SERV_INFO','ARRAY')
|
|
|
|
BEGIN CASE
|
|
CASE CurCol = COL$PROB_CAT
|
|
|
|
ProbCat = Popup(@WINDOW,'','SHOW_REACT_PROB_CAT')
|
|
|
|
IF ProbCat NE '' THEN
|
|
obj_AppWindow('LUValReturn',ProbCat:@RM:@WINDOW:'.SERV_INFO':@RM:SelPos)
|
|
END
|
|
|
|
|
|
CASE CurCol = COL$SERV_ID
|
|
|
|
ReactServ = Popup(@WINDOW,'','SHOW_REACT_SERVS')
|
|
|
|
IF ReactServ NE '' THEN
|
|
obj_AppWindow('LUValReturn',ReactServ:@RM:@WINDOW:'.SERV_INFO':@RM:SelPos)
|
|
END
|
|
|
|
|
|
CASE CurCol = COL$ITEM_ID
|
|
|
|
ItemType = Get_Property(@WINDOW:'.SERV_INFO','DEFPROP',COL$ITEM_TYPE:@FM:CurRow)
|
|
|
|
IF ItemType NE '' THEN
|
|
|
|
RetVal = ''
|
|
|
|
ItemType = ICONV(ItemType,'[CONV_CODE_DESC,REACT_ITEM_TYPE]')
|
|
|
|
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
|
|
ErrMsg('Unable to open DICT.REACT_ITEM')
|
|
RETURN
|
|
END
|
|
|
|
SearchString = 'RI_TYPE':@VM:ItemType:@FM
|
|
SearchString := 'CURR_STATUS':@VM:'N':@VM:'U':@FM
|
|
|
|
RIKeys = ''
|
|
Option = ''
|
|
Flag = ''
|
|
|
|
Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RIKeys,Option,Flag)
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode)
|
|
RETURN
|
|
END
|
|
|
|
TypeOver = ''
|
|
TypeOVer<PMODE$> = 'K'
|
|
TypeOver<PDISPLAY$> = RIKeys
|
|
RetVal = Popup(@WINDOW,TypeOver,'REACT_ITEM')
|
|
|
|
IF RetVal NE '' THEN
|
|
obj_AppWindow('LUValReturn',RetVal:@RM:@WINDOW:'.SERV_INFO':@RM:SelPos)
|
|
|
|
RIRec = XLATE('REACT_ITEM',RetVal,'','X')
|
|
|
|
IF RIRec<REACT_ITEM_RI_TYPE$> = 'T' THEN
|
|
CardWindow = 'REACT_ITEM'
|
|
CardKey = RetVal
|
|
DefaultRec = ''
|
|
NewCardCtrl = ''
|
|
RecalcCtrl = @WINDOW:'.SERV_INFO'
|
|
RecalcPos = SelPos
|
|
RetCtrl = @WINDOW:'.SERV_INFO'
|
|
RetPos = SelPos
|
|
|
|
oAParms = CardWindow:@RM:CardKey:@RM:DefaultRec:@RM:NewCardCtrl:@RM:RecalcCtrl:@RM:RecalcPos:@RM:RetCtrl:@RM:RetPos
|
|
|
|
obj_AppWindow('ViewNewCard',oAParms)
|
|
|
|
Set_Property('REACT_ITEM.TUBE_GRADE','FOCUS',1)
|
|
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode)
|
|
END
|
|
END
|
|
|
|
GOSUB Refresh
|
|
END
|
|
|
|
END ;* End of check for null SNReq
|
|
|
|
|
|
END CASE
|
|
|
|
GOSUB Refresh
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
SvcsDC:
|
|
* * * * * * *
|
|
|
|
CurrPos = Get_Property(EntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
CurrList = Get_Property(EntID,'LIST')
|
|
|
|
BEGIN CASE
|
|
CASE CurrCol = COL$ITEM_RI_NO
|
|
RINo = CurrList<CurrRow,COL$ITEM_RI_NO>
|
|
IF RINo NE '' THEN
|
|
obj_AppWindow('ViewRelated','REACT_ITEM':@RM:RINo)
|
|
END
|
|
|
|
END CASE
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ShiftSigPC:
|
|
* * * * * * *
|
|
|
|
CtrlEntID = EntID
|
|
|
|
PrevSelPos = Get_Property(CtrlEntID,'PREVSELPOS')
|
|
PrevCol = PrevSelPos<1>
|
|
PrevRow = PrevSelPos<2>
|
|
|
|
SelPos = Get_Property(CtrlEntID,'SELPOS')
|
|
CurCol = SelPos<1>
|
|
CurRow = SelPos<2>
|
|
|
|
ListData = Get_Property(CtrlEntID,'LIST')
|
|
ArrayData = Get_Property(CtrlEntID,'DEFPROP')
|
|
|
|
CurRowData = ListData<CurRow>
|
|
|
|
* Move Up to non-empty row or first row *
|
|
|
|
TestRow = CurRowData
|
|
CONVERT @VM TO '' IN TestRow
|
|
|
|
IF TestRow = '' THEN
|
|
CurLine = CurRow
|
|
LOOP
|
|
Col1Val = ListData<CurLine-1,1>
|
|
UNTIL Col1Val NE '' OR CurLine = 1
|
|
CurLine -=1
|
|
REPEAT
|
|
Set_Property(CtrlEntId,"SELPOS",1:@FM:CurLine)
|
|
|
|
END
|
|
|
|
IF CurRow NE PrevRow THEN
|
|
* check last field in prev row
|
|
|
|
IF ListData<PrevRow,COL$ITEM_TYPE> NE '' THEN
|
|
IF ListData<PrevRow,COL$ITEM_ID> = '' THEN
|
|
Msg('','Please fill in the Item SN column.')
|
|
Set_Property(CtrlEntID,'SELPOS',COL$ITEM_ID:@FM:PrevRow)
|
|
END
|
|
END
|
|
|
|
END ;* End of check for row change
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ShiftSigDC:
|
|
* * * * * * *
|
|
|
|
CurrPos = Get_Property(EntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
CurrList = Get_Property(EntID,'LIST')
|
|
|
|
Note = CurrList<CurrRow,COL$SIG_NOTE>
|
|
|
|
DialogResult = Dialog_Box("DIALOG_ZOOM",@WINDOW,Note)
|
|
|
|
IF DialogResult = 'Cancel' THEN RETURN
|
|
|
|
IF DialogResult NE '' THEN
|
|
Set_Property(EntID,'CELLPOS',@USER4,COL$SIG:@FM:CurrRow)
|
|
Set_Property(EntID,'CELLPOS',obj_Calendar('CurrDTM'),COL$SIG_DTM:@FM:CurrRow)
|
|
Set_Property(EntID,'CELLPOS',DialogResult,COL$SIG_NOTE:@FM:CurrRow)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
|
|
|
|
* * * * * *
|
|
CurrRIDC:
|
|
* * * * * *
|
|
|
|
CurrPos = Get_Property(EntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
CurrList = Get_Property(EntID,'LIST')
|
|
|
|
BEGIN CASE
|
|
CASE CurrCol = COL$CURR_RI_NO
|
|
RINo = CurrList<CurrRow,COL$CURR_RI_NO>
|
|
IF RINo NE '' THEN
|
|
obj_AppWindow('ViewRelated','REACT_ITEM':@RM:RINo)
|
|
END
|
|
|
|
|
|
END CASE
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
RemOptions:
|
|
* * * * * * *
|
|
|
|
|
|
SelPos = Get_Property(@WINDOW:'.REM_RI_NO','SELPOS')
|
|
CurCol = SelPos<1>
|
|
CurRow = SelPos<2>
|
|
CurrArray = Get_Property(@WINDOW:'.REM_RI_NO','ARRAY')
|
|
|
|
BEGIN CASE
|
|
CASE CurCol = COL$RI_DISP
|
|
|
|
RetVal = Popup(@WINDOW,'','REACT_ITEM_DISP')
|
|
|
|
IF RetVal NE '' THEN
|
|
obj_AppWindow('LUValReturn',RetVal:@RM:@WINDOW:'.REM_RI_NO':@RM:SelPos)
|
|
END
|
|
|
|
|
|
END CASE
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * * *
|
|
CalcRIHKeys:
|
|
* * * * * * * *
|
|
|
|
ReactNo = Get_Property(@WINDOW:'.REACTOR','DEFPROP')
|
|
PostDTM = Get_Property(@WINDOW:'.POST_DTM','INVALUE')
|
|
|
|
AtRecord = Get_Property(@WINDOW,'ATRECORD')
|
|
|
|
RawReactItemIds = AtRecord<REACTOR_LOG_REACT_ITEM_IDS$>
|
|
rawCnt = COUNT(RawReactItemIds,@VM) + (RawReactItemIds NE '')
|
|
|
|
InstRINos = ''
|
|
|
|
FOR I = 1 TO rawCnt
|
|
IF RawReactItemIds<1,I> NE '' THEN
|
|
InstRINos<1,-1> = obj_React_Item('Serial_RINo',RawReactItemIds<1,I>)
|
|
END
|
|
NEXT I
|
|
|
|
InstRIData = ''
|
|
InstRIData<1> = InstRINos
|
|
InstRIData<2> = XLATE('REACT_ITEM', InstRINos, 17, 'X')
|
|
InstRIData<3> = OConv(XLATE('REACT_ITEM',InstRINos,11,'X'), '[RI_TYPE_CONV]')
|
|
InstRIData<4> = XLATE('REACT_ITEM',InstRINos,8,'X')
|
|
InstRIData<5> = XLATE('REACT_ITEM',InstRINos,9,'X')
|
|
InstRIData<6> = XLATE('REACT_ITEM',InstRINos,10,'X')
|
|
InstRIData<7> = XLATE('REACT_ITEM',InstRINos,10,'X')
|
|
|
|
Set_Property(@Window:'.INST_RI_NO', 'DEFPROP', InstRIData)
|
|
|
|
GoSub ColorInstRiTable
|
|
|
|
* Remove Calculation
|
|
|
|
PostedBy = Get_Property(@WINDOW:'.RI_POST_BY','DEFPROP')
|
|
NewRITypes = XLATE('REACT_ITEM',InstRINos,REACT_ITEM_RI_TYPE$,'X')
|
|
CurrRIArray = Get_Property(@WINDOW:'.CURR_REACT_ITEMS','ARRAY')
|
|
CurrRITypes = CurrRIArray<COL$CURR_RI_TYPE>
|
|
CurrRITypes = ICONV(CUrrRITypes,'[CONV_CODE_DESC,REACT_ITEM_TYPE]')
|
|
|
|
nRICnt = COUNT(NewRITypes,@VM) + (NewRITypes NE '')
|
|
cRICnt = COUNT(CurrRITypes,@VM) + (CurrRITypes NE '')
|
|
|
|
RemRINos = ''
|
|
RemHistKeys = ''
|
|
|
|
FOR J = 1 TO nRICnt
|
|
NewRIType = NewRITypes<1,J>
|
|
FOR K = 1 TO cRICnt
|
|
CurrRIType = CurrRITypes<1,K>
|
|
IF CurrRIType[1,1] = NewRIType[1,1] THEN
|
|
RemNo = CurrRIArray<COL$CURR_RI_NO,K>
|
|
RemInstDTM = ICONV(CurrRIArray<COL$CURR_INST_DTM,K>,'DT')
|
|
RemHistKey = ReactNo:'*':RemNo:'*':RemInstDTM
|
|
|
|
LOCATE RemNo IN RemRINos USING @VM SETTING Pos ELSE
|
|
RemRINos = INSERT(RemRINos,1,Pos,0,RemNo)
|
|
RemHistKeys = INSERT(RemHistKeys,1,Pos,0,RemHistKey)
|
|
END
|
|
END
|
|
NEXT K ;* End of Curr Loop
|
|
NEXT J ;* End of New Loop
|
|
|
|
RemArray = Get_Property(@Window:'.REM_RI_NO', 'ARRAY')
|
|
|
|
RemArray<1> = RemRINos
|
|
RemArray<2> = Xlate('REACT_ITEM', RemRINos, 17, 'X')
|
|
RemArray<3> = OConv(Xlate('REACT_ITEM', RemRINos, 11, 'X'), '[RI_TYPE_CONV]')
|
|
RemArray<4> = Xlate('REACT_ITEM', RemRINos, 8, 'X')
|
|
RemArray<5> = Xlate('REACT_ITEM', RemRINos, 9, 'X')
|
|
RemArray<6> = XLATE('REACT_ITEM', RemRINos, 10, 'X')
|
|
RemArray<8> = OConv(RemArray<7>, '[CONV_CODE_DESC,REACT_ITEM_DISP]')
|
|
RemArray<9> = Xlate('REACT_ITEM_HIST', RemHistKeys, 1, 'X')
|
|
|
|
KeyList = RemHistKeys
|
|
kCnt = COUNT(KeyList,@VM) + (KeyList NE '')
|
|
Dtms = ''
|
|
FOR I = 1 TO kCnt
|
|
Dtms<1,I> = FIELD(KeyList<1,I>,'*',3)
|
|
NEXT I
|
|
RemArray<10> = OConv(Dtms, 'DT4/^S')
|
|
RemArray<11> = RemHistKeys
|
|
|
|
Set_Property(@Window:'.REM_RI_NO', 'DEFPROP', RemArray)
|
|
|
|
GoSub ColorRemRiTable
|
|
GoSub Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
CopyRemove:
|
|
* * * * * * *
|
|
|
|
RETURN
|
|
|
|
EntID = @WINDOW:'.CURR_REACT_ITEMS'
|
|
CurrRIList = Get_Property(EntID,'LIST')
|
|
|
|
CurrRISelection = Get_Property(EntID,'SELPOS')
|
|
SelectedRows = CurrRISelection<2>
|
|
|
|
CONVERT @VM TO @FM in SelectedRows
|
|
|
|
SelCnt = COUNT(SelectedRows,@FM) + (SelectedRows NE '')
|
|
IF SelCnt = 0 THEN
|
|
ErrMsg('You must select at least one row in order to copy to the Remove list.')
|
|
RETURN
|
|
END
|
|
|
|
CopyRINos = 0
|
|
CopyRICnt = 0
|
|
FOR I = 1 TO SelCnt
|
|
IF CurrRIList<SelectedRows<I>,COL$CURR_RI_NO> NE '' THEN
|
|
CopyRICnt += 1
|
|
CopyRINos<1,CopyRICnt> =CurrRIList<SelectedRows<I>,COL$CURR_RI_NO>
|
|
END
|
|
NEXT I
|
|
|
|
Set_Property(EntID,'SELPOS',SlotSelection) ;* Toggle WM_IN select off
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
PostItems:
|
|
* * * * * * *
|
|
|
|
RemList = Get_Property(@WINDOW:'.REM_RI_NO','LIST')
|
|
|
|
CurrWindow = @WINDOW
|
|
|
|
rlCnt = COUNT(RemList,@FM) + (RemList NE '')
|
|
|
|
FOR I = 1 TO rlCnt
|
|
RINo = RemList<I,COL$RI_NO>
|
|
UNTIL RINo = ''
|
|
|
|
IF RemList<I,COL$RI_DISP> = '' THEN
|
|
|
|
* RINo without associated Disposition Code entered
|
|
|
|
ErrMsg('Application Message':@SVM:'Disposition for items being removed has not been completed.')
|
|
|
|
Set_Property(CurrWindow:'.TAB','VALUE',3)
|
|
Send_Event(CurrWindow:'.TAB','CLICK')
|
|
|
|
|
|
Set_Property(CurrWindow:'.REM_RI_NO','FOCUS',1)
|
|
Set_Property(CurrWindow:'.REM_RI_NO','SELPOS',COL$RI_DISP:@FM:I)
|
|
|
|
hTable = Get_Property(CurrWindow:'.REM_RI_NO','HANDLE')
|
|
|
|
IF NOT(hTable) THEN
|
|
ErrMsg('Problem Getting the handle to the REM_RI_NO control.')
|
|
RETURN
|
|
END
|
|
|
|
void = Send_Message(hTable,DTM_EDITCURCELL$,DT_BEGINEDIT$,0)
|
|
|
|
RETURN
|
|
|
|
END ;* End of check for missing Disposition code on line with RI No
|
|
|
|
NEXT I
|
|
|
|
Ctrls = @WINDOW:'.REACTOR_LOG_NO':@RM ; Props = 'DEFPROP':@RM
|
|
Ctrls := @WINDOW:'.RI_POST_BY':@RM ; Props := 'DEFPROP':@RM
|
|
Ctrls := @WINDOW:'.RI_POST_DTM' ; Props := 'DEFPROP'
|
|
|
|
Vals = Get_Property(Ctrls,Props)
|
|
|
|
RLNo = Vals[1,@RM]
|
|
PostBy = Vals[COL2()+1,@RM]
|
|
PostDTM = Vals[COL2()+1,@RM]
|
|
Reactor_Log_Events(@WINDOW, 'WRITE')
|
|
CurrRLRec = Get_Property (@Window, "ATRECORD")
|
|
Database_Services('WriteDataRow', 'REACTOR_LOG', RLNo, CurrRLRec, 1, 0, 1)
|
|
Set_Property(@Window, 'SAVEWARN', 0)
|
|
IF PostBy = '' THEN
|
|
obj_Reactor_Log('PostReactItems',RLNo)
|
|
END ELSE
|
|
obj_Reactor_Log('UnpostReactItems',RLNo)
|
|
END
|
|
|
|
If Error_Services('HasError') then
|
|
ErrorMessage = Error_Services('GetMessage')
|
|
ErrMsg('Application Message':@SVM:ErrorMessage)
|
|
end
|
|
|
|
obj_Appwindow('LoadFormKeys','REACTOR_LOG':@RM:RLNo)
|
|
|
|
Send_Event(@Window, 'READ')
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
* * * * * * *
|
|
RemRIDC:
|
|
* * * * * * *
|
|
|
|
CurrPos = Get_Property(EntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
CurrList = Get_Property(EntID,'LIST')
|
|
|
|
BEGIN CASE
|
|
CASE CurrCol = COL$RI_NO
|
|
RINo = CurrList<CurrRow,COL$RI_NO>
|
|
IF RINo NE '' THEN
|
|
obj_AppWindow('ViewRelated','REACT_ITEM':@RM:RINo)
|
|
END
|
|
|
|
END CASE
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
PrintRootCause:
|
|
* * * * * * *
|
|
|
|
ReactLogNo = Get_Property(@WINDOW:'.REACTOR_LOG_NO','DEFPROP')
|
|
ReactNo = Get_Property(@WINDOW:'.REACTOR','DEFPROP')
|
|
ServInfo = Get_Property(@WINDOW:'.SERV_INFO','DEFPROP')
|
|
|
|
InitProbCat = ServInfo<1,1> ;* 1st line, 1st column is Init Prob Cat
|
|
|
|
Print_RootCause_Analysis(ReactLogNo,ReactNo,InitProbCat)
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LOTOClick:
|
|
* * * * * * *
|
|
|
|
xlApp = OleCreateInstance("excel.Application")
|
|
|
|
OlePutProperty(XlApp, 'Visible', xlSheetVisible)
|
|
|
|
IF OleStatus() THEN
|
|
GOTO HadError
|
|
RETURN
|
|
END
|
|
|
|
xlWorkBooks = OleGetProperty(xlApp, "Workbooks")
|
|
|
|
IF OleStatus() THEN
|
|
GOTO HadError
|
|
RETURN
|
|
END
|
|
|
|
xlWkb = OleCallMethod(xlWorkbooks,"Open",Environment_Services('GetUserDataRootPath') : "\Facilities\DeptData\LOTO Procedures\LOTO Master List App.xlsm")
|
|
|
|
IF OleStatus() THEN
|
|
GOTO HadError
|
|
RETURN
|
|
END
|
|
|
|
xdummy = OleCallMethod(xlWkb, "RunAutoMacros", xlAutoOpen )
|
|
|
|
IF OleStatus() THEN
|
|
GOTO HadError
|
|
RETURN
|
|
END
|
|
|
|
Set_Property(@WINDOW:'.LO_REVIEWED','CHECK',1)
|
|
|
|
GOSUB Refresh
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
HadError:
|
|
* * * * * * *
|
|
|
|
status = OleStatus()
|
|
|
|
IF Status THEN
|
|
ErrMsg('OLE Error Code ':Status)
|
|
END
|
|
|
|
xlChart = ''
|
|
Charts = ''
|
|
range = ''
|
|
xlSht = ''
|
|
xlWkb=''
|
|
xlWorkBooks = ''
|
|
x = OleCallMethod(xlApp, 'Quit')
|
|
|
|
RETURN
|
|
|
|
|
|
SvcsLF:
|
|
|
|
GoSub VerifyReactItems
|
|
|
|
return
|
|
|
|
|
|
VerifyReactItems:
|
|
|
|
GoSub CalcRIHKeys
|
|
SvcsList = Get_Property(@Window:'.SERV_INFO', 'LIST')
|
|
Done = False$
|
|
BadRow = False$
|
|
BadRowMessage = ''
|
|
For each Row in SvcsList using @FM setting RowPos
|
|
ReactItem = Row<0, COL$ITEM_ID>
|
|
ServiceItem = Row<0, COL$SERV_ID>
|
|
ServiceItemType = XLATE('REACT_SERVS', ServiceItem, REACT_SERVS_GRAPHITE_OR_TUBE$, 'X')
|
|
If ReactItem NE '' then
|
|
If RowExists('REACT_ITEM', ReactItem) EQ False$ then
|
|
Msg(@Window, '', 'OK', '', 'Invalid React Item':@FM:'React Item ':ReactItem:' does not exist!')
|
|
BadRow = RowPos
|
|
end else
|
|
RIRec = Database_Services('ReadDataRow', 'REACT_ITEM', ReactItem)
|
|
RIType = RIRec<REACT_ITEM_RI_TYPE$>
|
|
TypeMatch = (RIType EQ ServiceItemType) OR ServiceItemType EQ ''
|
|
Retired = RIRec<REACT_ITEM_RETIRE_DT$> NE ''
|
|
If Retired then
|
|
BadRowMessage := 'Invalid React Item':@FM:'React Item ':ReactItem:' is retired' : CRLF$
|
|
BadRow = RowPos
|
|
end
|
|
If Not(TypeMatch) then
|
|
BadRowMessage := 'Invalid React Item':@FM:'React Item ':ReactItem:' is the incorrect type' : CRLF$
|
|
BadRow = RowPos
|
|
end
|
|
If BadRow NE False$ then
|
|
Msg(@Window, '', 'OK', '', BadRowMessage)
|
|
BadRow = RowPos
|
|
end
|
|
end
|
|
end
|
|
Until Done
|
|
Next Row
|
|
|
|
If BadRow then
|
|
SvcsList<BadRow, COL$ITEM_ID> = ''
|
|
Set_Property(@Window:'.SERV_INFO', 'LIST', SvcsList)
|
|
end
|
|
|
|
return
|
|
|
|
|
|
FillServInfoCalcCols:
|
|
|
|
ServInfo = Get_Property(@Window:'.SERV_INFO', 'ARRAY')
|
|
CatIds = ServInfo<COL$PROB_CAT>
|
|
ServIds = ServInfo<COL$SERV_ID>
|
|
ReactItemIds = ServInfo<COL$ITEM_ID>
|
|
|
|
CatDescs = Xlate('REACT_PROB_CAT', CatIds , REACT_PROB_CAT_REACTOR_PROBLEM_CATEGORY$, 'X')
|
|
ServDescs = Xlate('REACT_SERVS', ServIds, REACT_SERVS_DESCRIPTION$, 'X')
|
|
convert @fm to @vm in ServDescs
|
|
ServItemTypes = OConv(Xlate('REACT_SERVS', ServIds, REACT_SERVS_REACT_ITEM_TYPE$, 'X'), '[CONV_CODE_DESC,REACT_ITEM_TYPE]')
|
|
|
|
RINos = obj_React_Item('Serial_RINo', ReactItemIds)
|
|
MfrPartNos = Xlate('REACT_ITEM', RINos, REACT_ITEM_MFR_PART_NO$, 'X')
|
|
Revs = Xlate('REACT_ITEM', RINos, REACT_ITEM_MFR_PART_NO_REV$, 'X')
|
|
SerialNos = Xlate('REACT_ITEM', RINos, REACT_ITEM_SERIAL_NO$, 'X')
|
|
|
|
ServInfo<COL$PROB_CAT_DESC> = CatDescs
|
|
ServInfo<COL$SERV_ID_DESC> = ServDescs
|
|
ServInfo<COL$ITEM_TYPE> = ServItemTypes
|
|
ServInfo<COL$ITEM_RI_NO> = RINos
|
|
ServInfo<COL$MFR_PART_NO> = MfrPartNos
|
|
ServInfo<COL$REV> = Revs
|
|
ServInfo<COL$SERIAL_NO> = SerialNos
|
|
Set_Property(@Window:'.SERV_INFO', 'ARRAY', ServInfo)
|
|
|
|
For each CatId in CatIds using @VM setting vPos
|
|
If CatId NE '' then
|
|
stat = Send_Message(@Window:'.SERV_INFO', 'COLOR_BY_POS', COL$PROB_CAT_DESC, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.SERV_INFO', 'COLOR_BY_POS', COL$SERV_ID_DESC, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.SERV_INFO', 'COLOR_BY_POS', COL$ITEM_TYPE, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.SERV_INFO', 'COLOR_BY_POS', COL$ITEM_RI_NO, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.SERV_INFO', 'COLOR_BY_POS', COL$MFR_PART_NO, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.SERV_INFO', 'COLOR_BY_POS', COL$REV, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.SERV_INFO', 'COLOR_BY_POS', COL$SERIAL_NO, vPos ,GREEN$)
|
|
end
|
|
Next CatId
|
|
|
|
return
|
|
|
|
|
|
ColorInstRiTable:
|
|
|
|
InstRiArray = Get_Property(@Window:'.INST_RI_NO', 'ARRAY')
|
|
InstRiKeys = InstRiArray<1>
|
|
If InstRiKeys NE '' then
|
|
For each InstRiKey in InstRiKeys using @VM setting vPos
|
|
If InstRiKey NE '' then
|
|
stat = Send_Message(@Window:'.INST_RI_NO', 'COLOR_BY_POS', COL$RI_SERIAL, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.INST_RI_NO', 'COLOR_BY_POS', COL$RI_TYPE, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.INST_RI_NO', 'COLOR_BY_POS', COL$RI_PART_NO, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.INST_RI_NO', 'COLOR_BY_POS', COL$RI_PART_REV, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.INST_RI_NO', 'COLOR_BY_POS', COL$RI_SERIAL_NO, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.INST_RI_NO', 'COLOR_BY_POS', COL$RI_DISP, vPos ,GREEN$)
|
|
end
|
|
Next InstRiKey
|
|
end
|
|
|
|
return
|
|
|
|
|
|
ColorRemRiTable:
|
|
|
|
RemRiArray = Get_Property(@Window:'.REM_RI_NO', 'ARRAY')
|
|
RemRihKeys = RemRiArray<11>
|
|
If RemRihKeys NE '' then
|
|
For each RemRihKey in RemRihKeys using @VM setting vPos
|
|
If RemRihKey NE '' then
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_NO, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_SERIAL, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_TYPE, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_PART_NO, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_PART_REV, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_SERIAL_NO, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_DISPOSITION, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$RI_INST_RL_ID, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$INST_DTM, vPos ,GREEN$)
|
|
stat = Send_Message(@Window:'.REM_RI_NO', 'COLOR_BY_POS', COL$INST_RIH_KEY, vPos ,GREEN$)
|
|
end
|
|
Next RemRihKey
|
|
end
|
|
|
|
return
|
|
|