DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_OFFER_PUB

Source


1 Package BODY OZF_Offer_PUB AS
2 /* $Header: ozfpofrb.pls 120.5 2006/05/31 22:38:44 julou ship $ */
3 PROCEDURE process_modifiers(
4    p_init_msg_list         IN  VARCHAR2
5   ,p_api_version           IN  NUMBER
6   ,p_commit                IN  VARCHAR2
7   ,x_return_status         OUT NOCOPY VARCHAR2
8   ,x_msg_count             OUT NOCOPY NUMBER
9   ,x_msg_data              OUT NOCOPY VARCHAR2
10   ,p_offer_type            IN  VARCHAR2
11   ,p_modifier_list_rec     IN  modifier_list_rec_type
12   ,p_modifier_line_tbl     IN  modifier_line_tbl_type
13   ,p_qualifier_tbl         IN  qualifiers_tbl_type
14   ,p_budget_tbl            IN  budget_tbl_type
15   ,p_act_product_tbl       IN  act_product_tbl_type
16   ,p_discount_tbl          IN  discount_line_tbl_type
17   ,p_excl_tbl              IN  excl_rec_tbl_type
18   ,p_offer_tier_tbl        IN  offer_tier_tbl_type
19   ,p_prod_tbl              IN  prod_rec_tbl_type
20   ,p_na_qualifier_tbl      IN  na_qualifier_tbl_type
21   ,x_qp_list_header_id     OUT NOCOPY NUMBER
22   ,x_error_location        OUT NOCOPY NUMBER)
23 IS
24 
25   l_api_version CONSTANT NUMBER       := 1.0;
26   l_api_name    CONSTANT VARCHAR2(30) := 'process_modifiers';
27 
28   l_act_product_rec ams_actproduct_pvt.act_product_rec_type;
29   l_act_product_id      NUMBER;
30   l_offer_id            NUMBER;
31   l_obj_ver_num         NUMBER;
32   l_discount_line_id    NUMBER;
33   l_discount_product_id NUMBER;
34   l_activity_budget_id  NUMBER;
35   l_na_qualifier_id     NUMBER;
36   l_dummy               NUMBER;
37   l_prod_index          NUMBER := 0;
38   l_excl_index          NUMBER := 0;
39 
40   l_discount_line_rec   ozf_disc_line_pvt.ozf_discount_line_rec_type;
41   l_prod_rec            ozf_disc_line_pvt.ozf_prod_rec_type;
42   l_excl_rec            ozf_disc_line_pvt.ozf_excl_rec_type;
43   l_act_budgets_rec     ozf_actbudgets_pvt.act_budgets_rec_type;
44   l_offer_tier_rec      ozf_disc_line_pvt.ozf_offer_tier_rec_type;
45   l_na_qualifier_rec    ozf_offr_qual_pvt.ozf_offr_qual_rec_type;
46   l_modifier_list_rec   ozf_offer_pvt.modifier_list_rec_type;
47   l_modifier_line_tbl   ozf_offer_pvt.modifier_line_tbl_type;
48   l_qualifiers_tbl      ozf_offer_pvt.qualifiers_tbl_type;
49   l_exclusion_tbl       ozf_offer_pvt.pricing_attr_tbl_type;
50   l_qualifiers_tbl_out  qp_qualifier_rules_pub.qualifiers_tbl_type;
51 
52   CURSOR c_offer_info(l_qp_list_header_id NUMBER) IS
53   SELECT offer_id, offer_type, custom_setup_id, offer_code, tier_level, object_version_number
54   FROM   ozf_offers
55   WHERE  qp_list_header_id = l_qp_list_header_id;
56 
57   CURSOR c_act_budget_obj_ver(l_act_budg_id NUMBER) IS
58   SELECT object_version_number
59   FROM   ozf_act_budgets
60   WHERE  activity_budget_id = l_act_budg_id;
61 BEGIN
62 
63   SAVEPOINT process_modifiers_pub;
64   IF Fnd_Api.to_boolean(p_init_msg_list) THEN
65     Fnd_Msg_Pub.initialize;
66   END IF;
67 
68   IF NOT Fnd_Api.compatible_api_call(l_api_version,
69                                      p_api_version,
70                                      l_api_name,
71                                      g_pkg_name)
72   THEN
73     RAISE Fnd_Api.g_exc_unexpected_error;
74   END IF;
75 
76   x_return_status := Fnd_Api.g_ret_sts_success;
77   x_error_location := 0;
78 
79   l_modifier_list_rec.OFFER_ID                      := p_modifier_list_rec.OFFER_ID;
80   l_modifier_list_rec.QP_LIST_HEADER_ID             := p_modifier_list_rec.QP_LIST_HEADER_ID;
81   l_modifier_list_rec.OFFER_TYPE                    := p_modifier_list_rec.OFFER_TYPE;
82   l_modifier_list_rec.OFFER_CODE                    := p_modifier_list_rec.OFFER_CODE;
83   l_modifier_list_rec.ACTIVITY_MEDIA_ID             := p_modifier_list_rec.ACTIVITY_MEDIA_ID;
84   l_modifier_list_rec.REUSABLE                      := p_modifier_list_rec.REUSABLE;
85   l_modifier_list_rec.USER_STATUS_ID                := p_modifier_list_rec.USER_STATUS_ID;
86   l_modifier_list_rec.WF_ITEM_KEY                   := p_modifier_list_rec.WF_ITEM_KEY;
87   l_modifier_list_rec.CUSTOMER_REFERENCE            := p_modifier_list_rec.CUSTOMER_REFERENCE;
88   l_modifier_list_rec.BUYING_GROUP_CONTACT_ID       := p_modifier_list_rec.BUYING_GROUP_CONTACT_ID;
89   l_modifier_list_rec.OBJECT_VERSION_NUMBER         := p_modifier_list_rec.OBJECT_VERSION_NUMBER;
90   l_modifier_list_rec.PERF_DATE_FROM                := p_modifier_list_rec.PERF_DATE_FROM;
91   l_modifier_list_rec.PERF_DATE_TO                  := p_modifier_list_rec.PERF_DATE_TO;
92   l_modifier_list_rec.STATUS_CODE                   := p_modifier_list_rec.STATUS_CODE;
93   l_modifier_list_rec.STATUS_DATE                   := p_modifier_list_rec.STATUS_DATE;
94   l_modifier_list_rec.MODIFIER_LEVEL_CODE           := p_modifier_list_rec.MODIFIER_LEVEL_CODE;
95   l_modifier_list_rec.ORDER_VALUE_DISCOUNT_TYPE     := p_modifier_list_rec.ORDER_VALUE_DISCOUNT_TYPE;
96   l_modifier_list_rec.LUMPSUM_AMOUNT                := p_modifier_list_rec.LUMPSUM_AMOUNT;
97   l_modifier_list_rec.LUMPSUM_PAYMENT_TYPE          := p_modifier_list_rec.LUMPSUM_PAYMENT_TYPE;
98   l_modifier_list_rec.CUSTOM_SETUP_ID               := p_modifier_list_rec.CUSTOM_SETUP_ID;
99   l_modifier_list_rec.OFFER_AMOUNT                  := p_modifier_list_rec.OFFER_AMOUNT;
100   l_modifier_list_rec.BUDGET_AMOUNT_TC              := p_modifier_list_rec.BUDGET_AMOUNT_TC;
101   l_modifier_list_rec.BUDGET_AMOUNT_FC              := p_modifier_list_rec.BUDGET_AMOUNT_FC;
102   l_modifier_list_rec.TRANSACTION_CURRENCY_CODE     := p_modifier_list_rec.TRANSACTION_CURRENCY_CODE;
103   l_modifier_list_rec.FUNCTIONAL_CURRENCY_CODE      := p_modifier_list_rec.FUNCTIONAL_CURRENCY_CODE;
104   l_modifier_list_rec.CONTEXT                       := p_modifier_list_rec.CONTEXT;
105   l_modifier_list_rec.ATTRIBUTE1                    := p_modifier_list_rec.ATTRIBUTE1;
106   l_modifier_list_rec.ATTRIBUTE2                    := p_modifier_list_rec.ATTRIBUTE2;
107   l_modifier_list_rec.ATTRIBUTE3                    := p_modifier_list_rec.ATTRIBUTE3;
108   l_modifier_list_rec.ATTRIBUTE4                    := p_modifier_list_rec.ATTRIBUTE4;
109   l_modifier_list_rec.ATTRIBUTE5                    := p_modifier_list_rec.ATTRIBUTE5;
110   l_modifier_list_rec.ATTRIBUTE6                    := p_modifier_list_rec.ATTRIBUTE6;
111   l_modifier_list_rec.ATTRIBUTE7                    := p_modifier_list_rec.ATTRIBUTE7;
112   l_modifier_list_rec.ATTRIBUTE8                    := p_modifier_list_rec.ATTRIBUTE8;
113   l_modifier_list_rec.ATTRIBUTE9                    := p_modifier_list_rec.ATTRIBUTE9;
114   l_modifier_list_rec.ATTRIBUTE10                   := p_modifier_list_rec.ATTRIBUTE10;
115   l_modifier_list_rec.ATTRIBUTE11                   := p_modifier_list_rec.ATTRIBUTE11;
116   l_modifier_list_rec.ATTRIBUTE12                   := p_modifier_list_rec.ATTRIBUTE12;
117   l_modifier_list_rec.ATTRIBUTE13                   := p_modifier_list_rec.ATTRIBUTE13;
118   l_modifier_list_rec.ATTRIBUTE14                   := p_modifier_list_rec.ATTRIBUTE14;
119   l_modifier_list_rec.ATTRIBUTE15                   := p_modifier_list_rec.ATTRIBUTE15;
120   l_modifier_list_rec.CURRENCY_CODE                 := p_modifier_list_rec.CURRENCY_CODE;
121   l_modifier_list_rec.START_DATE_ACTIVE             := p_modifier_list_rec.START_DATE_ACTIVE;
122   l_modifier_list_rec.END_DATE_ACTIVE               := p_modifier_list_rec.END_DATE_ACTIVE;
123   l_modifier_list_rec.LIST_TYPE_CODE                := p_modifier_list_rec.LIST_TYPE_CODE;
124   l_modifier_list_rec.DISCOUNT_LINES_FLAG           := p_modifier_list_rec.DISCOUNT_LINES_FLAG;
125   l_modifier_list_rec.NAME                          := p_modifier_list_rec.NAME;
126   l_modifier_list_rec.DESCRIPTION                   := p_modifier_list_rec.DESCRIPTION;
127   l_modifier_list_rec.COMMENTS                      := p_modifier_list_rec.COMMENTS;
128   l_modifier_list_rec.ASK_FOR_FLAG                  := p_modifier_list_rec.ASK_FOR_FLAG;
129   l_modifier_list_rec.START_DATE_ACTIVE_FIRST       := p_modifier_list_rec.START_DATE_ACTIVE_FIRST;
130   l_modifier_list_rec.END_DATE_ACTIVE_FIRST         := p_modifier_list_rec.END_DATE_ACTIVE_FIRST;
131   l_modifier_list_rec.ACTIVE_DATE_FIRST_TYPE        := p_modifier_list_rec.ACTIVE_DATE_FIRST_TYPE;
132   l_modifier_list_rec.START_DATE_ACTIVE_SECOND      := p_modifier_list_rec.START_DATE_ACTIVE_SECOND;
133   l_modifier_list_rec.END_DATE_ACTIVE_SECOND        := p_modifier_list_rec.END_DATE_ACTIVE_SECOND;
134   l_modifier_list_rec.ACTIVE_DATE_SECOND_TYPE       := p_modifier_list_rec.ACTIVE_DATE_SECOND_TYPE;
135   l_modifier_list_rec.ACTIVE_FLAG                   := p_modifier_list_rec.ACTIVE_FLAG;
136   l_modifier_list_rec.MAX_NO_OF_USES                := p_modifier_list_rec.MAX_NO_OF_USES;
137   l_modifier_list_rec.BUDGET_SOURCE_ID              := p_modifier_list_rec.BUDGET_SOURCE_ID;
138   l_modifier_list_rec.BUDGET_SOURCE_TYPE            := p_modifier_list_rec.BUDGET_SOURCE_TYPE;
139   l_modifier_list_rec.OFFER_USED_BY_ID              := p_modifier_list_rec.OFFER_USED_BY_ID;
140   l_modifier_list_rec.OFFER_USED_BY                 := p_modifier_list_rec.OFFER_USED_BY;
141   l_modifier_list_rec.QL_QUALIFIER_TYPE             := p_modifier_list_rec.QL_QUALIFIER_TYPE;
142   l_modifier_list_rec.QL_QUALIFIER_ID               := p_modifier_list_rec.QL_QUALIFIER_ID;
143   l_modifier_list_rec.DISTRIBUTION_TYPE             := p_modifier_list_rec.DISTRIBUTION_TYPE;
144   l_modifier_list_rec.AMOUNT_LIMIT_ID               := p_modifier_list_rec.AMOUNT_LIMIT_ID;
145   l_modifier_list_rec.USES_LIMIT_ID                 := p_modifier_list_rec.USES_LIMIT_ID;
146   l_modifier_list_rec.OFFER_OPERATION               := p_modifier_list_rec.OFFER_OPERATION;
147   l_modifier_list_rec.MODIFIER_OPERATION            := p_modifier_list_rec.MODIFIER_OPERATION;
148   l_modifier_list_rec.BUDGET_OFFER_YN               := p_modifier_list_rec.BUDGET_OFFER_YN;
149   l_modifier_list_rec.BREAK_TYPE                    := p_modifier_list_rec.BREAK_TYPE;
150   l_modifier_list_rec.RETROACTIVE                   := p_modifier_list_rec.RETROACTIVE;
151   l_modifier_list_rec.VOLUME_OFFER_TYPE             := p_modifier_list_rec.VOLUME_OFFER_TYPE;
152   l_modifier_list_rec.CONFIDENTIAL_FLAG             := p_modifier_list_rec.CONFIDENTIAL_FLAG;
153   l_modifier_list_rec.COMMITTED_AMOUNT_EQ_MAX       := p_modifier_list_rec.COMMITTED_AMOUNT_EQ_MAX;
154   l_modifier_list_rec.SOURCE_FROM_PARENT            := p_modifier_list_rec.SOURCE_FROM_PARENT;
155   l_modifier_list_rec.BUYER_NAME                    := p_modifier_list_rec.BUYER_NAME;
156   l_modifier_list_rec.TIER_LEVEL                    := p_modifier_list_rec.TIER_LEVEL;
157   l_modifier_list_rec.NA_RULE_HEADER_ID             := p_modifier_list_rec.NA_RULE_HEADER_ID;
158   l_modifier_list_rec.sales_method_flag             := p_modifier_list_rec.sales_method_flag;
159   l_modifier_list_rec.global_flag                   := p_modifier_list_rec.global_flag;
160   l_modifier_list_rec.orig_org_id                   := p_modifier_list_rec.orig_org_id;
161 
162   -- offer header
163   IF p_modifier_list_rec.offer_operation = 'CREATE' THEN
164     l_modifier_list_rec.offer_operation := 'CREATE';
165     l_modifier_list_rec.modifier_operation := 'CREATE';
166     l_modifier_list_rec.status_code := 'DRAFT';
167     l_modifier_list_rec.user_status_id := ozf_utility_pvt.get_default_user_status('OZF_OFFER_STATUS','DRAFT');--1600;
168 
169     IF p_modifier_list_rec.OWNER_ID IS NULL OR p_modifier_list_rec.OWNER_ID = fnd_api.g_miss_num THEN
170       l_modifier_list_rec.OWNER_ID                      := ozf_utility_pvt.get_resource_id(FND_GLOBAL.user_id);
171     ELSE
172       l_modifier_list_rec.OWNER_ID                      := p_modifier_list_rec.OWNER_ID;
173     END IF;
174 
175     Ozf_Offer_Pvt.process_modifiers(
176        p_init_msg_list     => p_init_msg_list
177       ,p_api_version       => p_api_version
178       ,p_commit            => p_commit
179       ,x_return_status     => x_return_status
180       ,x_msg_count         => x_msg_count
181       ,x_msg_data          => x_msg_data
182       ,p_offer_type        => p_offer_type
183       ,p_modifier_list_rec => l_modifier_list_rec
184       ,p_modifier_line_tbl => l_modifier_line_tbl -- need to create header first. use empty line.
185       ,x_qp_list_header_id => x_qp_list_header_id
186       ,x_error_location    => x_error_location);
187 
188     IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
189       RAISE Fnd_Api.g_exc_error;
190     ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
191       RAISE Fnd_Api.g_exc_unexpected_error;
192     END IF;
193 
194     l_modifier_list_rec.qp_list_header_id := x_qp_list_header_id;
195     IF p_modifier_list_rec.user_status_id IS NOT NULL AND p_modifier_list_rec.user_status_id <> fnd_api.g_miss_num THEN -- might have additional stage eg ACTIVE to go
196       l_modifier_list_rec.offer_operation := 'UPDATE';
197       l_modifier_list_rec.modifier_operation := 'UPDATE';
198       l_modifier_list_rec.user_status_id := p_modifier_list_rec.user_status_id;
199       l_modifier_list_rec.status_code := ozf_utility_pvt.get_system_status_code(p_modifier_list_rec.user_status_id);
200     ELSE -- creating draft offer hdr only
201       l_modifier_list_rec.offer_operation := fnd_api.g_miss_char;
202       l_modifier_list_rec.modifier_operation := fnd_api.g_miss_char;
203       l_modifier_list_rec.user_status_id := fnd_api.g_miss_num;
204       l_modifier_list_rec.status_code := fnd_api.g_miss_char;
205     END IF;
206   ELSE
207     x_qp_list_header_id := p_modifier_list_rec.qp_list_header_id;
208     IF p_modifier_list_rec.OWNER_ID IS NULL THEN
209       l_modifier_list_rec.OWNER_ID                      := fnd_api.g_miss_num;
210     ELSE
211       l_modifier_list_rec.OWNER_ID                      := p_modifier_list_rec.OWNER_ID;
212     END IF;
213   END IF;
214 
215   OPEN c_offer_info(x_qp_list_header_id);
216   FETCH c_offer_info INTO l_modifier_list_rec.offer_id, l_modifier_list_rec.offer_type, l_modifier_list_rec.custom_setup_id, l_modifier_list_rec.offer_code, l_modifier_list_rec.tier_level, l_modifier_list_rec.object_version_number;
217   CLOSE c_offer_info;
218 
219   l_offer_id := l_modifier_list_rec.offer_id;
220   l_obj_ver_num := l_modifier_list_rec.object_version_number;
221 
222   IF p_modifier_line_tbl.COUNT > 0 THEN
223   FOR i IN p_modifier_line_tbl.FIRST..p_modifier_line_tbl.LAST LOOP
224     IF p_modifier_line_tbl(i).excluder_flag = 'Y' THEN
225       l_excl_index := l_excl_index + 1;
226       l_exclusion_tbl(l_excl_index).operation := p_modifier_line_tbl(i).operation;
227       l_exclusion_tbl(l_excl_index).pricing_attribute_id := p_modifier_line_tbl(i).pricing_attribute_id;
228       l_exclusion_tbl(l_excl_index).list_line_id := p_modifier_line_tbl(i).list_line_id;
229       l_exclusion_tbl(l_excl_index).product_attribute_context := p_modifier_line_tbl(i).product_attribute_context;
230       l_exclusion_tbl(l_excl_index).product_attribute := p_modifier_line_tbl(i).product_attr;
231       l_exclusion_tbl(l_excl_index).product_attr_value := p_modifier_line_tbl(i).product_attr_val;
232     ELSE
233       l_prod_index := l_prod_index + 1;
234       l_modifier_line_tbl(l_prod_index).OFFER_LINE_TYPE             := p_modifier_line_tbl(i).OFFER_LINE_TYPE;
235       l_modifier_line_tbl(l_prod_index).OPERATION                   := p_modifier_line_tbl(i).OPERATION;
236       l_modifier_line_tbl(l_prod_index).LIST_LINE_ID                := p_modifier_line_tbl(i).LIST_LINE_ID;
237       l_modifier_line_tbl(l_prod_index).LIST_HEADER_ID              := x_qp_list_header_id;
238       l_modifier_line_tbl(l_prod_index).LIST_LINE_TYPE_CODE         := p_modifier_line_tbl(i).LIST_LINE_TYPE_CODE;
239       l_modifier_line_tbl(l_prod_index).OPERAND                     := p_modifier_line_tbl(i).OPERAND;
240       l_modifier_line_tbl(l_prod_index).START_DATE_ACTIVE           := p_modifier_line_tbl(i).START_DATE_ACTIVE;
241       l_modifier_line_tbl(l_prod_index).END_DATE_ACTIVE             := p_modifier_line_tbl(i).END_DATE_ACTIVE;
242       l_modifier_line_tbl(l_prod_index).ARITHMETIC_OPERATOR         := p_modifier_line_tbl(i).ARITHMETIC_OPERATOR;
243       l_modifier_line_tbl(l_prod_index).INACTIVE_FLAG               := p_modifier_line_tbl(i).ACTIVE_FLAG;
244       l_modifier_line_tbl(l_prod_index).QD_OPERAND                  := p_modifier_line_tbl(i).QD_OPERAND;
245       l_modifier_line_tbl(l_prod_index).QD_ARITHMETIC_OPERATOR      := p_modifier_line_tbl(i).QD_ARITHMETIC_OPERATOR;
246       l_modifier_line_tbl(l_prod_index).QD_RELATED_DEAL_LINES_ID    := p_modifier_line_tbl(i).QD_RELATED_DEAL_LINES_ID;
247       l_modifier_line_tbl(l_prod_index).QD_OBJECT_VERSION_NUMBER    := p_modifier_line_tbl(i).QD_OBJECT_VERSION_NUMBER;
248       l_modifier_line_tbl(l_prod_index).QD_ESTIMATED_QTY_IS_MAX     := p_modifier_line_tbl(i).QD_ESTIMATED_QTY_IS_MAX;
249       l_modifier_line_tbl(l_prod_index).QD_LIST_LINE_ID             := p_modifier_line_tbl(i).QD_LIST_LINE_ID;
250       l_modifier_line_tbl(l_prod_index).QD_ESTIMATED_AMOUNT_IS_MAX  := p_modifier_line_tbl(i).QD_ESTIMATED_AMOUNT_IS_MAX;
251       l_modifier_line_tbl(l_prod_index).ESTIM_GL_VALUE              := p_modifier_line_tbl(i).ESTIM_GL_VALUE;
252       l_modifier_line_tbl(l_prod_index).BENEFIT_PRICE_LIST_LINE_ID  := p_modifier_line_tbl(i).BENEFIT_PRICE_LIST_LINE_ID;
253       l_modifier_line_tbl(l_prod_index).BENEFIT_LIMIT               := p_modifier_line_tbl(i).BENEFIT_LIMIT;
254       l_modifier_line_tbl(l_prod_index).BENEFIT_QTY                 := p_modifier_line_tbl(i).BENEFIT_QTY;
255       l_modifier_line_tbl(l_prod_index).BENEFIT_UOM_CODE            := p_modifier_line_tbl(i).BENEFIT_UOM_CODE;
256       l_modifier_line_tbl(l_prod_index).SUBSTITUTION_CONTEXT        := p_modifier_line_tbl(i).SUBSTITUTION_CONTEXT;
257       l_modifier_line_tbl(l_prod_index).SUBSTITUTION_ATTR           := p_modifier_line_tbl(i).SUBSTITUTION_ATTR;
258       l_modifier_line_tbl(l_prod_index).SUBSTITUTION_VAL            := p_modifier_line_tbl(i).SUBSTITUTION_VAL;
259       l_modifier_line_tbl(l_prod_index).PRICE_BREAK_TYPE_CODE       := p_modifier_line_tbl(i).PRICE_BREAK_TYPE_CODE;
260       l_modifier_line_tbl(l_prod_index).PRICING_ATTRIBUTE_ID        := p_modifier_line_tbl(i).PRICING_ATTRIBUTE_ID;
261       l_modifier_line_tbl(l_prod_index).PRODUCT_ATTRIBUTE_CONTEXT   := p_modifier_line_tbl(i).PRODUCT_ATTRIBUTE_CONTEXT;
262       l_modifier_line_tbl(l_prod_index).PRODUCT_ATTR                := p_modifier_line_tbl(i).PRODUCT_ATTR;
263       l_modifier_line_tbl(l_prod_index).PRODUCT_ATTR_VAL            := p_modifier_line_tbl(i).PRODUCT_ATTR_VAL;
264       l_modifier_line_tbl(l_prod_index).PRODUCT_UOM_CODE            := p_modifier_line_tbl(i).PRODUCT_UOM_CODE;
265       l_modifier_line_tbl(l_prod_index).PRICING_ATTRIBUTE_CONTEXT   := p_modifier_line_tbl(i).PRICING_ATTRIBUTE_CONTEXT;
266       l_modifier_line_tbl(l_prod_index).PRICING_ATTR                := p_modifier_line_tbl(i).PRICING_ATTR;
267       l_modifier_line_tbl(l_prod_index).PRICING_ATTR_VALUE_FROM     := p_modifier_line_tbl(i).PRICING_ATTR_VALUE_FROM;
268       l_modifier_line_tbl(l_prod_index).PRICING_ATTR_VALUE_TO       := p_modifier_line_tbl(i).PRICING_ATTR_VALUE_TO;
269       l_modifier_line_tbl(l_prod_index).EXCLUDER_FLAG               := p_modifier_line_tbl(i).EXCLUDER_FLAG;
270       l_modifier_line_tbl(l_prod_index).ORDER_VALUE_FROM            := p_modifier_line_tbl(i).ORDER_VALUE_FROM;
271       l_modifier_line_tbl(l_prod_index).ORDER_VALUE_TO              := p_modifier_line_tbl(i).ORDER_VALUE_TO;
272       l_modifier_line_tbl(l_prod_index).QUALIFIER_ID                := p_modifier_line_tbl(i).QUALIFIER_ID;
273       l_modifier_line_tbl(l_prod_index).COMMENTS                    := p_modifier_line_tbl(i).COMMENTS;
274       l_modifier_line_tbl(l_prod_index).CONTEXT                     := p_modifier_line_tbl(i).CONTEXT;
275       l_modifier_line_tbl(l_prod_index).ATTRIBUTE1                  := p_modifier_line_tbl(i).ATTRIBUTE1;
276       l_modifier_line_tbl(l_prod_index).ATTRIBUTE2                  := p_modifier_line_tbl(i).ATTRIBUTE2;
277       l_modifier_line_tbl(l_prod_index).ATTRIBUTE3                  := p_modifier_line_tbl(i).ATTRIBUTE3;
278       l_modifier_line_tbl(l_prod_index).ATTRIBUTE4                  := p_modifier_line_tbl(i).ATTRIBUTE4;
279       l_modifier_line_tbl(l_prod_index).ATTRIBUTE5                  := p_modifier_line_tbl(i).ATTRIBUTE5;
280       l_modifier_line_tbl(l_prod_index).ATTRIBUTE6                  := p_modifier_line_tbl(i).ATTRIBUTE6;
281       l_modifier_line_tbl(l_prod_index).ATTRIBUTE7                  := p_modifier_line_tbl(i).ATTRIBUTE7;
282       l_modifier_line_tbl(l_prod_index).ATTRIBUTE8                  := p_modifier_line_tbl(i).ATTRIBUTE8;
283       l_modifier_line_tbl(l_prod_index).ATTRIBUTE9                  := p_modifier_line_tbl(i).ATTRIBUTE9;
284       l_modifier_line_tbl(l_prod_index).ATTRIBUTE10                 := p_modifier_line_tbl(i).ATTRIBUTE10;
285       l_modifier_line_tbl(l_prod_index).ATTRIBUTE11                 := p_modifier_line_tbl(i).ATTRIBUTE11;
286       l_modifier_line_tbl(l_prod_index).ATTRIBUTE12                 := p_modifier_line_tbl(i).ATTRIBUTE12;
287       l_modifier_line_tbl(l_prod_index).ATTRIBUTE13                 := p_modifier_line_tbl(i).ATTRIBUTE13;
288       l_modifier_line_tbl(l_prod_index).ATTRIBUTE14                 := p_modifier_line_tbl(i).ATTRIBUTE14;
289       l_modifier_line_tbl(l_prod_index).ATTRIBUTE15                 := p_modifier_line_tbl(i).ATTRIBUTE15;
290       l_modifier_line_tbl(l_prod_index).MAX_QTY_PER_ORDER           := p_modifier_line_tbl(i).MAX_QTY_PER_ORDER;
291       l_modifier_line_tbl(l_prod_index).MAX_QTY_PER_ORDER_ID        := p_modifier_line_tbl(i).MAX_QTY_PER_ORDER_ID;
292       l_modifier_line_tbl(l_prod_index).MAX_QTY_PER_CUSTOMER        := p_modifier_line_tbl(i).MAX_QTY_PER_CUSTOMER;
293       l_modifier_line_tbl(l_prod_index).MAX_QTY_PER_CUSTOMER_ID     := p_modifier_line_tbl(i).MAX_QTY_PER_CUSTOMER_ID;
294       l_modifier_line_tbl(l_prod_index).MAX_QTY_PER_RULE            := p_modifier_line_tbl(i).MAX_QTY_PER_RULE;
295       l_modifier_line_tbl(l_prod_index).MAX_QTY_PER_RULE_ID         := p_modifier_line_tbl(i).MAX_QTY_PER_RULE_ID;
296       l_modifier_line_tbl(l_prod_index).MAX_ORDERS_PER_CUSTOMER     := p_modifier_line_tbl(i).MAX_ORDERS_PER_CUSTOMER;
297       l_modifier_line_tbl(l_prod_index).MAX_ORDERS_PER_CUSTOMER_ID  := p_modifier_line_tbl(i).MAX_ORDERS_PER_CUSTOMER_ID;
298       l_modifier_line_tbl(l_prod_index).MAX_AMOUNT_PER_RULE         := p_modifier_line_tbl(i).MAX_AMOUNT_PER_RULE;
299       l_modifier_line_tbl(l_prod_index).MAX_AMOUNT_PER_RULE_ID      := p_modifier_line_tbl(i).MAX_AMOUNT_PER_RULE_ID;
300       l_modifier_line_tbl(l_prod_index).ESTIMATE_QTY_UOM            := p_modifier_line_tbl(i).ESTIMATE_QTY_UOM;
301       l_modifier_line_tbl(l_prod_index).generate_using_formula_id   := p_modifier_line_tbl(i).generate_using_formula_id;
302       l_modifier_line_tbl(l_prod_index).price_by_formula_id         := p_modifier_line_tbl(i).price_by_formula_id;
303       l_modifier_line_tbl(l_prod_index).generate_using_formula      := p_modifier_line_tbl(i).generate_using_formula;
304       l_modifier_line_tbl(l_prod_index).price_by_formula            := p_modifier_line_tbl(i).price_by_formula;
305     END IF;
306   END LOOP;
307   END IF;
308 
309   IF l_exclusion_tbl.COUNT > 0 THEN
310     ozf_offer_pvt.process_exclusions(
311        p_init_msg_list    => p_init_msg_list
312       ,p_api_version      => p_api_version
313       ,p_commit           => p_commit
314       ,x_return_status    => x_return_status
315       ,x_msg_count        => x_msg_count
316       ,x_msg_data         => x_msg_data
317       ,p_pricing_attr_tbl => l_exclusion_tbl
318       ,x_error_location   => x_error_location);
319 
320     IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
321       RAISE Fnd_Api.g_exc_error;
322     ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
323       RAISE Fnd_Api.g_exc_unexpected_error;
324     END IF;
325   END IF;
326 
327   -- offer line
328   IF p_offer_type IN ('LUMPSUM', 'SCAN_DATA') THEN
329     IF p_act_product_tbl.COUNT > 0 THEN
330     FOR i IN p_act_product_tbl.FIRST..p_act_product_tbl.LAST LOOP
331       l_act_product_rec := NULL;
332 
333       l_act_product_rec.arc_act_product_used_by := 'OFFR';
334       l_act_product_rec.primary_product_flag := p_act_product_tbl(i).primary_product_flag;
335       l_act_product_rec.enabled_flag := p_act_product_tbl(i).enabled_flag;
336       l_act_product_rec.inventory_item_id := p_act_product_tbl(i).inventory_item_id;
337       l_act_product_rec.organization_id := p_act_product_tbl(i).organization_id;
338       l_act_product_rec.category_id := p_act_product_tbl(i).category_id;
339       l_act_product_rec.category_set_id := p_act_product_tbl(i).category_set_id;
340       l_act_product_rec.attribute_category := p_act_product_tbl(i).attribute_category;
341       l_act_product_rec.level_type_code := p_act_product_tbl(i).level_type_code;
342       l_act_product_rec.excluded_flag := p_act_product_tbl(i).excluded_flag;
343       l_act_product_rec.line_lumpsum_amount := p_act_product_tbl(i).line_lumpsum_amount;
344       l_act_product_rec.line_lumpsum_qty := p_act_product_tbl(i).line_lumpsum_qty;
345       l_act_product_rec.scan_value := p_act_product_tbl(i).scan_value;
346       l_act_product_rec.uom_code := p_act_product_tbl(i).uom_code;
347       l_act_product_rec.scan_unit_forecast := p_act_product_tbl(i).scan_unit_forecast;
348       l_act_product_rec.channel_id := p_act_product_tbl(i).channel_id;
349       l_act_product_rec.quantity := p_act_product_tbl(i).quantity;
350       l_act_product_rec.adjustment_flag := p_act_product_tbl(i).adjustment_flag;
351 
352       IF p_act_product_tbl(i).operation = 'CREATE' THEN
353         IF p_act_product_tbl(i).act_product_used_by_id IS NULL OR p_act_product_tbl(i).act_product_used_by_id = FND_API.g_miss_num THEN
354           l_act_product_rec.act_product_used_by_id := x_qp_list_header_id;
355         ELSE
356           l_act_product_rec.act_product_used_by_id := p_act_product_tbl(i).act_product_used_by_id;
357         END IF;
358 
359         AMS_ActProduct_PVT.Create_Act_Product(
360           p_api_version      => p_api_version,
361           p_init_msg_list    => p_init_msg_list,
362           p_commit           => p_commit,
363           p_validation_level => FND_API.G_VALID_LEVEL_FULL,
364           x_return_status    => x_return_status,
365           x_msg_count        => x_msg_count,
366           x_msg_data         => x_msg_data,
367           p_act_Product_rec  => l_act_product_rec,
368           x_act_Product_id   => l_act_product_id);
369 
370         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
371           RAISE Fnd_Api.g_exc_error;
372         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
373           RAISE Fnd_Api.g_exc_unexpected_error;
374         END IF;
375       ELSIF p_act_product_tbl(i).operation = 'UPDATE' THEN
376         l_act_product_rec.activity_product_id := p_act_product_tbl(i).activity_product_id;
377         l_act_product_rec.object_version_number := p_act_product_tbl(i).object_version_number;
378         l_act_product_rec.act_product_used_by_id := p_act_product_tbl(i).act_product_used_by_id;
379 
380         AMS_ActProduct_PVT.Update_Act_Product(
381           p_api_version      => p_api_version,
382           p_init_msg_list    => p_init_msg_list,
383           p_commit           => p_commit,
384           p_validation_level => FND_API.G_VALID_LEVEL_FULL,
385           x_return_status    => x_return_status,
386           x_msg_count        => x_msg_count,
387           x_msg_data         => x_msg_data,
388           p_act_Product_rec  => l_act_product_rec);
389 
390         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
391           RAISE Fnd_Api.g_exc_error;
392         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
393           RAISE Fnd_Api.g_exc_unexpected_error;
394         END IF;
395       ELSIF p_act_product_tbl(i).operation = 'DELETE' THEN
396         AMS_ActProduct_PVT.Delete_Act_Product(
397           p_api_version      => p_api_version,
398           p_init_msg_list    => p_init_msg_list,
399           p_commit           => p_commit,
400           p_validation_level => FND_API.G_VALID_LEVEL_FULL,
401           x_return_status    => x_return_status,
402           x_msg_count        => x_msg_count,
403           x_msg_data         => x_msg_data,
404           p_act_Product_id   => p_act_product_tbl(i).activity_product_id,
405           p_object_version   => p_act_product_tbl(i).object_version_number);
406 
407         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
408           RAISE Fnd_Api.g_exc_error;
409         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
410           RAISE Fnd_Api.g_exc_unexpected_error;
411         END IF;
412       END IF;
413     END LOOP;
414     END IF;
415   ELSIF p_offer_type = 'NET_ACCRUAL' THEN
416     IF l_modifier_list_rec.tier_level = 'LINE' THEN
417       IF p_discount_tbl.COUNT > 0 THEN
418       FOR i IN p_discount_tbl.FIRST..p_discount_tbl.LAST LOOP
419         l_discount_line_rec.parent_discount_line_id := p_discount_tbl(i).parent_discount_line_id;
420         l_discount_line_rec.volume_from := p_discount_tbl(i).volume_from;
421         l_discount_line_rec.volume_to := p_discount_tbl(i).volume_to;
422         l_discount_line_rec.volume_operator := p_discount_tbl(i).volume_operator;
423         l_discount_line_rec.volume_type := p_discount_tbl(i).volume_type;
424         l_discount_line_rec.volume_break_type := p_discount_tbl(i).volume_break_type;
425         l_discount_line_rec.discount := p_discount_tbl(i).discount;
426         l_discount_line_rec.discount_type := p_discount_tbl(i).discount_type;
427         l_discount_line_rec.tier_type := p_discount_tbl(i).tier_type;
428         l_discount_line_rec.tier_level := p_discount_tbl(i).tier_level;
429         l_discount_line_rec.incompatibility_group := p_discount_tbl(i).incompatibility_group;
430         l_discount_line_rec.precedence := p_discount_tbl(i).precedence;
431         l_discount_line_rec.bucket := p_discount_tbl(i).bucket;
432         l_discount_line_rec.scan_value := p_discount_tbl(i).scan_value;
433         l_discount_line_rec.scan_data_quantity := p_discount_tbl(i).scan_data_quantity;
434         l_discount_line_rec.scan_unit_forecast := p_discount_tbl(i).scan_unit_forecast;
435         l_discount_line_rec.channel_id := p_discount_tbl(i).channel_id;
436         l_discount_line_rec.adjustment_flag := p_discount_tbl(i).adjustment_flag;
437         l_discount_line_rec.start_date_active := p_discount_tbl(i).start_date_active;
438         l_discount_line_rec.end_date_active := p_discount_tbl(i).end_date_active;
439         l_discount_line_rec.uom_code := p_discount_tbl(i).uom_code;
440         l_discount_line_rec.off_discount_product_id := p_discount_tbl(i).off_discount_product_id;
441         l_discount_line_rec.parent_off_disc_prod_id := p_discount_tbl(i).parent_off_disc_prod_id;
442         l_discount_line_rec.product_level := p_discount_tbl(i).product_level;
443         l_discount_line_rec.product_id := p_discount_tbl(i).product_id;
444         l_discount_line_rec.excluder_flag := p_discount_tbl(i).excluder_flag;
445 
446         IF p_discount_tbl(i).operation = 'CREATE' THEN
447           IF p_discount_tbl(i).offer_id IS NULL OR p_discount_tbl(i).offer_id = FND_API.g_miss_num THEN
448             l_discount_line_rec.offer_id := l_offer_id;
449           ELSE
450             l_discount_line_rec.offer_id := p_discount_tbl(i).offer_id;
451           END IF;
452 
453           OZF_Disc_Line_PVT.Create_discount_line(
454             p_api_version_number     => p_api_version,
455             p_init_msg_list          => p_init_msg_list,
456             p_commit                 => p_commit,
457             p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
458             x_return_status          => x_return_status,
459             x_msg_count              => x_msg_count,
460             x_msg_data               => x_msg_data,
461             p_ozf_discount_line_rec  => l_discount_line_rec,
462             x_offer_discount_line_id => l_discount_line_id);
463 
464           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
465             RAISE Fnd_Api.g_exc_error;
466           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
467             RAISE Fnd_Api.g_exc_unexpected_error;
468           END IF;
469         ELSIF p_discount_tbl(i).operation = 'UPDATE' THEN
470           l_discount_line_rec.offer_discount_line_id := p_discount_tbl(i).offer_discount_line_id;
471           l_discount_line_rec.offer_id := p_discount_tbl(i).offer_id;
472           l_discount_line_rec.object_version_number := p_discount_tbl(i).object_version_number;
473 
474           OZF_Disc_Line_PVT.Update_discount_line(
475             p_api_version_number     => p_api_version,
476             p_init_msg_list          => p_init_msg_list,
477             p_commit                 => p_commit,
478             p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
479             x_return_status          => x_return_status,
480             x_msg_count              => x_msg_count,
481             x_msg_data               => x_msg_data,
482             p_ozf_discount_line_rec  => l_discount_line_rec);
483 
484           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
485             RAISE Fnd_Api.g_exc_error;
486           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
487             RAISE Fnd_Api.g_exc_unexpected_error;
488           END IF;
489         ELSIF p_discount_tbl(i).operation = 'DELETE' THEN
490           OZF_Disc_Line_PVT.Delete_offer_line(
491             p_api_version_number     => p_api_version,
492             p_init_msg_list          => p_init_msg_list,
493             p_commit                 => p_commit,
494             p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
495             x_return_status          => x_return_status,
496             x_msg_count              => x_msg_count,
497             x_msg_data               => x_msg_data,
498             p_offer_discount_line_id => p_discount_tbl(i).offer_discount_line_id,
499             p_object_version_number  => p_discount_tbl(i).object_version_number);
500 
501           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
502             RAISE Fnd_Api.g_exc_error;
503           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
504             RAISE Fnd_Api.g_exc_unexpected_error;
505           END IF;
506         END IF;
507       END LOOP;
508       END IF;
509 
510       IF p_excl_tbl.COUNT > 0 THEN
511       FOR i IN p_excl_tbl.FIRST..p_excl_tbl.LAST LOOP
512         l_excl_rec.product_level := p_excl_tbl(i).product_level;
513         l_excl_rec.product_id := p_excl_tbl(i).product_id;
514         l_excl_rec.start_date_active := p_excl_tbl(i).start_date_active;
515         l_excl_rec.end_date_active := p_excl_tbl(i).end_date_active;
516         l_excl_rec.parent_off_disc_prod_id := p_excl_tbl(i).parent_off_disc_prod_id;
517 
518         IF p_excl_tbl(i).operation = 'CREATE' THEN
519           OZF_Disc_Line_PVT.Create_Product_Exclusion(
520             p_api_version_number      => p_api_version,
521             p_init_msg_list           => p_init_msg_list,
522             p_commit                  => p_commit,
523             p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
524             x_return_status           => x_return_status,
525             x_msg_count               => x_msg_count,
526             x_msg_data                => x_msg_data,
527             p_ozf_excl_rec            => l_excl_rec,
528             x_off_discount_product_id => l_discount_product_id);
529 
530           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
531             RAISE Fnd_Api.g_exc_error;
532           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
533             RAISE Fnd_Api.g_exc_unexpected_error;
534           END IF;
535         ELSIF p_excl_tbl(i).operation = 'UPDATE' THEN
536           l_excl_rec.off_discount_product_id := p_excl_tbl(i).off_discount_product_id;
537           l_excl_rec.object_version_number := p_excl_tbl(i).object_version_number;
538 
539           OZF_Disc_Line_PVT.Update_Product_Exclusion(
540             p_api_version_number => p_api_version,
541             p_init_msg_list      => p_init_msg_list,
542             p_commit             => p_commit,
543             p_validation_level   => FND_API.G_VALID_LEVEL_FULL,
544             x_return_status      => x_return_status,
545             x_msg_count          => x_msg_count,
546             x_msg_data           => x_msg_data,
547             p_ozf_excl_rec       => l_excl_rec);
548 
549           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
550             RAISE Fnd_Api.g_exc_error;
551           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
552             RAISE Fnd_Api.g_exc_unexpected_error;
553           END IF;
554         ELSIF p_excl_tbl(i).operation = 'DELETE' THEN
555           OZF_Disc_Line_PVT.Delete_Ozf_Prod_Line(
556             p_api_version_number      => p_api_version,
557             p_init_msg_list           => p_init_msg_list,
558             p_commit                  => p_commit,
559             p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
560             x_return_status           => x_return_status,
561             x_msg_count               => x_msg_count,
562             x_msg_data                => x_msg_data,
563             p_off_discount_product_id => p_excl_tbl(i).off_discount_product_id,
564             p_object_version_number   => p_excl_tbl(i).object_version_number);
565 
566           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
567             RAISE Fnd_Api.g_exc_error;
568           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
569             RAISE Fnd_Api.g_exc_unexpected_error;
570           END IF;
571         END IF;
572       END LOOP;
573       END IF;
574 
575       IF p_offer_tier_tbl.COUNT > 0 THEN
576       FOR i IN p_offer_tier_tbl.FIRST..p_offer_tier_tbl.LAST LOOP
577         l_offer_tier_rec.parent_discount_line_id := p_offer_tier_tbl(i).parent_discount_line_id;
578         l_offer_tier_rec.offer_id := p_offer_tier_tbl(i).offer_id;
579         l_offer_tier_rec.volume_from := p_offer_tier_tbl(i).volume_from;
580         l_offer_tier_rec.volume_to := p_offer_tier_tbl(i).volume_to;
581         l_offer_tier_rec.volume_operator := p_offer_tier_tbl(i).volume_operator;
582         l_offer_tier_rec.volume_type := p_offer_tier_tbl(i).volume_type;
583         l_offer_tier_rec.volume_break_type := p_offer_tier_tbl(i).volume_break_type;
584         l_offer_tier_rec.discount := p_offer_tier_tbl(i).discount;
585         l_offer_tier_rec.discount_type := p_offer_tier_tbl(i).discount_type;
586         l_offer_tier_rec.start_date_active := p_offer_tier_tbl(i).start_date_active;
587         l_offer_tier_rec.end_date_active := p_offer_tier_tbl(i).end_date_active;
588         l_offer_tier_rec.uom_code := p_offer_tier_tbl(i).uom_code;
589 
590         IF p_offer_tier_tbl(i).operation = 'CREATE' THEN
591           OZF_Disc_Line_PVT.Create_Disc_Tiers(
592             p_api_version_number     => p_api_version,
593             p_init_msg_list          => p_init_msg_list,
594             p_commit                 => p_commit,
595             p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
596             x_return_status          => x_return_status,
597             x_msg_count              => x_msg_count,
598             x_msg_data               => x_msg_data,
599             p_tier_rec               => l_offer_tier_rec,
600             x_offer_discount_line_id => l_discount_line_id);
601 
602           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
603             RAISE Fnd_Api.g_exc_error;
604           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
605             RAISE Fnd_Api.g_exc_unexpected_error;
606           END IF;
607         ELSIF p_offer_tier_tbl(i).operation = 'UPDATE' THEN
608           l_offer_tier_rec.offer_discount_line_id := p_offer_tier_tbl(i).offer_discount_line_id;
609           l_offer_tier_rec.object_version_number := p_offer_tier_tbl(i).object_version_number;
610 
611           OZF_Disc_Line_PVT.Update_Disc_Tiers(
612             p_api_version_number     => p_api_version,
613             p_init_msg_list          => p_init_msg_list,
614             p_commit                 => p_commit,
615             p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
616             x_return_status          => x_return_status,
617             x_msg_count              => x_msg_count,
618             x_msg_data               => x_msg_data,
619             p_tier_rec               => l_offer_tier_rec);
620 
621           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
622             RAISE Fnd_Api.g_exc_error;
623           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
624             RAISE Fnd_Api.g_exc_unexpected_error;
625           END IF;
626         ELSIF p_offer_tier_tbl(i).operation = 'DELETE' THEN
627           IF p_offer_tier_tbl(i).parent_discount_line_id IS NULL OR p_offer_tier_tbl(i).parent_discount_line_id = FND_API.g_miss_num THEN
628             OZF_Disc_Line_PVT.Delete_Disc_tiers(
629               p_api_version_number      => p_api_version,
630               p_init_msg_list           => p_init_msg_list,
631               p_commit                  => p_commit,
632               p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
633               x_return_status           => x_return_status,
634               x_msg_count               => x_msg_count,
635               x_msg_data                => x_msg_data,
636               p_parent_discount_line_id => p_offer_tier_tbl(i).offer_discount_line_id);
637 
638             IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
639               RAISE Fnd_Api.g_exc_error;
640             ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
641               RAISE Fnd_Api.g_exc_unexpected_error;
642             END IF;
643           ELSE
644             OZF_Disc_Line_PVT.Delete_Tier_line(
645               p_api_version_number     => p_api_version,
646               p_init_msg_list          => p_init_msg_list,
647               p_commit                 => p_commit,
648               p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
649               x_return_status          => x_return_status,
650               x_msg_count              => x_msg_count,
651               x_msg_data               => x_msg_data,
652               p_offer_discount_line_id => p_offer_tier_tbl(i).offer_discount_line_id,
653               p_object_version_number  => p_offer_tier_tbl(i).object_version_number);
654 
655             IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
656               RAISE Fnd_Api.g_exc_error;
657             ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
658               RAISE Fnd_Api.g_exc_unexpected_error;
659             END IF;
660           END IF;
661         END IF;
662       END LOOP;
663       END IF;
664     ELSIF l_modifier_list_rec.tier_level = 'HEADER' THEN
665       IF p_prod_tbl.COUNT > 0 THEN
666       FOR i IN p_prod_tbl.FIRST..p_prod_tbl.LAST LOOP
667         l_prod_rec.parent_off_disc_prod_id := p_prod_tbl(i).parent_off_disc_prod_id;
668         l_prod_rec.product_level := p_prod_tbl(i).product_level;
669         l_prod_rec.product_id := p_prod_tbl(i).product_id;
670         l_prod_rec.excluder_flag := p_prod_tbl(i).excluder_flag;
671         l_prod_rec.uom_code := p_prod_tbl(i).uom_code;
672         l_prod_rec.start_date_active := p_prod_tbl(i).start_date_active;
673         l_prod_rec.end_date_active := p_prod_tbl(i).end_date_active;
674         l_prod_rec.offer_discount_line_id := p_prod_tbl(i).offer_discount_line_id;
675 
676         IF p_prod_tbl(i).operation = 'CREATE' THEN
677           IF p_prod_tbl(i).offer_id IS NULL OR p_prod_tbl(i).offer_id = FND_API.g_miss_num THEN
678             l_prod_rec.offer_id := l_offer_id;
679           ELSE
680             l_prod_rec.offer_id := p_prod_tbl(i).offer_id;
681           END IF;
682 
683           OZF_Disc_Line_PVT.Create_Ozf_Prod_Line(
684             p_api_version_number      => p_api_version,
685             p_init_msg_list           => p_init_msg_list,
686             p_commit                  => p_commit,
687             p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
688             x_return_status           => x_return_status,
689             x_msg_count               => x_msg_count,
690             x_msg_data                => x_msg_data,
691             p_ozf_prod_rec            => l_prod_rec,
692             x_off_discount_product_id => l_discount_product_id);
693 
694           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
695             RAISE Fnd_Api.g_exc_error;
696           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
697             RAISE Fnd_Api.g_exc_unexpected_error;
698           END IF;
699         ELSIF p_prod_tbl(i).operation = 'UPDATE' THEN
700           l_prod_rec.off_discount_product_id := p_prod_tbl(i).off_discount_product_id;
701           l_prod_rec.offer_id := p_prod_tbl(i).offer_id;
702           l_prod_rec.object_version_number := p_prod_tbl(i).object_version_number;
703 
704           OZF_Disc_Line_PVT.Update_Ozf_Prod_Line(
705             p_api_version_number      => p_api_version,
706             p_init_msg_list           => p_init_msg_list,
707             p_commit                  => p_commit,
708             p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
709             x_return_status           => x_return_status,
710             x_msg_count               => x_msg_count,
711             x_msg_data                => x_msg_data,
712             p_ozf_prod_rec            => l_prod_rec);
713 
714           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
715             RAISE Fnd_Api.g_exc_error;
716           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
717             RAISE Fnd_Api.g_exc_unexpected_error;
718           END IF;
719         ELSIF p_prod_tbl(i).operation = 'DELETE' THEN
720           OZF_Disc_Line_PVT.Delete_Ozf_Prod_Line(
721             p_api_version_number      => p_api_version,
722             p_init_msg_list           => p_init_msg_list,
723             p_commit                  => p_commit,
724             p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
725             x_return_status           => x_return_status,
726             x_msg_count               => x_msg_count,
727             x_msg_data                => x_msg_data,
728             p_off_discount_product_id => p_prod_tbl(i).off_discount_product_id,
729             p_object_version_number   => p_prod_tbl(i).object_version_number);
730 
731           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
732             RAISE Fnd_Api.g_exc_error;
733           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
734             RAISE Fnd_Api.g_exc_unexpected_error;
735           END IF;
736         END IF;
737       END LOOP;
738       END IF;
739     END IF;
740 
741     IF p_excl_tbl.COUNT > 0 THEN
742     FOR i IN p_excl_tbl.FIRST..p_excl_tbl.LAST LOOP
743       l_excl_rec.product_level := p_excl_tbl(i).product_level;
744       l_excl_rec.product_id := p_excl_tbl(i).product_id;
745       l_excl_rec.start_date_active := p_excl_tbl(i).start_date_active;
746       l_excl_rec.end_date_active := p_excl_tbl(i).end_date_active;
747       l_excl_rec.parent_off_disc_prod_id := p_excl_tbl(i).parent_off_disc_prod_id;
748 
749       IF p_excl_tbl(i).operation = 'CREATE' THEN
750         OZF_Disc_Line_PVT.Create_Product_Exclusion(
751           p_api_version_number      => p_api_version,
752           p_init_msg_list           => p_init_msg_list,
753           p_commit                  => p_commit,
754           p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
755           x_return_status           => x_return_status,
756           x_msg_count               => x_msg_count,
757           x_msg_data                => x_msg_data,
758           p_ozf_excl_rec            => l_excl_rec,
759           x_off_discount_product_id => l_discount_product_id);
760 
761         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
762           RAISE Fnd_Api.g_exc_error;
763         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
764           RAISE Fnd_Api.g_exc_unexpected_error;
765         END IF;
766       ELSIF p_excl_tbl(i).operation = 'UPDATE' THEN
767         l_excl_rec.off_discount_product_id := p_excl_tbl(i).off_discount_product_id;
768         l_excl_rec.object_version_number := p_excl_tbl(i).object_version_number;
769 
770         OZF_Disc_Line_PVT.Update_Product_Exclusion(
771           p_api_version_number => p_api_version,
772           p_init_msg_list      => p_init_msg_list,
773           p_commit             => p_commit,
774           p_validation_level   => FND_API.G_VALID_LEVEL_FULL,
775           x_return_status      => x_return_status,
776           x_msg_count          => x_msg_count,
777           x_msg_data           => x_msg_data,
778           p_ozf_excl_rec       => l_excl_rec);
779 
780         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
781           RAISE Fnd_Api.g_exc_error;
782         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
783           RAISE Fnd_Api.g_exc_unexpected_error;
784         END IF;
785       ELSIF p_excl_tbl(i).operation = 'DELETE' THEN
786         OZF_Disc_Line_PVT.Delete_Ozf_Prod_Line(
787           p_api_version_number      => p_api_version,
788           p_init_msg_list           => p_init_msg_list,
789           p_commit                  => p_commit,
790           p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
791           x_return_status           => x_return_status,
792           x_msg_count               => x_msg_count,
793           x_msg_data                => x_msg_data,
794           p_off_discount_product_id => p_excl_tbl(i).off_discount_product_id,
795           p_object_version_number   => p_excl_tbl(i).object_version_number);
796 
797         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
798           RAISE Fnd_Api.g_exc_error;
799         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
800           RAISE Fnd_Api.g_exc_unexpected_error;
801         END IF;
802       END IF;
803     END LOOP;
804     END IF;
805 
806     IF p_offer_tier_tbl.COUNT > 0 THEN
807     FOR i IN p_offer_tier_tbl.FIRST..p_offer_tier_tbl.LAST LOOP
808       l_offer_tier_rec.parent_discount_line_id := p_offer_tier_tbl(i).parent_discount_line_id;
809       l_offer_tier_rec.offer_id := p_offer_tier_tbl(i).offer_id;
810       l_offer_tier_rec.volume_from := p_offer_tier_tbl(i).volume_from;
811       l_offer_tier_rec.volume_to := p_offer_tier_tbl(i).volume_to;
812       l_offer_tier_rec.volume_operator := p_offer_tier_tbl(i).volume_operator;
813       l_offer_tier_rec.volume_type := p_offer_tier_tbl(i).volume_type;
814       l_offer_tier_rec.volume_break_type := p_offer_tier_tbl(i).volume_break_type;
815       l_offer_tier_rec.discount := p_offer_tier_tbl(i).discount;
816       l_offer_tier_rec.discount_type := p_offer_tier_tbl(i).discount_type;
817       l_offer_tier_rec.start_date_active := p_offer_tier_tbl(i).start_date_active;
818       l_offer_tier_rec.end_date_active := p_offer_tier_tbl(i).end_date_active;
819       l_offer_tier_rec.uom_code := p_offer_tier_tbl(i).uom_code;
820 
821       IF p_offer_tier_tbl(i).operation = 'CREATE' THEN
822         OZF_Disc_Line_PVT.Create_Disc_Tiers(
823           p_api_version_number     => p_api_version,
824           p_init_msg_list          => p_init_msg_list,
825           p_commit                 => p_commit,
826           p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
827           x_return_status          => x_return_status,
828           x_msg_count              => x_msg_count,
829           x_msg_data               => x_msg_data,
830           p_tier_rec               => l_offer_tier_rec,
831           x_offer_discount_line_id => l_discount_line_id);
832 
833         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
834           RAISE Fnd_Api.g_exc_error;
835         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
836           RAISE Fnd_Api.g_exc_unexpected_error;
837         END IF;
838       ELSIF p_offer_tier_tbl(i).operation = 'UPDATE' THEN
839         l_offer_tier_rec.offer_discount_line_id := p_offer_tier_tbl(i).offer_discount_line_id;
840         l_offer_tier_rec.object_version_number := p_offer_tier_tbl(i).object_version_number;
841 
842         OZF_Disc_Line_PVT.Update_Disc_Tiers(
843           p_api_version_number     => p_api_version,
844           p_init_msg_list          => p_init_msg_list,
845           p_commit                 => p_commit,
846           p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
847           x_return_status          => x_return_status,
848           x_msg_count              => x_msg_count,
849           x_msg_data               => x_msg_data,
850           p_tier_rec               => l_offer_tier_rec);
851 
852         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
853           RAISE Fnd_Api.g_exc_error;
854         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
855           RAISE Fnd_Api.g_exc_unexpected_error;
856         END IF;
857       ELSIF p_offer_tier_tbl(i).operation = 'DELETE' THEN
858         IF p_offer_tier_tbl(i).parent_discount_line_id IS NULL OR p_offer_tier_tbl(i).parent_discount_line_id = FND_API.g_miss_num THEN
859           OZF_Disc_Line_PVT.Delete_Disc_tiers(
860             p_api_version_number      => p_api_version,
861             p_init_msg_list           => p_init_msg_list,
862             p_commit                  => p_commit,
863             p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
864             x_return_status           => x_return_status,
865             x_msg_count               => x_msg_count,
866             x_msg_data                => x_msg_data,
867             p_parent_discount_line_id => p_offer_tier_tbl(i).offer_discount_line_id);
868 
869           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
870             RAISE Fnd_Api.g_exc_error;
871           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
872             RAISE Fnd_Api.g_exc_unexpected_error;
873           END IF;
874         ELSE
875           OZF_Disc_Line_PVT.Delete_Tier_line(
876             p_api_version_number     => p_api_version,
877             p_init_msg_list          => p_init_msg_list,
878             p_commit                 => p_commit,
879             p_validation_level       => FND_API.G_VALID_LEVEL_FULL,
880             x_return_status          => x_return_status,
881             x_msg_count              => x_msg_count,
882             x_msg_data               => x_msg_data,
883             p_offer_discount_line_id => p_offer_tier_tbl(i).offer_discount_line_id,
884             p_object_version_number  => p_offer_tier_tbl(i).object_version_number);
885 
886           IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
887             RAISE Fnd_Api.g_exc_error;
888           ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
889             RAISE Fnd_Api.g_exc_unexpected_error;
890           END IF;
891         END IF;
892       END IF;
893     END LOOP;
894     END IF;
895   END IF; -- end offer_type
896 
897   Ozf_Offer_Pvt.process_modifiers(
898      p_init_msg_list     => p_init_msg_list
899     ,p_api_version       => p_api_version
900     ,p_commit            => p_commit
901     ,x_return_status     => x_return_status
902     ,x_msg_count         => x_msg_count
903     ,x_msg_data          => x_msg_data
904     ,p_offer_type        => p_offer_type
905     ,p_modifier_list_rec => l_modifier_list_rec
906     ,p_modifier_line_tbl => l_modifier_line_tbl
907     ,x_qp_list_header_id => l_dummy
908     ,x_error_location    => x_error_location);
909 
910   IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
911     RAISE Fnd_Api.g_exc_error;
912   ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
913     RAISE Fnd_Api.g_exc_unexpected_error;
914   END IF;
915 
916   -- process qualifier
917   IF p_offer_type = 'NET_ACCRUAL' THEN
918     IF p_na_qualifier_tbl.COUNT > 0 THEN
919     FOR i IN p_na_qualifier_tbl.FIRST..p_na_qualifier_tbl.LAST LOOP
920       l_na_qualifier_rec.qualifier_id           := p_na_qualifier_tbl(i).qualifier_id;
921       l_na_qualifier_rec.qualifier_grouping_no  := p_na_qualifier_tbl(i).qualifier_grouping_no;
922       l_na_qualifier_rec.qualifier_context      := p_na_qualifier_tbl(i).qualifier_context;
923       l_na_qualifier_rec.qualifier_attribute    := p_na_qualifier_tbl(i).qualifier_attribute;
924       l_na_qualifier_rec.qualifier_attr_value   := p_na_qualifier_tbl(i).qualifier_attr_value;
925       l_na_qualifier_rec.start_date_active      := p_na_qualifier_tbl(i).start_date_active;
926       l_na_qualifier_rec.end_date_active        := p_na_qualifier_tbl(i).end_date_active;
927       l_na_qualifier_rec.offer_id               := l_offer_id;
928       l_na_qualifier_rec.offer_discount_line_id := p_na_qualifier_tbl(i).offer_discount_line_id;
929       l_na_qualifier_rec.context                := p_na_qualifier_tbl(i).context;
930       l_na_qualifier_rec.attribute1             := p_na_qualifier_tbl(i).attribute1;
931       l_na_qualifier_rec.attribute2             := p_na_qualifier_tbl(i).attribute2;
932       l_na_qualifier_rec.attribute3             := p_na_qualifier_tbl(i).attribute3;
933       l_na_qualifier_rec.attribute4             := p_na_qualifier_tbl(i).attribute4;
934       l_na_qualifier_rec.attribute5             := p_na_qualifier_tbl(i).attribute5;
935       l_na_qualifier_rec.attribute6             := p_na_qualifier_tbl(i).attribute6;
936       l_na_qualifier_rec.attribute7             := p_na_qualifier_tbl(i).attribute7;
937       l_na_qualifier_rec.attribute8             := p_na_qualifier_tbl(i).attribute8;
938       l_na_qualifier_rec.attribute9             := p_na_qualifier_tbl(i).attribute9;
939       l_na_qualifier_rec.attribute10            := p_na_qualifier_tbl(i).attribute10;
940       l_na_qualifier_rec.attribute11            := p_na_qualifier_tbl(i).attribute11;
941       l_na_qualifier_rec.attribute12            := p_na_qualifier_tbl(i).attribute12;
942       l_na_qualifier_rec.attribute13            := p_na_qualifier_tbl(i).attribute13;
943       l_na_qualifier_rec.attribute14            := p_na_qualifier_tbl(i).attribute14;
944       l_na_qualifier_rec.attribute15            := p_na_qualifier_tbl(i).attribute15;
945       IF p_na_qualifier_tbl(i).active_flag IS NULL THEN
946         l_na_qualifier_rec.active_flag            := 'Y'; -- set qualifier default to Active
947       ELSE
948         l_na_qualifier_rec.active_flag            := p_na_qualifier_tbl(i).active_flag;
949       END IF;
950       l_na_qualifier_rec.object_version_number  := p_na_qualifier_tbl(i).object_version_number;
951 
952       IF p_na_qualifier_tbl(i).operation = 'CREATE' THEN
953         OZF_Offr_Qual_PVT.Create_Offr_Qual(
954           p_api_version_number => p_api_version,
955           p_init_msg_list      => p_init_msg_list,
956           p_commit             => p_commit,
957           p_validation_level   => FND_API.G_VALID_LEVEL_FULL,
958           x_return_status      => x_return_status,
959           x_msg_count          => x_msg_count,
960           x_msg_data           => x_msg_data,
961           p_ozf_offr_qual_rec  => l_na_qualifier_rec,
962           x_qualifier_id       => l_na_qualifier_id);
963 
964         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
965           RAISE Fnd_Api.g_exc_error;
966         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
967           RAISE Fnd_Api.g_exc_unexpected_error;
968         END IF;
969       ELSIF p_na_qualifier_tbl(i).operation = 'UPDATE' THEN
970         OZF_Offr_Qual_PVT.Update_Offr_Qual(
971           p_api_version_number => p_api_version,
972           p_init_msg_list      => p_init_msg_list,
973           p_commit             => p_commit,
974           p_validation_level   => FND_API.G_VALID_LEVEL_FULL,
975           x_return_status      => x_return_status,
976           x_msg_count          => x_msg_count,
977           x_msg_data           => x_msg_data,
978           p_ozf_offr_qual_rec  => l_na_qualifier_rec);
979 
980         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
981           RAISE Fnd_Api.g_exc_error;
982         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
983           RAISE Fnd_Api.g_exc_unexpected_error;
984         END IF;
985       ELSIF p_na_qualifier_tbl(i).operation = 'DELETE' THEN
986         OZF_Offr_Qual_PVT.Delete_Offr_Qual(
987           p_api_version_number    => p_api_version,
988           p_init_msg_list         => p_init_msg_list,
989           p_commit                => p_commit,
990           p_validation_level      => FND_API.G_VALID_LEVEL_FULL,
991           x_return_status         => x_return_status,
992           x_msg_count             => x_msg_count,
993           x_msg_data              => x_msg_data,
994           p_qualifier_id          => l_na_qualifier_rec.qualifier_id,
995           p_object_version_number => l_na_qualifier_rec.object_version_number);
996 
997         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
998           RAISE Fnd_Api.g_exc_error;
999         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1000           RAISE Fnd_Api.g_exc_unexpected_error;
1001         END IF;
1002       END IF;
1003     END LOOP;
1004     END IF;
1005   ELSE
1006     IF p_qualifier_tbl.COUNT > 0 THEN
1007       FOR i IN p_qualifier_tbl.FIRST..p_qualifier_tbl.LAST LOOP
1008         l_qualifiers_tbl(i).list_header_id             := x_qp_list_header_id;
1009         l_qualifiers_tbl(i).qualifier_context          := p_qualifier_tbl(i).qualifier_context;
1010         l_qualifiers_tbl(i).qualifier_attribute        := p_qualifier_tbl(i).qualifier_attribute;
1011         l_qualifiers_tbl(i).qualifier_attr_value       := p_qualifier_tbl(i).qualifier_attr_value;
1012         l_qualifiers_tbl(i).qualifier_attr_value_to    := p_qualifier_tbl(i).qualifier_attr_value_to;
1013         l_qualifiers_tbl(i).comparison_operator_code   := p_qualifier_tbl(i).comparison_operator_code;
1014         l_qualifiers_tbl(i).qualifier_grouping_no      := p_qualifier_tbl(i).qualifier_grouping_no;
1015         l_qualifiers_tbl(i).list_line_id               := p_qualifier_tbl(i).list_line_id;
1016         l_qualifiers_tbl(i).qualifier_id               := p_qualifier_tbl(i).qualifier_id;
1017         l_qualifiers_tbl(i).start_date_active          := p_qualifier_tbl(i).start_date_active;
1018         l_qualifiers_tbl(i).end_date_active            := p_qualifier_tbl(i).end_date_active;
1019         l_qualifiers_tbl(i).activity_market_segment_id := p_qualifier_tbl(i).activity_market_segment_id;
1020         l_qualifiers_tbl(i).operation                  := p_qualifier_tbl(i).operation;
1021         l_qualifiers_tbl(i).context                    := p_qualifier_tbl(i).context;
1022         l_qualifiers_tbl(i).attribute1                 := p_qualifier_tbl(i).attribute1;
1023         l_qualifiers_tbl(i).attribute2                 := p_qualifier_tbl(i).attribute2;
1024         l_qualifiers_tbl(i).attribute3                 := p_qualifier_tbl(i).attribute3;
1025         l_qualifiers_tbl(i).attribute4                 := p_qualifier_tbl(i).attribute4;
1026         l_qualifiers_tbl(i).attribute5                 := p_qualifier_tbl(i).attribute5;
1027         l_qualifiers_tbl(i).attribute6                 := p_qualifier_tbl(i).attribute6;
1028         l_qualifiers_tbl(i).attribute7                 := p_qualifier_tbl(i).attribute7;
1029         l_qualifiers_tbl(i).attribute8                 := p_qualifier_tbl(i).attribute8;
1030         l_qualifiers_tbl(i).attribute9                 := p_qualifier_tbl(i).attribute9;
1031         l_qualifiers_tbl(i).attribute10                := p_qualifier_tbl(i).attribute10;
1032         l_qualifiers_tbl(i).attribute11                := p_qualifier_tbl(i).attribute11;
1033         l_qualifiers_tbl(i).attribute12                := p_qualifier_tbl(i).attribute12;
1034         l_qualifiers_tbl(i).attribute13                := p_qualifier_tbl(i).attribute13;
1035         l_qualifiers_tbl(i).attribute14                := p_qualifier_tbl(i).attribute14;
1036         l_qualifiers_tbl(i).attribute15                := p_qualifier_tbl(i).attribute15;
1037       END LOOP;
1038 
1039       Ozf_Offer_Pvt.process_market_qualifiers(
1040          p_init_msg_list  => p_init_msg_list
1041         ,p_api_version    => p_api_version
1042         ,p_commit         => p_commit
1043         ,x_return_status  => x_return_status
1044         ,x_msg_count      => x_msg_count
1045         ,x_msg_data       => x_msg_data
1046         ,p_qualifiers_tbl => l_qualifiers_tbl
1047         ,x_error_location => x_error_location
1048         ,x_qualifiers_tbl => l_qualifiers_tbl_out);
1049       IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1050         RAISE Fnd_Api.g_exc_error;
1051       ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1052         RAISE Fnd_Api.g_exc_unexpected_error;
1053       END IF;
1054     END IF;
1055   END IF;
1056 
1057   -- budget
1058   IF p_budget_tbl.COUNT > 0 THEN
1059   FOR i IN p_budget_tbl.FIRST..p_budget_tbl.LAST LOOP
1060     l_act_budgets_rec.act_budget_used_by_id  := x_qp_list_header_id;
1061     l_act_budgets_rec.budget_source_id       := p_budget_tbl(i).budget_id;
1062     l_act_budgets_rec.request_amount         := p_budget_tbl(i).budget_amount;
1063     l_act_budgets_rec.budget_source_type     := 'FUND';
1064     l_act_budgets_rec.transfer_type          := 'REQUEST';
1065     l_act_budgets_rec.arc_act_budget_used_by := 'OFFR';
1066     l_act_budgets_rec.request_currency       := p_modifier_list_rec.transaction_currency_code;
1067     l_act_budgets_rec.approved_in_currency   := p_modifier_list_rec.transaction_currency_code;
1068     l_act_budgets_rec.activity_budget_id     := p_budget_tbl(i).act_budget_id;
1069 
1070     OPEN c_act_budget_obj_ver(l_act_budgets_rec.activity_budget_id);
1071     FETCH c_act_budget_obj_ver INTO l_act_budgets_rec.object_version_number;
1072     CLOSE c_act_budget_obj_ver;
1073 
1074     IF p_budget_tbl(i).operation = 'CREATE' THEN
1075       Ozf_Actbudgets_Pvt.create_act_budgets(
1076          p_api_version      =>  p_api_version
1077         ,p_init_msg_list    =>  p_init_msg_list
1078         ,p_commit           =>  p_commit
1079         ,p_validation_level =>  Fnd_Api.g_valid_level_full
1080         ,x_return_status    =>  x_return_status
1081         ,x_msg_count        =>  x_msg_count
1082         ,x_msg_data         =>  x_msg_data
1083         ,p_act_budgets_rec  =>  l_act_budgets_rec
1084         ,x_act_budget_id    =>  l_activity_budget_id);
1085 
1086       IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1087         RAISE Fnd_Api.g_exc_error;
1088       ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1089         RAISE Fnd_Api.g_exc_unexpected_error;
1090       END IF;
1091     ELSIF p_budget_tbl(i).operation = 'UPDATE' THEN
1092       Ozf_Actbudgets_Pvt.update_act_budgets(
1093          p_api_version      =>  p_api_version
1094         ,p_init_msg_list    =>  p_init_msg_list
1095         ,p_commit           =>  p_commit
1096         ,p_validation_level =>  Fnd_Api.g_valid_level_full
1097         ,x_return_status    =>  x_return_status
1098         ,x_msg_count        =>  x_msg_count
1099         ,x_msg_data         =>  x_msg_data
1100         ,p_act_budgets_rec  =>  l_act_budgets_rec);
1101 
1102       IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1103         RAISE Fnd_Api.g_exc_error;
1104       ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1105         RAISE Fnd_Api.g_exc_unexpected_error;
1106       END IF;
1107     ELSIF p_budget_tbl(i).operation = 'DELETE' THEN
1108       Ozf_Actbudgets_Pvt.delete_act_budgets(
1109          p_api_version      =>  p_api_version
1110         ,p_init_msg_list    =>  p_init_msg_list
1111         ,p_commit           =>  p_commit
1112         ,p_validation_level =>  Fnd_Api.g_valid_level_full
1113         ,x_return_status    =>  x_return_status
1114         ,x_msg_count        =>  x_msg_count
1115         ,x_msg_data         =>  x_msg_data
1116         ,p_act_budget_id    =>  l_act_budgets_rec.activity_budget_id
1117         ,p_object_version   =>  l_act_budgets_rec.object_version_number);
1118 
1119       IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1120         RAISE Fnd_Api.g_exc_error;
1121       ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1122         RAISE Fnd_Api.g_exc_unexpected_error;
1123       END IF;
1124     END IF;
1125   END LOOP;
1126   END IF;
1127 /*
1128   Ozf_Offer_Pvt.process_modifiers(
1129      p_init_msg_list     => p_init_msg_list
1130     ,p_api_version       => p_api_version
1131     ,p_commit            => p_commit
1132     ,x_return_status     => x_return_status
1133     ,x_msg_count         => x_msg_count
1134     ,x_msg_data          => x_msg_data
1135     ,p_offer_type        => p_offer_type
1136     ,p_modifier_list_rec => l_modifier_list_rec
1137     ,p_modifier_line_tbl => l_modifier_line_tbl
1138     ,x_qp_list_header_id => l_dummy
1139     ,x_error_location    => x_error_location);
1140 
1141   IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1142     RAISE Fnd_Api.g_exc_error;
1143   ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1144     RAISE Fnd_Api.g_exc_unexpected_error;
1145   END IF;
1146 */
1147 EXCEPTION
1148  WHEN Fnd_Api.G_EXC_ERROR THEN
1149       x_return_status := Fnd_Api.g_ret_sts_error ;
1150       ROLLBACK TO process_modifiers_pub;
1151       Fnd_Msg_Pub.Count_AND_Get
1152          ( p_count      =>      x_msg_count,
1153            p_data       =>      x_msg_data,
1154            p_encoded    =>      Fnd_Api.G_FALSE
1155           );
1156  WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1157      x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1158      ROLLBACK TO process_modifiers_pub;
1159      Fnd_Msg_Pub.Count_AND_Get
1160          ( p_count      =>      x_msg_count,
1161            p_data       =>      x_msg_data,
1162            p_encoded    =>      Fnd_Api.G_FALSE
1163           );
1164  WHEN OTHERS THEN
1165      x_return_status := Fnd_Api.g_ret_sts_unexp_erroR ;
1166      ROLLBACK TO process_modifiers_pub;
1167      IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR )
1168      THEN
1169         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1170      END IF;
1171      Fnd_Msg_Pub.Count_AND_Get
1172        ( p_count      =>      x_msg_count,
1173          p_data       =>      x_msg_data,
1174          p_encoded    =>      Fnd_Api.G_FALSE
1175         );
1176 
1177 END process_modifiers;
1178 
1179 
1180 PROCEDURE process_vo(
1181    p_init_msg_list         IN  VARCHAR2
1182   ,p_api_version           IN  NUMBER
1183   ,p_commit                IN  VARCHAR2
1184   ,x_return_status         OUT NOCOPY VARCHAR2
1185   ,x_msg_count             OUT NOCOPY NUMBER
1186   ,x_msg_data              OUT NOCOPY VARCHAR2
1187   ,p_modifier_list_rec     IN  modifier_list_rec_type
1188   ,p_vo_pbh_tbl            IN  vo_disc_tbl_type
1189   ,p_vo_dis_tbl            IN  vo_disc_tbl_type
1190   ,p_vo_prod_tbl           IN  vo_prod_tbl_type
1191   ,p_qualifier_tbl         IN  qualifiers_tbl_type
1192   ,p_vo_mo_tbl             IN  vo_mo_tbl_type
1193   ,p_budget_tbl            IN  budget_tbl_type
1194   ,x_qp_list_header_id     OUT NOCOPY NUMBER
1195   ,x_error_location        OUT NOCOPY NUMBER
1196 )
1197 IS
1198   CURSOR c_act_budget_obj_ver(l_act_budg_id NUMBER) IS
1199   SELECT object_version_number
1200   FROM   ozf_act_budgets
1201   WHERE  activity_budget_id = l_act_budg_id;
1202 
1203   CURSOR c_offer_info(l_qp_list_header_id NUMBER) IS
1204   SELECT offer_id, offer_type, custom_setup_id, offer_code, object_version_number
1205   FROM   ozf_offers
1206   WHERE  qp_list_header_id = l_qp_list_header_id;
1207 
1208   l_api_version        CONSTANT NUMBER       := 1.0;
1209   l_api_name           CONSTANT VARCHAR2(30) := 'process_vo';
1210 
1211   l_modifier_list_rec  ozf_offer_pvt.modifier_list_rec_type;
1212   l_modifier_line_tbl  ozf_offer_pvt.modifier_line_tbl_type;
1213   l_qualifier_rec      ozf_offer_pvt.qualifiers_rec_type;
1214   l_act_budgets_rec    ozf_actbudgets_pvt.act_budgets_rec_type;
1215   l_vo_pbh_rec         ozf_volume_offer_disc_pvt.vo_disc_rec_type;
1216   l_vo_dis_rec         ozf_volume_offer_disc_pvt.vo_disc_rec_type;
1217   l_vo_prod_rec        ozf_volume_offer_disc_pvt.vo_prod_rec_type;
1218   l_vo_mo_rec          ozf_offer_market_options_pvt.vo_mo_rec_type;
1219 
1220   l_activity_budget_id NUMBER;
1221   l_vo_pbh_line_id     NUMBER;
1222   l_vo_dis_line_id     NUMBER;
1223   l_vo_prod_id         NUMBER;
1224   l_vo_mo_id           NUMBER;
1225   l_dummy              NUMBER;
1226 
1227 BEGIN
1228   SAVEPOINT process_vo;
1229   IF Fnd_Api.to_boolean(p_init_msg_list) THEN
1230     Fnd_Msg_Pub.initialize;
1231   END IF;
1232 
1233   IF NOT Fnd_Api.compatible_api_call(l_api_version,
1234                                      p_api_version,
1235                                      l_api_name,
1236                                      g_pkg_name)
1237   THEN
1238     RAISE Fnd_Api.g_exc_unexpected_error;
1239   END IF;
1240 
1241   x_return_status := Fnd_Api.g_ret_sts_success;
1242   x_error_location := 0;
1243 
1244   l_modifier_list_rec.offer_id                      := p_modifier_list_rec.offer_id;
1245   l_modifier_list_rec.qp_list_header_id             := p_modifier_list_rec.qp_list_header_id;
1246   l_modifier_list_rec.offer_type                    := p_modifier_list_rec.offer_type;
1247   l_modifier_list_rec.offer_code                    := p_modifier_list_rec.offer_code;
1248   l_modifier_list_rec.activity_media_id             := p_modifier_list_rec.activity_media_id;
1249   l_modifier_list_rec.reusable                      := p_modifier_list_rec.reusable;
1250   l_modifier_list_rec.user_status_id                := p_modifier_list_rec.user_status_id;
1251   l_modifier_list_rec.customer_reference            := p_modifier_list_rec.customer_reference;
1252   l_modifier_list_rec.buying_group_contact_id       := p_modifier_list_rec.buying_group_contact_id;
1253   l_modifier_list_rec.object_version_number         := p_modifier_list_rec.object_version_number;
1254   l_modifier_list_rec.perf_date_from                := p_modifier_list_rec.perf_date_from;
1255   l_modifier_list_rec.perf_date_to                  := p_modifier_list_rec.perf_date_to;
1256   l_modifier_list_rec.status_code                   := p_modifier_list_rec.status_code;
1257   l_modifier_list_rec.modifier_level_code           := p_modifier_list_rec.modifier_level_code;
1258   l_modifier_list_rec.custom_setup_id               := p_modifier_list_rec.custom_setup_id;
1259   l_modifier_list_rec.offer_amount                  := p_modifier_list_rec.offer_amount;
1260   l_modifier_list_rec.budget_amount_tc              := p_modifier_list_rec.budget_amount_tc;
1261   l_modifier_list_rec.budget_amount_fc              := p_modifier_list_rec.budget_amount_fc;
1262   l_modifier_list_rec.transaction_currency_code     := p_modifier_list_rec.transaction_currency_code;
1263   l_modifier_list_rec.functional_currency_code      := p_modifier_list_rec.functional_currency_code;
1264   l_modifier_list_rec.context                       := p_modifier_list_rec.context;
1265   l_modifier_list_rec.attribute1                    := p_modifier_list_rec.attribute1;
1266   l_modifier_list_rec.attribute2                    := p_modifier_list_rec.attribute2;
1267   l_modifier_list_rec.attribute3                    := p_modifier_list_rec.attribute3;
1268   l_modifier_list_rec.attribute4                    := p_modifier_list_rec.attribute4;
1269   l_modifier_list_rec.attribute5                    := p_modifier_list_rec.attribute5;
1270   l_modifier_list_rec.attribute6                    := p_modifier_list_rec.attribute6;
1271   l_modifier_list_rec.attribute7                    := p_modifier_list_rec.attribute7;
1272   l_modifier_list_rec.attribute8                    := p_modifier_list_rec.attribute8;
1273   l_modifier_list_rec.attribute9                    := p_modifier_list_rec.attribute9;
1274   l_modifier_list_rec.attribute10                   := p_modifier_list_rec.attribute10;
1275   l_modifier_list_rec.attribute11                   := p_modifier_list_rec.attribute11;
1276   l_modifier_list_rec.attribute12                   := p_modifier_list_rec.attribute12;
1277   l_modifier_list_rec.attribute13                   := p_modifier_list_rec.attribute13;
1278   l_modifier_list_rec.attribute14                   := p_modifier_list_rec.attribute14;
1279   l_modifier_list_rec.attribute15                   := p_modifier_list_rec.attribute15;
1280   l_modifier_list_rec.currency_code                 := p_modifier_list_rec.currency_code;
1281   l_modifier_list_rec.start_date_active             := p_modifier_list_rec.start_date_active;
1282   l_modifier_list_rec.end_date_active               := p_modifier_list_rec.end_date_active;
1283   l_modifier_list_rec.list_type_code                := p_modifier_list_rec.list_type_code;
1284   l_modifier_list_rec.discount_lines_flag           := p_modifier_list_rec.discount_lines_flag;
1285   l_modifier_list_rec.name                          := p_modifier_list_rec.name;
1286   l_modifier_list_rec.description                   := p_modifier_list_rec.description;
1287   l_modifier_list_rec.comments                      := p_modifier_list_rec.comments;
1288   l_modifier_list_rec.ask_for_flag                  := p_modifier_list_rec.ask_for_flag;
1289   l_modifier_list_rec.start_date_active_first       := p_modifier_list_rec.start_date_active_first;
1290   l_modifier_list_rec.end_date_active_first         := p_modifier_list_rec.end_date_active_first;
1291   l_modifier_list_rec.active_date_first_type        := p_modifier_list_rec.active_date_first_type;
1292   l_modifier_list_rec.start_date_active_second      := p_modifier_list_rec.start_date_active_second;
1293   l_modifier_list_rec.end_date_active_second        := p_modifier_list_rec.end_date_active_second;
1294   l_modifier_list_rec.active_date_second_type       := p_modifier_list_rec.active_date_second_type;
1295   l_modifier_list_rec.active_flag                   := p_modifier_list_rec.active_flag;
1296   l_modifier_list_rec.max_no_of_uses                := p_modifier_list_rec.max_no_of_uses;
1297   l_modifier_list_rec.budget_source_id              := p_modifier_list_rec.budget_source_id;
1298   l_modifier_list_rec.budget_source_type            := p_modifier_list_rec.budget_source_type;
1299   l_modifier_list_rec.offer_used_by_id              := p_modifier_list_rec.offer_used_by_id;
1300   l_modifier_list_rec.offer_used_by                 := p_modifier_list_rec.offer_used_by;
1301   l_modifier_list_rec.ql_qualifier_type             := p_modifier_list_rec.ql_qualifier_type;
1302   l_modifier_list_rec.ql_qualifier_id               := p_modifier_list_rec.ql_qualifier_id;
1303   l_modifier_list_rec.amount_limit_id               := p_modifier_list_rec.amount_limit_id;
1304   l_modifier_list_rec.uses_limit_id                 := p_modifier_list_rec.uses_limit_id;
1305   l_modifier_list_rec.offer_operation               := p_modifier_list_rec.offer_operation;
1306   l_modifier_list_rec.modifier_operation            := p_modifier_list_rec.modifier_operation;
1307   l_modifier_list_rec.budget_offer_yn               := p_modifier_list_rec.budget_offer_yn;
1308   l_modifier_list_rec.break_type                    := p_modifier_list_rec.break_type;
1309   l_modifier_list_rec.volume_offer_type             := p_modifier_list_rec.volume_offer_type;
1310   l_modifier_list_rec.confidential_flag             := p_modifier_list_rec.confidential_flag;
1311   l_modifier_list_rec.committed_amount_eq_max       := p_modifier_list_rec.committed_amount_eq_max;
1312   l_modifier_list_rec.source_from_parent            := p_modifier_list_rec.source_from_parent;
1313   l_modifier_list_rec.buyer_name                    := p_modifier_list_rec.buyer_name;
1314   l_modifier_list_rec.sales_method_flag             := p_modifier_list_rec.sales_method_flag;
1315   l_modifier_list_rec.global_flag                   := p_modifier_list_rec.global_flag;
1316   l_modifier_list_rec.orig_org_id                   := p_modifier_list_rec.orig_org_id;
1317 
1318   IF p_modifier_list_rec.offer_operation = 'CREATE' THEN
1319     l_modifier_list_rec.offer_operation := 'CREATE';
1320     l_modifier_list_rec.modifier_operation := 'CREATE';
1321     l_modifier_list_rec.status_code := 'DRAFT';
1322     l_modifier_list_rec.user_status_id := ozf_utility_pvt.get_default_user_status('OZF_OFFER_STATUS','DRAFT');--1600;
1323 
1324     IF p_modifier_list_rec.OWNER_ID IS NULL OR p_modifier_list_rec.OWNER_ID = fnd_api.g_miss_num THEN
1325       l_modifier_list_rec.OWNER_ID                      := ozf_utility_pvt.get_resource_id(FND_GLOBAL.user_id);
1326     ELSE
1327       l_modifier_list_rec.OWNER_ID                      := p_modifier_list_rec.OWNER_ID;
1328     END IF;
1329 
1330     Ozf_Offer_Pvt.process_modifiers(
1331        p_init_msg_list     => p_init_msg_list
1332       ,p_api_version       => p_api_version
1333       ,p_commit            => p_commit
1334       ,x_return_status     => x_return_status
1335       ,x_msg_count         => x_msg_count
1336       ,x_msg_data          => x_msg_data
1337       ,p_offer_type        => 'VOLUME_OFFER'
1338       ,p_modifier_list_rec => l_modifier_list_rec
1339       ,p_modifier_line_tbl => l_modifier_line_tbl -- need to create header first. use empty line.
1340       ,x_qp_list_header_id => x_qp_list_header_id
1341       ,x_error_location    => x_error_location);
1342 
1343     IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1344       RAISE Fnd_Api.g_exc_error;
1345     ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1346       RAISE Fnd_Api.g_exc_unexpected_error;
1347     END IF;
1348 
1349     l_modifier_list_rec.offer_operation := 'UPDATE';
1350     l_modifier_list_rec.modifier_operation := 'UPDATE';
1351     l_modifier_list_rec.qp_list_header_id := x_qp_list_header_id;
1352     l_modifier_list_rec.user_status_id := p_modifier_list_rec.user_status_id;
1353     l_modifier_list_rec.status_code := p_modifier_list_rec.status_code;
1354   ELSE
1355     x_qp_list_header_id := p_modifier_list_rec.qp_list_header_id;
1356     IF p_modifier_list_rec.OWNER_ID IS NULL THEN
1357       l_modifier_list_rec.OWNER_ID                      := fnd_api.g_miss_num;
1358     ELSE
1359       l_modifier_list_rec.OWNER_ID                      := p_modifier_list_rec.OWNER_ID;
1360     END IF;
1361   END IF;
1362 
1363   OPEN c_offer_info(x_qp_list_header_id);
1364   FETCH c_offer_info INTO l_modifier_list_rec.offer_id, l_modifier_list_rec.offer_type, l_modifier_list_rec.custom_setup_id, l_modifier_list_rec.offer_code, l_modifier_list_rec.object_version_number;
1365   CLOSE c_offer_info;
1366 
1367   IF p_qualifier_tbl.COUNT > 0 THEN
1368     FOR i IN p_qualifier_tbl.FIRST..p_qualifier_tbl.LAST LOOP
1369       l_qualifier_rec.list_header_id             := x_qp_list_header_id;
1370       l_qualifier_rec.qualifier_context          := p_qualifier_tbl(i).qualifier_context;
1371       l_qualifier_rec.qualifier_attribute        := p_qualifier_tbl(i).qualifier_attribute;
1372       l_qualifier_rec.qualifier_attr_value       := p_qualifier_tbl(i).qualifier_attr_value;
1373       l_qualifier_rec.qualifier_attr_value_to    := p_qualifier_tbl(i).qualifier_attr_value_to;
1374       l_qualifier_rec.comparison_operator_code   := p_qualifier_tbl(i).comparison_operator_code;
1375       l_qualifier_rec.qualifier_grouping_no      := p_qualifier_tbl(i).qualifier_grouping_no;
1376       l_qualifier_rec.list_line_id               := p_qualifier_tbl(i).list_line_id;
1377       l_qualifier_rec.qualifier_id               := p_qualifier_tbl(i).qualifier_id;
1378       l_qualifier_rec.start_date_active          := p_qualifier_tbl(i).start_date_active;
1379       l_qualifier_rec.end_date_active            := p_qualifier_tbl(i).end_date_active;
1380       l_qualifier_rec.activity_market_segment_id := p_qualifier_tbl(i).activity_market_segment_id;
1381       l_qualifier_rec.context                    := p_qualifier_tbl(i).context;
1382       l_qualifier_rec.attribute1                 := p_qualifier_tbl(i).attribute1;
1383       l_qualifier_rec.attribute2                 := p_qualifier_tbl(i).attribute2;
1384       l_qualifier_rec.attribute3                 := p_qualifier_tbl(i).attribute3;
1385       l_qualifier_rec.attribute4                 := p_qualifier_tbl(i).attribute4;
1386       l_qualifier_rec.attribute5                 := p_qualifier_tbl(i).attribute5;
1387       l_qualifier_rec.attribute6                 := p_qualifier_tbl(i).attribute6;
1388       l_qualifier_rec.attribute7                 := p_qualifier_tbl(i).attribute7;
1389       l_qualifier_rec.attribute8                 := p_qualifier_tbl(i).attribute8;
1390       l_qualifier_rec.attribute9                 := p_qualifier_tbl(i).attribute9;
1391       l_qualifier_rec.attribute10                := p_qualifier_tbl(i).attribute10;
1392       l_qualifier_rec.attribute11                := p_qualifier_tbl(i).attribute11;
1393       l_qualifier_rec.attribute12                := p_qualifier_tbl(i).attribute12;
1394       l_qualifier_rec.attribute13                := p_qualifier_tbl(i).attribute13;
1395       l_qualifier_rec.attribute14                := p_qualifier_tbl(i).attribute14;
1396       l_qualifier_rec.attribute15                := p_qualifier_tbl(i).attribute15;
1397 
1398       IF p_qualifier_tbl(i).operation = 'CREATE' THEN
1399         ozf_volume_offer_qual_pvt.create_vo_qualifier(
1400            p_api_version_number => p_api_version
1401           ,p_init_msg_list      => p_init_msg_list
1402           ,p_commit             => p_commit
1403           ,p_validation_level   => Fnd_Api.g_valid_level_full
1404           ,x_return_status      => x_return_status
1405           ,x_msg_count          => x_msg_count
1406           ,x_msg_data           => x_msg_data
1407           ,p_qualifiers_rec     => l_qualifier_rec);
1408 
1409         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1410           RAISE Fnd_Api.g_exc_error;
1411         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1412           RAISE Fnd_Api.g_exc_unexpected_error;
1413         END IF;
1414       ELSIF p_qualifier_tbl(i).operation = 'UPDATE' THEN
1415         ozf_volume_offer_qual_pvt.update_vo_qualifier(
1416            p_api_version_number => p_api_version
1417           ,p_init_msg_list      => p_init_msg_list
1418           ,p_commit             => p_commit
1419           ,p_validation_level   => Fnd_Api.g_valid_level_full
1420           ,x_return_status      => x_return_status
1421           ,x_msg_count          => x_msg_count
1422           ,x_msg_data           => x_msg_data
1423           ,p_qualifiers_rec     => l_qualifier_rec);
1424 
1425         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1426           RAISE Fnd_Api.g_exc_error;
1427         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1428           RAISE Fnd_Api.g_exc_unexpected_error;
1429         END IF;
1430       ELSIF p_qualifier_tbl(i).operation = 'DELETE' THEN
1431         ozf_volume_offer_qual_pvt.delete_vo_qualifier(
1432            p_api_version_number => p_api_version
1433           ,p_init_msg_list      => p_init_msg_list
1434           ,p_commit             => p_commit
1435           ,p_validation_level   => Fnd_Api.g_valid_level_full
1436           ,x_return_status      => x_return_status
1437           ,x_msg_count          => x_msg_count
1438           ,x_msg_data           => x_msg_data
1439           ,p_qualifier_id       => l_qualifier_rec.qualifier_id);
1440 
1441         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1442           RAISE Fnd_Api.g_exc_error;
1443         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1444           RAISE Fnd_Api.g_exc_unexpected_error;
1445         END IF;
1446       END IF;
1447     END LOOP;
1448 
1449 /*    Ozf_Offer_Pvt.process_market_qualifiers(
1450          p_init_msg_list  => p_init_msg_list
1451         ,p_api_version    => p_api_version
1452         ,p_commit         => p_commit
1453         ,x_return_status  => x_return_status
1454         ,x_msg_count      => x_msg_count
1455         ,x_msg_data       => x_msg_data
1456         ,p_qualifiers_tbl => l_qualifiers_tbl
1457         ,x_error_location => x_error_location
1458         ,x_qualifiers_tbl => l_qualifiers_tbl_out);
1459 
1460     IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1461       RAISE Fnd_Api.g_exc_error;
1462     ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1463       RAISE Fnd_Api.g_exc_unexpected_error;
1464     END IF;*/
1465   END IF;
1466 
1467   IF p_budget_tbl.COUNT > 0 THEN
1468     FOR i IN p_budget_tbl.FIRST..p_budget_tbl.LAST LOOP
1469       l_act_budgets_rec.act_budget_used_by_id  := x_qp_list_header_id;
1470       l_act_budgets_rec.budget_source_id       := p_budget_tbl(i).budget_id;
1471       l_act_budgets_rec.request_amount         := p_budget_tbl(i).budget_amount;
1472       l_act_budgets_rec.budget_source_type     := 'FUND';
1473       l_act_budgets_rec.transfer_type          := 'REQUEST';
1474       l_act_budgets_rec.arc_act_budget_used_by := 'OFFR';
1475       l_act_budgets_rec.request_currency       := p_modifier_list_rec.transaction_currency_code;
1476       l_act_budgets_rec.approved_in_currency   := p_modifier_list_rec.transaction_currency_code;
1477       l_act_budgets_rec.activity_budget_id     := p_budget_tbl(i).act_budget_id;
1478 
1479       OPEN c_act_budget_obj_ver(l_act_budgets_rec.activity_budget_id);
1480       FETCH c_act_budget_obj_ver INTO l_act_budgets_rec.object_version_number;
1481       CLOSE c_act_budget_obj_ver;
1482 
1483       IF p_budget_tbl(i).operation = 'CREATE' THEN
1484         Ozf_Actbudgets_Pvt.create_act_budgets(
1485            p_api_version      => p_api_version
1486           ,p_init_msg_list    => p_init_msg_list
1487           ,p_commit           => p_commit
1488           ,p_validation_level => Fnd_Api.g_valid_level_full
1489           ,x_return_status    => x_return_status
1490           ,x_msg_count        => x_msg_count
1491           ,x_msg_data         => x_msg_data
1492           ,p_act_budgets_rec  => l_act_budgets_rec
1493           ,x_act_budget_id    => l_activity_budget_id);
1494 
1495         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1496           RAISE Fnd_Api.g_exc_error;
1497         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1498           RAISE Fnd_Api.g_exc_unexpected_error;
1499         END IF;
1500       ELSIF p_budget_tbl(i).operation = 'UPDATE' THEN
1501         Ozf_Actbudgets_Pvt.update_act_budgets(
1502            p_api_version      => p_api_version
1503           ,p_init_msg_list    => p_init_msg_list
1504           ,p_commit           => p_commit
1505           ,p_validation_level => Fnd_Api.g_valid_level_full
1506           ,x_return_status    => x_return_status
1507           ,x_msg_count        => x_msg_count
1508           ,x_msg_data         => x_msg_data
1509           ,p_act_budgets_rec  => l_act_budgets_rec);
1510 
1511         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1512           RAISE Fnd_Api.g_exc_error;
1513         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1514           RAISE Fnd_Api.g_exc_unexpected_error;
1515         END IF;
1516       ELSIF p_budget_tbl(i).operation = 'DELETE' THEN
1517         Ozf_Actbudgets_Pvt.delete_act_budgets(
1518            p_api_version      => p_api_version
1519           ,p_init_msg_list    => p_init_msg_list
1520           ,p_commit           => p_commit
1521           ,p_validation_level => Fnd_Api.g_valid_level_full
1522           ,x_return_status    => x_return_status
1523           ,x_msg_count        => x_msg_count
1524           ,x_msg_data         => x_msg_data
1525           ,p_act_budget_id    => l_act_budgets_rec.activity_budget_id
1526           ,p_object_version   => l_act_budgets_rec.object_version_number);
1527 
1528         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1529           RAISE Fnd_Api.g_exc_error;
1530         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1531           RAISE Fnd_Api.g_exc_unexpected_error;
1532         END IF;
1533       END IF;
1534     END LOOP;
1535   END IF;
1536 
1537   -- PBH lines
1538   IF p_vo_pbh_tbl.COUNT > 0 THEN
1539     FOR i IN p_vo_pbh_tbl.FIRST..p_vo_pbh_tbl.LAST LOOP
1540       l_vo_pbh_rec.offer_discount_line_id   := p_vo_pbh_tbl(i).offer_discount_line_id;
1541       l_vo_pbh_rec.volume_type              := p_vo_pbh_tbl(i).volume_type;
1542       l_vo_pbh_rec.volume_break_type        := p_vo_pbh_tbl(i).volume_break_type;
1543       l_vo_pbh_rec.discount_type            := p_vo_pbh_tbl(i).discount_type;
1544       l_vo_pbh_rec.tier_type                := p_vo_pbh_tbl(i).tier_type; -- 'PBH'
1545       l_vo_pbh_rec.tier_level               := p_vo_pbh_tbl(i).tier_level; --'HEADER'
1546       l_vo_pbh_rec.uom_code                 := p_vo_pbh_tbl(i).uom_code;
1547       l_vo_pbh_rec.object_version_number    := p_vo_pbh_tbl(i).object_version_number;
1548       l_vo_pbh_rec.offer_id                 := l_modifier_list_rec.offer_id;
1549       l_vo_pbh_rec.discount_by_code         := p_vo_pbh_tbl(i).discount_by_code;
1550       l_vo_pbh_rec.offr_disc_struct_name_id := p_vo_pbh_tbl(i).offr_disc_struct_name_id;
1551       l_vo_pbh_rec.name                     := p_vo_pbh_tbl(i).name;
1552       l_vo_pbh_rec.description              := p_vo_pbh_tbl(i).description;
1553 
1554       IF p_vo_pbh_tbl(i).operation = 'CREATE' THEN
1555         ozf_volume_offer_disc_pvt.create_vo_discount(
1556            p_api_version_number  => p_api_version
1557           ,p_init_msg_list       => p_init_msg_list
1558           ,p_commit              => p_commit
1559           ,p_validation_level    => FND_API.G_VALID_LEVEL_FULL
1560           ,x_return_status       => x_return_status
1561           ,x_msg_count           => x_msg_count
1562           ,x_msg_data            => x_msg_data
1563           ,p_vo_disc_rec         => l_vo_pbh_rec
1564           ,x_vo_discount_line_id => l_vo_pbh_line_id);
1565 
1566         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1567           RAISE Fnd_Api.g_exc_error;
1568         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1569           RAISE Fnd_Api.g_exc_unexpected_error;
1570         END IF;
1571       ELSIF p_vo_pbh_tbl(i).operation = 'UPDATE' THEN
1572         ozf_volume_offer_disc_pvt.update_vo_discount(
1573            p_api_version_number  => p_api_version
1574           ,p_init_msg_list       => p_init_msg_list
1575           ,p_commit              => p_commit
1576           ,p_validation_level    => FND_API.G_VALID_LEVEL_FULL
1577           ,x_return_status       => x_return_status
1578           ,x_msg_count           => x_msg_count
1579           ,x_msg_data            => x_msg_data
1580           ,p_vo_disc_rec         => l_vo_pbh_rec);
1581 
1582         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1583           RAISE Fnd_Api.g_exc_error;
1584         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1585           RAISE Fnd_Api.g_exc_unexpected_error;
1586         END IF;
1587       ELSIF p_vo_pbh_tbl(i).operation = 'DELETE' THEN
1588         ozf_volume_offer_disc_pvt.delete_vo_discount(
1589            p_api_version_number     => p_api_version
1590           ,p_init_msg_list          => p_init_msg_list
1591           ,p_commit                 => p_commit
1592           ,p_validation_level       => FND_API.G_VALID_LEVEL_FULL
1593           ,x_return_status          => x_return_status
1594           ,x_msg_count              => x_msg_count
1595           ,x_msg_data               => x_msg_data
1596           ,p_offer_discount_line_id => l_vo_pbh_rec.offer_discount_line_id
1597           ,p_object_version_number  => l_vo_pbh_rec.object_version_number);
1598 
1599         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1600           RAISE Fnd_Api.g_exc_error;
1601         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1602           RAISE Fnd_Api.g_exc_unexpected_error;
1603         END IF;
1604       END IF; -- end PBH operation switching
1605 
1606       -- DIS lines
1607       IF p_vo_dis_tbl.COUNT > 0 THEN
1608         FOR j IN p_vo_dis_tbl.FIRST..p_vo_dis_tbl.LAST LOOP
1609           IF p_vo_dis_tbl(j).pbh_index = p_vo_pbh_tbl(i).pbh_index THEN
1610             l_vo_dis_rec.offer_discount_line_id  := p_vo_dis_tbl(j).offer_discount_line_id;
1611             l_vo_dis_rec.parent_discount_line_id := l_vo_pbh_line_id;
1612             l_vo_dis_rec.volume_from             := p_vo_dis_tbl(j).volume_from;
1613             l_vo_dis_rec.volume_to               := p_vo_dis_tbl(j).volume_to;
1614             l_vo_dis_rec.volume_operator         := p_vo_dis_tbl(j).volume_operator; -- 'BETWEEN'
1615             l_vo_dis_rec.discount                := p_vo_dis_tbl(j).discount;
1616             l_vo_dis_rec.tier_type               := p_vo_dis_tbl(j).tier_type; -- 'DIS'
1617             l_vo_dis_rec.tier_level              := p_vo_dis_tbl(j).tier_level; -- 'HEADER'
1618             l_vo_dis_rec.object_version_number   := p_vo_dis_tbl(j).object_version_number;
1619             l_vo_dis_rec.offer_id                := l_modifier_list_rec.offer_id;
1620             l_vo_dis_rec.discount_by_code        := p_vo_dis_tbl(j).discount_by_code;
1621             l_vo_dis_rec.formula_id              := p_vo_dis_tbl(j).formula_id;
1622 
1623             IF p_vo_dis_tbl(j).operation = 'CREATE' THEN
1624               ozf_volume_offer_disc_pvt.create_vo_discount(
1625                  p_api_version_number  => p_api_version
1626                 ,p_init_msg_list       => p_init_msg_list
1627                 ,p_commit              => p_commit
1628                 ,p_validation_level    => FND_API.G_VALID_LEVEL_FULL
1629                 ,x_return_status       => x_return_status
1630                 ,x_msg_count           => x_msg_count
1631                 ,x_msg_data            => x_msg_data
1632                 ,p_vo_disc_rec         => l_vo_dis_rec
1633                 ,x_vo_discount_line_id => l_vo_dis_line_id);
1634 
1635               IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1636                 RAISE Fnd_Api.g_exc_error;
1637               ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1638                 RAISE Fnd_Api.g_exc_unexpected_error;
1639               END IF;
1640             ELSIF p_vo_dis_tbl(j).operation = 'UPDATE' THEN
1641               ozf_volume_offer_disc_pvt.update_vo_discount(
1642                  p_api_version_number  => p_api_version
1643                 ,p_init_msg_list       => p_init_msg_list
1644                 ,p_commit              => p_commit
1645                 ,p_validation_level    => FND_API.G_VALID_LEVEL_FULL
1646                 ,x_return_status       => x_return_status
1647                 ,x_msg_count           => x_msg_count
1648                 ,x_msg_data            => x_msg_data
1649                 ,p_vo_disc_rec         => l_vo_dis_rec);
1650 
1651               IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1652                 RAISE Fnd_Api.g_exc_error;
1653               ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1654                 RAISE Fnd_Api.g_exc_unexpected_error;
1655               END IF;
1656             ELSIF p_vo_dis_tbl(j).operation = 'DELETE' THEN
1657               ozf_volume_offer_disc_pvt.delete_vo_discount(
1658                  p_api_version_number     => p_api_version
1659                 ,p_init_msg_list          => p_init_msg_list
1660                 ,p_commit                 => p_commit
1661                 ,p_validation_level       => FND_API.G_VALID_LEVEL_FULL
1662                 ,x_return_status          => x_return_status
1663                 ,x_msg_count              => x_msg_count
1664                 ,x_msg_data               => x_msg_data
1665                 ,p_offer_discount_line_id => l_vo_dis_rec.offer_discount_line_id
1666                 ,p_object_version_number  => l_vo_dis_rec.object_version_number);
1667 
1668               IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1669                 RAISE Fnd_Api.g_exc_error;
1670               ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1671                 RAISE Fnd_Api.g_exc_unexpected_error;
1672               END IF;
1673             END IF; -- end DIS opeartion switching
1674           END IF; -- end pbh_index matching
1675         END LOOP;
1676       END IF; -- end DIS lines
1677 
1678       -- products
1679       IF p_vo_prod_tbl.COUNT > 0 THEN
1680         FOR k IN p_vo_prod_tbl.FIRST..p_vo_prod_tbl.LAST LOOP
1681           IF p_vo_prod_tbl(k).pbh_index = p_vo_pbh_tbl(i).pbh_index THEN
1682             l_vo_prod_rec.off_discount_product_id := p_vo_prod_tbl(k).off_discount_product_id;
1683             l_vo_prod_rec.excluder_flag           := p_vo_prod_tbl(k).excluder_flag;
1684             l_vo_prod_rec.offer_discount_line_id  := l_vo_pbh_line_id;
1685             l_vo_prod_rec.offer_id                := l_modifier_list_rec.offer_id;
1686             l_vo_prod_rec.object_version_number   := p_vo_prod_tbl(k).object_version_number;
1687             l_vo_prod_rec.product_context         := p_vo_prod_tbl(k).product_context;
1688             l_vo_prod_rec.product_attribute       := p_vo_prod_tbl(k).product_attribute;
1689             l_vo_prod_rec.product_attr_value      := p_vo_prod_tbl(k).product_attr_value;
1690             l_vo_prod_rec.apply_discount_flag     := p_vo_prod_tbl(k).apply_discount_flag;
1691             l_vo_prod_rec.include_volume_flag     := p_vo_prod_tbl(k).include_volume_flag;
1692 
1693             IF p_vo_prod_tbl(k).operation = 'CREATE' THEN
1694               ozf_volume_offer_disc_pvt.create_vo_product(
1695                  p_api_version_number      => p_api_version
1696                 ,p_init_msg_list           => p_init_msg_list
1697                 ,p_commit                  => p_commit
1698                 ,p_validation_level        => FND_API.G_VALID_LEVEL_FULL
1699                 ,x_return_status           => x_return_status
1700                 ,x_msg_count               => x_msg_count
1701                 ,x_msg_data                => x_msg_data
1702                 ,p_vo_prod_rec             => l_vo_prod_rec
1703                 ,x_off_discount_product_id => l_vo_prod_id);
1704 
1705               IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1706                 RAISE Fnd_Api.g_exc_error;
1707               ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1708                 RAISE Fnd_Api.g_exc_unexpected_error;
1709               END IF;
1710             ELSIF p_vo_prod_tbl(k).operation = 'UPDATE' THEN
1711               ozf_volume_offer_disc_pvt.update_vo_product(
1712                  p_api_version_number      => p_api_version
1713                 ,p_init_msg_list           => p_init_msg_list
1714                 ,p_commit                  => p_commit
1715                 ,p_validation_level        => FND_API.G_VALID_LEVEL_FULL
1716                 ,x_return_status           => x_return_status
1717                 ,x_msg_count               => x_msg_count
1718                 ,x_msg_data                => x_msg_data
1719                 ,p_vo_prod_rec             => l_vo_prod_rec);
1720 
1721               IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1722                 RAISE Fnd_Api.g_exc_error;
1723               ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1724                 RAISE Fnd_Api.g_exc_unexpected_error;
1725               END IF;
1726             ELSIF p_vo_prod_tbl(k).operation = 'DELETE' THEN
1727               ozf_volume_offer_disc_pvt.delete_vo_product(
1728                  p_api_version_number      => p_api_version
1729                 ,p_init_msg_list           => p_init_msg_list
1730                 ,p_commit                  => p_commit
1731                 ,p_validation_level        => FND_API.G_VALID_LEVEL_FULL
1732                 ,x_return_status           => x_return_status
1733                 ,x_msg_count               => x_msg_count
1734                 ,x_msg_data                => x_msg_data
1735                 ,p_off_discount_product_id => l_vo_prod_rec.off_discount_product_id
1736                 ,p_object_version_number   => l_vo_prod_rec.object_version_number);
1737 
1738               IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1739                 RAISE Fnd_Api.g_exc_error;
1740               ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1741                 RAISE Fnd_Api.g_exc_unexpected_error;
1742               END IF;
1743             END IF; -- end product operation switching
1744           END IF; -- end pbh_idex matching
1745         END LOOP;
1746       END IF; -- end products
1747     END LOOP;
1748   END IF; -- end PBH lines
1749 
1750   -- market options
1751   IF p_vo_mo_tbl.COUNT > 0 THEN
1752     FOR i IN p_vo_mo_tbl.FIRST..p_vo_mo_tbl.LAST LOOP
1753       l_vo_mo_rec.offer_market_option_id     := p_vo_mo_tbl(i).offer_market_option_id;
1754       l_vo_mo_rec.offer_id                   := l_modifier_list_rec.offer_id;
1755       l_vo_mo_rec.qp_list_header_id          := x_qp_list_header_id;
1756       l_vo_mo_rec.group_number               := p_vo_mo_tbl(i).group_number;
1757       l_vo_mo_rec.retroactive_flag           := p_vo_mo_tbl(i).retroactive_flag;
1758       l_vo_mo_rec.beneficiary_party_id       := p_vo_mo_tbl(i).beneficiary_party_id;
1759       l_vo_mo_rec.combine_schedule_flag      := p_vo_mo_tbl(i).combine_schedule_flag;
1760       l_vo_mo_rec.volume_tracking_level_code := p_vo_mo_tbl(i).volume_tracking_level_code;
1761       l_vo_mo_rec.accrue_to_code             := p_vo_mo_tbl(i).accrue_to_code;
1762       l_vo_mo_rec.precedence                 := p_vo_mo_tbl(i).precedence;
1763       l_vo_mo_rec.object_version_number      := p_vo_mo_tbl(i).object_version_number;
1764       l_vo_mo_rec.security_group_id          := p_vo_mo_tbl(i).security_group_id;
1765 
1766       IF p_vo_mo_tbl(i).operation = 'CREATE' THEN
1767         ozf_offer_market_options_pvt.create_market_options(
1768            p_api_version_number  => p_api_version
1769           ,p_init_msg_list       => p_init_msg_list
1770           ,p_commit              => p_commit
1771           ,p_validation_level    => FND_API.G_VALID_LEVEL_FULL
1772           ,x_return_status       => x_return_status
1773           ,x_msg_count           => x_msg_count
1774           ,x_msg_data            => x_msg_data
1775           ,p_mo_rec              => l_vo_mo_rec
1776           ,x_vo_market_option_id => l_vo_mo_id);
1777 
1778         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1779           RAISE Fnd_Api.g_exc_error;
1780         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1781           RAISE Fnd_Api.g_exc_unexpected_error;
1782         END IF;
1783       ELSIF p_vo_mo_tbl(i).operation = 'UPDATE' THEN
1784         ozf_offer_market_options_pvt.update_market_options(
1785            p_api_version_number  => p_api_version
1786           ,p_init_msg_list       => p_init_msg_list
1787           ,p_commit              => p_commit
1788           ,p_validation_level    => FND_API.G_VALID_LEVEL_FULL
1789           ,x_return_status       => x_return_status
1790           ,x_msg_count           => x_msg_count
1791           ,x_msg_data            => x_msg_data
1792           ,p_mo_rec              => l_vo_mo_rec);
1793 
1794         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1795           RAISE Fnd_Api.g_exc_error;
1796         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1797           RAISE Fnd_Api.g_exc_unexpected_error;
1798         END IF;
1799       ELSIF p_vo_mo_tbl(i).operation = 'DELETE' THEN
1800         ozf_offer_market_options_pvt.delete_market_options(
1801            p_api_version_number     => p_api_version
1802           ,p_init_msg_list          => p_init_msg_list
1803           ,p_commit                 => p_commit
1804           ,p_validation_level       => FND_API.G_VALID_LEVEL_FULL
1805           ,x_return_status          => x_return_status
1806           ,x_msg_count              => x_msg_count
1807           ,x_msg_data               => x_msg_data
1808           ,p_offer_market_option_id => l_vo_mo_rec.offer_market_option_id
1809           ,p_object_version_number  => l_vo_mo_rec.object_version_number);
1810 
1811         IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1812           RAISE Fnd_Api.g_exc_error;
1813         ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1814           RAISE Fnd_Api.g_exc_unexpected_error;
1815         END IF;
1816       END IF;
1817     END LOOP;
1818   END IF; -- end market options
1819 
1820   Ozf_Offer_Pvt.process_modifiers(
1821      p_init_msg_list     => p_init_msg_list
1822     ,p_api_version       => p_api_version
1823     ,p_commit            => p_commit
1824     ,x_return_status     => x_return_status
1825     ,x_msg_count         => x_msg_count
1826     ,x_msg_data          => x_msg_data
1827     ,p_offer_type        => 'VOLUME_OFFER'
1828     ,p_modifier_list_rec => l_modifier_list_rec
1829     ,p_modifier_line_tbl => l_modifier_line_tbl
1830     ,x_qp_list_header_id => l_dummy
1831     ,x_error_location    => x_error_location);
1832 
1833   IF x_return_status =  Fnd_Api.g_ret_sts_error THEN
1834     RAISE Fnd_Api.g_exc_error;
1835   ELSIF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1836     RAISE Fnd_Api.g_exc_unexpected_error;
1837   END IF;
1838 
1839   EXCEPTION
1840     WHEN Fnd_Api.G_EXC_ERROR THEN
1841       x_return_status := Fnd_Api.g_ret_sts_error ;
1842       ROLLBACK TO process_vo;
1843       IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR ) THEN
1844         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1845       END IF;
1846       Fnd_Msg_Pub.Count_AND_Get
1847         ( p_count      =>      x_msg_count,
1848           p_data       =>      x_msg_data,
1849           p_encoded    =>      Fnd_Api.G_FALSE
1850          );
1851     WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1852       x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1853       ROLLBACK TO process_vo;
1854       IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR ) THEN
1855         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1856       END IF;
1857       Fnd_Msg_Pub.Count_AND_Get
1858         ( p_count      =>      x_msg_count,
1859           p_data       =>      x_msg_data,
1860           p_encoded    =>      Fnd_Api.G_FALSE
1861          );
1862     WHEN OTHERS THEN
1863       x_return_status := Fnd_Api.g_ret_sts_unexp_erroR ;
1864       ROLLBACK TO process_vo;
1865       IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR ) THEN
1866         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1867       END IF;
1868       Fnd_Msg_Pub.Count_AND_Get
1869         ( p_count      =>      x_msg_count,
1870           p_data       =>      x_msg_data,
1871           p_encoded    =>      Fnd_Api.G_FALSE
1872         );
1873 
1874 END process_vo;
1875 
1876 END OZF_Offer_PUB;