[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;