Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- USING Classes.OrderManager.
- USING Classes.OrderlineManager.
- /* *************************** Definitions ************************** */
- block-level ON ERROR UNDO, throw.
- {tempTables.i}
- DEF VAR vStartDate AS DATE INITIAL 02-15-97 FORMAT "9999-99-99" NO-UNDO.
- DEF VAR vEndDate AS DATE INITIAL 09-15-97 FORMAT "9999-99-99" NO-UNDO.
- DEF VAR vWhichItem AS INT NO-UNDO.
- DEF VAR vWhichOrder AS INT NO-UNDO.
- DEF VAR vLineNumber AS INT INIT 1 NO-UNDO.
- DEF VAR vDelete AS LOGICAL NO-UNDO.
- DEF VAR vInput AS INT INIT 3 NO-UNDO.
- DEF VAR OrderManager AS CLASS OrderManager.
- DEF VAR OrderlineManager AS CLASS OrderlineManager.
- DEF BUTTON btnFilterButton LABEL "Filter records"
- SIZE 18 BY 1.5.
- DEF BUTTON btnNewLine LABEL "New OrderLine"
- SIZE 18 BY 1.5.
- DEF QUERY qGetOrders FOR ttOrder.
- DEF QUERY qGetOrderLine FOR ttOrderLine.
- DEF BROWSE bOrder QUERY qGetOrders NO-LOCK
- disp ttOrder.CustNum COLUMN-LABEL "Customer Number":c
- ttOrder.Ordernum COLUMN-LABEL "Order Number":c
- ttOrder.OrderStatus COLUMN-LABEL "Order Status":c
- ttOrder.OrderDate COLUMN-LABEL "Order Date":c
- WITH 10 DOWN
- TITLE "Orders"
- WIDTH 92
- FIT-LAST-COLUMN.
- DEF BROWSE bOrderLine QUERY qGetOrderLine NO-LOCK
- disp ttOrderLine.Itemnum COLUMN-LABEL "Item Number":c
- ttOrderLine.Ordernum COLUMN-LABEL "Order Number":c
- ttOrderLine.Qty COLUMN-LABEL "Quantity Ordered":c
- ttOrderline.Price COLUMN-LABEL "Single Unit Price":c
- ttOrderLine.OrderLineStatus COLUMN-LABEL "Order Status":c
- WITH 8 DOWN
- TITLE "OrderLine"
- WIDTH 92
- FIT-LAST-COLUMN.
- DEF VAR wMainWindow AS WIDGET-HANDLE NO-UNDO.
- //* *************************** Window properties ************************** */
- CREATE WINDOW wMainWindow ASSIGN
- HIDDEN = yes
- TITLE = "Order Checker"
- HEIGHT = 27
- WIDTH = 100
- RESIZE = no
- SCROLL-BARS = no
- STATUS-AREA = no
- BGCOLOR = ?
- FGCOLOR = ?
- KEEP-FRAME-Z-ORDER = yes
- THREE-D = yes
- MESSAGE-AREA = no
- SENSITIVE = yes.
- //* *************************** Frame properties ************************** */
- DEF FRAME fMainFrame
- vStartDate AT ROW 2 COLUMN 10 VIEW-AS FILL-IN LABEL "From"
- vEndDate AT ROW 2 COLUMN 40 VIEW-AS FILL-IN LABEL "To"
- btnFilterButton AT ROW 1.75 COLUMN 70
- bOrder AT ROW 4 COLUMN 5
- bOrderLine AT ROW 15 COLUMN 5
- btnNewLine AT ROW 24 COLUMN 5
- WITH SIZE 100 BY 27
- NO-BOX
- THREE-D
- SIDE-LABELS.
- /* *************************** Main Block *************************** */
- VIEW wMainWindow.
- ON CHOOSE OF btnFilterButton in FRAME fMainFrame
- DO:
- vStartDate = INPUT vStartDate.
- vEndDate = INPUT vEndDate.
- RUN filterOrders(INPUT vStartDate,INPUT vEndDate).
- END.
- ON "value-changed" OF bOrder in FRAME fMainFrame
- DO:
- vWhichOrder = ttOrder.Ordernum.
- RUN showOrderline(vWhichOrder).
- END.
- ON default-action OF bOrderLine in FRAME fMainFrame
- DO:
- RUN orderLineInfo.p(ttOrderline.Itemnum).
- END.
- ON CHOOSE OF btnNewLine in FRAME fMainFrame
- DO:
- RUN addNewOrderline.
- END.
- ON "ctrl-e" OF bOrderline in FRAME fMainFrame
- DO:
- RUN editOrderline.
- END.
- ON "del" OF bOrderline in FRAME fMainFrame
- DO:
- RUN deleteOrderline.
- END.
- disp vStartDate WITH FRAME fMainFrame in WINDOW wMainWindow.
- disp vEndDate WITH FRAME fMainFrame in WINDOW wMainWindow.
- /*Close queries!*/
- CLOSE QUERY qGetOrders.
- CLOSE QUERY qGetOrderline.
- ENABLE all except btnNewLine WITH FRAME fMainFrame in WINDOW wMainWindow.
- WAIT-FOR window-close OF wMainwindow.
- PROCEDURE filterOrders:
- DEF INPUT PARAM vStartDate AS DATE NO-UNDO.
- DEF INPUT PARAM vEndDate AS DATE NO-UNDO.
- OrderManager = NEW OrderManager().
- OrderManager:validateDates(vStartDate, vEndDate).
- OrderManager:generateOrder(vStartDate, vEndDate, OUTPUT TABLE ttOrder).
- OPEN QUERY qGetOrders FOR EACH ttOrder.
- bOrder:SELECT-ROW(1) in FRAME fMainFrame.
- ENABLE btnNewLine WITH FRAME fMainFrame in WINDOW wMainWindow.
- APPLY "value-changed" TO bOrder.
- catch eAnyError AS PROGRESS.Lang.Error :
- MESSAGE "Error:" eAnyError:GetMessage(1) VIEW-AS ALERT-BOX ERROR.
- END catch.
- END PROCEDURE.
- PROCEDURE showOrderline:
- DEF INPUT PARAM vWhichOrder AS INT NO-UNDO.
- OrderlineManager = NEW OrderlineManager().
- OrderlineManager:generateOrderline(vWhichOrder, OUTPUT TABLE ttOrderline).
- OPEN QUERY qGetOrderLine FOR EACH ttOrderLine.
- catch eAnyError AS PROGRESS.Lang.Error :
- MESSAGE "Error:" eAnyError:GetMessage(1) VIEW-AS ALERT-BOX ERROR.
- END catch.
- END PROCEDURE.
- PROCEDURE addNewOrderline:
- RUN createOrderLine.p(vWhichOrder, OUTPUT vLineNumber).
- OrderlineManager:generateOrderline(vWhichOrder, OUTPUT TABLE ttOrderline).
- OPEN QUERY qGetOrderLine FOR EACH ttOrderLine.
- bOrderline:SELECT-ROW(vLineNumber) in FRAME fMainFrame.
- END PROCEDURE.
- PROCEDURE editOrderline:
- BUFFER-COPY ttOrderline TO ttOrderline2.
- RUN editOrderlineDialog.p(input-output TABLE ttOrderline2).
- RUN showOrderlineBrowse.p(vWhichOrder, input-output TABLE ttOrderline).
- OPEN QUERY qGetOrderLine FOR EACH ttOrderLine.
- EMPTY TEMP-TABLE ttOrderline2.
- END PROCEDURE.
- PROCEDURE deleteOrderline:
- MESSAGE "Do you wish to delete this Orderline?" VIEW-AS ALERT-BOX question buttons yes-no UPDATE vDelete.
- IF vDelete THEN DO:
- BUFFER-COPY ttorderline TO ttOrderline2.
- RUN deleteOrderline.p(ttOrderline.OrderNum, ttOrderline.LineNum, input-output TABLE ttOrderline2).
- RUN showOrderlineBrowse.p(vWhichOrder, input-output TABLE ttOrderline).
- OPEN QUERY qGetOrderLine FOR EACH ttOrderLine.
- END.
- IF NOT vDelete THEN DO:
- RETURN.
- END.
- END PROCEDURE.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement