added LSL2 stored procedures
This commit is contained in:
733
LSL2/STPROC/DIALOG_SCHED.txt
Normal file
733
LSL2/STPROC/DIALOG_SCHED.txt
Normal file
@ -0,0 +1,733 @@
|
||||
FUNCTION Dialog_Sched(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
|
||||
|
||||
/*
|
||||
Commuter module for DIALOG_SCHED window
|
||||
|
||||
06/27/2014 - John C. Henry, J.C. Henry & Co., Inc.
|
||||
*/
|
||||
|
||||
#pragma precomp SRP_PreCompiler
|
||||
|
||||
DECLARE SUBROUTINE Set_Property, ErrMsg, obj_Appwindow, Btree.Extract, Send_Event, Send_Message, RList, Print_Demand
|
||||
DECLARE SUBROUTINE ErrMsg, Set_Status, Security_Err_Msg, Make.List, Start_Window
|
||||
|
||||
DECLARE FUNCTION Get_Property, Send_Message, NextKey, Popup, obj_Calendar, Printer_Select
|
||||
DECLARE FUNCTION Set_Printer, obj_Install, obj_Popup, Send_Message
|
||||
DECLARE FUNCTION EntID, MemberOf, Repository, Security_Check, Start_Window, obj_Prod_Spec, Set_Property, Msg, rds_supplement_maint
|
||||
|
||||
$insert LOGICAL
|
||||
$insert FILE.SYSTEM.EQUATES
|
||||
$insert ACTION_SETUP
|
||||
|
||||
$INSERT APPCOLORS
|
||||
$INSERT WO_LOG_EQUATES
|
||||
$INSERT SCHED_DET_EQUATES
|
||||
$INSERT REACTOR_EQUATES
|
||||
$INSERT RLIST_EQUATES
|
||||
$INSERT RTI_STYLE_EQUATES
|
||||
|
||||
$INSERT PRS_LAYER_EQU
|
||||
$INSERT POPUP_EQUATES
|
||||
$INSERT SECURITY_RIGHTS_EQU
|
||||
$INSERT RDS_EQUATES
|
||||
$INSERT WO_STEP_EQUATES
|
||||
|
||||
EQU CRLF$ TO \0D0A\
|
||||
|
||||
EQU COL$REACT_NO TO 1
|
||||
EQU COL$TYPE TO 2
|
||||
EQU COL$WFR_SIZE TO 3
|
||||
EQU COL$ASSIGN_DESC TO 4
|
||||
EQU COL$SCHED_DAY_1 TO 5
|
||||
EQU COL$SCHED_DAY_2 TO 6
|
||||
EQU COL$SCHED_DAY_3 TO 7
|
||||
EQU COL$SCHED_DAY_4 TO 8
|
||||
EQU COL$SCHED_DAY_5 TO 9
|
||||
|
||||
EQU COL$WO_NO TO 1
|
||||
EQU COL$SPLIT TO 2
|
||||
EQU COL$EPI_PN TO 3
|
||||
|
||||
EQU WM_USER$ TO 1024
|
||||
EQU DTM_SELROW$ TO (WM_USER$ + 59)
|
||||
EQU DTM_SELALLROWS$ TO (WM_USER$ + 61)
|
||||
EQU ETM_INSERTROW$ TO (WM_USER$ + 2004)
|
||||
EQU ETM_DELETEROW$ TO (WM_USER$ + 2005)
|
||||
|
||||
EQU NOTIFICATION_PERIOD$ TO 12
|
||||
|
||||
|
||||
ErrTitle = 'Error in Dialog_Sched'
|
||||
ErrorMsg = ''
|
||||
|
||||
Result = ''
|
||||
|
||||
BEGIN CASE
|
||||
CASE EntID = @WINDOW
|
||||
BEGIN CASE
|
||||
CASE Event = 'CREATE' ; GOSUB Create
|
||||
|
||||
END CASE
|
||||
|
||||
CASE EntID = @WINDOW:'.PREV' AND Event = 'CLICK' ; GOSUB PrevDate
|
||||
CASE EntID = @WINDOW:'.NEXT' AND Event = 'CLICK' ; GOSUB NextDate
|
||||
CASE EntID = @WINDOW:'.SCHED_DT' AND Event = 'CHANGED' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.SCHED_DT' AND Event = 'LOSTFOCUS' ; GOSUB SchedDtLF
|
||||
CASE EntID = @WINDOW:'.SCHED' AND Event = 'DBLCLK' ; GOSUB SchedDC
|
||||
CASE EntID = @WINDOW:'.WO_NO' AND Event = 'DBLCLK' ; GOSUB WONoDoubleClick
|
||||
CASE EntID = @WINDOW:'.SCHED' AND Event = 'GOTFOCUS' ; GOSUB SchedGotFocus
|
||||
CASE EntID = @WINDOW:'.SCHED' AND Event = 'CLICK' ; GOSUB SchedGotFocus
|
||||
CASE EntID = @WINDOW:'.WO_NO' AND Event = 'POSCHANGED' ; GOSUB WO_PC
|
||||
CASE EntID = @WINDOW:'.UPDATE' AND Event = 'CLICK' ; GOSUB Update
|
||||
CASE EntID = @WINDOW:'.INVENTORY_DEMAND' AND Event = 'CLICK' ; GOSUB InventoryDemand
|
||||
CASE EntID = @WINDOW:'.SCHED' AND Event = 'WINMSG' ; GOSUB TrapKeys
|
||||
CASE EntID = @WINDOW:'.WO_NO' AND Event = 'WINMSG' ; GOSUB TrapKeys
|
||||
CASE EntID = @WINDOW:'.SEARCHED_WO' AND Event = 'LOSTFOCUS' ; GOSUB WONoSearch
|
||||
|
||||
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:
|
||||
*******
|
||||
obj_Appwindow('Create',@WINDOW)
|
||||
|
||||
Set_Property(@WINDOW:'.SCHED_DT','TEXT',OCONV(Date(),'D4HL'))
|
||||
|
||||
CtrlID = @WINDOW:'.SCHED'
|
||||
SchedStyles = Send_Message(CtrlID,'COLSTYLE',1)
|
||||
|
||||
eventOp = TRUE$ ; * // Turn tracking on
|
||||
eventOp<4> = TRUE$ ; * // Track Synchronously
|
||||
CALL send_Message( @window : ".SCHED", "QUALIFY_EVENT", ETM_DELETEROW$, eventOp )
|
||||
CALL send_Message( @window : ".SCHED", "QUALIFY_EVENT", ETM_INSERTROW$, eventOp )
|
||||
CALL send_Message( @window : ".WO_NO", "QUALIFY_EVENT", ETM_DELETEROW$, eventOp )
|
||||
CALL send_Message( @window : ".WO_NO", "QUALIFY_EVENT", ETM_INSERTROW$, eventOp )
|
||||
|
||||
|
||||
SchedStyles<COL$REACT_NO> = BitOr(SchedStyles<COL$REACT_NO>,DTCS_VALIGNCENTER$)
|
||||
SchedStyles<COL$TYPE> = BitOr(SchedStyles<COL$TYPE>,DTCS_VALIGNCENTER$)
|
||||
SchedStyles<COL$WFR_SIZE> = BitOr(SchedStyles<COL$WFR_SIZE>,DTCS_VALIGNCENTER$)
|
||||
SchedStyles<COL$ASSIGN_DESC> = BitOr(SchedStyles<COL$ASSIGN_DESC>,DTCS_VALIGNCENTER$)
|
||||
|
||||
SchedStyles<COL$SCHED_DAY_1> = BitOr(SchedStyles<COL$SCHED_DAY_1>,DTCS_MULTILINE$)
|
||||
SchedStyles<COL$SCHED_DAY_1> = BitOr(SchedStyles<COL$SCHED_DAY_1>,DTCS_VSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_1> = BitOr(SchedStyles<COL$SCHED_DAY_1>,DTCS_HSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_1> = BitOr(SchedStyles<COL$SCHED_DAY_1>,DTCS_AUTOVSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_1> = BitOr(SchedStyles<COL$SCHED_DAY_1>,DTCS_AUTOHSCROLL$)
|
||||
|
||||
SchedStyles<COL$SCHED_DAY_2> = BitOr(SchedStyles<COL$SCHED_DAY_2>,DTCS_MULTILINE$)
|
||||
SchedStyles<COL$SCHED_DAY_2> = BitOr(SchedStyles<COL$SCHED_DAY_2>,DTCS_VSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_2> = BitOr(SchedStyles<COL$SCHED_DAY_2>,DTCS_HSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_2> = BitOr(SchedStyles<COL$SCHED_DAY_2>,DTCS_AUTOVSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_2> = BitOr(SchedStyles<COL$SCHED_DAY_2>,DTCS_AUTOHSCROLL$)
|
||||
|
||||
SchedStyles<COL$SCHED_DAY_3> = BitOr(SchedStyles<COL$SCHED_DAY_3>,DTCS_MULTILINE$)
|
||||
SchedStyles<COL$SCHED_DAY_3> = BitOr(SchedStyles<COL$SCHED_DAY_3>,DTCS_VSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_3> = BitOr(SchedStyles<COL$SCHED_DAY_3>,DTCS_HSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_3> = BitOr(SchedStyles<COL$SCHED_DAY_3>,DTCS_AUTOVSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_3> = BitOr(SchedStyles<COL$SCHED_DAY_3>,DTCS_AUTOHSCROLL$)
|
||||
|
||||
SchedStyles<COL$SCHED_DAY_4> = BitOr(SchedStyles<COL$SCHED_DAY_4>,DTCS_MULTILINE$)
|
||||
SchedStyles<COL$SCHED_DAY_4> = BitOr(SchedStyles<COL$SCHED_DAY_4>,DTCS_VSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_4> = BitOr(SchedStyles<COL$SCHED_DAY_4>,DTCS_HSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_4> = BitOr(SchedStyles<COL$SCHED_DAY_4>,DTCS_AUTOVSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_4> = BitOr(SchedStyles<COL$SCHED_DAY_4>,DTCS_AUTOHSCROLL$)
|
||||
|
||||
SchedStyles<COL$SCHED_DAY_5> = BitOr(SchedStyles<COL$SCHED_DAY_5>,DTCS_MULTILINE$)
|
||||
SchedStyles<COL$SCHED_DAY_5> = BitOr(SchedStyles<COL$SCHED_DAY_5>,DTCS_VSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_5> = BitOr(SchedStyles<COL$SCHED_DAY_5>,DTCS_HSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_5> = BitOr(SchedStyles<COL$SCHED_DAY_5>,DTCS_AUTOVSCROLL$)
|
||||
SchedStyles<COL$SCHED_DAY_5> = BitOr(SchedStyles<COL$SCHED_DAY_5>,DTCS_AUTOHSCROLL$)
|
||||
|
||||
Send_Message(CtrlID,'COLSTYLE',0,SchedStyles)
|
||||
Send_Message(CtrlID,'ROWHEIGHT',0,36)
|
||||
|
||||
/* Do not refresh after the 'Create' updated the edit table */
|
||||
Set_Property(@WINDOW,'@REFRESH',0)
|
||||
|
||||
RETURN
|
||||
|
||||
*********
|
||||
NextDate:
|
||||
*********
|
||||
CurrDt = ICONV(Get_Property(@WINDOW:'.SCHED_DT','TEXT'),'D')
|
||||
CurrDt += 1
|
||||
Set_Property(@WINDOW:'.SCHED_DT','TEXT',OCONV(CurrDt,'D4HL'))
|
||||
RETURN
|
||||
|
||||
*********
|
||||
PrevDate:
|
||||
*********
|
||||
CurrDt = ICONV(Get_Property(@WINDOW:'.SCHED_DT','TEXT'),'D')
|
||||
CurrDt -= 1
|
||||
Set_Property(@WINDOW:'.SCHED_DT','TEXT',OCONV(CurrDt,'D4HL'))
|
||||
RETURN
|
||||
|
||||
|
||||
**********
|
||||
SchedDtLF:
|
||||
**********
|
||||
CurrDt = ICONV(Get_Property(@WINDOW:'.SCHED_DT','TEXT'),'D')
|
||||
Set_Property(@WINDOW:'.SCHED_DT','TEXT',OCONV(CurrDt,'D4HL'))
|
||||
RETURN
|
||||
|
||||
|
||||
********
|
||||
Refresh:
|
||||
********
|
||||
Gosub Update
|
||||
RETURN
|
||||
|
||||
**************
|
||||
SchedGotFocus:
|
||||
**************
|
||||
RefreshFlag = Get_Property(@WINDOW,'@REFRESH')
|
||||
|
||||
if (RefreshFlag = 1) then
|
||||
GOSUB Update
|
||||
Set_Property(@WINDOW,'@REFRESH',0)
|
||||
|
||||
end else
|
||||
SelectedItem = Get_Property(@WINDOW:'.SCHED','SELPOS')
|
||||
|
||||
Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
||||
Set_Property(@WINDOW:'.SCHED','SELPOS',SelectedItem)
|
||||
Handle = Get_Property(@WINDOW:'.SCHED', 'HANDLE')
|
||||
CALL sendMessage(Handle, DTM_SELROW$, 0, SelectedItem<2>-1)
|
||||
Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
||||
|
||||
Col = SelectedItem<1>
|
||||
Row = SelectedItem<2>
|
||||
CellData = Get_Property(@WINDOW:'.SCHED', 'CELLPOS', Col:@FM:Row)
|
||||
ClickedWONo = CellData[1,6]
|
||||
WONos = Get_Property(@WINDOW,'@WO_NOS')
|
||||
LOCATE ClickedWONo IN WONos USING @FM SETTING Pos THEN
|
||||
Set_Property(@WINDOW:'.WO_NO', 'SELPOS', 1:@FM:Pos)
|
||||
END
|
||||
END
|
||||
RETURN
|
||||
|
||||
*******
|
||||
Update:
|
||||
*******
|
||||
OPEN 'REACTOR' TO ReactorTable ELSE
|
||||
ErrMsg('Unable to open "REACTOR" table fo index lookup.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
SelectSent = 'SELECT REACTOR WITH REACT_NO > 0 BY REACT_NO'
|
||||
RList(SelectSent,TARGET_ACTIVELIST$,'','','')
|
||||
|
||||
ReactNos = ''
|
||||
ReactTypes = ''
|
||||
ReactWfrSizes = ''
|
||||
ReactAssignments = ''
|
||||
ReactAssignDescs = ''
|
||||
|
||||
Done = 0
|
||||
LOOP
|
||||
READNEXT ReactNo ELSE Done = 1
|
||||
UNTIL Done
|
||||
ReactNos := ReactNo:@VM
|
||||
READ ReactRec FROM ReactorTable,ReactNo THEN
|
||||
ReactTypes := OCONV(ReactRec<REACTOR_REACT_TYPE$>, '[REACT_TYPE_CONV,OPSREF]'):@VM
|
||||
ReactWfrSizes := ReactRec<REACTOR_SUSC_POCKET_SIZE$>:@VM
|
||||
ReactAssignments := ReactRec<REACTOR_REACT_ASSIGNMENT$>:@VM
|
||||
ReactAssignDescs := OCONV(ReactRec<REACTOR_REACT_ASSIGNMENT$>,'[REACT_ASSIGN_CONV]'):@VM
|
||||
END
|
||||
REPEAT
|
||||
|
||||
ReactNos[-1,1] = ''
|
||||
ReactTypes[-1,1] = ''
|
||||
ReactWfrSizes[-1,1] = ''
|
||||
ReactAssignments[-1,1] = ''
|
||||
ReactAssignDescs[-1,1] = ''
|
||||
|
||||
SchedArray = ''
|
||||
SchedArray<COL$REACT_NO> = ReactNos
|
||||
SchedArray<COL$TYPE> = ReactTypes
|
||||
SchedArray<COL$WFR_SIZE> = ReactWfrSizes
|
||||
SchedArray<COL$ASSIGN_DESC> = ReactAssignDescs
|
||||
|
||||
SchedDt = Get_Property(@WINDOW:'.SCHED_DT','TEXT')
|
||||
|
||||
SchedDay = ICONV(SchedDt,'D') ;* Start with today
|
||||
StartDay = SchedDay - 1
|
||||
EndDay = SchedDay + 3
|
||||
|
||||
CurrDay = StartDay
|
||||
|
||||
FOR Col = COL$SCHED_DAY_1 TO COL$SCHED_DAY_5
|
||||
Day = Mod(CurrDay, 7)
|
||||
BEGIN CASE
|
||||
CASE Day = 0 ; Day = "Sunday"
|
||||
CASE Day = 1 ; Day = "Monday"
|
||||
CASE Day = 2 ; Day = "Tuesday"
|
||||
CASE Day = 3 ; Day = "Wednesday"
|
||||
CASE Day = 4 ; Day = "Thursday"
|
||||
CASE Day = 5 ; Day = "Friday"
|
||||
CASE Day = 6 ; Day = "Saturday"
|
||||
END CASE
|
||||
void = Send_Message(@WINDOW:'.SCHED', 'COLLABEL', Col, Day:' ':OCONV(CurrDay,'D4HL'))
|
||||
CurrDay += 1
|
||||
NEXT Col
|
||||
|
||||
OPEN 'DICT.SCHED_DET' TO SchedDictVar ELSE
|
||||
ErrMsg('Unable to open DICT.SCHED_DET for index lookup')
|
||||
RETURN
|
||||
END
|
||||
|
||||
WONos = '' ;* @FM delimited list of WONos in displayed dates
|
||||
WOData = '' ;* @FM delimited WO data CustName:@VM:HotLot
|
||||
WODispPos = '' ;* @FM delimited WODispPositions, DispPos : @SVM : colIndex : @VM : DispPos : @SVM : colIndex...
|
||||
HotCells = '' ;* CurrCol:@VM:CurrLine array with 1 or 0 for contains Hot Lot
|
||||
WOReactors = '' ;* @FM delimited list of Reactors per WO
|
||||
ReactorModified = ''
|
||||
|
||||
ColIndex = COL$SCHED_DAY_1
|
||||
FOR DispDt = StartDay TO EndDay
|
||||
SearchString = 'SCHED_DT':@VM:DispDt:@FM
|
||||
Btree.Extract(SearchString,'SCHED_DET',SchedDictVar,SchedDetKeys,'','')
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
RETURN
|
||||
END
|
||||
|
||||
keyCnt = COUNT(SchedDetKeys,@VM) + (SchedDetKeys NE '')
|
||||
ColData = ''
|
||||
FOR N = 1 TO keyCnt
|
||||
SchedDetKey = SchedDetKeys<1,N>
|
||||
ReactNo = SchedDetKey[1,'*']
|
||||
DetNo = SchedDetKey[-1,'B*']
|
||||
|
||||
LOCATE ReactNo IN ReactNos USING @VM SETTING DispPos ELSE null
|
||||
|
||||
DetRec = XLATE('SCHED_DET',SchedDetKey,'','X')
|
||||
|
||||
WONo = DetRec<SCHED_DET_WO_NO$>
|
||||
|
||||
Desc = DetRec<SCHED_DET_DESC$>
|
||||
IF Desc NE '' THEN
|
||||
Desc = '(':Desc:')'
|
||||
END
|
||||
|
||||
IF (DispDt >= Date()) THEN
|
||||
ModifiedDateTime = DetRec<SCHED_DET_MODIFIED$>
|
||||
IF (ModifiedDateTime NE '') THEN
|
||||
CurrentDateTime = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTH'),'DTM')
|
||||
ElapseTime = (CurrentDateTime - ModifiedDateTime) * 24
|
||||
IF (ElapseTime <= NOTIFICATION_PERIOD$) then
|
||||
IF (ReactorModified<DispPos> = '') THEN
|
||||
ReactorModified<DispPos> = ElapseTime
|
||||
END ELSE
|
||||
IF (ElapseTime < ReactorModified<DispPos>) THEN
|
||||
ReactorModified<DispPos> = ElapseTime
|
||||
END
|
||||
END
|
||||
END
|
||||
END
|
||||
END
|
||||
|
||||
LOCATE WONo IN WONos BY 'AR' USING @FM SETTING woPos THEN
|
||||
WODispPos<woPos> = WODispPos<woPos>:@VM:DispPos:@SVM:colIndex
|
||||
CustName = WOData<woPos,1>
|
||||
HotLot = WOData<woPos,2>
|
||||
|
||||
*****************************************************
|
||||
* Build a reference list of reactors per work order *
|
||||
*****************************************************
|
||||
LOCATE ReactNo IN WOReactors<woPos> BY 'AR' USING @VM SETTING woReactorsPos THEN
|
||||
Null
|
||||
END ELSE
|
||||
WOReactors<woPos> = INSERT(WOReactors<woPos>,1,woReactorsPos,0,ReactNo)
|
||||
END
|
||||
|
||||
END ELSE
|
||||
CustName = XLATE('WO_LOG',WONo,'CUST_ABBREV','X')
|
||||
HotLot = XLATE('WO_LOG',WONo,'HOT_LOT','X')
|
||||
WONos = INSERT(WONos,woPos,0,0,WONo)
|
||||
WOData = INSERT(WOData,woPos,0,0,CustName:@VM:HotLot)
|
||||
WODispPos = INSERT(WODispPos,woPos,0,0,DispPos:@SVM:colIndex)
|
||||
WOReactors = INSERT(WOReactors,woPos,0,0,ReactNo)
|
||||
END
|
||||
|
||||
CellData = ''
|
||||
IF WONo NE '' THEN CellData := WONo:' ':CustName[1,23]
|
||||
IF Desc NE '' THEN CellData := ' ':Desc
|
||||
|
||||
CurrCellData = ColData<1,DispPos>
|
||||
IF CurrCellData = '' THEN
|
||||
ColData<1,DispPos> = CellData
|
||||
END ELSE
|
||||
ColData<1,DispPos> = CurrCellData:CRLF$:CellData
|
||||
END
|
||||
|
||||
IF HotLot THEN HotCells<1,-1> = ColIndex:@SVM:DispPos
|
||||
NEXT N
|
||||
|
||||
SchedArray<ColIndex> = ColData
|
||||
ColIndex += 1
|
||||
NEXT DispDt
|
||||
|
||||
Set_Property(@WINDOW:'.SCHED','ARRAY',SchedArray)
|
||||
Set_Property(@WINDOW,'@WO_NOS',WONos)
|
||||
Set_Property(@WINDOW,'@WO_CELLS',WODispPos)
|
||||
|
||||
CONVERT @FM TO @VM IN WONos
|
||||
CONVERT @VM TO ',' IN WOReactors
|
||||
CONVERT @FM TO @VM IN WOReactors
|
||||
EPIPns = XLATE('WO_LOG', WONos, WO_LOG_EPI_PART_NO$, 'X')
|
||||
Set_Property(@WINDOW:'.WO_NO','ARRAY',WONos:@FM:WOReactors:@FM:EPIPns)
|
||||
|
||||
***************************************
|
||||
* Color the WO which have been closed *
|
||||
***************************************
|
||||
FOR WONosIndex = 1 TO COUNT(WONos,@VM) + (WONos NE '')
|
||||
WONo = WONos<1,WONosIndex>
|
||||
WOCloseDate = XLATE('WO_LOG', WONo, WO_LOG_CLOSE_DATE$, 'X')
|
||||
IF (WOCloseDate NE '') THEN
|
||||
stat = Send_Message(@WINDOW:'.WO_NO', 'COLOR_BY_POS', 0, WONosIndex, GREY$)
|
||||
END ELSE
|
||||
stat = Send_Message(@WINDOW:'.WO_NO', 'COLOR_BY_POS', 0, WONosIndex, WHITE$)
|
||||
END
|
||||
NEXT WONosIndex
|
||||
|
||||
**********************************************************************
|
||||
* Color the schedule cells 'grey' if the reactor is 'out of service' *
|
||||
**********************************************************************
|
||||
LineCnt = COUNT(ReactNos,@VM) + (ReactNos NE '')
|
||||
FOR Line = 1 TO LineCnt
|
||||
|
||||
/* Default White = Normal */
|
||||
stat = Send_Message(@WINDOW:'.SCHED', 'COLOR_BY_POS', 1, Line, WHITE$)
|
||||
|
||||
IF ReactAssignments<1,Line> = 'O' THEN
|
||||
stat = Send_Message(@WINDOW:'.SCHED', 'COLOR_BY_POS', 1, Line, GREY$)
|
||||
END ELSE
|
||||
IF (ReactorModified<Line> NE '') THEN
|
||||
Intensity = (NOTIFICATION_PERIOD$ - ReactorModified<Line>) / NOTIFICATION_PERIOD$
|
||||
DynamicYellow = 255 + (255*256) + (INT(Intensity*202)*65536)
|
||||
stat = Send_Message(@WINDOW:'.SCHED', 'COLOR_BY_POS', 1, Line, DynamicYellow)
|
||||
END
|
||||
END
|
||||
NEXT Line
|
||||
|
||||
****************************************************************
|
||||
* Color the schedule cells 'red' is the WO contains 'hot' lots *
|
||||
****************************************************************
|
||||
hcCnt = COUNT(HotCells,@VM) + (HotCells NE '')
|
||||
FOR H = 1 TO hcCnt
|
||||
CellLoc = HotCells<1,H>
|
||||
Col = CellLoc[1,@SVM]
|
||||
Row = CellLoc[COL2()+1,@SVM]
|
||||
stat = Send_Message(@WINDOW:'.SCHED','COLOR_BY_POS', Col, Row, RED$)
|
||||
NEXT H
|
||||
|
||||
RETURN
|
||||
|
||||
****************
|
||||
WONoDoubleClick:
|
||||
****************
|
||||
|
||||
CtrlEntID = @WINDOW:'.WO_NO'
|
||||
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
||||
CurrCol = CurrPos<1>
|
||||
CurrRow = CurrPos<2>
|
||||
|
||||
If (CurrCol = COL$WO_NO) Then
|
||||
|
||||
WONo = Get_Property(CtrlEntID, 'CELLPOS', COL$WO_NO:@FM:CurrRow)
|
||||
WOStepKey = WONo:'*1'
|
||||
|
||||
Reactor = Get_Property(CtrlEntID, 'CELLPOS', COL$SPLIT:@FM:CurrRow)
|
||||
Reactor = Reactor<1,1>
|
||||
|
||||
PopupId = entid( @appid<1>, 'POPUP', '', 'DAILY_SCHED_OPTS' )
|
||||
OverRide = ''
|
||||
Display = xlate( 'SYSREPOSPOPUPS', 'LSL2**DAILY_SCHED_OPTS', pdisplay$, 'X' )
|
||||
if MemberOf(@USER4, 'ENGINEERING') OR MemberOf(@USER4, 'SUPERVISOR') OR MemberOf(@USER4, 'LEAD') then ;* Added LEAD security group to allow asign supplements -dkk 12/5/14
|
||||
* ADD OPTION TO ASSIGN SUPPLEMENTS
|
||||
Display := @vm:'Assign Supplements':@tm:'SUPPLEMENTS'
|
||||
end
|
||||
|
||||
OverRide<Pdisplay$> = Display
|
||||
|
||||
ChosenOpt = repository( 'EXECUTE', PopupId, @window, OverRide )
|
||||
|
||||
RdsKeys = ''
|
||||
BEGIN CASE
|
||||
|
||||
CASE ChosenOpt = 'QUOTE'
|
||||
IF security_check( 'Quote', Read$ ) THEN
|
||||
WORec = XLATE('WO_LOG',WoNo,'','X')
|
||||
OrderNo = WORec<WO_LOG_ORDER_NO$>
|
||||
OrderItemNos = WORec<WO_LOG_ORDER_ITEM$>
|
||||
QuoteNo = XLATE('ORDER_DET',OrderNo:'*':OrderItemNos<1,1>,1,'X')
|
||||
Void = start_window( 'QUOTE2', @window, QuoteNo:'*CENTER', '', '' )
|
||||
END ELSE
|
||||
security_err_msg( 'Quote', Read$ )
|
||||
END
|
||||
|
||||
CASE ChosenOpt = 'PSN'
|
||||
IF security_check( 'Prod Spec', Read$ ) THEN
|
||||
|
||||
PSNId = XLATE('WO_STEP',WOStepKey,WO_STEP_PROD_SPEC_ID$,'X')
|
||||
Void = start_window( 'PROD_SPEC', @window, PSNId:'*CENTER', '', '' )
|
||||
END ELSE
|
||||
security_err_msg( 'Prod Spec', Read$ )
|
||||
END
|
||||
|
||||
CASE ChosenOpt = 'RECIPE'
|
||||
if security_check( 'Recipe', Read$ ) then
|
||||
|
||||
PSN = XLATE('WO_STEP',WOStepKey,1,'X')
|
||||
|
||||
LayerSpecs = obj_Prod_Spec('GetLayerProp',PSN:@RM:@RM:1) ;* Returns specs for all layers in internal format
|
||||
|
||||
LayerSpec = FIELD(LayerSpecs,@RM,1) ;* Take the first Layer
|
||||
LayerSet = FIELD(LayerSpec,@FM,1) ;* Not used here but shown for clarity
|
||||
LayerSpec = FIELD(LayerSpec,@FM,2,99) ;* LayerSpec without the LayerSet
|
||||
|
||||
RecipeNo = LayerSpec<PRS_LAYER_RECIPE$>
|
||||
Void = start_window( 'RECIPE', @window, RecipeNo:'*CENTER', '', '' )
|
||||
end else
|
||||
security_err_msg( 'Recipe', Read$ )
|
||||
end
|
||||
|
||||
CASE ChosenOpt = 'RDS'
|
||||
if security_check( 'RDS', Read$ ) then
|
||||
RDSKeys = XLATE('WO_STEP',WOStepKey,WO_STEP_RDS_KEY$,'X')
|
||||
|
||||
TypeOver = ''
|
||||
TypeOver<PMODE$> = 'K'
|
||||
TypeOver<PDISPLAY$> = RDSKeys
|
||||
|
||||
RDSKeys = Popup(@WINDOW,TypeOver,'RDS_QUERY')
|
||||
|
||||
IF RDSKeys NE '' THEN
|
||||
Void = start_window( 'RDS', @window, RDSKeys:'*CENTER', '', '' )
|
||||
END
|
||||
end else
|
||||
security_err_msg( 'RDS', Read$ )
|
||||
end
|
||||
|
||||
CASE ChosenOpt = 'WO'
|
||||
if security_check( 'WO Log', Read$ ) then
|
||||
NewForm = Xlate('APP_INFO', 'NEW_WO_FORM', '', 'X')
|
||||
If NewForm then
|
||||
Start_Window('NDW_WO_LOG', @Window, WONo)
|
||||
end else
|
||||
Start_Window('WO_LOG2',@WINDOW, WONo:'*CENTER', '', '' ) ;* Added (copied from ViewPSN) -dkk 10/23/14
|
||||
end
|
||||
end else
|
||||
security_err_msg( 'WO Log', Read$ )
|
||||
end
|
||||
|
||||
CASE ChosenOpt = 'WO_STAT'
|
||||
|
||||
PSN = XLATE('WO_STEP',WOStepKey,1,'X')
|
||||
ReactorType = XLATE('PROD_SPEC',PSN,80,'X')
|
||||
|
||||
BEGIN CASE
|
||||
CASE ReactorType = 'P' Or ReactorType = 'EPP'
|
||||
|
||||
obj_Appwindow('ViewRelated','WO_PROD_EPI':@RM:WOStepKey)
|
||||
|
||||
CASE ReactorType = 'GAN'
|
||||
obj_Appwindow('ViewRelated','WO_PROD_GAN':@RM:WOStepKey)
|
||||
|
||||
CASE 1
|
||||
obj_Appwindow('ViewRelated','WO_PROD':@RM:WOStepKey)
|
||||
|
||||
END CASE
|
||||
|
||||
case ChosenOpt = 'SUPPLEMENTS'
|
||||
Void = rds_supplement_maint( WoNo )
|
||||
|
||||
case 1
|
||||
Null
|
||||
|
||||
end case
|
||||
end
|
||||
|
||||
return
|
||||
|
||||
********
|
||||
SchedDC:
|
||||
********
|
||||
CtrlEntID = @WINDOW:'.SCHED'
|
||||
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
||||
CurrCol = CurrPos<1>
|
||||
CurrRow = CurrPos<2>
|
||||
|
||||
ReactNo = Get_Property(CtrlEntID,'CELLPOS',COL$REACT_NO:@FM:CurrRow)
|
||||
|
||||
If (CurrCol = COL$REACT_NO) Then
|
||||
|
||||
Open 'DICT.SCHED_DET' TO hSCHED_DET Then
|
||||
|
||||
Set_Status(0)
|
||||
FoundOpenedDate = False$
|
||||
Error = False$
|
||||
DispDt = Date()
|
||||
|
||||
Loop
|
||||
Until (FoundOpenedDate) OR (Error)
|
||||
SearchString = 'SCHED_DT':@VM:DispDt
|
||||
Btree.Extract(SearchString, 'SCHED_DET', hSCHED_DET, SchedDetKeys, '', '')
|
||||
If Get_Status(errCode) Then
|
||||
ErrMsg(errCode)
|
||||
Error = True$
|
||||
|
||||
End else
|
||||
ReactorFound = False$
|
||||
keyCnt = COUNT(SchedDetKeys,@VM) + (SchedDetKeys NE '')
|
||||
For LoopIndex = 1 TO keyCnt
|
||||
SchedDetKey = SchedDetKeys<1,LoopIndex>
|
||||
ScheduledReactor = SchedDetKey[1,'*']
|
||||
If (ScheduledReactor = ReactNo) then
|
||||
ReactorFound = True$
|
||||
end
|
||||
Next LoopIndex
|
||||
If (ReactorFound = False$) then
|
||||
FoundOpenedDate = True$
|
||||
end else
|
||||
DispDt = DispDt + 1
|
||||
end
|
||||
End
|
||||
Repeat
|
||||
|
||||
If (FoundOpenedDate = True$) then
|
||||
Set_Property(@WINDOW:'.SCHED_DT','TEXT',OCONV(DispDt,'D4HL'))
|
||||
end
|
||||
|
||||
end else
|
||||
ErrMsg('Unable to open DICT.SCHED_DET for index lookup')
|
||||
end
|
||||
|
||||
end else
|
||||
if (CurrCol = COL$TYPE) OR (CurrCol = COL$WFR_SIZE) OR (CurrCol = COL$ASSIGN_DESC) then
|
||||
oaParms = 'REACT_STATE':@RM
|
||||
oaParms := ReactNo:@RM
|
||||
obj_Appwindow('ViewRelated',oaParms)
|
||||
|
||||
end else
|
||||
SchedDt = ICONV(Get_Property(@WINDOW:'.SCHED_DT','TEXT'),'D')
|
||||
|
||||
BEGIN CASE
|
||||
CASE CurrCol = COL$SCHED_DAY_1 ; SchedDt -= 1
|
||||
CASE CurrCol = COL$SCHED_DAY_2 ; NULL
|
||||
CASE CurrCol = COL$SCHED_DAY_3 ; SchedDt += 1
|
||||
CASE CurrCol = COL$SCHED_DAY_4 ; SchedDt += 2
|
||||
CASE CurrCol = COL$SCHED_DAY_5 ; SchedDt += 3
|
||||
CASE 1 ; SchedDt = ''
|
||||
END CASE
|
||||
|
||||
if (SchedDt NE '') then
|
||||
oaParms = 'SCHED':@RM
|
||||
oaParms := ReactNo:'*':SchedDt:@RM
|
||||
obj_Appwindow('ViewRelated',oaParms)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Set_Property(@WINDOW,'@REFRESH',1)
|
||||
|
||||
return
|
||||
|
||||
***********
|
||||
WONoSearch:
|
||||
***********
|
||||
SearchedWONo = Get_Property(@WINDOW:'.SEARCHED_WO','TEXT')
|
||||
WONos = Get_Property(@WINDOW,'@WO_NOS')
|
||||
LOCATE SearchedWONo IN WONos USING @FM SETTING Pos THEN
|
||||
Set_Property(@WINDOW:'.WO_NO', 'SELPOS', 1:@FM:Pos)
|
||||
END
|
||||
RETURN
|
||||
|
||||
******
|
||||
WO_PC:
|
||||
******
|
||||
CtrlEntID = @WINDOW:'.WO_NO'
|
||||
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
||||
CurrCol = CurrPos<1>
|
||||
CurrRow = CurrPos<2>
|
||||
|
||||
PrevPos = Get_Property(CtrlEntID,'PREVSELPOS')
|
||||
|
||||
PrevCol = PrevPos<1>
|
||||
PrevRow = PrevPos<2>
|
||||
|
||||
WONos = Get_Property(@WINDOW,'@WO_NOS')
|
||||
WOCells = Get_Property(@WINDOW,'@WO_CELLS')
|
||||
|
||||
****************************
|
||||
* Clear Previous Selection *
|
||||
****************************
|
||||
WONo = Get_Property(CtrlEntID,'CELLPOS',1:@FM:PrevRow)
|
||||
LOCATE WONo IN WONos USING @FM SETTING Pos THEN
|
||||
CellLocs = WOCells<Pos>
|
||||
cCnt = COUNT(CellLocs,@VM) + (CellLocs NE '')
|
||||
FOR I = 1 to cCnt
|
||||
Cell = CellLocs<1,I>
|
||||
Row = Cell[1,@SVM]
|
||||
Col = Cell[COL2()+1,@SVM]
|
||||
stat = Send_Message(@WINDOW:'.SCHED','COLOR_BY_POS',Col,Row,WHITE$)
|
||||
NEXT I
|
||||
|
||||
END
|
||||
|
||||
*******************************
|
||||
* Highlight Current Selection *
|
||||
*******************************
|
||||
ScrolledTopPosition = false$
|
||||
WONo = Get_Property(CtrlEntID,'CELLPOS',1:@FM:CurrRow)
|
||||
LOCATE WONo IN WONos USING @FM SETTING Pos THEN
|
||||
CellLocs = WOCells<Pos>
|
||||
cCnt = COUNT(CellLocs,@VM) + (CellLocs NE '')
|
||||
FOR I = 1 to cCnt
|
||||
Cell = CellLocs<1,I>
|
||||
SelRow = Cell[1,@SVM]
|
||||
SelCol = Cell[COL2()+1,@SVM]
|
||||
if (ScrolledTopPosition = false$) then
|
||||
Set_Property(@WINDOW:'.SCHED', 'TOPPOS', 1:@FM:SelRow)
|
||||
ScrolledTopPosition = true$
|
||||
end
|
||||
stat = Send_Message(@WINDOW:'.SCHED','COLOR_BY_POS',SelCol,SelRow,PRE_BLUE$)
|
||||
NEXT I
|
||||
END
|
||||
|
||||
return
|
||||
|
||||
****************
|
||||
InventoryDemand:
|
||||
****************
|
||||
ReportType = 'D'
|
||||
Print_Demand(ReportType)
|
||||
return
|
||||
|
||||
*********
|
||||
TrapKeys:
|
||||
*********
|
||||
Message = Parm2
|
||||
BEGIN CASE
|
||||
CASE ( Message = ETM_INSERTROW$ )
|
||||
* // Stop the insert here...
|
||||
CALL set_WinMsgVal( TRUE$, 0 ) ; * // Force PS to return 0 to Windows
|
||||
CASE ( Message = ETM_DELETEROW$ )
|
||||
* // Stop the delete here...
|
||||
CALL set_WinMsgVal( TRUE$, 0 ) ; * // Force PS to return 0 to Windows
|
||||
END CASE
|
||||
|
||||
RETURN
|
Reference in New Issue
Block a user