LOCAL llRetVal, ; lnAnswer, ; llClose, ; lnOldRecNo, ; lnOrderTotal, ; lnOldArea, ; lcCustomerAlias, ; lyMinOrdAmount, ; lyOrderAmount *-- Don't bother checking if we're deleting the order IF DELETED() RETURN ENDIF lnOldArea = SELECT() *-- Check if we have at least one line item. Use the current *-- table if order_line_items is already opened to include *-- buffered records. IF !USED("order_line_items") USE tastrade!order_line_items AGAIN IN 0 llClose = .T. ENDIF lnOldRecNo = IIF(RECCOUNT("order_line_items") > 0, RECNO("order_line_items"), 0) llRetVal = (SEEK(orders.order_id, "order_line_items", "order_id") AND ; !EMPTY(order_line_items.product_id)) IF lnOldRecNo <> 0 AND llRetVal GO lnOldRecNo IN order_line_items ENDIF IF !llRetVal =MESSAGEBOX(ORDHASITEMS_LOC, ; MB_ICONEXCLAMATION, ; TASTRADE_LOC) ENDIF lyOrderAmount = CalcMinOrdAmount(orders.order_id) IF llRetVal *-- Check if customer is over credit limit. If *-- customer id is empty, the order will not be saved *-- because customer_id is a required foreign key, enforced *-- by the RI triggers, so we don't even bother checking. IF !EMPTY(orders.customer_id) IF !(GETFLDSTATE("paid","orders") == 2 AND OCCURS("2",GETFLDSTATE(-1,"Orders")) == 1) AND ; LOWER(_screen.ActiveForm.Name) # "frmordhistory" *- didn't just change paid, and isn't on order history screen LOCAL lyRemainingCredit lyRemainingCredit = RemainingCredit(orders.customer_id) + IIF(orders.paid, lyOrderAmount, 0) IF lyRemainingCredit < $0 lnAnswer = ; MESSAGEBOX(CUSTOVERMAX_LOC + ; DOLLAR_FORMAT3_LOC + ALLT(STR(ABS(lyRemainingCredit), 15, 2)) + DOLLAR_FORMAT2_LOC + CR + ; SAVEANYWAY_LOC, ; MB_ICONQUESTION + MB_YESNO, ; TASTRADE_LOC) llRetVal = (lnAnswer = IDYES) ENDIF ENDIF IF llRetVal *-- Get the customer's minimum order amount IF !(GETFLDSTATE("paid","orders") == 2 AND OCCURS("2",GETFLDSTATE(-1,"Orders")) == 1) AND ; LOWER(_screen.ActiveForm.Name) # "frmordhistory" lcCustomerAlias = SYS(2015) USE tastrade!customer AGAIN IN 0 ALIAS (lcCustomerAlias) IF SEEK(orders.customer_id, lcCustomerAlias, "customer_i") lyMinOrdAmount = EVAL(lcCustomerAlias + ".min_order_amt") ENDIF USE IN (lcCustomerAlias) IF lyOrderAmount < lyMinOrdAmount lnAnswer = ; MESSAGEBOX(CUSTUNDERMIN_LOC + ; DOLLAR_FORMAT3_LOC + ALLT(STR(lyMinOrdAmount, 15, 2)) + DOLLAR_FORMAT2_LOC + CR + ; SAVEANYWAY_LOC, ; MB_ICONQUESTION + MB_YESNO, ; TASTRADE_LOC) llRetVal = (lnAnswer = IDYES) ENDIF ENDIF ENDIF ENDIF && marked as paid only ENDIF IF llClose USE IN order_line_items ENDIF SELECT (lnOldArea) RETURN llRetVal