Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- METHOD public CHAR getMostAlcoholUnitsWithAvailableMoney(INPUT money AS DECIMAL, INPUT availableDrinksType AS CHAR, INPUT iLocID AS INT, INPUT iBevID AS INT):
- fetchData().
- DEF VAR locID AS INT NO-UNDO.
- DEF VAR bevID AS INT NO-UNDO.
- DEF VAR totalMoney AS DECIMAL NO-UNDO INITIAL 0.
- DEF VAR maxMoney AS DECIMAL NO-UNDO.
- DEF VAR pointsSum AS DECIMAL NO-UNDO.
- DEF VAR maxPoints AS DECIMAL NO-UNDO.
- DEF VAR i AS INT NO-UNDO.
- DEF VAR drinkOk AS LOGICAL NO-UNDO INITIAL FALSE.
- DEF VAR drinksCount AS INT NO-UNDO INITIAL 0.
- DEF VAR maxDrinksCount AS INT NO-UNDO.
- FOR EACH ttMenuForLocation NO-LOCK:
- IF price = 0 THEN RETURN "You have a beverage with a 0 price, please fix".
- IF availableDrinksType <> "" AND availableDrinksType <> ? THEN
- DO i = 1 TO NUM-ENTRIES(availableDrinksType):
- FIND FIRST ttBeverages WHERE ttBeverages.BEverageID = ttMenuForLocation.BEverageID NO-ERROR.
- IF ttBEverages.TypeNum = INT(ENTRY(i, availableDrinksType)) THEN
- IF (iLocID <> ? AND ttMenuForLocation.LocationID = iLocID) OR iLocID <> ? THEN
- IF ttMenuForLocation.LocationID = iLocID THEN
- drinkOk = TRUE.
- LEAVE.
- END.
- ELSE DO:
- IF (iLocID = ? AND iBevID = ?) OR (iLocID = ttMenuForLocation.LocationID AND iBevID = ?) OR
- (iBevID = ttMenuForLocation.BeverageID AND iLocID = ttMenuForLocation.LocationID) THEN
- drinkOk = TRUE.
- END.
- IF drinkOk = TRUE THEN DO:
- DO while totalMoney + price < money:
- totalMoney = totalMoney + ttMenuForLocation.Price.
- pointsSum = pointsSum + UnitsOfAlcohol.
- drinksCount = drinksCount + 1.
- END.
- IF pointsSum > maxPoints OR pointsSum = maxPoints AND totalMoney < maxMoney THEN DO:
- maxPoints = pointsSum.
- maxMoney = totalMoney.
- locID = locationID.
- bevID = ttMenuForLocation.beverageID.
- maxDrinksCount = drinksCount.
- END.
- drinksCount = 0.
- pointsSum = 0.
- totalMoney = 0.
- drinkOk = FALSE.
- END.
- END.
- RETURN STRING(locID) + "," + STRING(maxDrinksCount) + "," + STRING(bevID) + "," + STRING(maxMoney) + "," + STRING(maxPoints).
- END METHOD.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement