325 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 |