open-insight/LSL2/STPROC/POP_MAST_SCHED_OPTS.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

325 lines
9.1 KiB
Plaintext

Function Pop_Mast_Sched_Opts(WOStepKey, ApptID)
/*******************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to
be copied without written permission from SRP Computer Solutions, Inc.
Name : Pop Mast Sched Opts
Notes : Taken from the the DBLCLK event of the WO_MAST_SCHED window, and modified for
standalone use.
Tags : [SRP]
Parameters :
WOStepKey [in] --
History (Date, Initials, Notes)
11/12/09 fjt Initial development
08/17/10 fjt Added Choose_Box option per David
*******************************************************************************************************/
$insert MSG_EQUATES
$insert POPUP_EQUATES
$INSERT LOGICAL
$insert RDS_EQU
$insert PROD_SPEC_EQU
$insert PRS_LAYER_EQU
$insert WO_STEP_EQU
Declare function Start_Window, Msg, Entid, Repository, Fieldcount, Relational_Call, MemberOf
Declare function RDS_Wo_Verify_Maint, RDS_Supplement_Maint, Obj_Prod_Spec, Utility, Key_Sort
Declare subroutine Extract_Si_Keys, Obj_Appwindow, Make.List
GoSub Record
GoSub Build_Popup
Begin Case
Case ChoosenOpt EQ "EPIPRO_WOPS" ; GoSub EPIPRO_WOPS
Case ChoosenOpt EQ "RECIPE" ; GoSub RECIPE
Case ChoosenOpt EQ "RDS" ; GoSub RDS
Case ChoosenOpt EQ "WO" ; GoSub WO
Case ChoosenOpt EQ "WO_STATUS" ; GoSub WO_STATUS
Case ChoosenOpt EQ "WO_VERIFY" ; GoSub WO_VERIFY
Case ChoosenOpt EQ "SUPPLEMENTS" ; GoSub SUPPLEMENTS
Case ChoosenOpt EQ "PSN" ; GoSub PSN
End Case
Return
!----- INTERNAL ROUTINES --------------------------------------------------------------------------------
Record:
Rec = Xlate("WO_MAST_SCHED", ApptID, "", "X")
CurReactor = Rec<15> ;// Reactor
RNum = Rec<15> ;// Reactor
return
Build_Popup:
PopupId = EntId(@appid<1>, 'POPUP', '', 'MAST_SCHED_OPTS')
OverRide = ''
Display = Xlate("SYSREPOSPOPUPS", "LSL2**MAST_SCHED_OPTS", pDisplay$, "X")
User.Engineer = MemberOf(@USER4, "ENGINEERING")
User.Testing = MemberOf(@USER4, "TESTING")
User.Super = MemberOf(@USER4, "SUPERVISOR")
Begin Case
Case User.Testing
Display := @VM:"EpiPro WO Proc Status":@TM:"EPIPRO_WOPS"
Display := @VM:'Assign WO Verifications':@TM:'WO_VERIFY'
Display := @vm:'Assign Supplements' :@TM: "SUPPLEMENTS"
Case User.Super
Display := @VM:"EpiPro WO Proc Status":@TM:"EPIPRO_WOPS"
Display := @VM:'Assign WO Verifications':@TM:'WO_VERIFY'
Display := @vm:'Assign Supplements' :@TM: "SUPPLEMENTS"
Case User.Engineer
Display := @vm:'Assign Supplements' :@TM: "SUPPLEMENTS"
End Case
// Add product spec for all levels
Display := @VM: "Product Spec" :@TM: "PSN"
Override<6,0,1> = "Tahoma" :@SVM: 14 :@SVM: 400
OverRide<Pdisplay$> = Display
ChoosenOpt = Repository("EXECUTE", PopupId, @Window, OverRide)
return
!----- PROCESS OPTIONS ----------------------------------------------------------------------------------
EPIPRO_WOPS:
* WONos = Field(WOStepKey, "*", 1)
* rv = Start_Window("WO_PROD_EPI", @Window, WONos, "", "")
obj_Appwindow('ViewRelated', 'WO_PROD_EPI':@RM:WOStepKey)
return
CHOOSE_BOXES:
* RDSIds = XLATE('WO_STEP', WOStepKey, WO_STEP_RDS_KEY$, 'X')
* If RdsIds then
* PopId = EntID(@appid<1>, 'POPUP', '', 'RDS_QUERY' )
* OverRide = ''
* OverRide<ptitle$> = 'Choose the RDS Run Orders for Reactor ':Reactor
* Convert @VM to @FM in RdsIds
* Make.List(0, RdsIds, '', '' )
* ChosenKeys = Repository("EXECUTE", PopId, @Window, OverRide)
* If ChosenKeys then
* Ccnt = Fieldcount(ChosenKeys, @VM)
*
* RunNums = Xlate('RDS', ChosenKeys, 'RUN_ORDER_NUM', 'X')
*
* CurWoVal = HoldWoVal
* gosub PrepWo
* gosub RecalcWo
* end
* end
return
PSN:
PSN = Xlate("WO_MAST_SCHED", ApptID, 6, "X")
If PSN then
rv = Start_Window("PROD_SPEC", @Window, PSN, "", "")
end
return
RECIPE:
CurKeys = ""
RecipeKeys = ""
IF LEN(WOStepKey) EQ 6 THEN
WOStepKey = WOStepKey:'*1'
END ELSE
WOStepKey = WOStepKey[1,6]:'*':WOStepKey[7,1]
END
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$>
IF RecipeNo NE '' THEN
LOCATE RecipeNo IN RecipeKeys USING @VM SETTING Dum ELSE
RecipeKeys<1,-1> = RecipeNo
END
END
IF RecipeKeys NE '' THEN
Void = start_window( 'RECIPE', @window, RecipeKeys:'*CENTER', '', '' )
END
return
RDS:
WOStepKeys = ""
If Len(WOStepKey) EQ 6 then
WOStepKey = WOStepKey:'*1'
end else
WOStepKey = WOStepKey[1,6]:'*':WOStepKey[7,1]
end
WOStepKeys<1,-1> = WOSTepKey
RDSNos = Xlate("WO_STEP", WOStepKeys, WO_STEP_RDS_KEY$, "X")
// Popup the run data sheet popup list
TypeOver = ""
TypeOver<PMODE$> = "K"
TypeOver<PDISPLAY$> = RDSNos
RDSKeys = Popup(@WINDOW,TypeOver,'RDS_QUERY')
If RDSKeys NE "" then
rv = Start_Window("RDS", @Window, RDSKeys:"*CENTER", "", "")
end
return
WO:
WONos = Field(WOStepKey, "*", 1)
NewForm = Xlate('APP_INFO', 'NEW_WO_FORM', '', 'X')
If NewForm then
Form = 'NDW_WO_LOG'
end else
Form = 'WO_LOG2'
end
rv = Start_Window(Form, @Window, WONos, "", "")
return
WO_STATUS:
WOStepKeys = WOStepKey
PSN = Xlate("WO_STEP", WOStepKey, 1, "X")
ReactorType = XLATE('PROD_SPEC', PSN, 80, 'X')
If ReactorType EQ 'P' then
obj_Appwindow('ViewRelated','WO_PROD_EPI':@RM:WOStepKeys)
end else
obj_Appwindow('ViewRelated','WO_PROD':@RM:WOStepKeys)
end
return
WO_VERIFY:
TWo = WOStepKey
rv = RDS_WO_Verify_Maint(TWo)
return
SUPPLEMENTS:
TWo = WOStepKey
rv = RDS_Supplement_Maint(TWo)
return
!----- INTERNAL ROUTINES -------------------------------------------------------------------------------
PrepWo:
* * CurReactor = get_property( @window, '@Reactor' )
* Convert @upper_case to '' in CurReactor
* Convert @lower_case to '' in CurReactor
*
* CurWoVal = CurWoVal[1,' ']
*
* Swap '52nd' with '' in CurWoVal
* Convert @upper_case to '' in CurWoVal
* Convert @lower_case to '' in CurWoVal
* Convert " `~!@#$%^&*()_+-=\][{}|';:/?.>,<" to '' in CurWoVal
* Convert '"' to '' in CurWoVal
*
* If Len(CurWoVal) EQ 7 then
* CurWoVal = CurWoVal[1,6]:".":CurWoVal[7,1] ;// Workorder plus a step 7/28/2005 JCH
* end
return
RecalcWo:
/*
* RNum = get_property( @window, '@Reactor' )
RMId = 'REACT_MODE':RNum
Mode = Xlate('CONFIG', RMId, Mode$, 'X')
* If Mode then
* Icon = get_mode_icon( Mode )
* Extension = '.BMP'
* DosBmp = 'BMPS\':Icon:Extension
* Void = set_property( @window:'.RMODE', 'BITMAP', DosBmp )
* end
if CurWoVal NE '' then
Stat = Utility( 'CURSOR', 'H' )
IF INDEX(CurWoVal,'.',1) THEN
WOStepKey = CurWoVal
END ELSE
WOStepKey = CurWoVal:'.1'
END
CONVERT '.' TO '*' IN WOStepKey
RdsToProc = XLATE('WO_STEP',WOStepKey,6,'X')
if RdsToProc then
* CurArray = get_property( @window:'.ROS', 'ARRAY' )
* for i = 1 to 80
* Void = send_message( @window:'.ROS', 'COLOR_BY_POS', i, 1, Black$ )
* next i
Convert @vm to @fm in RdsToProc
RdsToProc = Key_Sort(RdsToProc, 'RDS', 'RUN_ORDER_NUM', 1)
Tcnt = fieldcount( RdsToProc, @fm )
RdsToProc = field( RdsToProc, @fm, 1, 80 ) ;* only room for 80
Rcnt = fieldcount( RdsToProc, @fm )
for i = 1 to Rcnt
RdsRec = XLATE('RDS',RdsToProc<i>,'','X')
IF RdsRec = '' THEN
Void = msg( '', 'Unable to read ':RdsToProc<i>:' from RDS...' )
return 0
end
*
if CurArray<i,2> = 0 then
// they do not want to run this box on this reactor
GrayBox = true$
end else
* it is either one on blank meaning show this box
GrayBox = false$
end
DateIn = RdsRec<rds_date_in$>
DateOut = RdsRec<rds_date_out$>
Reactor = RdsRec<rds_reactor$>
begin case
case ( GrayBox ) and ( Reactor = CurReactor )
// this is a gray box meaning run on another reactor but it ran here so show blue
ColorToUse = Blue$
case GrayBox
ColorToUse = Gray$
case ( DateIn = '' ) and ( DateOut = '' )
ColorToUse = White$
case Reactor <> CurReactor
ColorToUse = Blue$
case ( DateIn <> '' ) and ( DateOut = '' )
ColorToUse = Green$
case ( DateIn <> '' ) and ( DateOut <> '' )
ColorToUse = Red$
end case
*
*Void = send_message( @window:'.ROS', 'COLOR_BY_POS', i, 1, ColorToUse )
next i
end
Stat = utility( 'CURSOR', 'A' )
end
*/
return