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

218 lines
5.8 KiB
Plaintext

COMPILE FUNCTION obj_Annual_Contracts(Method,Parms)
/*
Methods for ANNUAL_CONTRACTS table
12/17/2003 JCH - Initial Coding
Properties:
Methods:
AddOrder(DataStruct) ;* Add Order information to Annual Contracts (from WRITE event of Order window)
RemOrder ;* Rem Order Reference from Annual Contracts (new to fix problems with garbage)
*/
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box, Popup
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables
$INSERT MSG_EQUATES
$INSERT POPUP_EQUATES
$INSERT LOGICAL
$INSERT ANNUAL_CONTRACTS_EQU
ErrTitle = 'Error in Stored Procedure "obj_Annual_Contracts"'
ErrorMsg = ''
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
IF ErrorMsg NE '' THEN
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
RETURN ''
END
Result = ''
BEGIN CASE
CASE Method = 'Find' ; GOSUB Find
CASE Method = 'AddOrder' ; GOSUB AddOrder
CASE Method = 'RemOrder' ; GOSUB RemOrder
CASE 1
END CASE
IF ErrorMsg NE '' THEN
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
RETURN ''
END
RETURN Result
* * * * * * *
Find:
* * * * * * *
AcKeys = Dialog_Box( 'ANNUAL_CONTRACTS_QUERY', @window, '' )
Result = AcKeys
RETURN
* * * * * * *
AddOrder:
* * * * * * *
OrderNo = Parms[1,@RM]
ACID = Parms[COL2()+1,@RM]
ACPO = Parms[COL2()+1,@RM]
ACRelNo = Parms[COL2()+1,@RM]
ACRelDt = Parms[COL2()+1,@RM]
OrderWOs = Parms[COL2()+1,@RM]
WOSetupAmts = Parms[COL2()+1,@RM]
WOQtys = Parms[COL2()+1,@RM]
WOPrices = Parms[COL2()+1,@RM]
IF OrderNo = '' THEN ErrorMsg = 'Null parameter OrderNo passed to routine (':Method:').'
IF ACID = '' THEN ErrorMsg = 'Null parameter ACID passed to routine (':Method:').'
IF ACPO = '' THEN ErrorMsg = 'Null parameter ACPO passed to routine (':Method:').'
*IF ACRelNo = '' THEN ErrorMsg = 'Null parameter ACRelNo passed to routine (':Method:').'
IF ACRelDt = '' THEN ErrorMsg = 'Null parameter ACRelDt passed to routine (':Method:').'
IF ErrorMsg NE '' THEN RETURN
thisACRelDt = ICONV(ACRelDt,'D')
IF thisACRelDt = '' THEN
ErrorMsg = 'Invalid data ACRelDt ':QUOTE(ACRelDt):' passed to routine (':Method:').'
RETURN
END
IF WOSetUpAmts NE '' THEN
thisWOSetUpAmts = ICONV(WOSetUpAmts,'MD2')
IF thisWOSetUpAmts = '' THEN
SWAP @VM WITH ', ' IN WOSetUpAmts
ErrorMsg = 'Invalid data WOSetUpAmts ':QUOTE(WOSetUpAmts):' passed to routine (':Method:').'
RETURN
END
END ELSE
thisWOSetUpAmts = ''
END
IF WOQtys NE '' THEN
thisWOQtys = ICONV(WOQtys,'MD0')
IF thisWOQtys = '' THEN
SWAP @VM WITH ', ' IN WOQtys
ErrorMsg = 'Invalid data WOQtys ':QUOTE(WOQtys):' passed to routine (':Method:').'
RETURN
END
END ELSE
thisWOQtys = ''
END
IF WOPrices NE '' THEN
thisWOPrices = ICONV(WOPrices,'MD2')
IF thisWOPrices = '' THEN
SWAP @VM WITH ', ' IN WOPrices
ErrorMsg = 'Invalid data WOPrices ':QUOTE(WOPrices):' passed to routine (':Method:').'
RETURN
END
END ELSE
thisWOPrices = ''
END
TableVar = ''
OtParms = 'ANNUAL_CONTRACTS':@RM:ACID:@RM:TableVar
ACRec = obj_Tables('ReadRec',OtParms) ;* Locks and reads record for update
IF Get_Status(errCode) THEN Return
WOCnt = COUNT(OrderWOs,@VM) + (OrderWOs NE '')
FOR I = 1 TO WOCnt
thisOrderWO = OrderWOs<1,I>
thisWOSetUpAmt = thisWOSetUpAmts<1,I>
thisWOQty = thisWOQtys<1,I>
thisWOPrice = thisWOPrices<1,I>
LOCATE thisOrderWO IN ACRec<annual_contracts_rel_wo$> BY 'DR' USING @VM SETTING Pos THEN
ACRec<annual_contracts_rel_po$,Pos> = ACPO
ACRec<annual_contracts_rel_no$,Pos> = ACRelNo
ACRec<annual_contracts_rel_date$,Pos> = thisACRelDt
ACRec<annual_contracts_rel_setup_charge$,Pos> = thisWOSetUpAmt
ACRec<annual_contracts_rel_quantity$,Pos> = thisWOQty
ACRec<annual_contracts_rel_price$,Pos> = thisWOPrice
END ELSE
* Put new orders into top of the list
ACRec = insert(ACRec,annual_contracts_rel_no$,Pos,0,ACRelNo)
ACRec = insert(ACRec,annual_contracts_rel_po$,Pos,0,ACPO)
ACRec = insert(ACRec,annual_contracts_rel_date$,Pos,0,thisACRelDt)
ACRec = insert(ACRec,annual_contracts_rel_wo$,Pos,0,thisOrderWO)
ACRec = insert(ACRec,annual_contracts_rel_setup_charge$,Pos,0,thisWOSetUpAmt)
ACRec = insert(ACRec,annual_contracts_rel_quantity$,Pos,0,thisWOQty)
ACRec = insert(ACRec,annual_contracts_rel_price$,Pos,0,thisWOPrice)
END
NEXT I
OtParms = FieldStore(OtParms,@RM,4,1,ACRec)
obj_Tables('WriteRec',OtParms) ;* Writes and unlocks the record
RETURN
* * * * * * *
RemOrder:
* * * * * * *
ACID = Parms[1,@RM]
PONo = Parms[COL2()+1,@RM]
IF ACID = '' THEN ErrorMsg = 'Null parameter ACID passed to routine (':Method:').'
IF PONo = '' THEN ErrorMsg = 'Null parameter PONo passed to routine (':Method:').'
TableVar = ''
OtParms = 'ANNUAL_CONTRACTS':@RM:ACID:@RM:TableVar
ACRec = obj_Tables('ReadRec',OtParms) ;* Locks and reads record for update
IF Get_Status(errCode) THEN Return
Done = 0
Updated = 0
LOOP
LOCATE PONo IN ACRec<annual_contracts_rel_po$> USING @VM SETTING Pos THEN
* Update existing reference
ACRec = Delete(ACRec,annual_contracts_rel_no$,Pos,0)
ACRec = Delete(ACRec,annual_contracts_rel_po$,Pos,0)
ACRec = Delete(ACRec,annual_contracts_rel_date$,Pos,0)
ACRec = Delete(ACRec,annual_contracts_rel_wo$,Pos,0)
ACRec = Delete(ACRec,annual_contracts_rel_setup_charge$,Pos,0)
ACRec = Delete(ACRec,annual_contracts_rel_quantity$,Pos,0)
ACRec = Delete(ACRec,annual_contracts_rel_price$,Pos,0)
Updated = 1
END ELSE
Done = 1
END
UNTIL Done
REPEAT
IF NOT(Updated) THEN
obj_Tables('UnlockRec',OtParms)
RETURN ;* Invoice not on this Schedule, nothing to do
END ELSE
OtParms = FieldStore(OtParms,@RM,4,1,ACRec)
obj_Tables('WriteRec',OtParms) ;* Writes and unlocks the record
END
RETURN