262 lines
8.5 KiB
Plaintext
262 lines
8.5 KiB
Plaintext
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
|
|
*============================================================================*
|
|
|