COMPILE FUNCTION Comm_PRS_QUERY(Instruction, Parm1,Parm2) /* Commuter module for PRS_QUERY (Product Specification Query) window 06/07/2004 - John C. Henry, J.C. Henry & Co., Inc. */ DECLARE SUBROUTINE Set_Property, End_Dialog, Send_Event, Set_Status, DECLARE SUBROUTINE ErrMsg, Send_Message, Set_Property, Send_Event, Btree.Extract, obj_AppWindow DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Utility, Center_Window, Popup DECLARE FUNCTION Send_Message, obj_PR_Spec, Collect.IXVals $INSERT POPUP_EQUATES $INSERT COMPANY_EQU $INSERT APPCOLORS EQU CRLF$ TO \0D0A\ EQU COL$CUST_NO TO 1 EQU COL$CUST_NAME TO 2 EQU COL$ACT_CODE TO 1 EQU COL$ACT_DESC TO 2 ErrTitle = 'Error in Comm_PRS_Query' ErrorMsg = '' Result = '' BEGIN CASE CASE Instruction = 'Create' ; GOSUB Create CASE Instruction = 'CustInfoPC' ; GOSUB CustInfoPC CASE Instruction = 'CustInfoLF' ; GOSUB CustInfoLF CASE Instruction = 'ActivationPC' ; GOSUB ActivationPC CASE Instruction = 'ActivationLF' ; GOSUB ActivationLF CASE Instruction = 'LUCustNo' ; GOSUB LUCustNo CASE Instruction = 'LUPartNo' ; GOSUB LUPartNo CASE Instruction = 'LUActStatus' ; GOSUB LUActStatus CASE Instruction = 'LUSpecPhase' ; GOSUB LUSpecPhase CASE Instruction = 'LURecipeType' ; GOSUB LURecipeType CASE Instruction = 'PQuery' ; GOSUB PQuery CASE Instruction = 'Cancel' ; GOSUB Cancel CASE 1 ErrorMsg = 'Unknown Instruction passed to routine.' ErrMsg(ErrorMsg) END CASE RETURN Result * * * * * * * Create: * * * * * * * obj_Appwindow('Create',@WINDOW) RETURN * * * * * * * CustInfoPC: * * * * * * * CurrPos = Get_Property(@WINDOW:'.CUSTOMER_INFO','SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> CurrRowData = Get_Property(@WINDOW:'.CUSTOMER_INFO','ROWDATA') CustNo = CurrRowData<1,COL$CUST_NO> IF NOT(NUM(CustNo)) THEN CONVERT @LOWER_CASE TO @UPPER_CASE IN CustNo OPEN 'DICT.COMPANY' TO DictVar THEN SearchString = 'CO_NAME':@VM:CustNo:']':@FM Option = '' Flag = '' CompanyKeys = '' Btree.Extract(SearchString, 'COMPANY', DictVar, CompanyKeys, Option, Flag) IF Get_Status(errCode) THEN ErrMsg(errCode) PTypeOver = '' PTypeOver = CompanyKeys PTypeOver = 1 CustNo = Popup(@WINDOW,PTypeOver,'PRS_COMPANIES') ;* Table is both customer and vendors %$&%^@!$%# Set_Property(@WINDOW:'.CUSTOMER_INFO','DEFPROP',CustNo,COL$CUST_NO:@FM:CurrRow) END END CustName = XLATE('COMPANY',CustNo,4,'X' ) Set_Property(@WINDOW:'.CUSTOMER_INFO','DEFPROP',CustName,COL$CUST_NAME:@FM:CurrRow) IF CurrCol = COL$CUST_NAME THEN CurrRow += 1 CurrCol = COL$CUST_NO Set_Property(@WINDOW:'.CUSTOMER_INFO','SELPOS',CurrCol:@FM:CurrRow) END GOSUB Refresh RETURN * * * * * * * CustInfoLF: * * * * * * * Set_Property(@WINDOW:'.CUSTOMER_INFO','SELPOS',1:@FM:1) RETURN * * * * * * * ActivationPC: * * * * * * * CurrPos = Get_Property(@WINDOW:'.ACTIVATION','SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> CurrRowData = Get_Property(@WINDOW:'.ACTIVATION','ROWDATA') ActCd = CurrRowData<1,COL$ACT_CODE> IF ActCd NE '' THEN CONVERT @LOWER_CASE TO @UPPER_CASE IN ActCd BEGIN CASE CASE ActCd[1,1] _EQC 'P' ; ActDesc = 'PreActivation' CASE ActCd[1,1] _EQC 'A' ; ActDesc = 'Active' CASE ActCd[1,1] _EQC 'I' ; ActDesc = 'Inactive' CASE 1 ErrMsg('Invalid Activation Code') Set_Property(@WINDOW:'.ACTIVATION','DEFPROP','',COL$ACT_CODE:@FM:CurrRow) Set_Property(@WINDOW:'.ACTIVATION','DEFPROP','',COL$ACT_DESC:@FM:CurrRow) Set_Property(@WINDOW:'.ACTIVATION','SELPOS',COL$ACT_CODE:@FM:CurrRow) RETURN END CASE Set_Property(@WINDOW:'.ACTIVATION','DEFPROP',ActCd,COL$ACT_CODE:@FM:CurrRow) Set_Property(@WINDOW:'.ACTIVATION','DEFPROP',ActDesc,COL$ACT_DESC:@FM:CurrRow) END IF CurrCol = COL$ACT_DESC THEN CurrRow += 1 CurrCol = COL$ACT_CODE Set_Property(@WINDOW:'.ACTIVATION','SELPOS',CurrCol:@FM:CurrRow) END GOSUB Refresh RETURN * * * * * * * ActivationLF: * * * * * * * Set_Property(@WINDOW:'.ACTIVATION','SELPOS',1:@FM:1) RETURN * * * * * * * LUCustNo: * * * * * * * CompNos = Collect.IXVals('PR_SPEC','CUST_NO') CONVERT @FM TO @VM IN CompNos IF CompNos[1,1] = @VM THEN CompNos[1,1] = '' PTypeOver = '' PTypeOver = CompNos CompNos = Popup(@WINDOW,PTypeOver,'PRS_COMPANIES') IF Get_Status(errCode) THEN ErrMsg(errCode) IF CompNos NE '' THEN CompArray = '' CompNames = XLATE('COMPANY',CompNos,COMPANY_CO_NAME$,'X') CompArray<1> = CompNos CompArray<2> = CompNames CompArray<1,-1> = '' ;* Add blank line at bottom CompArray<2,-1> = '' Set_Property(@WINDOW:'.CUSTOMER_INFO','DEFPROP',CompArray) GOSUB Refresh END RETURN * * * * * * * LUPartNo: * * * * * * * CustPartNos = Collect.IXVals('PR_SPEC','CUST_PART_NO_XREF') CONVERT @FM TO @VM IN CustPartNos IF CustPartNos[1,1] = @VM THEN CustPartNos[1,1] = '' ;* Null first values cause popups to NOT work! PTypeOver = '' PTypeOver = CustPartNos CustPartNos = Popup(@WINDOW,PTypeOver,'PART_NO') IF Get_Status(errCode) THEN ErrMsg(errCode) IF CustPartNos NE '' THEN CustPartNos<1,-1> = '' ;* Add blank line at the bottom Set_Property(@WINDOW:'.PART_NO','DEFPROP',CustPartNos) END RETURN * * * * * * * LUActStatus: * * * * * * * TypeOver = '' TypeOver = '' TypeOver = 'E' Codes = Popup(@WINDOW,TypeOver,'PRS_ACT_STATUS') IF Codes NE '' THEN Codes<-1> = '' ;* Add blank line at the bottom Set_Property(@WINDOW:'.ACTIVATION','LIST',Codes) END GOSUB REFRESH RETURN * * * * * * * LUSpecPhase: * * * * * * * Codes = Popup(@WINDOW,'','PRS_PHASE') IF Codes NE '' THEN Codes<1,-1> = '' ;* Add blank line at the bottom Set_Property(@WINDOW:'.PHASE','DEFPROP',Codes) END RETURN * * * * * * * LURecipeType: * * * * * * * Recipes = Collect.IXVals('PR_SPEC','GENERIC_RECIPE') CONVERT @FM TO @VM IN Recipes IF Recipes[1,1] = @VM THEN Recipes[1,1] = '' PTypeOver = '' PTypeOver = Recipes Codes = Popup(@WINDOW,PTypeOver,'REACTOR_RECIPE_TYPE') IF Get_Status(errCode) THEN ErrMsg(errCode) IF Codes NE '' THEN Codes<1,-1> = '' ;* Add blank line at the bottom Set_Property(@WINDOW:'.RECIPE_TYPE','DEFPROP',Codes) END RETURN * * * * * * * PQuery: * * * * * * * Ctrls = @WINDOW:'.CUSTOMER_INFO':@RM ; Props = 'ARRAY':@RM Ctrls := @WINDOW:'.PART_NO':@RM ; Props := 'ARRAY':@RM Ctrls := @WINDOW:'.ACTIVATION':@RM ; Props := 'ARRAY':@RM Ctrls := @WINDOW:'.PHASE':@RM ; Props := 'ARRAY':@RM Ctrls := @WINDOW:'.RECIPE_TYPE' ; Props := 'ARRAY' Vals = Get_Property(Ctrls,Props) CustNos = Vals[1,@RM]<1> ;* These are all arrays with data of interest in the 1st column CustPartNos = Vals[COL2()+1,@RM]<1> ActStatuses = Vals[COL2()+1,@RM]<1> Phases = Vals[COL2()+1,@RM]<1> Recipes = Vals[COL2()+1,@RM]<1> LOOP UNTIL CustNos[-1,1] NE @VM CustNos[-1,1] = '' REPEAT LOOP UNTIL CustPartNos[-1,1] NE @VM CustPartNos[-1,1] = '' REPEAT LOOP UNTIL ActStatuses[-1,1] NE @VM ActStatuses[-1,1] = '' REPEAT LOOP UNTIL Phases[-1,1] NE @VM Phases[-1,1] = '' REPEAT LOOP UNTIL Recipes[-1,1] NE @VM Recipes[-1,1] = '' REPEAT SearchStr = '' IF CustNos NE '' THEN SearchStr<-1> = 'CUST_NO':@VM:CustNos END IF CustPartNos NE '' THEN SearchStr<-1> = 'CUST_PART_NO_XREF':@VM:CustPartNos END IF ActStatuses NE '' THEN SearchStr<-1> = 'ACT_STATUS':@VM:ActStatuses END IF Phases NE '' THEN SearchStr<-1> = 'SPEC_PHASE':@VM:Phases END IF Recipes NE '' THEN SearchStr<-1> = 'GENERIC_RECIPE':@VM:Recipes END IF SearchStr THEN OPEN 'DICT.PR_SPEC' to DictPrSpec ELSE ErrMsg('Unable to open DICT.PROD_SPEC...' ) GOTO Cancel END SearchStr := @FM Void = utility( 'CURSOR', 'H' ) Btree.Extract( SearchStr, 'PR_SPEC', DictPrSpec, PRSpecKeys, '', Flag ) IF Get_Status(errCode) THEN ErrMsg(errCode) GOTO Cancel END IF PRSpecKeys = '' THEN ErrMsg('No records found matching selection criteria...') END ELSE PRSpecKeys := @VM CONVERT @VM TO @RM IN PRSpecKeys CALL V119('S','','D','R',PRSpecKeys,'') IF Get_Status(errCode) THEN DEBUG CONVERT @RM TO @VM IN PRSpecKeys PRSpecKeys[-1,1] = '' ;* Strip trailing delimiter CONVERT @VM TO @FM IN PRSpecKeys End_Dialog(@WINDOW,PRSpecKeys) END END RETURN * * * * * * * Refresh: * * * * * * * CompArray = Get_Property(@WINDOW:'.CUSTOMER_INFO','ARRAY') FOR I = 1 TO COUNT(CompArray<1>,@VM) + (CompArray<1> NE '') Send_Message(@WINDOW:'.CUSTOMER_INFO','COLOR_BY_POS',COL$CUST_NAME,I,GREEN$) ;* Name column -> green background NEXT I ActArray = Get_Property(@WINDOW:'.ACTIVATION','ARRAY') FOR I = 1 TO COUNT(ActArray<1>,@VM) + (ActArray<1> NE '') Send_Message(@WINDOW:'.ACTIVATION','COLOR_BY_POS',COL$ACT_DESC,I,GREEN$) ;* Name column -> green background NEXT I RETURN * * * * * * * Cancel: * * * * * * * End_Dialog(@WINDOW, '') RETURN