Module DUPBPO.PKG
1// Create a Duplicate Order based on passed item. Use current
2// Invt pricing (and not original order pricing).
3//
4// access method is:
5//
6// Send DoDuplicateOrder of DuplicateOrder iOrderRec
7//
8
9Object DuplicateOrder is a BusinessProcess
10 Set Status_Panel_State to False
11 set display_Error_State to true
12
13 // create minimal source DD structure
14 Object Source_Orderhea_DD is a Orderhea_DataDictionary
15 End_Object // Orderhea_DD
16
17 Object Source_Orderdtl_DD is a ORDERDTL_DataDictionary
18 Set DDO_Server to (Source_Orderhea_DD(self))
19 Set Constrain_File to Orderhea.File_Number
20 End_Object // Orderdtl_DD
21
22 // create full destination DD structure
23 Object Vendor_DD is a VENDOR_DataDictionary
24 End_Object // Vendor_DD
25
26 Object Invt_DD is a INVT_DataDictionary
27 Set DDO_Server to (Vendor_DD(self))
28 End_Object // Invt_DD
29
30 Object Customer_DD is a CUSTOMER_DataDictionary
31 End_Object // Customer_DD
32
33 Object Salesp_DD is a SALESP_DataDictionary
34 End_Object // Salesp_DD
35
36 Object Orderhea_DD is a Orderhea_DataDictionary
37 Set DDO_Server to (Customer_DD(self))
38 Set DDO_Server to (Salesp_DD(self))
39 End_Object // Orderhea_DD
40
41 Object Orderdtl_DD is a ORDERDTL_DataDictionary
42 Set DDO_Server to (Orderhea_DD(self))
43 Set DDO_Server to (Invt_DD(self))
44 Set Constrain_File to Orderhea.File_Number
45 End_Object // Orderdtl_DD
46
47 Procedure DoOneDtl
48 integer hDtlDD hInvtDD hSrcDD bErr iQty
49 number nPrice
50 Move Source_OrderDtl_DD to hSrcDD
51 Move OrderDtl_DD to hDtlDD
52 Move Invt_DD to hInvtDD
53 Send Clear of hDtlDD
54 Get Field_Current_Value of hSrcDD field orderdtl.item_Id to Invt.Item_id
55 Send Find of hInvtDD EQ 1
56 If (Found) Begin
57 Get field_Current_Value of hSrcDD FIELD Orderdtl.Qty_Ordered to iQty
58 Set field_Changed_Value of hDtlDD FIELD Orderdtl.Qty_Ordered to iQty
59 Get field_current_Value of hInvtDD Field Invt.unit_price to nPrice
60 Set field_Changed_Value of hDtlDD FIELD Orderdtl.Price to nPrice
61 Get Request_Validate of hDtlDD to bErr
62 if not bErr Send request_save of hDtlDD
63 Send Log_Status ("Adding dtl" * string(Orderhea.Order_number) * string(Orderdtl.Detail_Number))
64 End
65 End_Procedure
66
67 Procedure OnProcess
68 date today
69 integer hOrdDD hSrcOrdDD hSrcDtlDD
70 integer bErr
71
72 Move OrderHea_DD to hOrdDD
73 Move Source_OrderHea_DD to hSrcOrdDD
74 Move Source_OrderDtl_DD to hSrcDtlDD
75
76 Send Clear of hOrdDD
77 Send Refind_records of hSrcOrdDD
78 Begin_transaction
79 Send request_assign of hOrdDD Customer.File_Number
80 Send request_assign of hOrdDD Salesp.File_Number
81 Sysdate today
82 Set Field_Changed_Value of hOrdDD Field ORDERHEA.ORDER_DATE to Today
83 Set Field_Changed_Value of hOrdDD Field ORDERHEA.Terms to ORDERHEA.TERMS
84 Set Field_Changed_Value of hOrdDD Field ORDERHEA.Ship_Via to ORDERHEA.Ship_Via
85 Set Field_Changed_Value of hOrdDD Field ORDERHEA.Ordered_by to ORDERHEA.Ordered_By
86 Get Request_Validate of hOrdDD to bErr
87 if not bErr Send request_save of hOrdDD
88
89 Send Refind_records of hSrcOrdDD
90 Send Find of hSrcDtlDD First_Record 1
91 While (found)
92 Send DoOneDtl
93 Send Refind_records of hSrcDtlDD
94 Send Find of hSrcDtlDD GT 1
95 Loop
96 End_Transaction
97 End_Procedure
98
99 function DoDuplicateOrder integer iOrder returns integer
100 integer hSrcHeaDD iRec
101 Move Source_OrderHea_DD to hSrcHeaDD
102 Move iOrder to OrderHea.Recnum
103 Send find of hSrcHeaDD eq 0
104 If (current_record(hSrcHeaDD)=0) Function_return 0
105 Send DoProcess
106 Get Current_record of OrderHea_DD to iRec
107 Function_return iRec
108 End_Procedure
109
110
111End_Object
112