added LSL2 stored procedures
This commit is contained in:
261
LSL2/STPROC/WO_MAST_SCHED_COMM.txt
Normal file
261
LSL2/STPROC/WO_MAST_SCHED_COMM.txt
Normal file
@ -0,0 +1,261 @@
|
||||
function wo_mast_sched_comm(Branch, CurParam, CaseSens )
|
||||
declare function set_property, fieldcount, get_property, msg, dialog_box
|
||||
declare function editcell
|
||||
declare function send_message, utility, key_sort, start_window, entid, repository
|
||||
declare subroutine end_dialog
|
||||
|
||||
|
||||
$INSERT MSG_EQUATES
|
||||
$INSERT POPUP_EQUATES
|
||||
$INSERT LOGICAL
|
||||
$INSERT WO_LOG_EQU
|
||||
$INSERT WO_STEP_EQU
|
||||
|
||||
|
||||
equ Yellow$ to 65535
|
||||
equ White$ to 16777215
|
||||
|
||||
ReturnVar = 0
|
||||
Branches = 'PREV,NEXT,CANCEL,CLEARPOS,SET_WO_SCHEDULED'
|
||||
convert ',' to @fm in Branches
|
||||
locate Branch in Branches using @fm setting Bpos then
|
||||
on Bpos gosub PREV, NEXT, CANCEL, CLEARPOS, SET_WO_SCHEDULED
|
||||
end else
|
||||
Void = msg( '', 'Invalid Branch ':Bpos:' passed to wo_mast_sched_comm' )
|
||||
end
|
||||
return ReturnVar
|
||||
*============================================================================*
|
||||
PREV:
|
||||
*DEBUG
|
||||
* CurParam = the string the user entered to search for
|
||||
* LastPos is Column:@fm:Row of the last found string
|
||||
SchedInfo = get_property( 'WO_MAST_SCHED.SCHED_INFO', 'ARRAY' )
|
||||
LastPos = get_property( 'WO_MAST_SCHED', '@LastPos' )
|
||||
if LastPos else
|
||||
LastPos = fieldcount( SchedInfo, @fm ):@fm:get_property( 'WO_MAST_SCHED.REACTOR_CNT', 'TEXT' )+1
|
||||
end
|
||||
Col = LastPos<1>
|
||||
Row = LastPos<2>
|
||||
SchedInfo = get_property( 'WO_MAST_SCHED.SCHED_INFO', 'ARRAY' )
|
||||
* we know they are searching back so only search on LastPos backward
|
||||
SchedInfo = field( SchedInfo, @fm, 1, Col ) ;* start with one and get up to cur column
|
||||
if Row-1 = 0 then
|
||||
TColData = ''
|
||||
end else
|
||||
TColData = field( SchedInfo<Col>, @vm, 1, Row-1 )
|
||||
end
|
||||
SchedInfo<Col> = TColData
|
||||
Found = false$
|
||||
for i = Col to 1 step -1
|
||||
ThisColumn = SchedInfo<i>
|
||||
if CaseSens else
|
||||
convert @lower_case to @upper_case in ThisColumn
|
||||
convert @lower_case to @upper_case in CurParam
|
||||
* because count is case sensitive yuchhhhhhhhhhhhhhhhhhh!!!!
|
||||
end
|
||||
CurParamCnt = count( ThisColumn, CurParam )
|
||||
if CurParamcnt then
|
||||
if CaseSens then
|
||||
Fpos = index( ThisColumn, CurParam, CurParamCnt )
|
||||
end else
|
||||
Fpos = indexc( ThisColumn, CurParam, CurParamCnt )
|
||||
end
|
||||
if Fpos then
|
||||
TColumn = ThisColumn[1,Fpos]
|
||||
RowFound = fieldcount( TColumn, @vm )
|
||||
LastPos = i:@fm:RowFound
|
||||
Void = set_property( 'WO_MAST_SCHED', '@LastPos', LastPos )
|
||||
Void = set_property( 'WO_MAST_SCHED.SCHED_INFO', 'SELPOS', LastPos )
|
||||
Void = send_message( 'WO_MAST_SCHED.SCHED_INFO', 'COLOR_BY_POS', Col, Row, White$ )
|
||||
Void = send_message( 'WO_MAST_SCHED.SCHED_INFO', 'COLOR_BY_POS', i, RowFound, Yellow$ )
|
||||
Found = true$
|
||||
end
|
||||
end
|
||||
until Found
|
||||
next i
|
||||
if Found else
|
||||
MsgInfo = ''
|
||||
MsgInfo<micon$> = '!'
|
||||
MsgInfo<mtext$> = quote(CurParam):' not found...'
|
||||
Void = msg( '', MsgInfo )
|
||||
*Void = set_property( 'WO_MAST_SCHED', '@LastPos', '' )
|
||||
end
|
||||
return
|
||||
*============================================================================*
|
||||
NEXT:
|
||||
*debug
|
||||
* CurParam = the string the user entered to search for
|
||||
* LastPos is Column:@fm:Row of the last found string
|
||||
LastPos = get_property( 'WO_MAST_SCHED', '@LastPos' )
|
||||
if LastPos else
|
||||
LastPos = 1:@fm:0
|
||||
end
|
||||
Col = LastPos<1>
|
||||
Row = LastPos<2>
|
||||
SchedInfo = get_property( 'WO_MAST_SCHED.SCHED_INFO', 'ARRAY' )
|
||||
* we know they are searching forward so only search on LastPos forward
|
||||
SchedInfo = field( SchedInfo, @fm, Col, 99999 )
|
||||
BegFields = Col - 1
|
||||
if BegFields then
|
||||
SchedInfo = str( @fm, BegFields ):SchedInfo
|
||||
end
|
||||
TColData = field( SchedInfo<Col>, @vm, Row+1, 999 )
|
||||
BegValues = Row
|
||||
if BegValues then
|
||||
TColData = str( @vm, BegValues ):TColData
|
||||
SchedInfo<Col> = TColData
|
||||
end
|
||||
Found = false$
|
||||
CCnt = fieldcount( SchedInfo, @fm )
|
||||
for i = Col to CCnt
|
||||
ThisColumn = SchedInfo<i>
|
||||
if CaseSens then
|
||||
Fpos = index( ThisColumn, CurParam, 1 )
|
||||
end else
|
||||
Fpos = indexc( ThisColumn, CurParam, 1 )
|
||||
end
|
||||
if Fpos then
|
||||
TColumn = ThisColumn[1,Fpos]
|
||||
RowFound = fieldcount( TColumn, @vm )
|
||||
LastPos = i:@fm:RowFound
|
||||
Void = set_property( 'WO_MAST_SCHED', '@LastPos', LastPos )
|
||||
Void = set_property( 'WO_MAST_SCHED.SCHED_INFO', 'SELPOS', LastPos )
|
||||
Void = send_message( 'WO_MAST_SCHED.SCHED_INFO', 'COLOR_BY_POS', Col, Row, White$ )
|
||||
Void = send_message( 'WO_MAST_SCHED.SCHED_INFO', 'COLOR_BY_POS', i, RowFound, Yellow$ )
|
||||
Found = true$
|
||||
end
|
||||
until Found
|
||||
next i
|
||||
if Found else
|
||||
MsgInfo = ''
|
||||
MsgInfo<micon$> = '!'
|
||||
MsgInfo<mtext$> = quote(CurParam):' not found...'
|
||||
Void = msg( '', MsgInfo )
|
||||
*Void = set_property( 'WO_MAST_SCHED', '@LastPos', '' )
|
||||
end
|
||||
return
|
||||
*============================================================================*
|
||||
CANCEL:
|
||||
LastPos = get_property( 'WO_MAST_SCHED', '@LastPos' )
|
||||
if LastPos then
|
||||
Col = LastPos<1>
|
||||
Row = LastPos<2>
|
||||
Void = send_message( 'WO_MAST_SCHED.SCHED_INFO', 'COLOR_BY_POS', Col, Row, White$ )
|
||||
end
|
||||
Void = set_property( 'WO_MAST_SCHED', '@LastPos', '' )
|
||||
end_dialog( @window, '' )
|
||||
return
|
||||
*============================================================================*
|
||||
CLEARPOS:
|
||||
LastPos = get_property( 'WO_MAST_SCHED', '@LastPos' )
|
||||
if LastPos then
|
||||
Col = LastPos<1>
|
||||
Row = LastPos<2>
|
||||
Void = send_message( 'WO_MAST_SCHED.SCHED_INFO', 'COLOR_BY_POS', Col, Row, White$ )
|
||||
end
|
||||
Void = set_property( 'WO_MAST_SCHED', '@LastPos', '' )
|
||||
return
|
||||
*============================================================================*
|
||||
SET_WO_SCHEDULED:
|
||||
SchedArray = get_property( @window:'.SCHED_INFO', 'ARRAY' )
|
||||
WOsToUpdate = ''
|
||||
Cols = fieldcount( SchedArray, @fm )
|
||||
Rows = fieldcount( SchedArray<1>, @vm )
|
||||
|
||||
for Col = 1 to Cols
|
||||
for Row = 1 to Rows
|
||||
Reactor = Row
|
||||
|
||||
ThisCol = SchedArray<Col,Row>
|
||||
TWOs = iconv( ThisCol, '[WO_VALID,1]' )
|
||||
* PASSING A 1 TO PREVENT ERROR MESSAGES
|
||||
convert ';' to @fm in TWOs
|
||||
Wcnt = fieldcount( TWOs, @fm )
|
||||
for W = 1 to Wcnt
|
||||
ThisWo = TWOs<W>
|
||||
IF INDEX(ThisWo,'.',1) THEN
|
||||
WOStepKey = ThisWo
|
||||
END ELSE
|
||||
WOStepKey = ThisWo:'.1'
|
||||
END
|
||||
|
||||
LOCATE WOStepKey IN WOsToUpdate<1> USING @VM SETTING Fpos ELSE
|
||||
WOsToUpdate = INSERT(WOsToUpdate,1,Fpos,0,WOStepKey)
|
||||
WOsToUpdate = INSERT(WOsToUpdate,2,Fpos,0,Reactor)
|
||||
END
|
||||
NEXT W
|
||||
NEXT Row
|
||||
NEXT Col
|
||||
|
||||
WOStepKeys = WOsToUpdate<1>
|
||||
CONVERT '.' TO '*' IN WOStepKeys
|
||||
WOsToUpdate<1> = WOStepKeys
|
||||
|
||||
SchedStatus = XLATE( 'WO_Step', WOsToUpdate<1>, WO_STEP_SCHEDULED$, 'X' )
|
||||
Scnt = FIELDCOUNT( WOsToUpdate<1>, @VM )
|
||||
|
||||
OPEN 'WO_STEP' TO WOStepTable ELSE
|
||||
Void = msg( '', 'Unable to open WO_STEP...' )
|
||||
return 0
|
||||
END
|
||||
|
||||
IF Scnt > 2 THEN
|
||||
Def = ''
|
||||
Def<MCAPTION$> = 'Scheduling Work Orders...'
|
||||
Def<MTYPE$> = 'G'
|
||||
Def<MEXTENT$> = Scnt
|
||||
Def<MTEXTWIDTH$> = 600
|
||||
MsgUp = Msg(@WINDOW,Def)
|
||||
END ELSE
|
||||
MsgUp = ''
|
||||
END
|
||||
|
||||
LockErrs = ''
|
||||
FOR I = 1 TO Scnt
|
||||
ThisWoLog = WOsToUpdate<1,I>
|
||||
ReactNo = WOsToUpdate<2,I>
|
||||
|
||||
IF MsgUp NE '' THEN
|
||||
Msg(@WINDOW, MsgUp, I, MSGINSTUPDATE$)
|
||||
END
|
||||
|
||||
ThisSchedStat = SchedStatus<1,I>
|
||||
IF ( ThisSchedStat = true$ ) ELSE
|
||||
|
||||
LOCK WOStepTable, ThisWoLog THEN
|
||||
READ WOStepRec FROM WOStepTable,ThisWoLog THEN
|
||||
WOStepRec<WO_STEP_SCHEDULED$> = 1
|
||||
|
||||
CurrDate = OCONV(Date(),'D4/')
|
||||
CurrTime = OCONV(Time(),'MTH')
|
||||
WOStepRec<WO_STEP_SCHED_DTM$> = ICONV(CurrDate:' ':CurrTime,'DTM')
|
||||
|
||||
WRITE WOStepRec ON WOStepTable,ThisWoLog ELSE
|
||||
Void = msg( '', 'Unable to open WO_STEP...' )
|
||||
RETURN 0
|
||||
END
|
||||
END
|
||||
UNLOCK WOStepTable,ThisWoLog ELSE
|
||||
Void = msg( '', 'Unable to unlock WO_STEP ':ThisWoLog )
|
||||
RETURN 0
|
||||
END
|
||||
END ELSE
|
||||
LockErrs<-1> = ThisWoLog
|
||||
END
|
||||
END
|
||||
NEXT I
|
||||
|
||||
IF MsgUp NE '' THEN Msg(@WINDOW,MsgUp)
|
||||
|
||||
if ( LockErrs <> '' ) then
|
||||
swap @fm with ', ' in LockErrs
|
||||
MsgInfo = ''
|
||||
Tvar = 'The following WO(s) ':LockErrs:' could not be set to scheduled, due to them being '
|
||||
Tvar:= 'in use. You will have to manuall set them to scheduled or try at a later time.'
|
||||
MsgInfo<mtext$> = Tvar
|
||||
MsgInfo<micon$> = '!'
|
||||
Void = msg( '', MsgInfo )
|
||||
end
|
||||
return
|
||||
*============================================================================*
|
||||
|
Reference in New Issue
Block a user