Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SUBROUTINE I.EB.CARDTASK.TXN
- *-----------------------------------------------------------------------------
- *
- *-----------------------------------------------------------------------------
- * Modification History :
- *-----------------------------------------------------------------------------
- $INSERT I_COMMON
- $INSERT I_EQUATE
- $INSERT I_F.EB.CARDTASK.TRANSACTION
- $INSERT I_F.EB.CARDTASK.CRD
- $INSERT I_F.ACCOUNT
- *-----------------------------------------------------------------------------
- GOSUB OPEN.FILES
- GOSUB READ.CARD
- GOSUB READ.ACC
- GOSUB CHECK.LIMIT
- GOSUB CHECK.VAL.DATE
- GOSUB CHECK.BALANCE
- RETURN
- *-----------------------------------------------------------------------------
- OPEN.FILES:
- FN.CARD = "F.EB.CARDTASK.CRD"
- F.CARD = ""
- CALL OPF(FN.CARD,F.CARD)
- FN.ACC = "F.ACCOUNT"
- F.ACC = ""
- CALL OPF(FN.ACC,F.ACC)
- RETURN
- *-----------------------------------------------------------------------------
- READ.CARD:
- CARD.ID = R.NEW(EB.CAR47.CARD)
- R.CARD = ""
- ERR.CARD = ""
- CALL F.READ(FN.CARD,CARD.ID,R.CARD,F.CARD,ERR.CARD)
- RETURN
- *-----------------------------------------------------------------------------
- READ.ACC:
- ACC.ID = R.NEW(EB.CAR47.CARD)
- R.ACC = ""
- ERR.ACC = ""
- CALL F.READ(FN.ACC,ACC.ID,R.ACC,F.ACC,ERR.ACC)
- RETURN
- *-----------------------------------------------------------------------------
- CHECK.LIMIT:
- TXN.AMT = R.NEW(EB.CAR47.AMOUNT)
- LIMIT = R.CARD<EB.CAR77.LIMIT>
- USAGE = R.CARD<EB.CAR77.LIMIT.USAGE>
- IF ((USAGE + TXN.AMT) GT LIMIT) THEN
- AF = EB.CAR47.AMOUNT
- AV = 1
- AS = 1
- ETEXT<1> = "EB-LIMIT.ERROR"
- ETEXT<2,1> = (USAGE + TXN.AMT) - LIMIT
- ETEXT<2,2> = LIMIT
- CALL STORE.END.ERROR
- END
- RETURN
- *-----------------------------------------------------------------------------
- CHECK.VAL.DATE:
- CARD.DATE = R.CARD<EB.CAR77.DATE>
- IF (CARD.DATE LT TODAY) THEN
- AF = EB.CAR47.CARD
- AV = 1
- AS = 1
- ETEXT<1> = "EB-DATE.ERROR"
- ETEXT<2,1> = CARD.DATE
- CALL STORE.END.ERROR
- END
- RETURN
- *-----------------------------------------------------------------------------
- CHECK.BALANCE:
- accountKey = R.CARD<EB.CAR77.ACCOUNT>
- workingBal = ""
- response = ""
- CALL AccountService.getWorkingBalance(accountKey, workingBal, response)
- IF(response NE "") THEN
- AF = EB.CAR47.AMOUNT
- AV = 1
- AS = 1
- ETEXT = "" : FM : response
- CALL STORE.END.ERROR
- RETURN
- END ELSE
- WORKING.BAL = workingBal
- END
- ;*GET THE CUMULATIVE OF THE LOCKED AMOUNT
- POS = ""
- LOCATE TODAY IN R.ACC<AC.FROM.DATE,1> BY "AR" SETTING POS ELSE
- POS--
- END
- TOTAL.LOCK.AMT = R.ACC<AC.LOCKED.AMOUNT,POS>
- ;* AVAIABLE BALANCE
- AVAILABLE.BAL = WORKING.BAL - TOTAL.LOCK.AMT
- ;*DO CHECK
- TXN.AMT = R.NEW(EB.CAR47.AMOUNT)
- IF((AVAILABLE.BAL - TXN.AMT) LT 0) THEN
- AF = EB.CAR47.AMOUNT
- AV = 1
- AS = 1
- ETEXT = "EB-BALANCE.ERROR" : FM : AVAILABLE.BAL : SPACE(1) : LCCY : VM : TOTAL.LOCK.AMT
- CALL STORE.END.ERROR
- END
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement