1 PACKAGE BODY MSC_Item_PUB AS
2 /* $Header: MSCPITMB.pls 120.2 2005/07/06 13:18:04 pabram noship $ */
3
4 -- Start of Comments
5 -- API name Check_Order_Modifiers
6 -- Type Public
7 -- Procedure
8 --
9 -- Pre-reqs
10 --
11 -- Parameters
12 --
13 -- Version Current version = 1.0
14 -- Initial version = 1.0
15 --
16 -- Notes
17 -- This procedure ensures that an item does not have any order modifiers
18 -- associated with it.
19 --
20 -- End of Comments
21
22 PROCEDURE Check_Order_Modifiers
23 ( arg_plan_id IN NUMBER
24 , arg_org_id IN NUMBER
25 , arg_instance_id IN NUMBER
26 , arg_item_id IN NUMBER
27 , arg_order_qty IN NUMBER
28 , arg_err_message IN OUT nocopy VARCHAR2
29 , arg_err_token IN OUT nocopy VARCHAR2)
30 IS
31
32 -- Constant declarations
33
34 SYS_YES CONSTANT NUMBER := 1;
35
36 var_minimum_order_qty NUMBER;
37 var_maximum_order_qty NUMBER;
38 var_round NUMBER;
39 var_fixed_order_qty NUMBER;
40 var_fixed_lot_mult NUMBER;
41
42 BEGIN
43 -- select the order modifiers
44
45 SELECT NVL(minimum_order_quantity,0),
46 NVL(maximum_order_quantity,0),
47 rounding_control_type,
48 NVL(fixed_order_quantity, 0),
49 NVL(fixed_lot_multiplier, 0)
50 INTO var_minimum_order_qty,
51 var_maximum_order_qty,
52 var_round,
53 var_fixed_order_qty,
54 var_fixed_lot_mult
55 FROM msc_system_items
56 WHERE inventory_item_id = arg_item_id
57 AND organization_id = arg_org_id
58 AND sr_instance_id = arg_instance_id
59 AND plan_id = arg_plan_id;
60
61 arg_err_message := NULL;
62 arg_err_token := NULL;
63
64 if (var_minimum_order_qty <> 0 AND arg_order_qty < var_minimum_order_qty)
65 then
66 arg_err_message := 'GEN-Item with order modifier';
67 arg_err_token := 'EC_MINIMUM_ORDER_QTY';
68 return;
69 end if;
70
71 if (var_maximum_order_qty <> 0 AND arg_order_qty > var_maximum_order_qty)
72 then
73 arg_err_message := 'GEN-Item with order modifier';
74 arg_err_token := 'EC_MAXIMUM_ORDER_QTY';
75 return;
76 end if;
77
78 if (var_round = SYS_YES AND round(arg_order_qty) <> 0)
79 then
80 if (arg_order_qty / round(arg_order_qty) <> 1)
81 then
82 arg_err_message := 'GEN-Item with order modifier';
83 arg_err_token := 'EC_ROUND';
84 return;
85 end if;
86 end if;
87
88 if (var_fixed_order_qty <> 0 AND var_fixed_order_qty <> arg_order_qty)
89 then
90 arg_err_message := 'GEN-Item with order modifier';
91 arg_err_token := 'EC_FIX_ORDER_QTY';
92 return;
93 end if;
94
95 if (var_fixed_lot_mult <> 0)
96 then
97 if ((arg_order_qty / var_fixed_lot_mult ) <>
98 round(arg_order_qty / var_fixed_lot_mult))
99 then
100 arg_err_message := 'GEN-Item with order modifier';
101 arg_err_token := 'EC_FIX_LOT_MULT';
102 return;
103 end if;
104 end if;
105
106 END Check_Order_Modifiers;
107
108 END MSC_Item_PUB;