796 lines
19 KiB
Plaintext
796 lines
19 KiB
Plaintext
COMPILE FUNCTION Comm_Ann_Cont(Instruction, Parm1,Parm2)
|
|
|
|
/*
|
|
Commuter module for ANN_CONT (Annual Contract) window
|
|
|
|
07/16/2004 - John C. Henry, J.C. Henry & Co., Inc.
|
|
*/
|
|
|
|
DECLARE SUBROUTINE Set_Property, End_Dialog, Send_Event, Set_Status, Center_Window, Post_Event, Set_List_Box_Data
|
|
DECLARE SUBROUTINE ErrMsg, Send_Message, Set_Property, Send_Event, Btree.Extract, obj_AppWindow,ErrMsg
|
|
DECLARE SUBROUTINE obj_Notes, Security_Err_Msg, End_Window, Forward_Event, Start_Window, Create_Note
|
|
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Utility, Center_Window, Popup, Collect.Ixvals
|
|
DECLARE FUNCTION Send_Message, Msg, Security_Check, RowExists, obj_Prod_Ord, obj_Annual_Contracts, NextKey
|
|
|
|
$INSERT POPUP_EQUATES
|
|
$INSERT LOGICAL
|
|
$INSERT MSG_EQUATES
|
|
$INSERT APPCOLORS
|
|
$INSERT QUOTE_SIGS_EQU
|
|
$INSERT LSL_USERS_EQU
|
|
$INSERT SECURITY_RIGHTS_EQU
|
|
$INSERT ANNUAL_CONTRACTS_EQU
|
|
$INSERT PROD_SPEC_EQU
|
|
$INSERT QUOTE_EQU
|
|
$INSERT NOTIFICATION_EQU
|
|
|
|
EQU CRLF$ TO \0D0A\
|
|
|
|
|
|
EQU COL$QUOTE_NO TO 1 ;* Equates for Quote Table on 1st page
|
|
EQU COL$QSTATUS TO 2
|
|
EQU COL$PART_NO TO 3
|
|
EQU COL$QUOTE_PSN TO 4
|
|
EQU COL$QUOTE_DESC TO 5
|
|
|
|
|
|
EQU COL$PRO_NO TO 1
|
|
EQU COL$ORD_DT TO 2
|
|
EQU COL$CUST_PO_NO TO 3
|
|
EQU COL$CUST_PO_LINE TO 4
|
|
EQU COL$CUST_PO_REL TO 5
|
|
EQU COL$SETUP_CHG TO 6
|
|
EQU COL$WAFER_CNT TO 7
|
|
EQU COL$WAFER_AMT TO 8
|
|
|
|
EQU COL$REL_NO TO 1
|
|
EQU COL$PO_REL TO 2
|
|
EQU COL$DATE TO 3
|
|
EQU COL$WO_LOG TO 4
|
|
EQU COL$SETUP TO 5
|
|
EQU COL$QTY TO 6
|
|
EQU COL$PRICE TO 7
|
|
EQU COL$AMOUNT TO 8
|
|
|
|
|
|
ErrTitle = 'Error in Comm_Ann_Cont'
|
|
ErrorMsg = ''
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE Instruction = 'Create' ; GOSUB Create
|
|
CASE Instruction = 'Refresh' ; GOSUB Refresh
|
|
CASE Instruction = 'Read' ; GOSUB Read
|
|
CASE Instruction = 'Write' ; GOSUB Write
|
|
CASE Instruction = 'Clear' ; GOSUB Clear
|
|
CASE Instruction = 'Page' ; GOSUB Page
|
|
CASE Instruction = 'Delete' ; GOSUB Delete
|
|
CASE Instruction = 'Close' ; GOSUB Close
|
|
CASE Instruction = 'New' ; GOSUB New
|
|
CASE Instruction = 'LUDate' ; GOSUB LUDate
|
|
CASE Instruction = 'LUACNo' ; GOSUB LUACNo
|
|
CASE Instruction = 'QuoteDC' ; GOSUB QuoteDC
|
|
CASE Instruction = 'QuotePC' ; GOSUB QuotePC
|
|
CASE Instruction = 'CustChar' ; GOSUB CustChar
|
|
CASE Instruction = 'LUCustNo' ; GOSUB LUCustNo
|
|
CASE Instruction = 'ViewCust' ; GOSUB ViewCust
|
|
CASE Instruction = 'LUNameNo' ; GOSUB LUNameNo
|
|
CASE Instruction = 'ViewName' ; GOSUB ViewName
|
|
CASE Instruction = 'ProdOrdDC' ; GOSUB ProdOrdDC
|
|
CASE Instruction = 'SendMessage' ; GOSUB SendMessage
|
|
|
|
CASE 1
|
|
ErrorMsg = 'Unknown Instruction ':QUOTE(Instruction):' passed to routine.'
|
|
ErrMsg(ErrorMsg)
|
|
END CASE
|
|
|
|
RETURN Result
|
|
|
|
|
|
|
|
* * * * * * *
|
|
Create:
|
|
* * * * * * *
|
|
|
|
* Change the security tables to match the table names after conversion and take this note out
|
|
|
|
IF NOT(Security_Check('Annual Contracts',READ$)) THEN
|
|
Security_Err_Msg('Annual Contracts',READ$)
|
|
End_Window(@WINDOW)
|
|
RETURN
|
|
END
|
|
|
|
obj_Appwindow('Create',@WINDOW)
|
|
|
|
Set_List_Box_Data(@WINDOW)
|
|
|
|
* Provides compatibility with the existing messaging attachment system
|
|
|
|
IF Parm1 NE '' THEN
|
|
PassedKeys = FIELD(Parm1,'*',1)
|
|
obj_Appwindow('ViewRelated',@WINDOW:@RM:PassedKeys)
|
|
END
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Clear:
|
|
* * * * * * *
|
|
|
|
Send_Event(@WINDOW,'PAGE',1)
|
|
|
|
obj_AppWindow('ReadOnly',@RM:1) ;* Reenables data bound controls
|
|
|
|
|
|
* * * * * * *
|
|
Refresh:
|
|
* * * * * * *
|
|
|
|
IF Security_Check('Annual Contracts',EDIT$) THEN
|
|
obj_AppWindow('ReadOnly',@WINDOW:@RM:1) ;* enable all database controls
|
|
END ELSE
|
|
obj_AppWindow('ReadOnly',@WINDOW) ;* disable all database controls
|
|
END
|
|
|
|
|
|
Ctrls = @WINDOW:'.ENTRY_ID':@RM ; Props = 'TEXT':@RM
|
|
Ctrls := @WINDOW:'.ENTRY_DT':@RM ; Props := 'TEXT':@RM
|
|
Ctrls := @WINDOW:'.CLOSE_DATE' ; Props := 'TEXT'
|
|
|
|
Vals = Get_Property(Ctrls,Props)
|
|
|
|
EnterBy = Vals[1,@RM]
|
|
EnterDTM = Vals[COL2()+1,@RM]
|
|
CloseDt = Vals[COL2()+1,@RM]
|
|
|
|
|
|
IF EnterBy = '' THEN Vals = 1:@RM ELSE Vals = 0:@RM
|
|
IF EnterDTM = '' THEN Vals := 1:@RM ELSE Vals := 0:@RM
|
|
IF CloseDt = '' THEN Vals := 1 ELSE Vals := 0
|
|
|
|
Props = 'ENABLED':@RM:'ENABLED':@RM:'ENABLED'
|
|
|
|
Set_Property(Ctrls,Props,Vals)
|
|
|
|
ACNo = Get_Property(@WINDOW,'ID')
|
|
|
|
IF ACNo = '' THEN
|
|
Set_Property(@WINDOW:'.NEW_BUTTON','ENABLED',1)
|
|
END ELSE
|
|
Set_Property(@WINDOW:'.NEW_BUTTON','ENABLED',0)
|
|
END
|
|
|
|
CustNo = Get_Property(@WINDOW:'.CUST_NO','TEXT')
|
|
|
|
IF CustNo = '' THEN
|
|
Set_Property(@WINDOW:'.QUOTE_GROUP','ENABLED',0)
|
|
END ELSE
|
|
Set_Property(@WINDOW:'.QUOTE_GROUP','ENABLED',1)
|
|
END
|
|
|
|
* QBF buttons
|
|
|
|
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
|
|
|
|
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
|
|
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
|
|
END ELSE
|
|
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
|
|
END
|
|
|
|
Set_Property(Ctrls,Props,Vals)
|
|
|
|
* Turn edit table symbolic column backgrounds to green
|
|
|
|
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
|
|
|
|
ETCtrls = ETSymbolics<1>
|
|
ETCols = ETSymbolics<2>
|
|
|
|
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
|
|
ETCtrl = ETCtrls<1,I>
|
|
ETList = Get_Property(ETCtrl,'LIST')
|
|
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
|
|
IF ETList<Line,1> NE '' THEN
|
|
FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '')
|
|
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$)
|
|
NEXT N
|
|
END
|
|
NEXT I
|
|
NEXT I
|
|
|
|
QCtrl = @WINDOW:'.QUOTE_TABLE'
|
|
|
|
QuoteList = Get_Property(QCtrl,'LIST')
|
|
|
|
FOR I = 1 TO COUNT(QuoteList,@FM) + (QuoteList NE '')
|
|
QStatFirst = QuoteList<I,COL$QSTATUS>[1,1]
|
|
|
|
IF QStatFirst NE 'O' AND QStatFirst NE '' THEN
|
|
stat = Send_Message(QCtrl,'COLOR_BY_POS',COL$QSTATUS,I,YELLOW$)
|
|
END
|
|
|
|
NEXT I
|
|
|
|
|
|
TotalList = Get_Property(@WINDOW:'.TOTALS_TABLE','LIST') ;* One line edit table 3 columns wide
|
|
|
|
Balance = TotalList<1,3>
|
|
IF Balance NE '' THEN
|
|
IF Balance <= 0 THEN
|
|
stat = Send_Message(@WINDOW:'.TOTALS_TABLE','COLOR_BY_POS',3,1,RED$)
|
|
END ELSE
|
|
stat = Send_Message(@WINDOW:'.TOTALS_TABLE','COLOR_BY_POS',3,1,GREEN$)
|
|
END
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Page:
|
|
* * * * * * *
|
|
|
|
obj_Appwindow('Page')
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Read:
|
|
* * * * * * *
|
|
|
|
* * * This is called from the event handler as a PreRead event * * *
|
|
|
|
ProdOrdNo = Get_Property(@WINDOW:'AC_NO','TEXT')
|
|
|
|
IF NOT(RowExists('ANNUAL_CONTRACTS',ProdOrdNo)) THEN
|
|
IF NOT(Security_Check('Annual Contracts',WRITE$)) THEN
|
|
Security_Err_Msg('Annual Contracts',WRITE$)
|
|
Send_Event(@WINDOW,'CLEAR')
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
Forward_Event() ;* passed security, do the read
|
|
|
|
EnterBy = Get_Property(@WINDOW:'.ENTRY_ID','TEXT')
|
|
IF EnterBy = '' THEN
|
|
CurrDate = OCONV(Date(),'D4/')
|
|
Set_Property(@WINDOW:'.ENTRY_ID','TEXT',OCONV(@USER4,'[XLATE_CONV,LSL_USERS*FIRST_LAST]'))
|
|
Set_Property(@WINDOW:'.ENTRY_DATE','TEXT',CurrDate)
|
|
Set_Property( @WINDOW:'.CUST_NO', "FOCUS",1)
|
|
END
|
|
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Write:
|
|
* * * * * * *
|
|
|
|
Ctrls = @WINDOW:'.TOTALS_TABLE':@RM ; Props = 'LIST':@RM
|
|
Ctrls := @WINDOW:'.MIN_BALANCE':@RM ; Props := 'TEXT':@RM
|
|
Ctrls := @WINDOW:'.STATUS':@RM ; Props := 'VALUE':@RM
|
|
Ctrls := @WINDOW:@RM ; Props := 'ID':@RM
|
|
Ctrls := @WINDOW:@RM ; Props := 'SAVEWARN':@RM
|
|
Ctrls := @WINDOW:'.CUST_NAME' ; Props := 'TEXT'
|
|
|
|
Vals = Get_Property(Ctrls,Props)
|
|
|
|
Totals = Vals[1,@RM]
|
|
MinBalance = Vals[COL2()+1,@RM]
|
|
Status = Vals[COL2()+1,@RM]
|
|
ACId = Vals[COL2()+1,@RM]
|
|
SaveWarn = Vals[COL2()+1,@RM]
|
|
CustName = Vals[COL2()+1,@RM]
|
|
|
|
Totals = OCONV(ICONV(Totals,'MD2'),'MD2') ;* Remove any commas
|
|
MinBalance = OCONV(ICONV(MinBalance,'MD2'),'MD2')
|
|
|
|
OrderTotal = Totals<1,1> ; * This is from a single row edit table -> three columns
|
|
RelTotal = Totals<1,2>
|
|
Balance = Totals<1,3>
|
|
|
|
IF MinBalance = '' THEN MinBalance = '1001.00' ;* default = $1001.00
|
|
|
|
IF Balance <= MinBalance THEN
|
|
Balance = OCONV(ICONV(Balance,'MD2'),'MD2,$')
|
|
Mesg = 'The Current Balance on Annual Contract No ':ACID
|
|
Mesg := ' for ':CustName:' is below minimum at ':Balance
|
|
|
|
Recipient = XLATE('NOTIFICATION','ANN_CONT',NOTIFICATION_USER_ID$,'X')
|
|
|
|
Create_Note(Recipient,'System','Annual Contract Balance',Mesg,'ANNUAL_CONTRACTS',ACId)
|
|
END
|
|
|
|
IF Status = 'C' AND SaveWarn THEN
|
|
MsgInfo = ''
|
|
MsgInfo<MTYPE$> = 'BNY'
|
|
MsgInfo<MTEXT$> = 'This contract is closed!':CRLF$:'Are you sure you wish to save changes?'
|
|
MsgInfo<MICON$> = '!'
|
|
SaveIt = Msg(@WINDOW,MsgInfo,'')
|
|
IF SaveIt THEN
|
|
Result = 1
|
|
END ELSE
|
|
Result = 0
|
|
END
|
|
END
|
|
|
|
Result = 1 ;* Perform the write event
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Delete:
|
|
* * * * * * *
|
|
|
|
IF Security_Check('Annual Contracts',Delete$) THEN
|
|
Result = 1 ;* Proceed with delete
|
|
END ELSE
|
|
Security_Err_Msg('Annual Contracts',Delete$)
|
|
Result = 0 ;* Stop event chain
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
New:
|
|
* * * * * * *
|
|
|
|
ACNo = Get_Property(@WINDOW,'ID')
|
|
|
|
IF ACNo = '' THEN
|
|
NextACNo = NextKey('ANNUAL_CONTRACTS')
|
|
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:NextACNo)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LUDate:
|
|
* * * * * * *
|
|
|
|
ReturnCtrl = Parm1[1,@RM]
|
|
|
|
IF ReturnCtrl = '' THEN ReturnCtrl = Get_Property(@WINDOW,'FOCUS')
|
|
|
|
DateSelected = Dialog_Box('POPUP_YEAR',@WINDOW)
|
|
|
|
RetVal = OCONV(DateSelected, 'D4/')
|
|
|
|
IF RetVal NE '' THEN
|
|
obj_Appwindow('LUValReturn',RetVal:@RM:ReturnCtrl)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LUACNo:
|
|
* * * * * * *
|
|
|
|
IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1
|
|
IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2
|
|
|
|
Set_Status(0)
|
|
|
|
ACKeys = obj_Annual_Contracts('Find')
|
|
|
|
IF ACKeys = '' THEN RETURN
|
|
|
|
CONVERT @FM TO @VM IN ACKeys
|
|
|
|
TypeOver = ''
|
|
TypeOver<PDISPLAY$> = AcKeys
|
|
TypeOver<PTITLE$> = 'Annual Contracts'
|
|
TypeOver<PSELECT$> = 2 ;* multiple select
|
|
|
|
Set_Status(0)
|
|
|
|
ACKeys = Popup(@WINDOW,TypeOver,'COMP_ANN_CONT')
|
|
IF Get_Status(errCode) THEN ErrMsg(errCode)
|
|
|
|
IF INDEX(ACKeys,@VM,1) THEN
|
|
Send_Event(@WINDOW,'QBFINIT')
|
|
Set_Property(@WINDOW,'QBFLIST',ACKeys)
|
|
GOSUB Refresh
|
|
Send_Event(@WINDOW,'QBFIRST')
|
|
END ELSE
|
|
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:ACKeys)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Close:
|
|
* * * * * * *
|
|
|
|
obj_Notes('Inbox',@USER4) ;* Checks for any new messages
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
QuoteDC:
|
|
* * * * * * *
|
|
|
|
* DoubleClick event handler for the Quotes Table
|
|
|
|
CtrlEntId = @WINDOW:'.QUOTE_TABLE'
|
|
|
|
CurrPos = Get_Property(CtrlEntId,'SELPOS')
|
|
RowData = Get_Property(CtrlEntId,'ROWDATA')
|
|
ColData = Get_Property(CtrlEntId,'ARRAY')
|
|
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
CustNo = Get_Property(@WINDOW:'.CUST_NO','TEXT')
|
|
|
|
IF CurrCol = COL$QUOTE_NO THEN
|
|
IF RowData<1,CurrCol> = '' THEN
|
|
OPEN 'DICT.QUOTE' TO DictVar THEN
|
|
SearchString = 'CUST_NO':@VM:CustNo:@VM:@FM
|
|
SearchString := 'STATUS':@VM:'=O':@FM
|
|
|
|
Btree.Extract(SearchString, 'QUOTE', DictVar, QuoteKeys, '', Flag)
|
|
IF Get_Status(errCode) THEN
|
|
Msg(@window, MsgUp)
|
|
ErrMsg(errCode)
|
|
RETURN
|
|
END
|
|
|
|
IF QuoteKeys = '' THEN
|
|
ErrMsg('No Quotes on file for customer ':CustNo)
|
|
RETURN
|
|
END
|
|
|
|
IF INDEX(QuoteKeys,@VM,1) THEN
|
|
|
|
QuoteKeys := @VM
|
|
CONVERT @VM TO @RM IN QuoteKeys
|
|
CALL V119('S','','D','R',QuoteKeys,'')
|
|
IF Get_Status(errCode) THEN DEBUG
|
|
CONVERT @RM TO @VM IN QuoteKeys
|
|
QuoteKeys[-1,1] = '' ;* Strip trailing delimiter
|
|
|
|
TypeOver = ''
|
|
TypeOver<PDISPLAY$> = QuoteKeys
|
|
TypeOver<PSELECT$> = 1 ;* Single value select
|
|
TypeOver<PTITLE$> = 'Open Quotes for ':OCONV(CustNo,'[XLATE_CONV,COMPANY*CO_NAME]')
|
|
|
|
QuoteKey = Popup(@WINDOW,TypeOver,'QUOTE')
|
|
|
|
END ELSE
|
|
QuoteKey = QuoteKeys
|
|
END
|
|
|
|
IF QuoteKey NE '' THEN
|
|
obj_Appwindow('LUValReturn',QuoteKey:@RM:CtrlEntId:@RM:CurrPos)
|
|
END
|
|
END ELSE
|
|
ErrMsg('Unable to open DICT.QUOTE in COMM_ANN_CONT.')
|
|
RETURN
|
|
END
|
|
END ELSE
|
|
QuoteNo = RowData<CurrCol>
|
|
IF QuoteNo NE '' THEN
|
|
obj_AppWindow('ViewRelated','QUOTE2':@RM:QuoteNo)
|
|
END
|
|
|
|
END ;* End of check for null value in column
|
|
END ;* End of check for Quote No column
|
|
|
|
IF CurrCol = COL$QUOTE_PSN THEN
|
|
PSNNos = RowData<CurrCol>
|
|
SWAP ', ' WITH @VM IN PSNNos
|
|
IF PSNNos NE '' THEN
|
|
obj_AppWindow('ViewRelated','PROD_SPEC':@RM:PSNNos)
|
|
END
|
|
|
|
END
|
|
|
|
CustNo = Get_Property(@WINDOW:'.CUST_NO','TEXT')
|
|
|
|
IF CurrCol = COL$PART_NO AND RowData<CurrCol> = '' THEN
|
|
|
|
PSNos = RowData<COL$QUOTE_PSN>
|
|
SWAP ', ' WITH @VM IN PSNos ;* Changed 11/18/2004 JCH
|
|
PartNos = XLATE('PROD_SPEC',PSNos,PROD_SPEC_CUST_PART_NO$,'X')
|
|
|
|
PartsInTable = ColData<COL$PART_NO>
|
|
|
|
TableLineCnt = COUNT(PartsInTable,@VM) + (PartsInTable NE '')
|
|
|
|
LOOP
|
|
Test = PartsInTable[-1,1]
|
|
UNTIL Test NE @VM
|
|
PartsInTable[-1,1] = ''
|
|
REPEAT
|
|
|
|
ExistPartCnt = COUNT(PartsInTable,@VM) + (PartsInTable NE '')
|
|
|
|
FOR I = 1 TO ExistPartCnt
|
|
PartInTable = PartsInTable<1,I>
|
|
LOCATE PartInTable IN PartNos USING @VM Setting Pos THEN
|
|
PartNos = DELETE(PartNos,1,Pos,0)
|
|
END
|
|
NEXT I
|
|
|
|
IF PartNos = '' THEN
|
|
ErrMsg('No parts available on associated PSN or all parts already added.')
|
|
END
|
|
|
|
IF INDEX(PartNos,@VM,1) THEN
|
|
TypeOver = ''
|
|
TypeOver<PTITLE$> = 'Part Numbers on Product Specification ':PSNos
|
|
TypeOver<PDISPLAY$> = PartNos
|
|
PartNos = Popup(@WINDOW,TypeOver,'PART_NO')
|
|
IF PartNos = '' THEN RETURN
|
|
END
|
|
|
|
NewPartCnt = COUNT(PartNos,@VM) + (PartNos NE '')
|
|
|
|
LinesAvailable = TableLineCnt - (ExistPartCnt + NewPartCnt)
|
|
|
|
IF LinesAvailable <= 0 THEN
|
|
NewLines = ((LinesAvailable*-1) + 1)
|
|
FOR I = 1 TO NewLines
|
|
stat = Send_Message(CtrlEntID, "INSERT", -1, STR(@VM,6))
|
|
NEXT I
|
|
END
|
|
|
|
IF INDEX(PartNos,@VM,1) THEN
|
|
QuoteNo = RowData<COL$QUOTE_NO>
|
|
FOR I = 1 TO COUNT(PartNos,@VM) + (PartNos NE '')
|
|
|
|
PartNo = PartNos<1,I>
|
|
TRow = (CurrRow + I - 1)
|
|
obj_Appwindow('LUValReturn',QuoteNo:@RM:CtrlEntID:@RM:COL$QUOTE_NO:@FM:(CurrRow + I -1))
|
|
*Send_Event(CtrlEntID,'CALCULATE',COL$PSTATUS)
|
|
obj_Appwindow('LUValReturn',PartNo:@RM:CtrlEntID:@RM:COL$PART_NO:@FM:(CurrRow + I -1))
|
|
NEXT I
|
|
END ELSE
|
|
obj_Appwindow('LUValReturn',PartNos:@RM:CtrlEntID:@RM:CurrPos)
|
|
END
|
|
|
|
END
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
QuotePC:
|
|
* * * * * * *
|
|
|
|
CtrlEntId = @WINDOW:'.QUOTE_TABLE'
|
|
|
|
Ctrls = CtrlEntId:@RM ; Props = 'SELPOS':@RM
|
|
Ctrls := CtrlEntId:@RM ; Props := 'LIST':@RM
|
|
Ctrls := CtrlEntId:@RM ; Props := 'ARRAY':@RM
|
|
Ctrls := CtrlEntId ; Props := 'PREVSELPOS'
|
|
|
|
Vals = Get_Property(Ctrls,Props)
|
|
|
|
CurrPos = Vals[1,@RM]
|
|
ListData = Vals[COL2()+1,@RM]
|
|
ColData = Vals[COL2()+1,@RM]
|
|
PrevPos = Vals[COL2()+1,@RM]
|
|
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
PrevCol = PrevPos<1>
|
|
PrevRow = PrevPos<2>
|
|
|
|
|
|
QStatus = ListData<CurrRow,COL$QSTATUS>
|
|
PSNNo = ListData<CurrRow,COL$QUOTE_PSN>
|
|
|
|
|
|
QuoteNo = ListData<PrevRow,COL$QUOTE_NO>
|
|
PSNNos = ListData<PrevRow,COL$QUOTE_PSN>
|
|
PartNo = ListData<PrevRow,COL$PART_NO>
|
|
|
|
SWAP ', ' WITH @VM IN PSNNos
|
|
|
|
IF PrevCol = COL$QUOTE_NO AND QuoteNo NE '' THEN
|
|
CustNo = Get_Property(@WINDOW:'.CUST_NO','TEXT')
|
|
QuoteRec = XLATE('QUOTE',QuoteNo,'','X')
|
|
IF QuoteRec<QUOTE_CUST_NO$> NE CustNO THEN
|
|
ErrMsg('Quote is for a different customer!')
|
|
Set_Property(CtrlEntID,'INVALUE','',PrevPos)
|
|
Send_Event(CtrlEntID,'CALCULATE',COL$QSTATUS)
|
|
Set_Property(CtrlEntID,'SELPOS',PrevPos)
|
|
END
|
|
END
|
|
|
|
IF PrevCol = COL$PART_NO AND PartNo NE '' THEN
|
|
PSNParts = XLATE('PROD_SPEC',PSNNos,PROD_SPEC_CUST_PART_NO$,'X')
|
|
|
|
LOCATE PartNo IN PSNParts USING @VM SETTING Dummy ELSE
|
|
ErrMsg('Part No is not listed on the associated PSN!')
|
|
Set_Property(CtrlEntID,'INVALUE','',PrevPos)
|
|
Set_Property(CtrlEntID,'SELPOS',PrevPos)
|
|
END
|
|
END
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
* * * * * * *
|
|
CustChar:
|
|
* * * * * * *
|
|
|
|
CtrlName = @WINDOW:'.CUST_NO'
|
|
|
|
DataIn = Get_Property(CtrlName,'TEXT')
|
|
|
|
IF LEN(DataIn) > 2 THEN
|
|
|
|
ReturnToCtrl = CtrlName
|
|
|
|
IF NOT(NUM(DataIn)) THEN
|
|
Set_Property(CtrlName,'TEXT','') ;* Clear characters input
|
|
Start_Window('COMP_LOOKUP',@WINDOW,DataIn:@VM:'C':@FM:ReturnToCtrl,'','')
|
|
END
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LUCustNo:
|
|
* * * * * * *
|
|
|
|
IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1
|
|
IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2
|
|
|
|
TypeOver = ''
|
|
TypeOver<PSELECT$> = 1
|
|
|
|
CustNo = Popup(@WINDOW,TypeOver,'CUSTOMER')
|
|
IF CustNo NE '' THEN
|
|
obj_Appwindow('LUValReturn',CustNo:@RM:FocusControl:@RM:FocusPos)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ViewCust:
|
|
* * * * * * *
|
|
|
|
CustNo = Get_Property(@WINDOW:'.CUST_NO','TEXT')
|
|
IF CustNo NE '' THEN
|
|
obj_Appwindow('ViewRelated','COMPANY':@RM:CustNo)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LUNameNo:
|
|
* * * * * * *
|
|
|
|
IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1
|
|
IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2
|
|
|
|
CompNo = Get_Property(@WINDOW:'.CUST_NO','TEXT')
|
|
|
|
IF CompNo NE '' THEN
|
|
|
|
* This is the pushbutton - show the short name list
|
|
OPEN 'DICT.NAMES' TO DictVar THEN
|
|
SearchString = 'CO_ID':@VM:CompNo:@FM
|
|
Btree.Extract(SearchString,'NAMES',DictVar,NameNos,'',Flag)
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode)
|
|
RETURN
|
|
END
|
|
|
|
IF NameNos = '' THEN
|
|
ErrMsg('No names on file for Customer Number ':CompNo)
|
|
RETURN
|
|
END ELSE
|
|
IF INDEX(NameNos,@VM,1) THEN
|
|
TypeOver = ''
|
|
TypeOver<PDISPLAY$> = NameNos
|
|
TypeOver<PTITLE$> = 'Contact Names for ':XLATE('COMPANY',CompNo,4,'X')
|
|
NameNo = Popup(@WINDOW,TypeOver,'COMP_NAME')
|
|
END ELSE
|
|
NameNo = NameNos
|
|
END
|
|
obj_AppWindow('LUValReturn',NameNo:@RM:FocusControl:@RM:FocusPos)
|
|
END
|
|
END ELSE
|
|
ErrMsg('Unable to open DICT.NAMES in COMM_ANN_CONT routine.')
|
|
RETURN
|
|
END
|
|
END ELSE
|
|
NameNo = Popup(@WINDOW,'','NAMES')
|
|
IF NameNo NE '' THEN
|
|
obj_AppWindow('LUValReturn',NameNo:@RM:FocusControl:@RM:FocusPos)
|
|
END
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ViewName:
|
|
* * * * * * *
|
|
|
|
NameNo = Get_Property(@WINDOW:'.NAME_NO','TEXT')
|
|
IF NameNo NE '' THEN
|
|
obj_Appwindow('ViewRelated','NAMES':@RM:NameNo)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ProdOrdDC:
|
|
* * * * * * *
|
|
|
|
ACNo = Get_Property(@WINDOW,'ID')
|
|
CtrlEntID = @WINDOW:'.PROD_ORDER'
|
|
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
OrdNo = Get_Property(CtrlEntID,'CELLPOS',COL$PRO_NO:@FM:CurrRow)
|
|
IF OrdNo NE '' THEN
|
|
obj_Appwindow('ViewRelated','ORDER2':@RM:OrdNo)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
SendMessage:
|
|
* * * * * * *
|
|
|
|
ACNo = Get_Property(@WINDOW,'ID')
|
|
IF ACNo = '' THEN RETURN
|
|
QBFList = Get_Property(@WINDOW,'QBFLIST')
|
|
IF QBFList = '' THEN
|
|
Send_Event(@WINDOW,'WRITE')
|
|
END
|
|
|
|
Dummy = Dialog_Box('NOTES_ATTACH',@WINDOW,'ANN_CONT*':ACNo:'*':QBFList)
|
|
IF QBFList = '' THEN
|
|
obj_Appwindow('LoadFormKeys', @WINDOW:@RM:ACNo)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|