//DDB-FileStart //DDB-HeaderStart // File Name : OrderDtl.DD // Class Name: OrderDtl_DataDictionary // Revision : 5 // Version : 2 Use Windows // Basic Definitions Use DataDict.pkg // DataDictionary Class Definition Use DDvalTbl // Validation Table Class Definitions Open OrderDtl Open OrderHea Open Invt //DDB-HeaderEnd Class OrderDtl_DataDictionary Is A DataDictionary Procedure Define_Fields Forward Send Define_Fields //DDB-Generated-Code-Location //DDB-DefineFieldStart Set Main_File To OrderDtl.File_Number Set Cascade_Delete_State To False Set Foreign_Field_Options DD_KEYFIELD To DD_FINDREQ Set Foreign_Field_Options DD_INDEXFIELD To DD_NOPUT Set Foreign_Field_Options DD_DEFAULT To DD_DISPLAYONLY // Parent (Server) file structure............... Send Add_Server_File OrderHea.File_Number Send Add_Server_File Invt.File_Number Define_Auto_Increment OrderHea.Last_Detail_Num To OrderDtl.Detail_Number // Field-based properties....................... // OrderDtl.Order_Number //DDB/ Comment_Short Field OrderDtl.Order_Number To "Relates to OrderHea DD" Set Field_Options Field OrderDtl.Order_Number To DD_NOPUT // OrderDtl.Detail_Number //DDB/ Comment_Short Field OrderDtl.Detail_Number To "This is maintained internally and is normally not displayed" Set Field_Options Field OrderDtl.Detail_Number To DD_NOPUT // OrderDtl.Item_Id //DDB/ Comment_Short Field OrderDtl.Item_ID To "relates to Invt DD" // OrderDtl.Qty_Ordered Set Field_Exit_msg Field OrderDtl.Qty_Ordered To Adjust_Display_Total Set Field_Label_Long Field OrderDtl.Qty_Ordered To "Quantity Ordered" Set Field_Label_Short Field OrderDtl.Qty_Ordered To "Quantity" Set Field_Mask_Type Field OrderDtl.Qty_Ordered To MASK_NUMERIC_WINDOW Set Status_Help Field OrderDtl.Qty_Ordered To "Number of items ordered" // OrderDtl.Price //DDB/ Comment_Short Field OrderDtl.Price To "Default is set from Invt. Can be adjusted for each order." Set Field_Entry_msg Field OrderDtl.Price To Entering_Price Set Field_Exit_msg Field OrderDtl.Price To Adjust_Display_Total Set Field_Label_Long Field OrderDtl.Price To "Price per Unit" Set Field_Label_Short Field OrderDtl.Price To "Price" Set Field_Mask_Type Field OrderDtl.Price To MASK_CURRENCY_WINDOW Set Status_Help Field OrderDtl.Price To "Price per Unit" // OrderDtl.Extended_Price //DDB/ Comment_Short Field OrderDtl.Extended_Price To "System Maintained: Ext Price = Qty * Price" Set Field_Label_Long Field OrderDtl.Extended_Price To "Extended Price" Set Field_Label_Short Field OrderDtl.Extended_Price To "Total" Set Field_Mask_Type Field OrderDtl.Extended_Price To MASK_CURRENCY_WINDOW Set Field_Options Field OrderDtl.Extended_Price To DD_DISPLAYONLY Set Status_Help Field OrderDtl.Extended_Price To "Total extended price" //DDB-DefineFieldEnd End_Procedure // Define_Fields // Update and Backout need to adjust the Invt.On_Hand quantity, // the dtl line's extended price and the OrderHea total. We will call // the same procedure (Adjust_Balances) to insure that backout and // update are inverses of each other. // Note that Backout does not need to change the extended_price. This // only gets changed as part of update. Procedure Update Forward Send Update Move (OrderDtl.Price * OrderDtl.Qty_Ordered) To OrderDtl.Extended_Price Send Adjust_Balances OrderDtl.Qty_Ordered OrderDtl.Extended_Price End_Procedure Procedure Backout Forward Send Backout Send Adjust_Balances (-OrderDtl.Qty_Ordered) (-OrderDtl.Extended_Price) End_Procedure // Called by Backout and Update passing the quantity // and the extended price. // Subtract quantity from Invt on-hand and // add extended amnt to order total. Procedure Adjust_Balances Number Qty Number Amt Subtract Qty From Invt.On_Hand Add Amt To OrderHea.Order_Total End_Procedure // when entering the price field we may wish to update the // current field value with the standard unit price from the // Invt file. Only do this if the current amount is zero. If non // zero we assume the field is being edited (and we make no assumptions). Procedure Entering_Price Integer Field# Number nAmnt If (nAmnt=0) Begin Get File_Field_Current_Value File_Field Invt.Unit_Price To nAmnt Set Field_Changed_Value Field# To nAmnt Send Adjust_Display_Total End End_Procedure // This updates the extended price field, which will update any // display balances. This is only done for display purposes. The actual // amount is updated to the field during the save. Procedure Adjust_Display_total Integer iQty Number nAmnt Get Field_Current_Value Field OrderDtl.Qty_Ordered To iQty Get Field_Current_Value Field OrderDtl.Price To nAmnt Set Field_Current_Value Field OrderDtl.Extended_Price To (nAmnt * iQty) // note we set value, but not changed state! End_Procedure // Field_Defaults: // This procedure is used to establish default field values. Procedure Field_Defaults Forward Send Field_Defaults //DDB-Generated-Code-Location //DDB-FieldDefaultStart //DDB-FieldDefaultEnd End_Procedure // Field_Defaults End_Class // OrderDtl_DataDictionary //DDB-FileEnd