Advertisement
Guest User

Untitled

a guest
Oct 20th, 2017
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     METHOD public CHAR getMostAlcoholUnitsWithAvailableMoney(INPUT money AS DECIMAL, INPUT availableDrinksType AS CHAR, INPUT iLocID AS INT, INPUT iBevID AS INT):
  2.         fetchData().
  3.         DEF VAR locID               AS INT NO-UNDO.
  4.         DEF VAR bevID               AS INT NO-UNDO.
  5.         DEF VAR totalMoney          AS DECIMAL NO-UNDO INITIAL 0.
  6.         DEF VAR maxMoney            AS DECIMAL NO-UNDO.
  7.         DEF VAR pointsSum           AS DECIMAL NO-UNDO.
  8.         DEF VAR maxPoints           AS DECIMAL NO-UNDO.
  9.         DEF VAR i                   AS  INT NO-UNDO.
  10.         DEF VAR drinkOk             AS LOGICAL NO-UNDO INITIAL FALSE.
  11.         DEF VAR drinksCount         AS INT NO-UNDO INITIAL 0.
  12.         DEF VAR maxDrinksCount      AS INT NO-UNDO.
  13.  
  14.        
  15.         FOR EACH ttMenuForLocation NO-LOCK:
  16.             IF price = 0 THEN RETURN "You have a beverage with a 0 price, please fix".
  17.             IF availableDrinksType <> "" AND availableDrinksType <> ? THEN
  18.             DO i = 1 TO NUM-ENTRIES(availableDrinksType):
  19.                 FIND FIRST ttBeverages WHERE ttBeverages.BEverageID = ttMenuForLocation.BEverageID NO-ERROR.
  20.                         IF ttBEverages.TypeNum = INT(ENTRY(i, availableDrinksType)) THEN
  21.                             IF (iLocID <> ? AND ttMenuForLocation.LocationID = iLocID) OR iLocID <> ? THEN
  22.                                 IF ttMenuForLocation.LocationID = iLocID THEN
  23.                                     drinkOk = TRUE.
  24.                                     LEAVE.
  25.             END.  
  26.             ELSE DO:
  27.                 IF (iLocID = ? AND iBevID = ?) OR (iLocID = ttMenuForLocation.LocationID AND iBevID = ?) OR
  28.                 (iBevID = ttMenuForLocation.BeverageID AND iLocID = ttMenuForLocation.LocationID) THEN
  29.                     drinkOk = TRUE.
  30.             END.        
  31.            
  32.             IF drinkOk = TRUE THEN DO:
  33.                 DO while totalMoney + price < money:
  34.                     totalMoney = totalMoney + ttMenuForLocation.Price.
  35.                     pointsSum = pointsSum + UnitsOfAlcohol.
  36.                     drinksCount = drinksCount + 1.
  37.                 END.
  38.                 IF pointsSum > maxPoints OR pointsSum = maxPoints AND totalMoney < maxMoney THEN DO:
  39.                     maxPoints = pointsSum.
  40.                     maxMoney = totalMoney.
  41.                     locID = locationID.
  42.                     bevID = ttMenuForLocation.beverageID.
  43.                     maxDrinksCount = drinksCount.
  44.                 END.
  45.                 drinksCount = 0.
  46.                 pointsSum = 0.
  47.                 totalMoney = 0.
  48.                 drinkOk = FALSE.
  49.              END.
  50.         END.
  51.             RETURN STRING(locID) + "," +  STRING(maxDrinksCount) + "," +  STRING(bevID) + "," + STRING(maxMoney) + "," +  STRING(maxPoints).
  52.     END METHOD.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement