Module Order.vw

     1Use Crystal\CheckForCrystal.dg
     2Use dfClient.pkg
     3Use DataDict.pkg
     4Use dfEntry.pkg
     5Use dfSpnEnt.pkg
     6Use dfCEntry.pkg
     7Use dfTable.pkg
     8Use Windows.pkg
     9Use cCrystal.pkg
    10Use Vendor.DD
    11Use Invt.DD
    12Use Customer.DD
    13Use SalesP.DD
    14Use OrderHea.DD
    15Use OrderDtl.DD
    16Use cDbCJGrid.pkg
    17Use cCJGridColumnRowIndicator.pkg
    18
    19
    20Activate_View Activate_oOrderEntryView for oOrderEntryView
    21Object oOrderEntryView is a dbView
    22    Set Border_Style to Border_Thick
    23    Set Maximize_Icon to True
    24    Set Label to "Order Entry"
    25    Set Location to 2 3
    26    Set Size to 174 383
    27    Set piMinSize to 174 383
    28    Set pbAutoActivate to True
    29
    30    Object Vendor_DD is a Vendor_DataDictionary
    31    End_Object    // Vendor_DD
    32
    33    Object Invt_DD is a Invt_DataDictionary
    34        Set DDO_Server to Vendor_DD
    35    End_Object    // Invt_DD
    36
    37    Object Customer_DD is a Customer_DataDictionary
    38    End_Object    // Customer_DD
    39
    40    Object SalesP_DD is a Salesp_DataDictionary
    41    End_Object    // SalesP_DD
    42
    43    Object OrderHea_DD is a OrderHea_DataDictionary
    44        Set DDO_Server to Customer_DD
    45        Set DDO_Server to SalesP_DD
    46    End_Object    // OrderHea_DD
    47
    48    Object OrderDtl_DD is a OrderDtl_DataDictionary
    49        Set DDO_Server to OrderHea_DD
    50        Set DDO_Server to Invt_DD
    51        Set Constrain_File to OrderHea.File_Number
    52    End_Object    // OrderDtl_DD
    53
    54    Set Main_DD to OrderHea_DD
    55    Set Server to OrderHea_DD
    56
    57    Object oDbContainer3d1 is a dbContainer3d
    58        Set Size to 85 377
    59        Set Location to 2 3
    60        Set peAnchors to anTopLeftRight
    61        Object oOrderHea_Order_Number is a dbForm
    62            Entry_Item OrderHea.Order_Number
    63            Set Label to "Order Number:"
    64            Set Size to 13 42
    65            Set Location to 4 63
    66            Set peAnchors to anTopLeft
    67            Set Label_Col_Offset to 2
    68            Set Label_Justification_Mode to jMode_Right
    69
    70        End_Object    // oOrderHea_Order_Number
    71
    72        Object oOrderHea_Customer_Number is a dbForm
    73            Entry_Item Customer.Customer_Number
    74            Set Label to "Customer Number:"
    75            Set Size to 13 42
    76            Set Location to 4 201
    77            Set peAnchors to anTopRight
    78            Set Label_Col_Offset to 2
    79            Set Label_Justification_Mode to jMode_Right
    80
    81            // If order record exists, disallow entry in customer window.
    82            Procedure Refresh Integer iMode
    83                Handle  hoSrvr
    84                Boolean bCrnt
    85                Get Server to hoSrvr                 // get the data_set
    86                Get HasRecord of hoSrvr to bCrnt // has record in data_set
    87                // Set displayonly to true if iCrnt is non-zero
    88                Set Enabled_State to (not(bCrnt))
    89                Forward Send Refresh iMode          // do normal refrsh
    90                // don't leave us sitting on a displayonly window
    91                If (bCrnt and Focus(Self)=Self) Send Next
    92            End_Procedure  // Refresh
    93            
    94        End_Object    // oOrderHea_Customer_Number
    95
    96        Object oOrderHea_Order_Date is a dbSpinForm
    97            Entry_Item OrderHea.Order_Date
    98            Set Label to "Order Date:"
    99            Set Size to 13 67
   100            Set Location to 4 299
   101            Set peAnchors to anTopRight
   102            Set Label_Col_Offset to 2
   103            Set Label_Justification_Mode to jMode_Right
   104        End_Object    // oOrderHea_Order_Date
   105
   106        Object oCustomer_Name is a dbForm
   107            Entry_Item Customer.Name
   108            Set Label to "Customer Name:"
   109            Set Size to 13 180
   110            Set Location to 18 63
   111            Set peAnchors to anTopLeftRight
   112            Set Label_Col_Offset to 2
   113            Set Label_Justification_Mode to jMode_Right
   114            Set Prompt_Button_Mode to pb_PromptOff
   115
   116            // We want this to be a displayonly field
   117            Set Enabled_State to False
   118            
   119        End_Object    // oCustomer_Name
   120
   121        Object oCustomer_Address is a dbForm
   122            Entry_Item Customer.Address
   123            Set Label to "Street Address:"
   124            Set Size to 13 180
   125            Set Location to 34 63
   126            Set peAnchors to anTopLeftRight
   127            Set Label_Col_Offset to 2
   128            Set Label_Justification_Mode to jMode_Right
   129        End_Object    // oCustomer_Address
   130
   131        Object oCustomer_City is a dbForm
   132            Entry_Item Customer.City
   133            Set Label to "City/State/Zip:"
   134            Set Size to 13 84
   135            Set Location to 49 63
   136            Set peAnchors to anTopLeftRight
   137            Set Label_Col_Offset to 2
   138            Set Label_Justification_Mode to jMode_Right
   139        End_Object    // oCustomer_City
   140
   141        Object oCustomer_State is a dbForm
   142            Entry_Item Customer.State
   143            Set Size to 13 20
   144            Set Location to 49 155
   145            Set peAnchors to anTopRight
   146        End_Object    // oCustomer_State
   147
   148        Object oCustomer_Zip is a dbForm
   149            Entry_Item Customer.Zip
   150            Set Size to 13 60
   151            Set Location to 49 183
   152            Set peAnchors to anTopRight
   153        End_Object    // oCustomer_Zip
   154
   155        Object oOrderHea_Ordered_By is a dbForm
   156            Entry_Item OrderHea.Ordered_By
   157            Set Label to "Ordered By:"
   158            Set Size to 13 67
   159            Set Location to 34 299
   160            Set peAnchors to anTopRight
   161            Set Label_Col_Offset to 2
   162            Set Label_Justification_Mode to jMode_Right
   163        End_Object    // oOrderHea_Ordered_By
   164
   165        Object oOrderHea_Salesperson_ID is a dbForm
   166            Entry_Item Salesp.Id
   167            Set Label to "Salesperson ID:"
   168            Set Size to 13 40
   169            Set Location to 49 299
   170            Set peAnchors to anTopRight
   171            Set Label_Col_Offset to 2
   172            Set Label_Justification_Mode to jMode_Right
   173        End_Object    // oOrderHea_Salesperson_ID
   174
   175        Object oOrderHea_Terms is a dbComboForm
   176            Entry_Item OrderHea.Terms
   177            Set Label to "Terms:"
   178            Set Size to 13 85
   179            Set Location to 64 63
   180            Set peAnchors to anTopLeft
   181            Set Form_Border to 0
   182            Set Label_Col_Offset to 2
   183            Set Label_Justification_Mode to jMode_Right
   184
   185        End_Object    // oOrderHea_Terms
   186
   187        Object oOrderHea_Ship_Via is a dbComboForm
   188            Entry_Item OrderHea.Ship_Via
   189            Set Label to "Ship Via:"
   190            Set Size to 13 103
   191            Set Location to 64 183
   192            Set peAnchors to anTopRight
   193            Set Form_Border to 0
   194            Set Label_Col_Offset to 2
   195            Set Label_Justification_Mode to jMode_Right
   196
   197            Procedure Switch
   198               Boolean bEnabled
   199               // the normal switch behavior is to attempt to keep
   200               // keep looking for additional objects to switch to. If
   201               // we can't switch to the dtl table, we want to stop!
   202               Send Request_Save
   203               Send EnableObjects // make sure grid is properly enabled and save button is disabled
   204               Get Enabled_State of oOrderDtl_Grid to bEnabled                
   205               If bEnabled Begin
   206                   Forward Send Switch //  of oOrderDtl_Grid
   207               End
   208            End_Procedure  // Switch
   209
   210        End_Object    // oOrderHea_Ship_Via
   211
   212//        Object oSaveHdrButton is a Button
   213//            Set Size to 14 67
   214//            Set Location to 64 297
   215//            Set Label to 'Save Header'
   216//            Set peAnchors to anTopRight
   217//        
   218//            // fires when the button is clicked
   219//            Procedure OnClick
   220//                Boolean bCancel
   221//                Get Save_Header to bCancel
   222//            End_Procedure
   223//            
   224//        End_Object
   225
   226    End_Object    // oDbContainer3d1
   227
   228    Object oOrderDtl_Grid is a cDbCJGrid
   229        Set Server to OrderDtl_DD
   230        Set Ordering to 1
   231        Set Size to 63 377
   232        Set Location to 90 3
   233        Set peAnchors to anAll
   234        Set pbAllowInsertRow to False
   235        Set pbRestoreLayout to False
   236        Set psLayoutSection to "OrderView_oOrderDtl_Grid2"
   237        Set piLayoutBuild to 6
   238        Set pbHeaderPrompts to True
   239
   240        On_Key Key_F11 Send Request_InsertRow
   241
   242        Object oMark is a cCJGridColumnRowIndicator
   243        End_Object
   244        
   245        Object oInvt_Item_ID is a cDbCJGridColumn
   246            Entry_Item Invt.Item_ID
   247            Set piWidth to 91
   248            Set psCaption to "Item ID"
   249            Set psImage to "ActionPrompt.ico"
   250        End_Object
   251
   252        Object oInvt_Description is a cDbCJGridColumn
   253            Entry_Item Invt.Description
   254            Set piWidth to 213
   255            Set psCaption to "Description"
   256        End_Object
   257
   258        Object oInvt_Unit_Price is a cDbCJGridColumn
   259            Entry_Item Invt.Unit_Price
   260            Set piWidth to 53
   261            Set psCaption to "Unit Price"
   262        End_Object
   263
   264        Object oOrderDtl_Qty_Ordered is a cDbCJGridColumn
   265            Entry_Item OrderDtl.Qty_Ordered
   266            Set piWidth to 50
   267            Set psCaption to "Quantity"
   268        End_Object
   269
   270        Object oOrderDtl_Price is a cDbCJGridColumn
   271            Entry_Item OrderDtl.Price
   272            Set piWidth to 62
   273            Set psCaption to "Price"
   274        End_Object
   275
   276        Object oOrderDtl_Extended_Price is a cDbCJGridColumn
   277            Entry_Item OrderDtl.Extended_Price
   278            Set piWidth to 81
   279            Set psCaption to "Total"
   280        End_Object
   281        
   282    End_Object    // oOrderDtl_Grid
   283
   284    Object oOrderHea_Order_Total is a dbForm
   285        Entry_Item OrderHea.Order_Total
   286        Set Label to "Order Total:"
   287        Set Size to 13 60
   288        Set Location to 156 307
   289        Set peAnchors to anBottomRight
   290        Set Label_Col_Offset to 3
   291        Set Label_Justification_Mode to jMode_Right
   292    End_Object    // oOrderHea_Order_Total
   293
   294    Object oPrintBtn is a Button
   295        Set Label to "Print Order"
   296        Set Location to 156 3
   297        Set peAnchors to anBottomLeft
   298        Set psToolTip to "Print preview of current order"
   299
   300        Procedure OnClick
   301            Delegate Send PrintCurrentOrder // defined in view object
   302        End_Procedure  // OnClick
   303
   304    End_Object    // oPrintBtn
   305
   306    Object oOrder_Report is a cCrystal
   307        Set psReportName to "Orders.rpt"
   308
   309        Property Integer piOrderNumber 0
   310        
   311        // Procedure : OnInitializeReport
   312        // Purpose   : This is a hook message sent by the Open_report procedure. You may use this
   313        //             procedure to set selection values, print options, etc. This procedure is
   314        //             intended for augmentation; it has no action by default.
   315        Procedure OnInitializeReport Handle hoReport
   316            Integer iOrder
   317            String  sSelection
   318            Handle hoTerms hoShipVia
   319            Variant[][2] vTerms
   320            Variant[][2] vShipVia
   321        
   322            Forward Send OnInitializeReport hoReport
   323        
   324            Get CreateCDO of hoReport "Terms.ttx" to hoTerms
   325            If (hoTerms) Begin
   326                Get TableData of Terms_table to vTerms
   327                Send AppendCDOData of hoReport hoTerms vTerms
   328            End
   329        
   330            Get CreateCDO of hoReport "ShipVia.ttx" to hoShipVia
   331            If (hoShipVia) Begin
   332                Get TableData of Ship_Table to vShipVia
   333                Send AppendCDOData of hoReport hoShipVia vShipVia
   334            End
   335        
   336            Get piOrderNumber to iOrder
   337        
   338            // Set the selection formula to print the one order.
   339            Move ("{OrderHea.Order_Number} = " + String(iOrder)) to sSelection
   340            Set ComRecordSelectionFormula of hoReport to sSelection
   341        
   342        End_Procedure // OnInitializeReport
   343        
   344        // pass order to print
   345        Procedure PrintOrder Integer iNum
   346            Boolean bCrystalOK
   347        
   348            Set piOrderNumber to iNum
   349        
   350            // check for Crystal
   351            Get CheckCrystalEnvironment of oCheckForCrystal to bCrystalOK
   352            If (bCrystalOK) Begin
   353               Send RunReport
   354            End
   355            Else Begin
   356                Send DisplayDialog of oCheckForCrystal
   357            End
   358        
   359        End_Procedure
   360        
   361    End_Object    // oOrder_Report
   362
   363    // Change:   Create custom confirmation messages for save and delete
   364    //           We must create the new functions and assign verify messages
   365    //           to them.
   366    Function Confirm_Delete_Order Returns Integer
   367        Integer iRetVal
   368        Get Confirm "Delete Entire Order?" to iRetVal
   369        Function_Return iRetVal
   370    End_Function
   371    
   372    // Only confirm on the saving of new records
   373    Function Confirm_Save_Order Returns Integer
   374        Integer iNoSave iSrvr
   375        Boolean bOld
   376        Get Server to iSrvr
   377        Get HasRecord of iSrvr to bOld
   378        If not bOld Begin
   379            Get Confirm "Save this NEW order header?" to iNoSave
   380        End
   381        Function_Return iNoSave
   382    End_Function
   383    
   384    // Define alternate confirmation Messages
   385    Set Verify_Save_MSG       to (RefFunc(Confirm_Save_Order))
   386    Set Verify_Delete_MSG     to (RefFunc(Confirm_Delete_Order))
   387    Set Auto_Clear_DEO_State  to False // don't clear Header on save
   388    
   389//    // Change: Table entry checking - attempt to save header record
   390//    //         before entering a table (this is called by table. Return
   391//    //         a non-zero if the save failed (i.e., don't enter table)
   392//    Function Save_Header Returns Integer
   393//        Boolean bHasRec bChanged
   394//        Handle hoSrvr
   395//    
   396//        Get Server to hoSrvr                 // The Header DDO.
   397//        Get HasRecord of hoSrvr to bHasRec   // Do we have a record?
   398//        Get Should_Save to bChanged          // Are there any current changes?
   399//    
   400//        // If there is no record and no changes we have an error.
   401//        If ( not(bHasRec) and not(bChanged) ) Begin  // no rec
   402//            Send UserError "You must First Create & Save Main Order Header" ""
   403//            Function_Return 1
   404//        End
   405//    
   406//        // Attempt to Save the current Record
   407//        // request_save_no_clear does a save without clearing.
   408//        Send Request_Save_No_Clear
   409//    
   410//        // The save succeeded if there are now no changes, and we
   411//        // have a saved record. Should_save tells us if we've got changes.
   412//        // We must check the data-sets hasRecord property to see if
   413//        // we have a record. If it is not, we had no save.
   414//        Get Should_Save to bChanged  // is a save still needed
   415//        Get HasRecord of hoSrvr to bHasRec // current record of the DD
   416//        // if no record or changes still exist, return an error code of 1
   417//        If ( not(bHasRec) or (bChanged)) ;
   418//            Function_Return 1
   419//    End_Function  // Save_Header
   420    
   421    // print the current order. This message will be sent
   422    // by the print button
   423    Procedure PrintCurrentOrder
   424        Integer hDD iNum
   425        Get Server to hDD // this will be the OrderHea DD
   426        If (HasRecord(hDD)) Begin // only do this if record exists
   427            Get Field_Current_Value of hDD Field OrderHea.Order_Number to iNum
   428            Send PrintOrder of oOrder_Report iNum
   429        End
   430    End_Procedure
   431    
   432    Object oIdle is a cIdleHandler
   433        Procedure OnIdle
   434            Delegate Send OnIdle
   435        End_Procedure
   436    End_Object
   437    
   438    Procedure OnIdle
   439        Send EnableObjects
   440    End_Procedure
   441
   442    Procedure EnableObjects
   443        Boolean bChanged bRec
   444        Handle hoServer
   445        Get Server to hoServer
   446        Get Should_Save of hoServer to bChanged
   447        Get HasRecord of hoServer to bRec
   448//        Set Enabled_State of oSaveHdrButton to bChanged
   449        Set Enabled_State of oOrderDtl_Grid to (not(bChanged) and bRec)
   450        Set Enabled_State of oPrintBtn to bRec
   451    End_Procedure
   452    
   453    Procedure Activating
   454        Forward Send Activating
   455        Set pbEnabled of oIdle to True
   456    End_Procedure
   457
   458    Procedure DeActivating
   459        Set pbEnabled of oIdle to False
   460        Forward Send Deactivating
   461    End_Procedure
   462    
   463End_Object
   464