1 PACKAGE BODY OZF_SD_BATCH_FEED_PVT as
2 /* $Header: ozfvsdfb.pls 120.71.12020000.3 2012/07/26 10:02:39 sariff ship $ */
3
4 -- Start of Comments
5 -- Package name : OZF_SD_BATCH_FEED_PVT
6 -- Purpose :
7 -- History :
8 -- : 30-JUN-2009 - Annsrini - If claim process is unsuccessful, then update batch header status as PENDING_CLAIM
9 -- : 20-JUL-2009 - Annsrini - Adjustment related changes
10 -- : 27-AUG-2009 - JMAHENDR - change of dispute code for
11 -- invalid / missing response as
12 -- OZF_SD_NO_RESPONSE
13 -- : 27-AUG-2009 - JMAHENDR - removed nvl on
14 -- vendor_auth_quantity with shipped quantity
15 -- : 07-DEC-2009 - ANNSRINI - changes w.r.t multicurrency
16 -- NOTE :
17 -- End of Comments
18
19 g_pkg_name constant VARCHAR2(30) := 'OZF_SD_BATCH_FEED_PVT';
20 g_file_name constant VARCHAR2(12) := 'ozfvsdfb.pls';
21
22 -- Author : MBHATT
23 -- Created : 11/16/2007 2:39:16 PM
24 -- Purpose :
25 -- Public function and procedure declarations
26 -- Private type declarations
27 PROCEDURE update_stale_data_batch_line(p_batch_number IN VARCHAR2,
28 p_batch_line_number IN VARCHAR2) AS
29
30 BEGIN
31 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_stale_data_batch_line', 'Procedure Starts');
32
33 UPDATE ozf_sd_batch_lines_int_all
34 SET processed_flag = 'S',
35 last_update_date = sysdate,
36 last_updated_by = fnd_global.user_id
37 WHERE ship_frm_sd_claim_request_id = p_batch_number
38 AND batch_line_number = p_batch_line_number
39 AND processed_flag = 'N';
40
41 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_stale_data_batch_line', 'Procedure Ends');
42
43 EXCEPTION
44 WHEN others THEN
45 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_stale_data_batch_line', 'Exception: '||sqlerrm);
46
47 END update_stale_data_batch_line;
48
49 PROCEDURE populate_interface(p_batch_number IN VARCHAR2,
50 p_operating_unit IN VARCHAR2,
51 p_frm_cntct1_name IN VARCHAR2,
52 p_frm_cntct1_email IN VARCHAR2,
53 p_frm_cntct1_fax IN VARCHAR2,
54 p_frm_cntct1_phone IN VARCHAR2,
55 p_frm_gbl_ptnr_role_class_cd IN VARCHAR2,
56 p_frm_gbl_business_id IN VARCHAR2,
57 p_frm_gbl_supply_chain_cd IN VARCHAR2,
58 p_frm_business_name IN VARCHAR2,
59 p_frm_prop_business_id1 IN VARCHAR2,
60 p_frm_prop_domain_id1 IN VARCHAR2,
61 p_frm_auth_id1 IN VARCHAR2,
62 p_frm_gbl_ptnr_class_cd IN VARCHAR2,
63 p_frm_cntct2_name IN VARCHAR2,
64 p_frm_cntct2_email IN VARCHAR2,
65 p_frm_cntct2_fax IN VARCHAR2,
66 p_frm_cntct2_phone IN VARCHAR2,
67 p_frm_gbl_loc_id IN VARCHAR2,
68 p_frm_prop_domain_id2 IN VARCHAR2,
69 p_frm_prop_auth_id2 IN VARCHAR2,
70 p_frm_prop_loc_id IN VARCHAR2,
71 p_frm_add_line1 IN VARCHAR2,
72 p_frm_add_line2 IN VARCHAR2,
73 p_frm_add_line3 IN VARCHAR2,
74 p_frm_city IN VARCHAR2,
75 p_frm_country IN VARCHAR2,
76 p_frm_postal_code IN VARCHAR2,
77 p_frm_po_box_id IN VARCHAR2,
78 p_frm_region IN VARCHAR2,
79 p_gbl_doc_func_code IN VARCHAR2,
80 p_ship_from_sd_auth_id IN VARCHAR2,
81 p_dist_by_gbl_business_id IN VARCHAR2,
82 p_dist_by_gbl_supp_chain_cd IN VARCHAR2,
83 p_dist_by_business_name IN VARCHAR2,
84 p_dist_by_prop_business_id IN VARCHAR2,
85 p_dist_by_prop_domain_id1 IN VARCHAR2,
86 p_dist_by_prop_auth_id1 IN VARCHAR2,
87 p_dist_by_gbl_ptnr_class_cd IN VARCHAR2,
88 p_dist_by_cntct_name IN VARCHAR2,
89 p_dist_by_cntct_email IN VARCHAR2,
90 p_dist_by_cntct_fax IN VARCHAR2,
91 p_dist_by_cntct_phone IN VARCHAR2,
92 p_dist_by_gbl_loc_id IN VARCHAR2,
93 p_dist_by_prop_domain_id2 IN VARCHAR2,
94 p_dist_by_prop_auth_id2 IN VARCHAR2,
95 p_dist_by_prop_loc_id IN VARCHAR2,
96 p_dist_by_add_line1 IN VARCHAR2,
97 p_dist_by_add_line2 IN VARCHAR2,
98 p_dist_by_add_line3 IN VARCHAR2,
99 p_dist_by_city IN VARCHAR2,
100 p_dist_by_country IN VARCHAR2,
101 p_dist_by_postal_code IN VARCHAR2,
102 p_dist_by_po_box_id IN VARCHAR2,
103 p_dist_by_region IN VARCHAR2,
104 p_ship_to_business_name IN VARCHAR2,
105 p_ship_to_gbl_business_id IN VARCHAR2,
106 p_ship_to_gbl_supp_chain_cd IN VARCHAR2,
107 p_ship_to_prop_business_id IN VARCHAR2,
108 p_ship_to_prop_domain_id1 IN VARCHAR2,
109 p_ship_to_prop_auth_id1 IN VARCHAR2,
110 p_ship_to_gbl_ptnr_class_cd IN VARCHAR2,
111 p_ship_to_cust_cntct_name IN VARCHAR2,
112 p_ship_to_cust_cntct_email IN VARCHAR2,
113 p_ship_to_cust_cntct_fax IN VARCHAR2,
114 p_ship_to_cust_cntct_phone IN VARCHAR2,
115 p_ship_to_cust_gbl_loc_id IN VARCHAR2,
116 p_ship_to_prop_domain_id2 IN VARCHAR2,
117 p_ship_to_prop_auth_id2 IN VARCHAR2,
118 p_ship_to_cust_prop_loc_id IN VARCHAR2,
119 p_ship_to_cust_add1 IN VARCHAR2,
120 p_ship_to_cust_add2 IN VARCHAR2,
121 p_ship_to_cust_add3 IN VARCHAR2,
122 p_ship_to_cust_city IN VARCHAR2,
123 p_ship_to_cust_country IN VARCHAR2,
124 p_ship_to_cust_postal_code IN VARCHAR2,
125 p_ship_to_cust_po_box_id IN VARCHAR2,
126 p_ship_to_cust_region IN VARCHAR2,
127 p_sold_to_business_name IN VARCHAR2,
128 p_sold_to_gbl_business_id IN VARCHAR2,
129 p_sold_to_gbl_supp_chain_cd IN VARCHAR2,
130 p_sold_to_prop_business_id IN VARCHAR2,
131 p_sold_to_prop_domain_id1 IN VARCHAR2,
132 p_sold_to_prop_auth_id1 IN VARCHAR2,
133 p_sold_to_gbl_ptnr_class_cd IN VARCHAR2,
137 p_sold_to_cust_cntct_phone IN VARCHAR2,
134 p_sold_to_cust_cntct_name IN VARCHAR2,
135 p_sold_to_cust_cntct_email IN VARCHAR2,
136 p_sold_to_cust_cntct_fax IN VARCHAR2,
138 p_sold_to_cust_gbl_loc_id IN VARCHAR2,
139 p_sold_to_prop_domain_id2 IN VARCHAR2,
140 p_sold_to_prop_auth_id2 IN VARCHAR2,
141 p_sold_to_cust_prop_loc_id IN VARCHAR2,
142 p_sold_to_cust_add1 IN VARCHAR2,
143 p_sold_to_cust_add2 IN VARCHAR2,
144 p_sold_to_cust_add3 IN VARCHAR2,
145 p_sold_to_cust_city IN VARCHAR2,
146 p_sold_to_cust_country IN VARCHAR2,
147 p_sold_to_cust_postal_code IN VARCHAR2,
148 p_sold_to_cust_po_box_id IN VARCHAR2,
149 p_sold_to_cust_region IN VARCHAR2,
150 p_end_cust_business_name IN VARCHAR2,
151 p_end_cust_gbl_business_id IN VARCHAR2,
152 p_end_cust_gbl_supp_chain_cd IN VARCHAR2,
153 p_end_cust_prop_business_id IN VARCHAR2,
154 p_end_cust_prop_domain_id1 IN VARCHAR2,
155 p_end_cust_prop_auth_id1 IN VARCHAR2,
156 p_end_cust_gbl_ptnr_class_cd IN VARCHAR2,
157 p_end_cust_cntct_name IN VARCHAR2,
158 p_end_cust_cntct_email IN VARCHAR2,
159 p_end_cust_cntct_fax IN VARCHAR2,
160 p_end_cust_cntct_phone IN VARCHAR2,
161 p_end_cust_gbl_loc_id IN VARCHAR2,
162 p_end_cust_prop_domain_id2 IN VARCHAR2,
163 p_end_cust_prop_auth_id2 IN VARCHAR2,
164 p_end_cust_prop_loc_id IN VARCHAR2,
165 p_end_cust_add1 IN VARCHAR2,
166 p_end_cust_add2 IN VARCHAR2,
167 p_end_cust_add3 IN VARCHAR2,
168 p_end_cust_city IN VARCHAR2,
169 p_end_cust_country IN VARCHAR2,
170 p_end_cust_postal_code IN VARCHAR2,
171 p_end_cust_po_box_id IN VARCHAR2,
172 p_end_cust_region IN VARCHAR2,
173 p_ship_frm_sd_claim_req_date IN DATE,
174 p_ship_frm_sd_claim_req_id IN VARCHAR2,
175 p_credit_ref_id IN VARCHAR2,
176 p_debit_ref_id IN VARCHAR2,
177 p_batch_line_id IN NUMBER,
178 p_batch_line_number IN NUMBER,
179 p_order_date IN DATE,
180 p_order_line_number IN VARCHAR2,
181 p_order_number IN VARCHAR2,
182 p_invoice_date IN DATE,
183 p_invoice_line_number IN VARCHAR2,
184 p_invoice_number IN VARCHAR2,
185 p_discount_type IN VARCHAR2,
186 p_discount_value IN NUMBER,
187 p_discount_currency IN VARCHAR2,
188 p_cost_price IN NUMBER,
189 p_cost_price_curr_code IN VARCHAR2,
190 p_auth_price IN NUMBER,
191 p_auth_price_curr_code IN VARCHAR2,
192 p_resale_price IN NUMBER,
193 p_resale_price_curr_code IN VARCHAR2,
194 p_uom IN VARCHAR2,
195 p_line_status IN VARCHAR2,
196 p_disposition_code1 IN VARCHAR2,
197 p_disposition_code2 IN VARCHAR2,
198 p_disposition_code3 IN VARCHAR2,
199 p_disposition_code4 IN VARCHAR2,
200 p_disposition_code5 IN VARCHAR2,
201 p_disposition_code6 IN VARCHAR2,
202 p_disposition_code7 IN VARCHAR2,
203 p_disposition_code8 IN VARCHAR2,
204 p_disposition_code9 IN VARCHAR2,
205 p_disposition_code10 IN VARCHAR2,
206 p_vendor_part_number IN VARCHAR2,
207 p_dist_part_number IN VARCHAR2,
208 p_date_shipped IN DATE,
209 p_qty_shipped IN NUMBER,
210 p_claim_amt_curr_code IN VARCHAR2,
211 p_last_sub_claim_amt IN NUMBER,
215 p_vendor_apprvd_qty IN NUMBER,
212 p_vendor_auth_line_item_no IN VARCHAR2,
213 p_vendor_apprvd_amt IN NUMBER,
214 p_vendor_apprvd_amt_curr_cd IN VARCHAR2,
216 p_batch_submission_date IN DATE,
217 p_batch_id IN NUMBER,
218 p_to_cntct1_name IN VARCHAR2,
219 p_to_cntct1_email IN VARCHAR2,
220 p_to_cntct1_fax IN VARCHAR2,
221 p_to_cntct1_phone IN VARCHAR2,
222 p_to_gbl_ptnr_role_class_cd IN VARCHAR2,
223 p_to_gbl_business_id IN VARCHAR2,
224 p_to_gbl_supply_chain_cd IN VARCHAR2,
225 p_to_business_name IN VARCHAR2,
226 p_to_prop_business_id1 IN VARCHAR2,
227 p_to_prop_domain_id1 IN VARCHAR2,
228 p_to_auth_id1 IN VARCHAR2,
229 p_to_gbl_ptnr_class_cd IN VARCHAR2,
230 p_to_cntct2_name IN VARCHAR2,
231 p_to_cntct2_email IN VARCHAR2,
232 p_to_cntct2_fax IN VARCHAR2,
233 p_to_cntct2_phone IN VARCHAR2,
234 p_to_gbl_loc_id IN VARCHAR2,
235 p_to_prop_domain_id2 IN VARCHAR2,
236 p_to_prop_auth_id2 IN VARCHAR2,
237 p_to_prop_loc_id IN VARCHAR2,
238 p_to_add_line1 IN VARCHAR2,
239 p_to_add_line2 IN VARCHAR2,
240 p_to_add_line3 IN VARCHAR2,
241 p_to_city IN VARCHAR2,
242 p_to_country IN VARCHAR2,
243 p_to_postal_code IN VARCHAR2,
244 p_to_po_box_id IN VARCHAR2,
245 p_to_region IN VARCHAR2,
246 P_HDR_ATTR_CATG IN VARCHAR2,
247 P_HDR_ATTR1 IN VARCHAR2,
248 P_HDR_ATTR2 IN VARCHAR2,
249 P_HDR_ATTR3 IN VARCHAR2,
250 P_HDR_ATTR4 IN VARCHAR2,
251 P_HDR_ATTR5 IN VARCHAR2,
252 P_HDR_ATTR6 IN VARCHAR2,
253 P_HDR_ATTR7 IN VARCHAR2,
254 P_HDR_ATTR8 IN VARCHAR2,
255 P_HDR_ATTR9 IN VARCHAR2,
256 P_HDR_ATTR10 IN VARCHAR2,
257 P_HDR_ATTR11 IN VARCHAR2,
258 P_HDR_ATTR12 IN VARCHAR2,
259 P_HDR_ATTR13 IN VARCHAR2,
260 P_HDR_ATTR14 IN VARCHAR2,
261 P_HDR_ATTR15 IN VARCHAR2,
262 P_HDR_ATTR16 IN VARCHAR2,
263 P_HDR_ATTR17 IN VARCHAR2,
264 P_HDR_ATTR18 IN VARCHAR2,
265 P_HDR_ATTR19 IN VARCHAR2,
266 P_HDR_ATTR20 IN VARCHAR2,
267 P_HDR_ATTR21 IN VARCHAR2,
268 P_HDR_ATTR22 IN VARCHAR2,
269 P_HDR_ATTR23 IN VARCHAR2,
270 P_HDR_ATTR24 IN VARCHAR2,
271 P_HDR_ATTR25 IN VARCHAR2,
272 P_HDR_ATTR26 IN VARCHAR2,
273 P_HDR_ATTR27 IN VARCHAR2,
274 P_HDR_ATTR28 IN VARCHAR2,
275 P_HDR_ATTR29 IN VARCHAR2,
276 P_HDR_ATTR30 IN VARCHAR2,
277 P_LINE_ATTR_CATG IN VARCHAR2,
278 P_LINE_ATTR1 IN VARCHAR2,
279 P_LINE_ATTR2 IN VARCHAR2,
280 P_LINE_ATTR3 IN VARCHAR2,
281 P_LINE_ATTR4 IN VARCHAR2,
282 P_LINE_ATTR5 IN VARCHAR2,
283 P_LINE_ATTR6 IN VARCHAR2,
284 P_LINE_ATTR7 IN VARCHAR2,
285 P_LINE_ATTR8 IN VARCHAR2,
286 P_LINE_ATTR9 IN VARCHAR2,
287 P_LINE_ATTR10 IN VARCHAR2,
288 P_LINE_ATTR11 IN VARCHAR2,
289 P_LINE_ATTR12 IN VARCHAR2,
290 P_LINE_ATTR13 IN VARCHAR2,
291 P_LINE_ATTR14 IN VARCHAR2,
292 P_LINE_ATTR15 IN VARCHAR2,
293 P_LINE_ATTR16 IN VARCHAR2,
294 P_LINE_ATTR17 IN VARCHAR2,
295 P_LINE_ATTR18 IN VARCHAR2,
296 P_LINE_ATTR19 IN VARCHAR2,
297 P_LINE_ATTR20 IN VARCHAR2,
298 P_LINE_ATTR21 IN VARCHAR2,
299 P_LINE_ATTR22 IN VARCHAR2,
300 P_LINE_ATTR23 IN VARCHAR2,
301 P_LINE_ATTR24 IN VARCHAR2,
302 P_LINE_ATTR25 IN VARCHAR2,
303 P_LINE_ATTR26 IN VARCHAR2,
304 P_LINE_ATTR27 IN VARCHAR2,
305 P_LINE_ATTR28 IN VARCHAR2,
306 P_LINE_ATTR29 IN VARCHAR2,
307 P_LINE_ATTR30 IN VARCHAR2
308 ) AS
309 l_seq NUMBER;
310 l_batch_status VARCHAR2(15);
311
312 BEGIN
313 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::populate_interface', 'Procedure Starts');
314
315 ozf_sd_batch_feed_pvt.update_stale_data_batch_line(p_batch_number, p_batch_line_number);
316
317 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::populate_interface',
318 'WebADI Batch - before inserting into interface table');
319
320 BEGIN
321 INSERT INTO ozf_sd_batch_lines_int_all
322 (batch_line_int_id,
323 frm_contact1_name,
324 frm_contact1_email,
325 frm_contact1_fax,
326 frm_contact1_phone,
327 frm_gbl_ptnr_role_class_code,
328 frm_business_name,
329 frm_gbl_business_id,
330 frm_gbl_supply_chain_code,
331 frm_prop_business_id,
332 frm_prop_domain_id1,
333 frm_prop_id_authority1,
334 frm_gbl_partner_class_code,
335 frm_contact2_name,
336 frm_contact2_email,
337 frm_contact2_fax,
338 frm_contact2_phone,
339 frm_gbl_location_id,
340 frm_prop_domain_id2,
341 frm_prop_id_authority2,
342 frm_prop_location_id,
343 frm_address_line1,
344 frm_address_line2,
345 frm_address_line3,
346 frm_city_name,
347 frm_gbl_country_code,
348 frm_national_postal_code,
349 frm_pobox_id,
350 frm_region_name,
351 gbl_doc_function_code,
352 ship_frm_sd_authorization_id,
353 dist_by_business_name,
354 dist_by_gbl_business_id,
355 dist_by_gbl_supply_chain_code,
356 dist_by_prop_business_id,
357 dist_by_prop_domain_id1,
358 dist_by_prop_idauthority1,
359 dist_by_gbl_partner_class_code,
360 dist_by_contact1_name,
361 dist_by_contact1_email,
362 dist_by_contact1_fax,
363 dist_by_contact1_phone,
364 dist_by_gbl_location_id,
365 dist_by_prop_domain_id2,
366 dist_by_prop_idauthority2,
367 dist_by_prop_location_id,
368 dist_by_address_line1,
369 dist_by_address_line2,
370 dist_by_address_line3,
371 dist_by_city_name,
372 dist_by_gbl_country_code,
373 dist_by_national_postal_code,
374 dist_by_pobox_id,
375 dist_by_region_name,
376 ship_to_business_name,
377 ship_to_gbl_business_id,
378 ship_to_gbl_supply_chain_code,
379 ship_to_prop_business_id,
380 ship_to_prop_domain_id1,
381 ship_to_prop_id_authority1,
382 ship_to_gbl_partner_class_code,
383 ship_to_contact1_name,
384 ship_to_contact1_email,
385 ship_to_contact1_fax,
386 ship_to_contact1_phone,
387 ship_to_gbl_location_id,
388 ship_to_prop_domain_id2,
389 ship_to_prop_id_authority2,
390 ship_to_prop_location_id,
391 ship_to_address_line1,
392 ship_to_address_line2,
393 ship_to_address_line3,
394 ship_to_city_name,
395 ship_to_gbl_country_code,
396 ship_to_national_postal_code,
397 ship_to_pobox_id,
398 ship_to_region_name,
399 sold_to_business_name,
400 sold_to_gbl_business_id,
401 sold_to_gbl_supply_chain_code,
402 sold_to_prop_business_id,
403 sold_to_prop_domain_id1,
404 sold_to_prop_id_authority1,
405 sold_to_gbl_partner_class_code,
406 sold_to_contact1_name,
407 sold_to_contact1_email,
408 sold_to_contact1_fax,
409 sold_to_contact1_phone,
410 sold_to_gbl_location_id,
411 sold_to_prop_domain_id2,
412 sold_to_prop_id_authority2,
413 sold_to_prop_location_id,
414 sold_to_address_line1,
415 sold_to_address_line2,
416 sold_to_address_line3,
417 sold_to_city_name,
418 sold_to_gbl_country_code,
419 sold_to_national_postal_code,
420 sold_to_pobox_id,
421 sold_to_region_name,
422 used_by_business_name,
423 used_by_gbl_business_id,
424 used_by_gbl_supply_chain_code,
425 used_by_prop_business_id,
426 used_by_prop_domain_id1,
427 used_by_prop_id_authority1,
428 used_by_gbl_partner_class_code,
429 used_by_contact1_name,
430 used_by_contact1_email,
431 used_by_contact1_fax,
432 used_by_contact1_phone,
433 used_by_gbl_location_id,
434 used_by_prop_domain_id2,
435 used_by_prop_id_authority2,
436 used_by_prop_location_id,
437 used_by_address_line1,
438 used_by_address_line2,
439 used_by_address_line3,
440 used_by_city_name,
441 used_by_gbl_country_code,
442 used_by_national_postal_code,
443 used_by_pobox_id,
444 used_by_region_name,
445 ship_frm_sd_claim_request_date,
446 ship_frm_sd_claim_request_id,
447 credit_reference_id,
448 debit_reference_id,
449 batch_line_number,
450 order_date,
451 order_line_number,
452 order_number,
453 invoice_date,
454 invoice_line_number,
455 invoice_number,
456 cost_currency_code,
457 cost_monetary_amount,
458 auth_cost_currency_code,
459 auth_cost_monetary_amount,
460 resale_currency_code,
461 resale_monetary_amount,
462 gbl_uom,
463 gbl_claim_disposition_code,
464 vendor_product_id,
465 dist_product_id,
466 ship_date,
467 shipped_quantity,
468 vendor_auth_lineitem_line_nbr,
469 vendor_auth_cost_currency_code,
470 vendor_auth_cost_monetary_amt,
471 vendor_auth_quantity,
472 this_doc_generation_date,
473 this_document_id,
474 to_contact1_name,
475 to_contact1_email,
476 to_contact1_fax,
477 to_contact1_phone,
478 to_gbl_partner_role_class_code,
479 to_business_name1,
480 to_gbl_business_id,
481 to_gbl_supply_chain_code,
482 to_prop_business_id,
483 to_prop_domain_id1,
484 to_prop_id_authority1,
485 to_gbl_partner_class_code,
486 to_contact2_name,
487 to_contact2_email,
488 to_contact2_fax,
489 to_contact2_phone,
490 to_gbl_location_id,
491 to_prop_domain_id2,
492 to_prop_id_authority2,
493 to_prop_location_id,
494 to_address_line1,
495 to_address_line2,
496 to_address_line3,
497 to_city_name,
498 to_gbl_country_code,
499 to_national_postal_code,
500 to_pobox_id,
501 to_region_name,
502 creation_date,
503 last_update_date,
504 last_updated_by,
505 created_by,
506 processed_flag,
507 batch_id,
508 batch_line_id,
509 gbl_claim_rej_code1,
510 gbl_claim_rej_code2,
511 gbl_claim_rej_code3,
512 gbl_claim_rej_code4,
513 gbl_claim_rej_code5,
514 gbl_claim_rej_code6,
515 gbl_claim_rej_code7,
516 gbl_claim_rej_code8,
517 gbl_claim_rej_code9,
518 gbl_claim_rej_code10,
519 header_attribute_category,
520 header_attribute1,
524 header_attribute5,
521 header_attribute2,
522 header_attribute3,
523 header_attribute4,
525 header_attribute6,
526 header_attribute7,
527 header_attribute8,
528 header_attribute9,
529 header_attribute10,
530 header_attribute11,
531 header_attribute12,
532 header_attribute13,
533 header_attribute14,
534 header_attribute15,
535 header_attribute16,
536 header_attribute17,
537 header_attribute18,
538 header_attribute19,
539 header_attribute20,
540 header_attribute21,
541 header_attribute22,
542 header_attribute23,
543 header_attribute24,
544 header_attribute25,
545 header_attribute26,
546 header_attribute27,
547 header_attribute28,
548 header_attribute29,
549 header_attribute30,
550 line_attribute_category,
551 line_attribute1,
552 line_attribute2,
553 line_attribute3,
554 line_attribute4,
555 line_attribute5,
556 line_attribute6,
557 line_attribute7,
558 line_attribute8,
559 line_attribute9,
560 line_attribute10,
561 line_attribute11,
562 line_attribute12,
563 line_attribute13,
564 line_attribute14,
565 line_attribute15,
566 line_attribute16,
567 line_attribute17,
568 line_attribute18,
569 line_attribute19,
570 line_attribute20,
571 line_attribute21,
572 line_attribute22,
573 line_attribute23,
574 line_attribute24,
575 line_attribute25,
576 line_attribute26,
577 line_attribute27,
578 line_attribute28,
579 line_attribute29,
580 line_attribute30
581 )
582 VALUES
583 (ozf_sd_batch_lines_int_all_s.nextval,
584 p_to_cntct1_name,
585 p_to_cntct1_email,
586 p_to_cntct1_fax,
587 p_to_cntct1_phone,
588 p_to_gbl_ptnr_role_class_cd,
589 p_to_business_name,
590 p_to_gbl_business_id,
591 p_to_gbl_supply_chain_cd,
592 p_to_prop_business_id1,
593 p_to_prop_domain_id1,
594 p_to_auth_id1,
595 p_to_gbl_ptnr_class_cd,
596 p_to_cntct2_name,
597 p_to_cntct2_email,
598 p_to_cntct2_fax,
599 p_to_cntct2_phone,
600 p_to_gbl_loc_id,
601 p_to_prop_domain_id2,
602 p_to_prop_auth_id2,
603 p_to_prop_loc_id,
604 p_to_add_line1,
605 p_to_add_line2,
606 p_to_add_line3,
607 p_to_city,
608 p_to_country,
609 p_to_postal_code,
610 p_to_po_box_id,
611 p_to_region,
612 'RESPONSE',
613 p_ship_from_sd_auth_id,
614 p_dist_by_business_name,
615 p_dist_by_gbl_business_id,
616 'Electronic Components', --P_DIST_BY_GBL_SUPP_CHAIN_CD ,
617 p_dist_by_prop_business_id,
618 p_dist_by_prop_domain_id1,
619 p_dist_by_prop_auth_id1,
620 'Distributor', --P_DIST_BY_GBL_PTNR_CLASS_CD ,
621 p_dist_by_cntct_name,
622 p_dist_by_cntct_email,
623 p_dist_by_cntct_fax,
624 p_dist_by_cntct_phone,
625 p_dist_by_gbl_loc_id,
626 p_dist_by_prop_domain_id2,
627 p_dist_by_prop_auth_id2,
628 p_dist_by_prop_loc_id,
629 p_dist_by_add_line1,
630 p_dist_by_add_line2,
631 p_dist_by_add_line3,
632 p_dist_by_city,
633 p_dist_by_country,
634 p_dist_by_postal_code,
635 p_dist_by_po_box_id,
636 p_dist_by_region,
637 p_ship_to_business_name,
638 p_ship_to_gbl_business_id,
639 p_ship_to_gbl_supp_chain_cd,
640 p_ship_to_prop_business_id,
641 p_ship_to_prop_domain_id1,
642 p_ship_to_prop_auth_id1,
643 p_ship_to_gbl_ptnr_class_cd,
644 p_ship_to_cust_cntct_name,
645 p_ship_to_cust_cntct_email,
646 p_ship_to_cust_cntct_fax,
647 p_ship_to_cust_cntct_phone,
648 p_ship_to_cust_gbl_loc_id,
649 p_ship_to_prop_domain_id2,
650 p_ship_to_prop_auth_id2,
651 p_ship_to_cust_prop_loc_id,
652 p_ship_to_cust_add1,
653 p_ship_to_cust_add2,
654 p_ship_to_cust_add3,
655 p_ship_to_cust_city,
656 p_ship_to_cust_country,
657 p_ship_to_cust_postal_code,
658 p_ship_to_cust_po_box_id,
659 p_ship_to_cust_region,
660 p_sold_to_business_name,
661 p_sold_to_gbl_business_id,
662 p_sold_to_gbl_supp_chain_cd,
663 p_sold_to_prop_business_id,
664 p_sold_to_prop_domain_id1,
665 p_sold_to_prop_auth_id1,
666 p_sold_to_gbl_ptnr_class_cd,
667 p_sold_to_cust_cntct_name,
668 p_sold_to_cust_cntct_email,
669 p_sold_to_cust_cntct_fax,
670 p_sold_to_cust_cntct_phone,
671 p_sold_to_cust_gbl_loc_id,
672 p_sold_to_prop_domain_id2,
673 p_sold_to_prop_auth_id2,
674 p_sold_to_cust_prop_loc_id,
675 p_sold_to_cust_add1,
676 p_sold_to_cust_add2,
677 p_sold_to_cust_add3,
678 p_sold_to_cust_city,
679 p_sold_to_cust_country,
680 p_sold_to_cust_postal_code,
681 p_sold_to_cust_po_box_id,
682 p_sold_to_cust_region,
683 p_end_cust_business_name,
684 p_end_cust_gbl_business_id,
685 p_end_cust_gbl_supp_chain_cd,
686 p_end_cust_prop_business_id,
687 p_end_cust_prop_domain_id1,
688 p_end_cust_prop_auth_id1,
689 p_end_cust_gbl_ptnr_class_cd,
690 p_end_cust_cntct_name,
691 p_end_cust_cntct_email,
692 p_end_cust_cntct_fax,
693 p_end_cust_cntct_phone,
694 p_end_cust_gbl_loc_id,
695 p_end_cust_prop_domain_id2,
696 p_end_cust_prop_auth_id2,
700 p_end_cust_add3,
697 p_end_cust_prop_loc_id,
698 p_end_cust_add1,
699 p_end_cust_add2,
701 p_end_cust_city,
702 p_end_cust_country,
703 p_end_cust_postal_code,
704 p_end_cust_po_box_id,
705 p_end_cust_region,
706 p_ship_frm_sd_claim_req_date,
707 p_batch_number, --Inserting batch_number for SHIP_FRM_SD_CLAIM_REQ_ID to be in sync with xml
708 p_credit_ref_id,
709 p_debit_ref_id,
710 p_batch_line_number,
711 p_order_date,
712 p_order_line_number,
713 p_order_number,
714 p_invoice_date,
715 p_invoice_line_number,
716 p_invoice_number,
717 p_cost_price_curr_code,
718 p_cost_price,
719 p_auth_price_curr_code,
720 p_auth_price,
721 p_resale_price_curr_code,
722 p_resale_price,
723 p_uom,
724 p_line_status,
725 p_vendor_part_number,
726 p_dist_part_number,
727 p_date_shipped,
728 p_qty_shipped,
729 p_vendor_auth_line_item_no,
730 p_vendor_apprvd_amt_curr_cd,
731 p_vendor_apprvd_amt,
732 p_vendor_apprvd_qty,
733 p_batch_submission_date,
734 p_batch_number,
735 p_frm_cntct1_name,
736 p_frm_cntct1_email,
737 p_frm_cntct1_fax,
738 p_frm_cntct1_phone,
739 p_frm_gbl_ptnr_role_class_cd,
740 p_frm_business_name,
741 p_frm_gbl_business_id,
742 p_frm_gbl_supply_chain_cd,
743 p_frm_prop_business_id1,
744 p_frm_prop_domain_id1,
745 p_frm_auth_id1,
746 p_frm_gbl_ptnr_class_cd,
747 p_frm_cntct2_name,
748 p_frm_cntct2_email,
749 p_frm_cntct2_fax,
750 p_frm_cntct2_phone,
751 p_frm_gbl_loc_id,
752 p_frm_prop_domain_id2,
753 p_frm_prop_auth_id2,
754 p_frm_prop_loc_id,
755 p_frm_add_line1,
756 p_frm_add_line2,
757 p_frm_add_line3,
758 p_frm_city,
759 p_frm_country,
760 p_frm_postal_code,
761 p_frm_po_box_id,
762 p_frm_region,
763 sysdate,
764 sysdate,
765 0,
766 0,
767 'N',
768 p_batch_id,
769 p_batch_line_id,
770 p_disposition_code1,
771 p_disposition_code2,
772 p_disposition_code3,
773 p_disposition_code4,
774 p_disposition_code5,
775 p_disposition_code6,
776 p_disposition_code7,
777 p_disposition_code8,
778 p_disposition_code9,
779 p_disposition_code10,
780 P_HDR_ATTR_CATG,
781 P_HDR_ATTR1,
782 P_HDR_ATTR2,
783 P_HDR_ATTR3,
784 P_HDR_ATTR4,
785 P_HDR_ATTR5,
786 P_HDR_ATTR6,
787 P_HDR_ATTR7,
788 P_HDR_ATTR8,
789 P_HDR_ATTR9,
790 P_HDR_ATTR10,
791 P_HDR_ATTR11,
792 P_HDR_ATTR12,
793 P_HDR_ATTR13,
794 P_HDR_ATTR14,
795 P_HDR_ATTR15,
796 P_HDR_ATTR16,
797 P_HDR_ATTR17,
798 P_HDR_ATTR18,
799 P_HDR_ATTR19,
800 P_HDR_ATTR20,
801 P_HDR_ATTR21,
802 P_HDR_ATTR22,
803 P_HDR_ATTR23,
804 P_HDR_ATTR24,
805 P_HDR_ATTR25,
806 P_HDR_ATTR26,
807 P_HDR_ATTR27,
808 P_HDR_ATTR28,
809 P_HDR_ATTR29,
810 P_HDR_ATTR30,
811 P_LINE_ATTR_CATG,
812 P_LINE_ATTR1,
813 P_LINE_ATTR2,
814 P_LINE_ATTR3,
815 P_LINE_ATTR4,
816 P_LINE_ATTR5,
817 P_LINE_ATTR6,
818 P_LINE_ATTR7,
819 P_LINE_ATTR8,
820 P_LINE_ATTR9,
821 P_LINE_ATTR10,
822 P_LINE_ATTR11,
823 P_LINE_ATTR12,
824 P_LINE_ATTR13,
825 P_LINE_ATTR14,
826 P_LINE_ATTR15,
827 P_LINE_ATTR16,
828 P_LINE_ATTR17,
829 P_LINE_ATTR18,
830 P_LINE_ATTR19,
831 P_LINE_ATTR20,
832 P_LINE_ATTR21,
833 P_LINE_ATTR22,
834 P_LINE_ATTR23,
835 P_LINE_ATTR24,
836 P_LINE_ATTR25,
837 P_LINE_ATTR26,
838 P_LINE_ATTR27,
839 P_LINE_ATTR28,
840 P_LINE_ATTR29,
841 P_LINE_ATTR30);
842
843 EXCEPTION
844 WHEN others THEN
845 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::populate_interface', 'Exception: '||sqlerrm);
846 END;
847
848 COMMIT;
849 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::populate_interface', 'Procedure Ends');
850
851 END populate_interface;
852
853 PROCEDURE update_data(p_batch_number IN VARCHAR2,
854 x_return_status OUT nocopy VARCHAR2,
855 x_msg_data OUT nocopy VARCHAR2
856 ) IS
857 l_cnt_hdr NUMBER;
858 l_cnt_line NUMBER;
859 l_cnt_tot_line NUMBER;
860 l_cnt_approved_lines NUMBER;
861 l_cnt_rejected_lines NUMBER;
862 l_message VARCHAR2(500);
863 l_to_amount NUMBER;
864 l_claim_number VARCHAR2(30) := NULL;
865 l_accepted_amount NUMBER;
866 l_batch_id NUMBER;
867 l_batch_status VARCHAR2(15);
868 l_claim_id NUMBER;
869 l_claim_minor_version NUMBER;
870 l_currency_code VARCHAR2(15);
871 l_msg_count NUMBER;
872 l_org_id NUMBER;
873 l_ssd_dec_adj_type_id NUMBER;
874 l_ssd_inc_adj_type_id NUMBER;
875 l_tot_app_claim_amt NUMBER ;
876 l_func_currency VARCHAR2(15);
877 l_batch_currency VARCHAR2(15);
878
879 --Start: Fix for Bug 10628160
880 l_custom_setup_id NUMBER := NULL;
881 l_claim_rec OZF_Claim_PVT.claim_rec_type := NULL;
882 l_clam_def_rec_type ozf_claim_def_rule_pvt.clam_def_rec_type := NULL;
883 l_split_claim_id NUMBER := NULL;
884 l_msg_count3 NUMBER := NULL;
885 l_msg_data VARCHAR2(100) := NULL;
886 l_msg_count2 NUMBER := NULL;
887 l_msg_data2 VARCHAR2(100) := NULL;
888 l_return_status2 VARCHAR2(15) := NULL;
889 l_return_status VARCHAR2(15) := NULL;
890 --End: Fix for Bug 10628160
891 --Start: Added for partial approval (ER 13245462)
892 l_batch_comp_appr_lines_tbl number_tbl;
893 l_batch_und_appr_lines_tbl number_tbl;
894 l_batch_over_appr_lines_tbl number_tbl;
895 l_batch_appr_lines_tbl number_tbl;
896 l_batch_comp_rej_lines_tbl number_tbl;
897 l_cnt_over_appr_lines NUMBER :=0;
898 l_cnt_under_appr_lines NUMBER :=0;
899 l_cnt_comp_appr_lines NUMBER :=0;
900 l_cnt_comp_rej_lines NUMBER :=0;
901 l_imd_claim_flag VARCHAR2(1) :='N';
902 l_cnt_appr_lines NUMBER :=0;
903 --End: Added for partial approval (ER 13245462)
904
905
906
907 CURSOR C_MISS_REJ_APP IS
908 SELECT batch_line_number,
909 auth_cost,
910 auth_curr_code,
911 stat_code,
912 credit_reference_id,
913 vendor_auth_quantity,
914 adjustment_type,
915 ozf_utility_pvt.currround(CASE
916 WHEN((auth_cost is null and vendor_auth_quantity is null) OR ( auth_curr_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR auth_cost < 0 OR (original_claim_amount > 0 and vendor_auth_quantity < 0) ) then 0
917
918 WHEN (auth_cost is null and vendor_auth_quantity IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * vendor_auth_quantity)
919
920 WHEN (auth_cost is null and vendor_auth_quantity IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * vendor_auth_quantity)
921
922 WHEN (vendor_auth_quantity is null and auth_cost is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - auth_cost) * QUANTITY_SHIPPED)
923
924 WHEN (vendor_auth_quantity is null and auth_cost is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (auth_cost * QUANTITY_SHIPPED)
925
926 WHEN (vendor_auth_quantity is not null and auth_cost is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - auth_cost) * vendor_auth_quantity)
927 WHEN (vendor_auth_quantity is not null and auth_cost is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((auth_cost) * vendor_auth_quantity)
928 END,claim_amount_currency_code) approved_claim_amount,
929 line_status_code,
930 computed_batch_curr_claim_amt,
931 claim_amount,
932 batch_line_id,
933 original_claim_amount,
934 claim_amount_currency_code
935 FROM(
936 SELECT bint.batch_line_number batch_line_number,
937 DECODE(gbl_claim_disposition_code,'APPROVED', DECODE(discount_type, 'AMT' , discount_value , agreement_price), vendor_auth_cost_monetary_amt) auth_cost,
938 DECODE(gbl_claim_disposition_code,'APPROVED', DECODE(discount_type, 'AMT' , discount_currency_code, Agreement_currency_code), vendor_auth_cost_currency_code) auth_curr_code,
939 DECODE(NVL(gbl_claim_disposition_code,'REJECTED'), 'APPROVED', 'APPROVED', 'REJECTED') stat_code,
940 credit_reference_id,
941 DECODE(gbl_claim_disposition_code,'APPROVED',quantity_shipped , vendor_auth_quantity) vendor_auth_quantity,
942 clm.adjustment_type,
943 discount_type,
944 discount_value,
945 list_price,
946 agreement_price,
947 claim_amount_currency_code,
948 quantity_shipped,
949 gbl_claim_disposition_code line_status_code,
950 lines.claim_amount,
951 original_claim_amount,
952 lines.batch_line_id,
953 CASE
954 WHEN (lines.claim_amount_currency_code = l_batch_currency) THEN lines.BATCH_CURR_CLAIM_AMOUNT
955 WHEN ((lines.claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(lines.claim_amount_currency_code,
956 l_batch_currency,
957 l_func_currency,
958 (SELECT fu.exchange_rate_type
959 FROM ozf_funds_utilized_all_b fu
960 WHERE fu.utilization_id = lines.utilization_id
961 AND lines.batch_id = p_batch_number),
962 NULL,
963 sysdate,
964 lines.claim_amount)
965
966 WHEN (lines.claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(lines.claim_amount_currency_code,
967 l_batch_currency,
968 l_func_currency,
969 (SELECT fu.exchange_rate_type
970 FROM ozf_funds_utilized_all_b fu
971 WHERE fu.utilization_id = lines.utilization_id
972 AND lines.batch_id = p_batch_number),
973 NULL,
974 (SELECT fu.exchange_rate_date
975 FROM ozf_funds_utilized_all_b fu
976 WHERE fu.utilization_id = lines.utilization_id
977 AND lines.batch_id = p_batch_number),
978 lines.claim_amount)
979 END computed_batch_curr_claim_amt
980 FROM ozf_sd_batch_lines_int_all bint, ozf_sd_batch_lines_all lines, ozf_claim_types_all_vl clm
981 WHERE ship_frm_sd_claim_request_id = p_batch_number
982 AND processed_flag = 'N'
983 AND bint.ship_frm_sd_claim_request_id = lines.batch_id
984 AND bint.batch_line_number = lines.batch_line_number
985 AND lines.adjustment_type_id = clm.claim_type_id(+)
986 ) ;
987
988 BEGIN
989
990 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'Procedure Starts');
991
992 x_return_status := fnd_api.g_ret_sts_success;
993
994 --Retreive batch id
995 BEGIN
996 SELECT batch_id, status_code, claim_minor_version, org_id, currency_code,NVL(imd_claim_flag,'N')
997 INTO l_batch_id, l_batch_status, l_claim_minor_version, l_org_id, l_batch_currency,l_imd_claim_flag
998 FROM ozf_sd_batch_headers_all
999 WHERE batch_number = p_batch_number;
1000 EXCEPTION
1001 WHEN NO_DATA_FOUND THEN
1002 UPDATE ozf_sd_batch_lines_int_all
1003 SET validation_txt = 'Batch ID does not exist',
1004 last_update_date = sysdate,
1005 last_updated_by = fnd_global.user_id
1006 WHERE ship_frm_sd_claim_request_id = p_batch_number
1007 AND processed_flag = 'N';
1008 COMMIT;
1009 x_return_status := fnd_api.g_ret_sts_error;
1010 x_msg_data := FND_MESSAGE.GET_STRING('OZF','OZF_SD_BATCH_INVALID');
1011 RETURN;
1012 WHEN OTHERS THEN
1013 x_return_status := fnd_api.g_ret_sts_error;
1014 x_msg_data := FND_MESSAGE.GET_STRING('OZF','OZF_SD_BATCH_INVALID');
1015 RETURN;
1016 END;
1017
1018 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data',
1019 'Batch Id: '||l_batch_id||' and Batch Status: '||l_batch_status);
1020
1021 --raising business event
1022 ozf_sd_util_pvt.sd_raise_event (l_batch_id, 'RESPONSE', x_return_status);
1023
1024 IF l_batch_status NOT IN ('WIP','SUBMITTED' ) THEN
1025 UPDATE ozf_sd_batch_lines_int_all
1026 SET processed_flag = 'E',
1027 validation_txt = 'Batch not in WIP or SUBMITTED status',
1028 last_update_date = sysdate,
1029 last_updated_by = fnd_global.user_id
1030 WHERE ship_frm_sd_claim_request_id = p_batch_number
1031 AND processed_flag = 'N';
1032 COMMIT;
1033 x_return_status := fnd_api.g_ret_sts_error;
1034 x_msg_data := FND_MESSAGE.GET_STRING('OZF','OZF_SD_BATCH_STATUS_INVALID');
1035 RETURN;
1036 END IF;
1037
1038 --check whether lines exist for given batch id
1039 SELECT COUNT(1)
1040 INTO l_cnt_line
1041 FROM ozf_sd_batch_lines_int_all
1042 WHERE ship_frm_sd_claim_request_id = p_batch_number
1043 AND processed_flag = 'N';
1044
1045 IF l_cnt_line = 0 THEN
1046 UPDATE ozf_sd_batch_lines_int_all
1047 SET validation_txt = 'There are no Lines for this Batch ID',
1048 last_update_date = sysdate,
1049 last_updated_by = fnd_global.user_id
1050 WHERE ship_frm_sd_claim_request_id = p_batch_number
1051 AND processed_flag = 'N';
1055 RETURN;
1052 COMMIT;
1053 x_return_status := fnd_api.g_ret_sts_error;
1054 x_msg_data := 'There are no Lines for this Batch ID';
1056 END IF;
1057
1058 SELECT gs.currency_code
1059 INTO l_func_currency
1060 FROM gl_sets_of_books gs,
1061 ozf_sys_parameters_all org,
1062 ozf_sd_batch_headers_all bh
1063 WHERE org.set_of_books_id = gs.set_of_books_id
1064 AND org.org_id = bh.org_id
1065 AND bh.batch_number = p_batch_number;
1066
1067
1068 BEGIN
1069 DELETE ozf_sd_batch_line_disputes
1070 WHERE batch_id = l_batch_id
1071 AND batch_line_id IN (SELECT bl.batch_line_id
1072 FROM ozf_sd_batch_lines_all bl, ozf_sd_batch_lines_int_all intr
1073 WHERE bl.batch_id = l_batch_id
1074 AND bl.batch_id = intr.ship_frm_sd_claim_request_id
1075 AND bl.batch_line_number = intr.batch_line_number
1076 AND intr.processed_flag = 'N'
1077 AND bl.purge_flag <> 'Y'
1078 );
1079 EXCEPTION
1080 WHEN others THEN
1081 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data',
1082 'Exception Delete OZF_SD_BATCH_LINE_DISPUTES: '||sqlerrm);
1083 END;
1084
1085 INSERT INTO ozf_sd_batch_line_disputes
1086 (batch_line_dispute_id,
1087 batch_id,
1088 batch_line_id,
1089 object_version_number,
1090 dispute_code,
1091 review_flag,
1092 creation_date,
1093 last_update_date,
1094 last_updated_by,
1095 request_id,
1096 created_by,
1097 created_from,
1098 last_update_login,
1099 program_application_id,
1100 program_update_date,
1101 program_id,
1102 security_group_id)
1103
1104 SELECT ozf_sd_batch_line_disputes_s.nextval,
1105 a.batch_id,
1106 a.batch_line_id,
1107 1,
1108 a.dispute_code,
1109 'N',
1110 sysdate,
1111 sysdate,
1112 fnd_global.user_id,
1113 fnd_global.conc_request_id,
1114 fnd_global.user_id,
1115 NULL, --created from
1116 fnd_global.conc_login_id,
1117 fnd_global.prog_appl_id,
1118 NULL, --l_program_update_date,
1119 fnd_global.conc_program_id,
1120 fnd_global.security_group_id
1121
1122 FROM -- No rejection code for rejected line
1123 ( SELECT intr.batch_id,
1124 intr.batch_line_id,
1125 'OZF_SD_MISSING_REJ_CODE' dispute_code
1126 FROM ozf_sd_batch_lines_int_all intr,
1127 ozf_sd_batch_lines_all bl
1128 WHERE intr.ship_frm_sd_claim_request_id = p_batch_number
1129 AND intr.processed_flag = 'N'
1130 AND bl.purge_flag <> 'Y'
1131 AND intr.gbl_claim_disposition_code = 'REJECTED'
1132 AND intr.ship_frm_sd_claim_request_id = bl.batch_id
1133 AND intr.batch_line_number = bl.batch_line_number
1134 AND intr.gbl_claim_rej_code1 IS NULL
1135 AND intr.gbl_claim_rej_code2 IS NULL
1136 AND intr.gbl_claim_rej_code3 IS NULL
1137 AND intr.gbl_claim_rej_code4 IS NULL
1138 AND intr.gbl_claim_rej_code5 IS NULL
1139 AND intr.gbl_claim_rej_code6 IS NULL
1140 AND intr.gbl_claim_rej_code7 IS NULL
1141 AND intr.gbl_claim_rej_code8 IS NULL
1142 AND intr.gbl_claim_rej_code9 IS NULL
1143 AND intr.gbl_claim_rej_code10 IS NULL
1144
1145 UNION ALL -- missing or invalid status for batch lines
1146
1147 SELECT intr.batch_id,
1148 intr.batch_line_id,
1149 'OZF_SD_NO_RESPONSE' dispute_code
1150 FROM ozf_sd_batch_lines_int_all intr
1151 WHERE ship_frm_sd_claim_request_id = p_batch_number
1152 AND processed_flag = 'N'
1153 AND ( (gbl_claim_disposition_code IS NULL) OR ( gbl_claim_disposition_code NOT IN ('APPROVED', 'REJECTED') ) )
1154
1155
1156 UNION ALL -- Currency code mismatch
1157
1158 SELECT intr.batch_id,
1159 intr.batch_line_id,
1160 'OZF_SD_CURR_CODE_MISMATCH' dispute_code
1161 FROM ozf_sd_batch_lines_int_all intr,
1162 ozf_sd_batch_lines_all bl
1163 WHERE intr.ship_frm_sd_claim_request_id = p_batch_number
1164 AND intr.processed_flag = 'N'
1165 AND bl.purge_flag <> 'Y'
1166 AND intr.gbl_claim_disposition_code = 'REJECTED'
1167 AND intr.ship_frm_sd_claim_request_id = bl.batch_id
1168 AND intr.batch_line_number = bl.batch_line_number
1169 AND bl.claim_amount_currency_code <> intr.vendor_auth_cost_currency_code
1170
1171 UNION ALL -- VENDOR_AUTH_COST_MONETARY_AMT CAN NOT BE NEGATIVE
1172
1173 SELECT intr.batch_id,
1174 intr.batch_line_id,
1175 'OZF_SD_VENDOR_AUTH_AMT_NGTVE' dispute_code
1176 FROM ozf_sd_batch_lines_int_all intr,
1177 ozf_sd_batch_lines_all bl
1178 WHERE intr.ship_frm_sd_claim_request_id = p_batch_number
1179 AND intr.processed_flag = 'N'
1180 AND bl.purge_flag <> 'Y'
1181 AND intr.gbl_claim_disposition_code = 'REJECTED'
1182 AND intr.ship_frm_sd_claim_request_id = bl.batch_id
1183 AND intr.batch_line_number = bl.batch_line_number
1184 AND intr.vendor_auth_cost_monetary_amt < 0
1185
1186 UNION ALL -- VENDOR_AUTH_QTY CAN NOT BE NEGATIVE
1187
1188 SELECT intr.batch_id,
1189 intr.batch_line_id,
1190 'OZF_SD_VENDOR_AUTH_QTY_NGTVE' dispute_code
1191 FROM ozf_sd_batch_lines_int_all intr,
1192 ozf_sd_batch_lines_all bl
1193 WHERE intr.ship_frm_sd_claim_request_id = p_batch_number
1194 AND intr.processed_flag = 'N'
1195 AND bl.purge_flag <> 'Y'
1199 AND bl.original_claim_amount > 0 -- only for non RMA lines
1196 AND intr.gbl_claim_disposition_code = 'REJECTED'
1197 AND intr.ship_frm_sd_claim_request_id = bl.batch_id
1198 AND intr.batch_line_number = bl.batch_line_number
1200 AND intr.vendor_auth_quantity < 0
1201
1202 UNION ALL -- VENDOR_AUTH_COST_MONETARY_AMT is NULL and VENDOR_AUTH_QTY is NULL
1203
1204 SELECT intr.batch_id,
1205 intr.batch_line_id,
1206 'OZF_SD_AUTH_AMT_QTY_NULL' dispute_code
1207 FROM ozf_sd_batch_lines_int_all intr,
1208 ozf_sd_batch_lines_all bl
1209 WHERE intr.ship_frm_sd_claim_request_id = p_batch_number
1210 AND intr.processed_flag = 'N'
1211 AND bl.purge_flag <> 'Y'
1212 AND intr.gbl_claim_disposition_code = 'REJECTED'
1213 AND intr.ship_frm_sd_claim_request_id = bl.batch_id
1214 AND intr.batch_line_number = bl.batch_line_number
1215 AND intr.vendor_auth_cost_monetary_amt is NULL
1216 AND intr.vendor_auth_quantity is NULL
1217
1218 ) a ;
1219
1220 update_dispute_data(p_batch_number,l_batch_id);
1221
1222 SELECT SSD_DEC_ADJ_TYPE_ID, SSD_INC_ADJ_TYPE_ID
1223 INTO l_ssd_dec_adj_type_id, l_ssd_inc_adj_type_id
1224 FROM OZF_SYS_PARAMETERS_ALL
1225 WHERE org_id = l_org_id;
1226
1227 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' SSD Batch batch id'||l_batch_id||' allow immediate claim flag '||l_imd_claim_flag);
1228
1229
1230 IF l_imd_claim_flag ='Y' THEN
1231
1232 FOR V_MISS_REJ_APP_REC IN C_MISS_REJ_APP
1233 LOOP
1234 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.batch_line_number'||V_MISS_REJ_APP_REC.batch_line_number);
1235
1236
1237 UPDATE ozf_sd_batch_lines_all
1238 SET status_code = V_MISS_REJ_APP_REC.stat_code,
1239 approved_amount = V_MISS_REJ_APP_REC.auth_cost,
1240 approved_currency_code = V_MISS_REJ_APP_REC.auth_curr_code,
1241 object_version_number = object_version_number + 1,
1242 last_update_date = sysdate,
1243 last_updated_by = fnd_global.user_id,
1244 vendor_ref_id = V_MISS_REJ_APP_REC.credit_reference_id,
1245 quantity_approved = V_MISS_REJ_APP_REC.vendor_auth_quantity,
1246 total_approved_amt = CASE WHEN V_MISS_REJ_APP_REC.stat_code ='REJECTED' THEN NVL(total_approved_amt,0) + V_MISS_REJ_APP_REC.approved_claim_amount
1247 WHEN V_MISS_REJ_APP_REC.stat_code ='APPROVED' THEN total_approved_amt + V_MISS_REJ_APP_REC.approved_claim_amount
1248 END,
1249 total_approved_qty = CASE WHEN V_MISS_REJ_APP_REC.stat_code ='REJECTED' THEN NVL(total_approved_qty,0) + V_MISS_REJ_APP_REC.vendor_auth_quantity
1250 WHEN V_MISS_REJ_APP_REC.stat_code ='APPROVED' THEN total_approved_qty + V_MISS_REJ_APP_REC.vendor_auth_quantity
1251 END,
1252
1253 batch_curr_claim_amount = decode(V_MISS_REJ_APP_REC.stat_code,'APPROVED',V_MISS_REJ_APP_REC.computed_batch_curr_claim_amt, batch_curr_claim_amount),
1254 adjustment_type_id = (case when ( (original_claim_amount > 0)
1255 AND (V_MISS_REJ_APP_REC.approved_claim_amount > original_claim_amount)
1256 AND V_MISS_REJ_APP_REC.adjustment_type <> 'STANDARD'
1257 AND V_MISS_REJ_APP_REC.line_status_code<>'APPROVED' )
1258 THEN l_ssd_inc_adj_type_id
1259 when ( (original_claim_amount > 0)
1260 AND (V_MISS_REJ_APP_REC.approved_claim_amount < original_claim_amount)
1261 AND V_MISS_REJ_APP_REC.adjustment_type <> 'DECREASE_EARNED'
1262 AND V_MISS_REJ_APP_REC.line_status_code<>'APPROVED' )
1263 THEN l_ssd_dec_adj_type_id
1264 else
1265 adjustment_type_id
1266 end)
1267 WHERE batch_id = l_batch_id
1268 AND batch_line_number = V_MISS_REJ_APP_REC.batch_line_number
1269 AND purge_flag <> 'Y'
1270 AND status_code = 'SUBMITTED';
1271
1272 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.stat_code'||V_MISS_REJ_APP_REC.stat_code);
1273 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.auth_cost'||V_MISS_REJ_APP_REC.auth_cost);
1274 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.vendor_auth_quantity'||V_MISS_REJ_APP_REC.vendor_auth_quantity);
1275 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.claim_amount_currency_code'||V_MISS_REJ_APP_REC.claim_amount_currency_code);
1276 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.auth_curr_code'||V_MISS_REJ_APP_REC.auth_curr_code);
1277 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.approved_claim_amount'||V_MISS_REJ_APP_REC.approved_claim_amount);
1278 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In For loop for V_MISS_REJ_APP_REC.claim_amount'||V_MISS_REJ_APP_REC.claim_amount);
1279
1280
1281
1282 --Bucketing under approved,over approved,completely rejected and completely approved lines(Rejected line but completely approved)
1283 IF(V_MISS_REJ_APP_REC.stat_code = 'REJECTED' ) THEN
1284 -- For System disputes code
1285 If(V_MISS_REJ_APP_REC.auth_cost < 0) OR (V_MISS_REJ_APP_REC.original_claim_amount > 0 AND V_MISS_REJ_APP_REC.vendor_auth_quantity < 0)
1286 OR (V_MISS_REJ_APP_REC.vendor_auth_quantity IS NULL AND V_MISS_REJ_APP_REC.auth_cost IS NULL )
1287 OR (V_MISS_REJ_APP_REC.line_status_code IS NULL) OR (V_MISS_REJ_APP_REC.line_status_code NOT IN ('APPROVED', 'REJECTED'))
1288 OR (V_MISS_REJ_APP_REC.claim_amount_currency_code <> V_MISS_REJ_APP_REC.auth_curr_code) THEN
1289 l_batch_comp_rej_lines_tbl(l_cnt_comp_rej_lines) := V_MISS_REJ_APP_REC.batch_line_id;
1290 l_cnt_comp_rej_lines := l_cnt_comp_rej_lines + 1;
1291 ELSE IF( ABS(V_MISS_REJ_APP_REC.approved_claim_amount) > ABS(V_MISS_REJ_APP_REC.claim_amount)) THEN
1292 l_batch_over_appr_lines_tbl(l_cnt_over_appr_lines) := V_MISS_REJ_APP_REC.batch_line_id; -- Over approval scenario
1293 l_cnt_over_appr_lines := l_cnt_over_appr_lines + 1;
1294 ELSE IF ( ABS(V_MISS_REJ_APP_REC.approved_claim_amount) < ABS(V_MISS_REJ_APP_REC.claim_amount)) THEN
1295 l_batch_und_appr_lines_tbl(l_cnt_under_appr_lines) := V_MISS_REJ_APP_REC.batch_line_id; -- under approval scenario
1296 l_cnt_under_appr_lines := l_cnt_under_appr_lines + 1;
1297 ELSE IF (ABS(V_MISS_REJ_APP_REC.approved_claim_amount) = ABS(V_MISS_REJ_APP_REC.claim_amount)) THEN
1298 l_batch_comp_appr_lines_tbl(l_cnt_comp_appr_lines) := V_MISS_REJ_APP_REC.batch_line_id; -- complete approval scenario
1299 l_cnt_comp_appr_lines := l_cnt_comp_appr_lines + 1;
1300 END IF; --Completely approved end if
1301 END IF; -- Under approved end if
1302 END IF; -- Over approved end if
1303 END IF; -- Handling system disputes codes
1304 ELSE IF (V_MISS_REJ_APP_REC.stat_code = 'APPROVED') THEN
1305 l_batch_appr_lines_tbl(l_cnt_appr_lines) := V_MISS_REJ_APP_REC.batch_line_id;
1306 l_cnt_appr_lines := l_cnt_appr_lines +1;
1307 END IF;
1308 END IF; --End If for Line Status is REJECTED
1309
1310 END LOOP ;
1311
1312 --get total number of lines
1313 SELECT COUNT(1)
1314 INTO l_cnt_tot_line
1315 FROM ozf_sd_batch_lines_all
1316 WHERE batch_id = l_batch_id
1317 AND purge_flag <> 'Y';
1318
1319 --get number of approved lines
1320 SELECT COUNT(1)
1321 INTO l_cnt_approved_lines
1322 FROM ozf_sd_batch_lines_all
1323 WHERE batch_id = l_batch_id
1324 AND status_code = 'APPROVED'
1325 AND purge_flag <> 'Y';
1326
1327 --get number of rejected lines
1328 SELECT COUNT(1)
1329 INTO l_cnt_rejected_lines
1330 FROM ozf_sd_batch_lines_all
1331 WHERE batch_id = l_batch_id
1332 AND status_code = 'REJECTED'
1333 AND purge_flag <> 'Y';
1334
1335
1336
1337 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'number of total lines: '||l_cnt_tot_line);
1338 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'number of rejected lines: '||l_cnt_rejected_lines);
1339 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'number of approved lines: '||l_cnt_approved_lines);
1340 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'number of completely rejected lines: '||l_cnt_comp_rej_lines);
1341 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'number of completely approved lines: '||l_cnt_comp_appr_lines);
1342 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'number of under approved lines: '||l_cnt_under_appr_lines);
1343 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', 'number of over approved lines: '||l_cnt_over_appr_lines);
1344 -- Logmessage to print partial approval flag for a batch
1345
1346 -- If partial approval is allowed for a batch
1347 --All lines are rejected or if none approved
1348 IF ( ( l_cnt_rejected_lines = l_cnt_tot_line) OR ( l_cnt_approved_lines = 0 ) ) THEN
1349
1350 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In if block All lines are rejected or if none approved');
1351 --If all lines are over approved or completely approved
1352 IF ( NVL(l_cnt_comp_appr_lines,0) + NVL(l_cnt_over_appr_lines,0) = l_cnt_tot_line ) THEN
1353
1354 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In if block All lines are over approved or completely approved');
1355
1356 UPDATE ozf_sd_batch_headers_all
1357 SET status_code = 'APPROVED',
1358 claim_minor_version = NULL,
1359 object_version_number = object_version_number + 1,
1360 last_update_date = sysdate,
1361 last_updated_by = fnd_global.user_id
1362 WHERE batch_id = l_batch_id;
1363
1364 --Mark all rows as processed
1365 UPDATE ozf_sd_batch_lines_int_all
1366 SET processed_flag = 'Y',
1367 last_update_date = sysdate,
1368 last_updated_by = fnd_global.user_id
1369 WHERE ship_frm_sd_claim_request_id = p_batch_number
1370 AND processed_flag = 'N';
1371
1372 -- Update status_code,claim amount,batch_curr_claim_amount and quantity_shipped for over approved lines
1373 --For batch Currency Claim Amount 2 step Conversion i.e accrual date to sysdate is taken care by OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY API
1374 UPDATE ozf_sd_batch_lines_all
1375 SET status_code = 'APPROVED',
1376 claim_amount = ozf_utility_pvt.currround(CASE
1377 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1378
1379 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1380
1381 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1382
1383 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1384
1385 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1386
1387 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1388 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1389 ELSE 0
1390 END,CLAIM_AMOUNT_CURRENCY_CODE) ,
1391 batch_curr_claim_amount = CASE
1392 WHEN (claim_amount_currency_code = l_batch_currency) THEN ozf_utility_pvt.currround(CASE
1393 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1394
1395 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1396
1397 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1398
1399 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1400
1401 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1402
1403 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1404 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1405 ELSE 0
1406 END,CLAIM_AMOUNT_CURRENCY_CODE)
1407 WHEN ((claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1408 l_batch_currency,
1409 l_func_currency,
1410 (SELECT fu.exchange_rate_type
1411 FROM ozf_funds_utilized_all_b fu
1412 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1413 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1414 NULL,
1415 sysdate,
1416 CASE
1417 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1418
1419 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1420
1421 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1422
1423 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1424
1425 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1426
1427 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1428 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1429 END)
1430
1431 WHEN (claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1432 l_batch_currency,
1433 l_func_currency,
1434 (SELECT fu.exchange_rate_type
1435 FROM ozf_funds_utilized_all_b fu
1436 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1437 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1438 NULL,
1439 (SELECT fu.exchange_rate_date
1440 FROM ozf_funds_utilized_all_b fu
1441 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1442 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1443 CASE
1444 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1445
1446 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1447
1448 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1452 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1449
1450 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1451
1453
1454 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1455 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1456 END)
1457 END,
1458 quantity_shipped = NVL(quantity_approved,quantity_shipped),
1459 discount_value = decode(discount_type,
1460 'AMT',NVL(approved_amount,discount_value),
1461 'NEWPRICE',NVL(approved_amount,agreement_price),
1462 '%',ROUND((100 - ((NVL(approved_amount,agreement_price)/NVL(list_price,1)) *100)),2),discount_value),
1463 agreement_price = decode(discount_type,'%',NVL(approved_amount,agreement_price),'NEWPRICE',NVL(approved_amount,agreement_price),agreement_price),
1464 total_approved_qty = CASE WHEN total_approved_amt IS NOT NULL AND total_approved_qty IS NULL THEN NVL(quantity_approved,quantity_shipped)
1465 ELSE total_approved_qty
1466 END,
1467 object_version_number = object_version_number + 1,
1468 last_update_date = sysdate,
1469 last_updated_by = fnd_global.user_id
1470 WHERE batch_id = l_batch_id
1471 AND purge_flag <> 'Y' ;
1472
1473
1474
1475 PROCESS_COMP_APPR_BATCH(l_batch_id, x_return_status, x_msg_data);
1476
1477
1478 COMMIT;
1479 RETURN;
1480
1481
1482 --If there is atleast over approved line or one under approved line or completely approved line then process_child_batch is invoked
1483 ELSE IF ( (l_cnt_under_appr_lines >= 1) OR (l_cnt_over_appr_lines >= 1 ) OR (l_cnt_comp_appr_lines >=1)) THEN
1484
1485 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In if block atleast one approved or under approved line');
1486 -- Invoke Child batch creation API
1487 PROCESS_CHILD_BATCH(l_batch_id,l_batch_appr_lines_tbl,l_batch_und_appr_lines_tbl,l_batch_over_appr_lines_tbl,l_batch_comp_appr_lines_tbl, x_return_status, x_msg_data);
1488
1489 --set batch header as WIP for parent batch
1490 UPDATE ozf_sd_batch_headers_all
1491 SET status_code = 'WIP',
1492 object_version_number = object_version_number + 1,
1493 claim_minor_version = l_claim_minor_version + 1,
1494 last_update_date = sysdate,
1495 last_updated_by = fnd_global.user_id
1496 WHERE batch_id = l_batch_id;
1497
1498 --Mark all rows as processed
1499 UPDATE ozf_sd_batch_lines_int_all
1500 SET processed_flag = 'Y',
1501 last_update_date = sysdate,
1502 last_updated_by = fnd_global.user_id
1503 WHERE ship_frm_sd_claim_request_id = p_batch_number
1504 AND processed_flag = 'N';
1505
1506 --Update the following fields for the under approved batch lines
1507 -- batch_curr_claim_amount,agreement_price(for discount type %,New Price) and discount value for discount type amount,processed_flag
1508 -- Status code of the under approved line has to be set as partially approved
1509 IF((l_batch_und_appr_lines_tbl IS NOT NULL) AND (l_batch_und_appr_lines_tbl.COUNT > 0)) THEN
1510
1511 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In if l_batch_und_appr_lines_tbl is not null ');
1512
1513 FOR i IN 0..l_batch_und_appr_lines_tbl.COUNT-1
1514 LOOP
1515
1516 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data', ' In if l_batch_und_appr_lines_tbl(i) '||l_batch_und_appr_lines_tbl(i));
1517
1518 UPDATE ozf_sd_batch_lines_all
1519 SET status_code = 'PARTIALLY_APPROVED',
1520 claim_amount = claim_amount - ozf_utility_pvt.currround(CASE
1521 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1522
1523 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1524
1525 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1526
1527 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1528
1529 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1530
1531 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1532 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1533 ELSE 0
1534 END,CLAIM_AMOUNT_CURRENCY_CODE) ,
1535 batch_curr_claim_amount = CASE
1536 WHEN (claim_amount_currency_code = l_batch_currency) THEN ( claim_amount - ozf_utility_pvt.currround(CASE
1537 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1541 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1538
1539 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1540
1542
1543 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1544
1545 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1546
1547 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1548 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1549 ELSE 0
1550 END,CLAIM_AMOUNT_CURRENCY_CODE))
1551 WHEN ((claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1552 l_batch_currency,
1553 l_func_currency,
1554 (SELECT fu.exchange_rate_type
1555 FROM ozf_funds_utilized_all_b fu
1556 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1557 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1558 NULL,
1559 sysdate,
1560 claim_amount - ozf_utility_pvt.currround(CASE
1561 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1562
1563 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1564
1565 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1566
1567 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1568
1569 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1570
1571 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1572 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1573 ELSE 0
1574 END,CLAIM_AMOUNT_CURRENCY_CODE))
1575
1576 WHEN (claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1577 l_batch_currency,
1578 l_func_currency,
1579 (SELECT fu.exchange_rate_type
1580 FROM ozf_funds_utilized_all_b fu
1581 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1582 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1583 NULL,
1584 (SELECT fu.exchange_rate_date
1585 FROM ozf_funds_utilized_all_b fu
1586 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1587 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1588 claim_amount - ozf_utility_pvt.currround(CASE
1589 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1590
1591 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1592
1593 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1594
1595 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1596
1597 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1598
1599 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1600 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1601 ELSE 0
1602 END,CLAIM_AMOUNT_CURRENCY_CODE))
1603 END,
1604 quantity_shipped = CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
1605 ELSE quantity_shipped - NVL(quantity_approved,0)
1606 END,
1610 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1607 agreement_price = OZF_SD_BATCH_PVT.CURR_ROUND_EXT_PREC( CASE WHEN ( discount_type ='%' OR discount_type = 'NEWPRICE') THEN (LIST_PRICE - ((claim_amount - ozf_utility_pvt.currround(CASE
1608 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1609
1611
1612 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1613
1614 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1615
1616 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1617
1618 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1619 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1620 ELSE 0
1621 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
1622 ELSE quantity_shipped - NVL(quantity_approved,0)
1623 END)))
1624 ELSE agreement_price END,AGREEMENT_CURRENCY_CODE),
1625 discount_value = CASE WHEN ( discount_type ='AMT') THEN ( (claim_amount - ozf_utility_pvt.currround(CASE
1626 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1627
1628 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1629
1630 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1631
1632 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1633
1634 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1635
1636 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1637 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1638 ELSE 0
1639 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
1640 ELSE quantity_shipped - NVL(quantity_approved,0)
1641 END))
1642 WHEN ( discount_type ='NEWPRICE') THEN (LIST_PRICE - ((claim_amount - ozf_utility_pvt.currround(CASE
1643 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1644
1645 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1646
1647 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1648
1649 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1650
1651 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1652
1653 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1654 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1655 ELSE 0
1656 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
1657 ELSE quantity_shipped - NVL(quantity_approved,0)
1658 END)))
1659 WHEN ( discount_type ='%') THEN ROUND((100 - (((LIST_PRICE - ((claim_amount - ozf_utility_pvt.currround(CASE
1660 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1661
1662 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1663
1664 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1665
1666 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1667
1668 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1669
1670 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1671 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1672 ELSE 0
1673 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
1674 ELSE quantity_shipped - NVL(quantity_approved,0)
1675 END)))/NVL(list_price,1)) *100)),2)
1676 ELSE discount_value
1677 END,
1678 object_version_number = object_version_number + 1,
1679 last_update_date = sysdate,
1680 last_updated_by = fnd_global.user_id,
1681 total_approved_qty = CASE WHEN total_approved_amt IS NOT NULL AND total_approved_qty IS NULL THEN NVL(quantity_approved,quantity_shipped)
1682 ELSE total_approved_qty
1683 END
1684 WHERE batch_id = l_batch_id
1685 AND batch_line_id = l_batch_und_appr_lines_tbl(i)
1686 AND purge_flag <> 'Y';
1687 END LOOP;
1688 END IF; --Under approved lines end if
1689
1690 COMMIT;
1691 RETURN;
1692
1693 ELSE
1694
1695 UPDATE ozf_sd_batch_headers_all
1696 SET status_code = 'WIP',
1697 object_version_number = object_version_number + 1,
1698 last_update_date = sysdate,
1699 last_updated_by = fnd_global.user_id
1700 WHERE batch_id = l_batch_id;
1701
1702 UPDATE ozf_sd_batch_lines_int_all
1703 SET processed_flag = 'Y',
1704 last_update_date = sysdate,
1705 last_updated_by = fnd_global.user_id
1706 WHERE ship_frm_sd_claim_request_id = p_batch_number
1707 AND processed_flag = 'N';
1708
1709 COMMIT;
1710 RETURN;
1711
1712 END IF; -- End if For Atleast One Over approved or under approved line
1713 END IF ; -- End if for all lines are over approved case
1714 END IF; --All lines are rejected or if none approved
1715
1716 -- All lines APPROVED case
1717 IF l_cnt_approved_lines = l_cnt_tot_line THEN
1718
1719 UPDATE ozf_sd_batch_headers_all
1720 SET status_code = 'APPROVED',
1721 claim_minor_version = NULL,
1722 object_version_number = object_version_number + 1,
1723 last_update_date = sysdate,
1724 last_updated_by = fnd_global.user_id
1725 WHERE batch_id = l_batch_id;
1726
1727 --Mark all rows as processed
1728 UPDATE ozf_sd_batch_lines_int_all
1729 SET processed_flag = 'Y',
1730 last_update_date = sysdate,
1731 last_updated_by = fnd_global.user_id
1732 WHERE ship_frm_sd_claim_request_id = p_batch_number
1733 AND processed_flag = 'N';
1734
1735 PROCESS_COMP_APPR_BATCH(l_batch_id, x_return_status, x_msg_data);
1736
1737
1738 COMMIT;
1739 RETURN;
1740
1741 END IF; -- All lines APPROVED case
1742
1743
1744 -- If the summation of approved lines and completely approved lines (Rejected line but totally approved) is the total no of lines
1745 -- This scenario is equivalent to all lines being approved.
1746 IF ( NVL( l_cnt_approved_lines,0) + NVL(l_cnt_comp_appr_lines,0) + NVL(l_cnt_over_appr_lines,0) = l_cnt_tot_line ) THEN
1747
1748
1749 UPDATE ozf_sd_batch_headers_all
1750 SET status_code = 'APPROVED',
1751 claim_minor_version = NULL,
1752 object_version_number = object_version_number + 1,
1753 last_update_date = sysdate,
1754 last_updated_by = fnd_global.user_id
1755 WHERE batch_id = l_batch_id;
1756
1757 --Mark all rows as processed
1758 UPDATE ozf_sd_batch_lines_int_all
1759 SET processed_flag = 'Y',
1760 last_update_date = sysdate,
1761 last_updated_by = fnd_global.user_id
1762 WHERE ship_frm_sd_claim_request_id = p_batch_number
1763 AND processed_flag = 'N';
1764
1765 --Update completely approved batch lines
1766 IF((l_batch_comp_appr_lines_tbl IS NOT NULL) AND (l_batch_comp_appr_lines_tbl.COUNT > 0)) THEN
1767 FOR i IN 0..l_batch_comp_appr_lines_tbl.COUNT-1
1768 LOOP
1769 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::UPDATE_DATA',
1770 'In completely approved lines if loop for batch line id '||l_batch_comp_appr_lines_tbl(i));
1771 UPDATE ozf_sd_batch_lines_all
1772 SET status_code = 'APPROVED',
1773 claim_amount = ozf_utility_pvt.currround(CASE
1774 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1775
1776 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1777
1778 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1779
1780 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1781
1782 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1783
1784 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1785 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1786 ELSE 0
1787 END,CLAIM_AMOUNT_CURRENCY_CODE) ,
1788 batch_curr_claim_amount = CASE
1789 WHEN (claim_amount_currency_code = l_batch_currency) THEN ozf_utility_pvt.currround(CASE
1790 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1791
1792 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1793
1794 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1795
1796 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1797
1798 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1799
1800 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1801 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1802 ELSE 0
1803 END,CLAIM_AMOUNT_CURRENCY_CODE)
1804 WHEN ((claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1805 l_batch_currency,
1806 l_func_currency,
1807 (SELECT fu.exchange_rate_type
1808 FROM ozf_funds_utilized_all_b fu
1809 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1810 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1811 NULL,
1812 sysdate,
1813 CASE
1814 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1815
1816 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1817
1818 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1819
1820 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1821
1822 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1823
1824 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1825 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1826 END)
1827
1828 WHEN (claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1829 l_batch_currency,
1830 l_func_currency,
1831 (SELECT fu.exchange_rate_type
1832 FROM ozf_funds_utilized_all_b fu
1833 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1834 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1835 NULL,
1836 (SELECT fu.exchange_rate_date
1840 CASE
1837 FROM ozf_funds_utilized_all_b fu
1838 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1839 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1841 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1842
1843 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1844
1845 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1846
1847 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1848
1849 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1850
1851 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1852 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1853 END)
1854 END,
1855 quantity_shipped = NVL(quantity_approved,quantity_shipped),
1856 discount_value = decode(discount_type,
1857 'AMT',NVL(approved_amount,discount_value),
1858 'NEWPRICE',NVL(approved_amount,agreement_price),
1859 '%',ROUND((100 - ((NVL(approved_amount,agreement_price)/NVL(list_price,1)) *100)),2),discount_value),
1860 agreement_price = decode(discount_type,'%',NVL(approved_amount,agreement_price),'NEWPRICE',NVL(approved_amount,agreement_price),agreement_price),
1861 object_version_number = object_version_number + 1,
1862 last_update_date = sysdate,
1863 last_updated_by = fnd_global.user_id,
1864 total_approved_qty = CASE WHEN total_approved_amt IS NOT NULL AND total_approved_qty IS NULL THEN NVL(quantity_approved,quantity_shipped)
1865 ELSE total_approved_qty
1866 END
1867 WHERE batch_id = l_batch_id
1868 AND batch_line_id = l_batch_comp_appr_lines_tbl(i)
1869 AND purge_flag <> 'Y';
1870
1871 END LOOP;
1872 END IF;--Completely approved lines (Rejected lines but completely approved)
1873
1874 -- If there are over approved lines,update the status of the lines to approved,batch currency claim amount to current approved amount
1875 IF((l_batch_over_appr_lines_tbl IS NOT NULL) AND (l_batch_over_appr_lines_tbl.COUNT > 0)) THEN
1876 FOR i IN 0..l_batch_over_appr_lines_tbl.COUNT-1
1877 LOOP
1878 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
1879 'In over approved lines if loop for batch line id '||l_batch_over_appr_lines_tbl(i));
1880
1881 UPDATE ozf_sd_batch_lines_all
1882 SET status_code = 'APPROVED',
1883 claim_amount = ozf_utility_pvt.currround(CASE
1884 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1885
1886 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1887
1888 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1889
1890 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1891
1892 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1893
1894 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1895 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1896 ELSE 0
1897 END,CLAIM_AMOUNT_CURRENCY_CODE) ,
1898 batch_curr_claim_amount = CASE
1899 WHEN (claim_amount_currency_code = l_batch_currency) THEN ozf_utility_pvt.currround(CASE
1900 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1901
1902 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1903
1904 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1905
1906 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1907
1908 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1909
1910 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1911 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1912 ELSE 0
1913 END,CLAIM_AMOUNT_CURRENCY_CODE)
1914 WHEN ((claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1915 l_batch_currency,
1916 l_func_currency,
1917 (SELECT fu.exchange_rate_type
1918 FROM ozf_funds_utilized_all_b fu
1919 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1920 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1921 NULL,
1922 sysdate,
1923 CASE
1924 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1925
1926 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1927
1928 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1929
1930 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1931
1932 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1933
1934 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1935 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1936 END)
1937
1938 WHEN (claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
1939 l_batch_currency,
1940 l_func_currency,
1941 (SELECT fu.exchange_rate_type
1942 FROM ozf_funds_utilized_all_b fu
1943 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1944 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1945 NULL,
1946 (SELECT fu.exchange_rate_date
1947 FROM ozf_funds_utilized_all_b fu
1948 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
1949 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
1950 CASE
1951 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
1952
1953 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
1954
1955 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
1956
1957 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
1958
1959 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
1960
1961 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
1962 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
1963 END)
1964 END,
1965 quantity_shipped = NVL(quantity_approved,quantity_shipped),
1966 discount_value = decode(discount_type,
1967 'AMT',NVL(approved_amount,discount_value),
1968 'NEWPRICE',NVL(approved_amount,agreement_price),
1969 '%',ROUND((100 - ((NVL(approved_amount,agreement_price)/NVL(list_price,1)) *100)),2),discount_value),
1970 agreement_price = decode(discount_type,'%',NVL(approved_amount,agreement_price),'NEWPRICE',NVL(approved_amount,agreement_price),agreement_price),
1971 object_version_number = object_version_number + 1,
1972 last_update_date = sysdate,
1973 last_updated_by = fnd_global.user_id,
1974 total_approved_qty = CASE WHEN total_approved_amt IS NOT NULL AND total_approved_qty IS NULL THEN NVL(quantity_approved,quantity_shipped)
1975 ELSE total_approved_qty
1976 END
1977 WHERE batch_id = l_batch_id
1978 AND batch_line_id = l_batch_over_appr_lines_tbl(i)
1979 AND purge_flag <> 'Y';
1980
1981 END LOOP;
1982 END IF;--Over Approved Lines
1983
1984
1985
1986 PROCESS_COMP_APPR_BATCH(l_batch_id, x_return_status, x_msg_data);
1987
1988 COMMIT;
1989 RETURN;
1990
1991 --Not all lines Approved and atleast there is one APPROVED line -- Forking required
1992 ELSE IF ( ( l_cnt_approved_lines > 0 ) AND ( l_cnt_approved_lines <> l_cnt_tot_line ) ) THEN
1993
1994 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
1995 'atleast there is one approved line,before child batch creation');
1996
1997 PROCESS_CHILD_BATCH(l_batch_id,l_batch_appr_lines_tbl,l_batch_und_appr_lines_tbl,l_batch_over_appr_lines_tbl,l_batch_comp_appr_lines_tbl, x_return_status, x_msg_data);
1998
1999 --set batch header as WIP for parent batch
2000 UPDATE ozf_sd_batch_headers_all
2001 SET status_code = 'WIP',
2002 object_version_number = object_version_number + 1,
2003 claim_minor_version = l_claim_minor_version + 1,
2004 last_update_date = sysdate,
2005 last_updated_by = fnd_global.user_id
2006 WHERE batch_id = l_batch_id;
2007
2008 --Mark all rows as processed
2009 UPDATE ozf_sd_batch_lines_int_all
2010 SET processed_flag = 'Y',
2011 last_update_date = sysdate,
2012 last_updated_by = fnd_global.user_id
2013 WHERE ship_frm_sd_claim_request_id = p_batch_number
2014 AND processed_flag = 'N';
2015
2016 --Update the following fields for the under approved batch lines
2017 -- batch_curr_claim_amount,agreement_price(for discount type %,New Price) and discount value for discount type amount,processed_flag
2018 -- Status code of the under approved line has to be set as partially approved
2019 IF((l_batch_und_appr_lines_tbl IS NOT NULL) AND (l_batch_und_appr_lines_tbl.COUNT > 0)) THEN
2020 FOR i IN 0..l_batch_und_appr_lines_tbl.COUNT-1
2021 LOOP
2022 UPDATE ozf_sd_batch_lines_all
2023 SET status_code = 'PARTIALLY_APPROVED',
2024 claim_amount = claim_amount - ozf_utility_pvt.currround(CASE
2025 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2026
2027 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2028
2029 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2030
2031 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2032
2033 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2034
2035 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2036 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2037 ELSE 0
2038 END,CLAIM_AMOUNT_CURRENCY_CODE) ,
2039 batch_curr_claim_amount = CASE
2040 WHEN (claim_amount_currency_code = l_batch_currency) THEN ( claim_amount - ozf_utility_pvt.currround(CASE
2041 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2042
2043 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2044
2045 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2046
2047 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2048
2049 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2050
2051 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2052 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2053 ELSE 0
2054 END,CLAIM_AMOUNT_CURRENCY_CODE))
2055 WHEN ((claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
2056 l_batch_currency,
2057 l_func_currency,
2058 (SELECT fu.exchange_rate_type
2059 FROM ozf_funds_utilized_all_b fu
2060 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2061 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
2062 NULL,
2063 sysdate,
2064 claim_amount - ozf_utility_pvt.currround(CASE
2065 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2066
2067 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2068
2069 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2070
2074
2071 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2072
2073 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2075 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2076 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2077 ELSE 0
2078 END,CLAIM_AMOUNT_CURRENCY_CODE))
2079
2080 WHEN (claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
2081 l_batch_currency,
2082 l_func_currency,
2083 (SELECT fu.exchange_rate_type
2084 FROM ozf_funds_utilized_all_b fu
2085 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2086 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
2087 NULL,
2088 (SELECT fu.exchange_rate_date
2089 FROM ozf_funds_utilized_all_b fu
2090 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2091 AND ozf_sd_batch_lines_all.batch_id = l_batch_id),
2092 claim_amount - ozf_utility_pvt.currround(CASE
2093 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2094
2095 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2096
2097 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2098
2099 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2100
2101 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2102
2103 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2104 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2105 ELSE 0
2106 END,CLAIM_AMOUNT_CURRENCY_CODE))
2107 END,
2108 quantity_shipped = CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
2109 ELSE quantity_shipped - NVL(quantity_approved,0)
2110 END,
2111 agreement_price =OZF_SD_BATCH_PVT.CURR_ROUND_EXT_PREC( CASE WHEN ( discount_type ='%' OR discount_type = 'NEWPRICE') THEN (LIST_PRICE - ((claim_amount - ozf_utility_pvt.currround(CASE
2112 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2113
2114 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2115
2116 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2117
2118 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2119
2120 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2121
2122 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2123 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2124 ELSE 0
2125 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
2126 ELSE quantity_shipped - NVL(quantity_approved,0)
2127 END)))
2128 ELSE agreement_price END ,agreement_currency_code),
2129 discount_value = CASE WHEN ( discount_type ='AMT') THEN ( (claim_amount - ozf_utility_pvt.currround(CASE
2130 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2131
2132 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2133
2134 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2135
2136 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2137
2141 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2138 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2139
2140 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2142 ELSE 0
2143 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
2144 ELSE quantity_shipped - NVL(quantity_approved,0)
2145 END))
2146 WHEN ( discount_type ='NEWPRICE') THEN (LIST_PRICE - ((claim_amount - ozf_utility_pvt.currround(CASE
2147 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2148
2149 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2150
2151 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2152
2153 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2154
2155 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2156
2157 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2158 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2159 ELSE 0
2160 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
2161 ELSE quantity_shipped - NVL(quantity_approved,0)
2162 END)))
2163 WHEN ( discount_type ='%') THEN ROUND((100 - (((LIST_PRICE - ((claim_amount - ozf_utility_pvt.currround(CASE
2164 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2165
2166 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2167
2168 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2169
2170 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2171
2172 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2173
2174 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2175 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2176 ELSE 0
2177 END,CLAIM_AMOUNT_CURRENCY_CODE))/(CASE WHEN (quantity_shipped - NVL(quantity_approved,0) = 0) THEN quantity_shipped
2178 ELSE quantity_shipped - NVL(quantity_approved,0)
2179 END)))/NVL(list_price,1)) *100)),2)
2180 ELSE discount_value
2181 END,
2182 object_version_number = object_version_number + 1,
2183 last_update_date = sysdate,
2184 last_updated_by = fnd_global.user_id,
2185 total_approved_qty = CASE WHEN total_approved_amt IS NOT NULL AND total_approved_qty IS NULL THEN NVL(quantity_approved,quantity_shipped)
2186 ELSE total_approved_qty
2187 END
2188 WHERE batch_id = l_batch_id
2189 AND batch_line_id = l_batch_und_appr_lines_tbl(i)
2190 AND purge_flag <> 'Y';
2191 END LOOP;
2192 END IF; --Under approved lines end if
2193
2194
2195
2196
2197
2198 COMMIT;
2199 RETURN;
2200
2201 END IF;
2202 END IF; -- Not all lines Approved and atleast there is one APPROVED line
2203
2204 --If partial approval is not allowed for a batch
2205 ELSE
2206
2207 FOR V_MISS_REJ_APP_REC IN C_MISS_REJ_APP
2208
2209 LOOP
2210
2211 UPDATE ozf_sd_batch_lines_all
2212 SET status_code = V_MISS_REJ_APP_REC.stat_code,
2213 approved_amount = (case when (original_claim_amount > 0) THEN V_MISS_REJ_APP_REC.auth_cost
2214 when (original_claim_amount < 0 AND V_MISS_REJ_APP_REC.line_status_code = 'APPROVED') then V_MISS_REJ_APP_REC.auth_cost end),
2215
2216 approved_currency_code = (case when (original_claim_amount > 0) THEN V_MISS_REJ_APP_REC.auth_curr_code
2217 when (original_claim_amount < 0 AND V_MISS_REJ_APP_REC.line_status_code = 'APPROVED') THEN V_MISS_REJ_APP_REC.auth_curr_code end),
2218
2219 object_version_number = object_version_number + 1,
2220 last_update_date = sysdate,
2221 last_updated_by = fnd_global.user_id,
2222 vendor_ref_id = V_MISS_REJ_APP_REC.credit_reference_id,
2226 batch_curr_claim_amount = decode(V_MISS_REJ_APP_REC.stat_code,'APPROVED',V_MISS_REJ_APP_REC.computed_batch_curr_claim_amt, batch_curr_claim_amount),
2223 quantity_approved = (case when (original_claim_amount > 0) THEN V_MISS_REJ_APP_REC.vendor_auth_quantity
2224 when (original_claim_amount < 0 AND V_MISS_REJ_APP_REC.line_status_code = 'APPROVED') THEN V_MISS_REJ_APP_REC.vendor_auth_quantity end),
2225
2227 adjustment_type_id = (case when ( (original_claim_amount > 0)
2228 AND (V_MISS_REJ_APP_REC.approved_claim_amount > original_claim_amount)
2229 AND V_MISS_REJ_APP_REC.adjustment_type <> 'STANDARD'
2230 AND V_MISS_REJ_APP_REC.line_status_code<>'APPROVED' )
2231 THEN l_ssd_inc_adj_type_id
2232 when ( (original_claim_amount > 0)
2233 AND (V_MISS_REJ_APP_REC.approved_claim_amount < original_claim_amount)
2234 AND V_MISS_REJ_APP_REC.adjustment_type <> 'DECREASE_EARNED'
2235 AND V_MISS_REJ_APP_REC.line_status_code<>'APPROVED' )
2236 THEN l_ssd_dec_adj_type_id
2237 else
2238 adjustment_type_id
2239 end)
2240 WHERE batch_id = l_batch_id
2241 AND batch_line_number = V_MISS_REJ_APP_REC.batch_line_number
2242 AND purge_flag <> 'Y'
2243 AND status_code = 'SUBMITTED';
2244
2245 END LOOP ;
2246
2247 --get total number of lines
2248 SELECT COUNT(1)
2249 INTO l_cnt_tot_line
2250 FROM ozf_sd_batch_lines_all
2251 WHERE batch_id = l_batch_id
2252 AND purge_flag <> 'Y';
2253
2254 --get number of approved lines
2255 SELECT COUNT(1)
2256 INTO l_cnt_approved_lines
2257 FROM ozf_sd_batch_lines_all
2258 WHERE batch_id = l_batch_id
2259 AND status_code = 'APPROVED'
2260 AND purge_flag <> 'Y';
2261
2262 --get number of rejected lines
2263 SELECT COUNT(1)
2264 INTO l_cnt_rejected_lines
2265 FROM ozf_sd_batch_lines_all
2266 WHERE batch_id = l_batch_id
2267 AND status_code = 'REJECTED'
2268 AND purge_flag <> 'Y';
2269
2270 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data', 'number of total lines: '||l_cnt_tot_line);
2271 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data', 'number of rejected lines: '||l_cnt_rejected_lines);
2272 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data', 'number of approved lines: '||l_cnt_approved_lines);
2273
2274
2275 --All lines are rejected or if none approved
2276
2277 IF ( ( l_cnt_rejected_lines = l_cnt_tot_line) OR ( l_cnt_approved_lines = 0 ) ) THEN
2278
2279
2280 UPDATE ozf_sd_batch_headers_all
2281 SET status_code = 'WIP',
2282 object_version_number = object_version_number + 1,
2283 last_update_date = sysdate,
2284 last_updated_by = fnd_global.user_id
2285 WHERE batch_id = l_batch_id;
2286
2287 UPDATE ozf_sd_batch_lines_int_all
2288 SET processed_flag = 'Y',
2289 last_update_date = sysdate,
2290 last_updated_by = fnd_global.user_id
2291 WHERE ship_frm_sd_claim_request_id = p_batch_number
2292 AND processed_flag = 'N';
2293
2294 COMMIT;
2295 RETURN;
2296
2297 END IF; --All lines are rejected or if none approved
2298
2299 -- All lines APPROVED case
2300 IF l_cnt_approved_lines = l_cnt_tot_line THEN
2301
2302 UPDATE ozf_sd_batch_headers_all
2303 SET status_code = 'APPROVED',
2304 claim_minor_version = NULL,
2305 object_version_number = object_version_number + 1,
2306 last_update_date = sysdate,
2307 last_updated_by = fnd_global.user_id
2308 WHERE batch_id = l_batch_id;
2309
2310 --Mark all rows as processed
2311 UPDATE ozf_sd_batch_lines_int_all
2312 SET processed_flag = 'Y',
2313 last_update_date = sysdate,
2314 last_updated_by = fnd_global.user_id
2315 WHERE ship_frm_sd_claim_request_id = p_batch_number
2316 AND processed_flag = 'N';
2317
2318 PROCESS_COMP_APPR_BATCH(l_batch_id, x_return_status, x_msg_data);
2319 COMMIT;
2320 RETURN;
2321
2322 END IF; -- All lines APPROVED case
2323
2324
2325 --Not all lines Approved and atleast there is one APPROVED line -- Forking required
2326 IF ( ( l_cnt_approved_lines > 0 ) AND ( l_cnt_approved_lines <> l_cnt_tot_line ) ) THEN
2327
2328 PROCESS_CHILD_BATCH(l_batch_id, x_return_status, x_msg_data);
2329
2330 --set batch header as WIP for parent batch
2331 UPDATE ozf_sd_batch_headers_all
2332 SET status_code = 'WIP',
2333 object_version_number = object_version_number + 1,
2334 claim_minor_version = l_claim_minor_version + 1,
2335 last_update_date = sysdate,
2336 last_updated_by = fnd_global.user_id
2337 WHERE batch_id = l_batch_id;
2338
2339 --Mark all rows as processed
2340 UPDATE ozf_sd_batch_lines_int_all
2341 SET processed_flag = 'Y',
2342 last_update_date = sysdate,
2343 last_updated_by = fnd_global.user_id
2344 WHERE ship_frm_sd_claim_request_id = p_batch_number
2345 AND processed_flag = 'N';
2346
2347 COMMIT;
2351 END IF; -- Partial approval is not allowed
2348 RETURN;
2349
2350 END IF; -- Not all lines Approved and atleast there is one APPROVED line
2352
2353
2354 IF x_return_status = fnd_api.g_ret_sts_error THEN
2355 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_data',
2356 'Entered throwing exception' || x_msg_data);
2357 fnd_message.set_name('OZF', 'OZF_SD_FEED_DATA_ERROR');
2358 fnd_message.set_token('MESSAGE', x_msg_data);
2359 RAISE fnd_api.g_exc_error;
2360 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
2361 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data',
2362 'Entered throwing unexpected exception');
2363 fnd_message.set_name('OZF', 'OZF_SD_FEED_DATA_ERROR');
2364 fnd_message.set_token('MESSAGE', x_msg_data);
2365 RAISE fnd_api.g_exc_unexpected_error;
2366 END IF;
2367
2368 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data', 'Procedure Ends');
2369
2370 EXCEPTION
2371 WHEN fnd_api.g_exc_error THEN
2372 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data',
2373 'OZF EXCEPTION G_EXC_ERROR: '||x_msg_data);
2374 x_return_status := fnd_api.g_ret_sts_error;
2375 fnd_message.set_name('OZF', 'OZF_SD_FEED_DATA_ERROR');
2376 fnd_message.set_token('MESSAGE', x_msg_data);
2377 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data',
2378 'OZF done:' || x_msg_data || '::::');
2379
2380 WHEN fnd_api.g_exc_unexpected_error THEN
2381 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data',
2382 'OZF EXCEPTION G_EXC_UNEXPECTED_ERROR');
2383 x_return_status := fnd_api.g_ret_sts_unexp_error;
2384 fnd_message.set_name('OZF', 'OZF_SD_FEED_DATA_ERROR');
2385 fnd_message.set_token('MESSAGE', x_msg_data);
2386 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data',
2387 'OZF done G_EXC_UNEXPECTED_ERROR:' || x_msg_data || '::::');
2388 WHEN others THEN
2389 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data',
2390 'OZF EXCEPTION OTHERS' || sqlerrm);
2391 x_return_status := fnd_api.g_ret_sts_error;
2392 fnd_message.set_name('OZF', 'OZF_SD_FEED_DATA_ERROR');
2393 fnd_message.set_token('MESSAGE', x_msg_data);
2394 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT:update_data',
2395 'OZF done OTHERS:' || x_msg_data ||'::::');
2396 END update_data;
2397
2398
2399
2400 PROCEDURE PROCESS_CHILD_BATCH(p_batch_id IN NUMBER,
2401 p_batch_appr_lines_tbl IN number_tbl,
2402 p_batch_undr_appr_lines_tbl IN number_tbl,
2403 p_batch_over_appr_lines_tbl IN number_tbl,
2404 p_batch_comp_appr_lines_tbl IN number_tbl,
2405 x_return_status OUT nocopy VARCHAR2,
2406 x_msg_data OUT nocopy VARCHAR2) IS
2407
2408 l_batch_line_tbl_rec OZF_SD_BATCH_LINES_ALL%ROWTYPE;
2409 l_cnt_total_line NUMBER;
2410 l_cnt_rejected_line NUMBER;
2411 l_new_batch_id NUMBER := NULL;
2412 l_message VARCHAR2(1000);
2413 l_vendor_id NUMBER;
2414 l_vendor_site_id NUMBER;
2415 l_org_id NUMBER;
2416 l_claim_amount NUMBER;
2417 l_dup_dispute NUMBER;
2418 l_batch_threshold NUMBER;
2419 l_line_threshold NUMBER;
2420 l_currency_code VARCHAR2(20);
2421 l_batch_number VARCHAR2(20);
2422 l_par_batch_curr_code VARCHAR2(20);
2423 l_par_batch_owner_id NUMBER;
2424 l_claim_number VARCHAR2(30);
2425 l_claim_id NUMBER;
2426 l_claim_minor_version NUMBER;
2427 l_msg_count NUMBER;
2428
2429 l_tot_app_claim_amt NUMBER ;
2430 l_batch_type VARCHAR2(30);
2431 l_func_currency VARCHAR2(15);
2432 l_batch_currency VARCHAR2(15);
2433 l_line_clm_amt NUMBER;
2434 l_line_batch_curr_clm_amt NUMBER;
2435
2436
2437 --Start: Fix for Bug 10628160
2438 l_custom_setup_id NUMBER := NULL;
2439 l_claim_rec OZF_Claim_PVT.claim_rec_type := NULL;
2440 l_clam_def_rec_type ozf_claim_def_rule_pvt.clam_def_rec_type := NULL;
2441 l_split_claim_id NUMBER := NULL;
2442 l_msg_count3 NUMBER := NULL;
2443 l_msg_data VARCHAR2(100) := NULL;
2444 l_msg_count2 NUMBER := NULL;
2445 l_msg_data2 VARCHAR2(100) := NULL;
2446 l_return_status2 VARCHAR2(15) := NULL;
2447 l_return_status VARCHAR2(15) := NULL;
2448
2449 --End: Fix for Bug 10628160
2450
2451
2452 BEGIN
2453
2454 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
2455 'Procedure Starts: Batch Id :'||p_batch_id);
2456
2457
2458 SELECT batch_number, vendor_id, vendor_site_id, org_id,
2459 currency_code, batch_amount_threshold, batch_line_amount_threshold, claim_number, claim_minor_version,batch_type,owner_id,currency_code
2460 INTO l_batch_number, l_vendor_id, l_vendor_site_id, l_org_id,
2461 l_par_batch_curr_code, l_batch_threshold, l_line_threshold, l_claim_number, l_claim_minor_version,l_batch_type,l_par_batch_owner_id,l_batch_currency
2462 FROM ozf_sd_batch_headers_all
2463 WHERE batch_id = p_batch_id;
2464
2465 SELECT gs.currency_code
2466 INTO l_func_currency
2467 FROM gl_sets_of_books gs,
2468 ozf_sys_parameters_all org,
2469 ozf_sd_batch_headers_all bh
2473
2470 WHERE org.set_of_books_id = gs.set_of_books_id
2471 AND org.org_id = bh.org_id
2472 AND bh.batch_id = p_batch_id;
2474 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
2475 'Functional currency for :'||p_batch_id||' : '||l_func_currency);
2476
2477 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
2478 'Batch currency for :'||p_batch_id||' : '||l_batch_currency);
2479
2480 ozf_sd_batch_pvt.create_batch_header(l_vendor_id,
2481 l_vendor_site_id,
2482 l_org_id,
2483 l_batch_threshold,
2484 l_line_threshold,
2485 l_par_batch_curr_code,
2486 'F' ,
2487 'APPROVED',
2488 l_claim_number||'_'||l_claim_minor_version,
2489 l_claim_minor_version,
2490 p_batch_id, -- current batch (i.e) parent batch_id
2491 l_new_batch_id,
2492 l_batch_type,
2493 l_par_batch_owner_id);
2494
2495 -- if there are approved lines update the batch_id of the approved lines to the new batch id
2496 IF((p_batch_appr_lines_tbl IS NOT NULL) AND (p_batch_appr_lines_tbl.COUNT > 0)) THEN
2497 UPDATE ozf_sd_batch_lines_all
2498 SET batch_id = l_new_batch_id,
2499 object_version_number = object_version_number + 1,
2500 last_update_date = sysdate,
2501 last_updated_by = fnd_global.user_id
2502 WHERE batch_id = p_batch_id
2503 AND status_code = 'APPROVED'
2504 AND purge_flag <> 'Y';
2505 END IF; -- Approved lines
2506 -- If there are completely approved lines update the status of the lines to approved,batch currency claim amount to current approved amount
2507 IF((p_batch_comp_appr_lines_tbl IS NOT NULL) AND (p_batch_comp_appr_lines_tbl.COUNT > 0)) THEN
2508 FOR i IN 0..p_batch_comp_appr_lines_tbl.COUNT-1
2509 LOOP
2510 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
2511 'In completely approved lines if loop for batch line id '||p_batch_comp_appr_lines_tbl(i));
2512 UPDATE ozf_sd_batch_lines_all
2513 SET batch_id = l_new_batch_id,
2514 status_code = 'APPROVED',
2515 claim_amount = ozf_utility_pvt.currround(CASE
2516 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2517
2518 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2519
2520 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2521
2522 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2523
2524 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2525
2526 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2527 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2528 ELSE 0
2529 END,CLAIM_AMOUNT_CURRENCY_CODE) ,
2530 batch_curr_claim_amount = CASE
2531 WHEN (claim_amount_currency_code = l_batch_currency) THEN ozf_utility_pvt.currround(CASE
2532 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2533
2534 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2535
2536 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2537
2538 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2539
2540 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2541
2542 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2543 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2544 ELSE 0
2545 END,CLAIM_AMOUNT_CURRENCY_CODE)
2546 WHEN ((claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
2547 l_batch_currency,
2548 l_func_currency,
2549 (SELECT fu.exchange_rate_type
2550 FROM ozf_funds_utilized_all_b fu
2551 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2552 AND ozf_sd_batch_lines_all.batch_id = p_batch_id),
2553 NULL,
2554 sysdate,
2555 CASE
2559
2556 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2557
2558 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2560 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2561
2562 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2563
2564 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2565
2566 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2567 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2568 END)
2569
2570 WHEN (claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
2571 l_batch_currency,
2572 l_func_currency,
2573 (SELECT fu.exchange_rate_type
2574 FROM ozf_funds_utilized_all_b fu
2575 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2576 AND ozf_sd_batch_lines_all.batch_id = p_batch_id),
2577 NULL,
2578 (SELECT fu.exchange_rate_date
2579 FROM ozf_funds_utilized_all_b fu
2580 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2581 AND ozf_sd_batch_lines_all.batch_id = p_batch_id),
2582 CASE
2583 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
2584
2585 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
2586
2587 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
2588
2589 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
2590
2591 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
2592
2593 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
2594 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
2595 END)
2596 END,
2597 quantity_shipped = NVL(quantity_approved,quantity_shipped),
2598 discount_value = decode(discount_type,
2599 'AMT',NVL(approved_amount,discount_value),
2600 'NEWPRICE',NVL(approved_amount,agreement_price),
2601 '%',ROUND((100 - ((NVL(approved_amount,agreement_price)/NVL(list_price,1)) *100)),2),discount_value),
2602 agreement_price = decode(discount_type,'%',NVL(approved_amount,agreement_price),'NEWPRICE',NVL(approved_amount,agreement_price),agreement_price),
2603 total_approved_qty = CASE WHEN total_approved_amt IS NOT NULL AND total_approved_qty IS NULL THEN NVL(quantity_approved,quantity_shipped)
2604 ELSE total_approved_qty
2605 END,
2606 object_version_number = object_version_number + 1,
2607 last_update_date = sysdate,
2608 last_updated_by = fnd_global.user_id
2609
2610 WHERE batch_id = p_batch_id
2611 AND batch_line_id = p_batch_comp_appr_lines_tbl(i)
2612 AND purge_flag <> 'Y';
2613
2614 END LOOP;
2615 END IF;--Completely approved lines (Rejected lines but completely approved)
2616
2617 -- If there are under approved lines,create split lines
2618 IF((p_batch_undr_appr_lines_tbl IS NOT NULL) AND (p_batch_undr_appr_lines_tbl.COUNT > 0)) THEN
2619 FOR i IN 0..p_batch_undr_appr_lines_tbl.COUNT-1
2620 LOOP
2621
2622 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
2623 'In under approved lines if loop for batch line id '||p_batch_undr_appr_lines_tbl(i));
2624
2625 SELECT * INTO l_batch_line_tbl_rec
2626 FROM OZF_SD_BATCH_LINES_ALL
2627 WHERE batch_id = p_batch_id
2628 AND batch_line_id =p_batch_undr_appr_lines_tbl(i);
2629
2630 l_line_clm_amt := ozf_utility_pvt.currround(CASE
2631 WHEN((l_batch_line_tbl_rec.approved_amount is null and l_batch_line_tbl_rec.quantity_approved is null)
2632 OR ( l_batch_line_tbl_rec.approved_currency_code <> l_batch_line_tbl_rec.CLAIM_AMOUNT_CURRENCY_CODE )
2633 OR l_batch_line_tbl_rec.approved_amount < 0 OR (l_batch_line_tbl_rec.original_claim_amount > 0
2634 and l_batch_line_tbl_rec.quantity_approved < 0) ) then 0
2635
2636 WHEN (l_batch_line_tbl_rec.approved_amount is null and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2637 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2641 and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2638 THEN ((l_batch_line_tbl_rec.list_price-l_batch_line_tbl_rec.agreement_price) * l_batch_line_tbl_rec.quantity_approved)
2639
2640 WHEN (l_batch_line_tbl_rec.approved_amount is null
2642 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2643 THEN (l_batch_line_tbl_rec.discount_value * l_batch_line_tbl_rec.quantity_approved)
2644
2645 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2646 and l_batch_line_tbl_rec.approved_amount is not null
2647 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2648 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2649
2650 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2651 and l_batch_line_tbl_rec.approved_amount is not null
2652 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2653 THEN (l_batch_line_tbl_rec.approved_amount * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2654
2655 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2656 and l_batch_line_tbl_rec.approved_amount is not null
2657 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2658 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2659 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2660 and l_batch_line_tbl_rec.approved_amount is not null
2661 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2662 THEN ((l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2663 ELSE 0
2664 END,l_batch_line_tbl_rec.CLAIM_AMOUNT_CURRENCY_CODE);
2665 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
2666 'In under approved lines if loop for batch line id '||p_batch_undr_appr_lines_tbl(i) ||' claim amount in request currency l_line_clm_amt: '||l_line_clm_amt);
2667
2668 SELECT CASE
2669 WHEN (l_batch_line_tbl_rec.claim_amount_currency_code = l_batch_currency)
2670 THEN ozf_utility_pvt.currround(CASE
2671 WHEN((l_batch_line_tbl_rec.approved_amount is null
2672 and l_batch_line_tbl_rec.quantity_approved is null)
2673 OR ( l_batch_line_tbl_rec.approved_currency_code <> l_batch_line_tbl_rec.CLAIM_AMOUNT_CURRENCY_CODE )
2674 OR l_batch_line_tbl_rec.approved_amount < 0 OR (l_batch_line_tbl_rec.original_claim_amount > 0
2675 and l_batch_line_tbl_rec.quantity_approved < 0) ) then 0
2676
2677 WHEN (l_batch_line_tbl_rec.approved_amount is null
2678 and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2679 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2680 THEN ((l_batch_line_tbl_rec.list_price-l_batch_line_tbl_rec.agreement_price) * l_batch_line_tbl_rec.quantity_approved)
2681
2682 WHEN (l_batch_line_tbl_rec.approved_amount is null
2683 and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2684 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2685 THEN (l_batch_line_tbl_rec.discount_value * l_batch_line_tbl_rec.quantity_approved)
2686
2687 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2688 and l_batch_line_tbl_rec.approved_amount is not null
2689 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2690 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2691
2692 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2693 and l_batch_line_tbl_rec.approved_amount is not null
2694 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2695 THEN (l_batch_line_tbl_rec.approved_amount * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2696
2697 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2698 and l_batch_line_tbl_rec.approved_amount is not null
2699 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2700 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2701 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2702 and l_batch_line_tbl_rec.approved_amount is not null
2703 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2704 THEN ((l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2705 ELSE 0
2706 END,l_batch_line_tbl_rec.CLAIM_AMOUNT_CURRENCY_CODE)
2707 WHEN ((l_batch_line_tbl_rec.claim_amount_currency_code = l_func_currency)
2708 AND (l_func_currency <> l_batch_currency))
2709 THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(l_batch_line_tbl_rec.claim_amount_currency_code,
2710 l_batch_currency,
2711 l_func_currency,
2712 (SELECT fu.exchange_rate_type
2713 FROM ozf_funds_utilized_all_b fu,
2714 ozf_sd_batch_lines_all
2715 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2716 AND ozf_sd_batch_lines_all.batch_line_id =l_batch_line_tbl_rec.batch_line_id),
2717 NULL,
2718 sysdate,
2719 CASE WHEN((l_batch_line_tbl_rec.approved_amount is null
2720 and l_batch_line_tbl_rec.quantity_approved is null)
2721 OR ( l_batch_line_tbl_rec.approved_currency_code <> l_batch_line_tbl_rec.CLAIM_AMOUNT_CURRENCY_CODE )
2722 OR l_batch_line_tbl_rec.approved_amount < 0 OR (l_batch_line_tbl_rec.original_claim_amount > 0
2726 and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2723 and l_batch_line_tbl_rec.quantity_approved < 0) ) then 0
2724
2725 WHEN (l_batch_line_tbl_rec.approved_amount is null
2727 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2728 THEN ((l_batch_line_tbl_rec.list_price-l_batch_line_tbl_rec.agreement_price) * l_batch_line_tbl_rec.quantity_approved)
2729
2730 WHEN (l_batch_line_tbl_rec.approved_amount is null
2731 and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2732 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2733 THEN (l_batch_line_tbl_rec.discount_value * l_batch_line_tbl_rec.quantity_approved)
2734
2735 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2736 and l_batch_line_tbl_rec.approved_amount is not null
2737 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2738 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2739
2740 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2741 and l_batch_line_tbl_rec.approved_amount is not null
2742 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2743 THEN (l_batch_line_tbl_rec.approved_amount * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2744
2745 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2746 and l_batch_line_tbl_rec.approved_amount is not null
2747 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2748 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2749 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2750 and l_batch_line_tbl_rec.approved_amount is not null
2751 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2752 THEN ((l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2753 ELSE 0
2754 END)
2755
2756 WHEN (l_batch_line_tbl_rec.claim_amount_currency_code <> l_func_currency)
2757 THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(l_batch_line_tbl_rec.claim_amount_currency_code,
2758 l_batch_currency,
2759 l_func_currency,
2760 (SELECT fu.exchange_rate_type
2761 FROM ozf_funds_utilized_all_b fu,
2762 ozf_sd_batch_lines_all
2763 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2764 AND ozf_sd_batch_lines_all.batch_line_id =l_batch_line_tbl_rec.batch_line_id),
2765 NULL,
2766 (SELECT fu.exchange_rate_date
2767 FROM ozf_funds_utilized_all_b fu,
2768 ozf_sd_batch_lines_all
2769 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
2770 AND ozf_sd_batch_lines_all.batch_line_id =l_batch_line_tbl_rec.batch_line_id),
2771 CASE WHEN((l_batch_line_tbl_rec.approved_amount is null
2772 and l_batch_line_tbl_rec.quantity_approved is null)
2773 OR ( l_batch_line_tbl_rec.approved_currency_code <> l_batch_line_tbl_rec.CLAIM_AMOUNT_CURRENCY_CODE )
2774 OR l_batch_line_tbl_rec.approved_amount < 0 OR (l_batch_line_tbl_rec.original_claim_amount > 0
2775 and l_batch_line_tbl_rec.quantity_approved < 0) ) then 0
2776
2777 WHEN (l_batch_line_tbl_rec.approved_amount is null
2778 and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2779 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2780 THEN ((l_batch_line_tbl_rec.list_price-l_batch_line_tbl_rec.agreement_price) * l_batch_line_tbl_rec.quantity_approved)
2781
2782 WHEN (l_batch_line_tbl_rec.approved_amount is null
2783 and l_batch_line_tbl_rec.quantity_approved IS NOT NULL
2784 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2785 THEN (l_batch_line_tbl_rec.discount_value * l_batch_line_tbl_rec.quantity_approved)
2786
2787 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2788 and l_batch_line_tbl_rec.approved_amount is not null
2789 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2790 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2791
2792 WHEN (l_batch_line_tbl_rec.quantity_approved is null
2793 and l_batch_line_tbl_rec.approved_amount is not null
2794 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2795 THEN (l_batch_line_tbl_rec.approved_amount * l_batch_line_tbl_rec.QUANTITY_SHIPPED)
2796
2797 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2798 and l_batch_line_tbl_rec.approved_amount is not null
2799 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('NEWPRICE','%'))
2800 THEN ((l_batch_line_tbl_rec.list_price - l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2801 WHEN (l_batch_line_tbl_rec.quantity_approved is not null
2802 and l_batch_line_tbl_rec.approved_amount is not null
2803 AND l_batch_line_tbl_rec.DISCOUNT_TYPE IN ('AMT'))
2804 THEN ((l_batch_line_tbl_rec.approved_amount) * l_batch_line_tbl_rec.quantity_approved)
2805 ELSE 0
2806 END)
2807 END INTO l_line_batch_curr_clm_amt from dual;
2808
2809 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
2810 'In under approved lines if loop for batch line id '||p_batch_undr_appr_lines_tbl(i) ||' claim amount in batch currency l_line_batch_curr_clm_amt: '||l_line_batch_curr_clm_amt);
2811
2812 INSERT INTO OZF_SD_BATCH_LINES_ALL
2816 batch_line_number,
2813 (batch_line_id,
2814 object_version_number,
2815 batch_id,
2817 utilization_id,
2818 agreement_number,
2819 ship_to_org_id,
2820 ship_to_contact_id,
2821 sold_to_customer_id,
2822 sold_to_contact_id,
2823 sold_to_site_use_id,
2824 end_customer_id,
2825 end_customer_contact_id,
2826 order_header_id,
2827 order_line_id,
2828 invoice_number,
2829 invoice_line_number,
2830 resale_price_currency_code,
2831 resales_price,
2832 list_price_currency_code,
2833 list_price,
2834 agreement_currency_code,
2835 agreement_price,
2836 status_code,
2837 claim_amount,
2838 claim_amount_currency_code,
2839 batch_curr_claim_amount,
2840 original_claim_amount,
2841 batch_curr_orig_claim_amount,
2842 item_id,
2843 vendor_item_id,
2844 shipped_quantity_uom,
2845 last_sub_claim_amount,
2846 acctd_amount_remaining,
2847 univ_curr_amount_remaining,
2848 fund_request_amount_remaining,
2849 amount_remaining,
2850 quantity_shipped,
2851 purge_flag,
2852 order_date,
2853 creation_date,
2854 last_update_date,
2855 last_updated_by,
2856 request_id,
2857 created_by,
2858 last_update_login,
2859 program_application_id,
2860 program_update_date,
2861 program_id,
2862 org_id,
2863 transmit_flag,
2864 discount_type,
2865 discount_value,
2866 discount_currency_code,
2867 adjustment_type_id,
2868 order_source,
2869 parent_line_id,
2870 total_approved_amt,
2871 total_approved_qty,
2872 vendor_ref_id,
2873 ATTRIBUTE_CATEGORY,
2874 ATTRIBUTE1,
2875 ATTRIBUTE2,
2876 ATTRIBUTE3,
2877 ATTRIBUTE4,
2878 ATTRIBUTE5,
2879 ATTRIBUTE6,
2880 ATTRIBUTE7,
2881 ATTRIBUTE8,
2882 ATTRIBUTE9,
2883 ATTRIBUTE10,
2884 ATTRIBUTE11,
2885 ATTRIBUTE12,
2886 ATTRIBUTE13,
2887 ATTRIBUTE14,
2888 ATTRIBUTE15,
2889 ATTRIBUTE16,
2890 ATTRIBUTE17,
2891 ATTRIBUTE18,
2892 ATTRIBUTE19,
2893 ATTRIBUTE20,
2894 ATTRIBUTE21,
2895 ATTRIBUTE22,
2896 ATTRIBUTE23,
2897 ATTRIBUTE24,
2898 ATTRIBUTE25,
2899 ATTRIBUTE26,
2900 ATTRIBUTE27,
2901 ATTRIBUTE28,
2902 ATTRIBUTE29,
2903 ATTRIBUTE30,
2904 process_feed_flag
2905
2906 )values
2907 (OZF_SD_BATCH_LINES_ALL_S.NEXTVAL,
2908 1,
2909 l_new_batch_id,
2910 l_batch_line_tbl_rec.batch_line_number,
2911 l_batch_line_tbl_rec.utilization_id,
2912 l_batch_line_tbl_rec.agreement_number,
2913 l_batch_line_tbl_rec.ship_to_org_id,
2914 l_batch_line_tbl_rec.ship_to_contact_id,
2915 l_batch_line_tbl_rec.sold_to_customer_id,
2916 l_batch_line_tbl_rec.sold_to_contact_id,
2917 l_batch_line_tbl_rec.sold_to_site_use_id,
2918 l_batch_line_tbl_rec.end_customer_id,
2919 l_batch_line_tbl_rec.end_customer_contact_id,
2920 l_batch_line_tbl_rec.order_header_id,
2921 l_batch_line_tbl_rec.order_line_id,
2922 l_batch_line_tbl_rec.invoice_number,
2923 l_batch_line_tbl_rec.invoice_line_number,
2924 l_batch_line_tbl_rec.resale_price_currency_code,
2925 l_batch_line_tbl_rec.resales_price,
2926 l_batch_line_tbl_rec.list_price_currency_code,
2927 l_batch_line_tbl_rec.list_price,
2928 l_batch_line_tbl_rec.agreement_currency_code,
2929 decode(l_batch_line_tbl_rec.discount_type,
2930 '%',NVL(l_batch_line_tbl_rec.approved_amount,l_batch_line_tbl_rec.agreement_price),
2931 'NEWPRICE',NVL(l_batch_line_tbl_rec.approved_amount,l_batch_line_tbl_rec.agreement_price),
2932 l_batch_line_tbl_rec.agreement_price),
2933 'APPROVED',--Status code
2934 l_line_clm_amt, -- Current approved Claim Amount
2935 l_batch_line_tbl_rec.claim_amount_currency_code,
2936 l_line_batch_curr_clm_amt, -- batch currency claim amount
2937 l_line_clm_amt, -- original claim amount in request currency
2938 l_line_batch_curr_clm_amt, --original claim amount in batch currency
2939 l_batch_line_tbl_rec.item_id,
2940 l_batch_line_tbl_rec.vendor_item_id,
2941 l_batch_line_tbl_rec.shipped_quantity_uom,
2942 l_batch_line_tbl_rec.last_sub_claim_amount,
2943 l_batch_line_tbl_rec.acctd_amount_remaining,
2944 l_batch_line_tbl_rec.univ_curr_amount_remaining,
2945 l_batch_line_tbl_rec.fund_request_amount_remaining,
2946 l_batch_line_tbl_rec.amount_remaining,
2947 NVL(l_batch_line_tbl_rec.quantity_approved,l_batch_line_tbl_rec.quantity_shipped), --shipped quantity
2948 l_batch_line_tbl_rec.purge_flag,
2949 l_batch_line_tbl_rec.order_date,
2950 l_batch_line_tbl_rec.creation_date,
2951 l_batch_line_tbl_rec.last_update_date,
2952 l_batch_line_tbl_rec.last_updated_by,
2953 l_batch_line_tbl_rec.request_id,
2954 l_batch_line_tbl_rec.created_by,
2955 l_batch_line_tbl_rec.last_update_login,
2956 l_batch_line_tbl_rec.program_application_id,
2957 l_batch_line_tbl_rec.program_update_date,
2958 l_batch_line_tbl_rec.program_id,
2959 l_batch_line_tbl_rec.org_id,
2960 l_batch_line_tbl_rec.transmit_flag,
2961 l_batch_line_tbl_rec.discount_type,
2965 '%',ROUND((100 - ((NVL(l_batch_line_tbl_rec.approved_amount,l_batch_line_tbl_rec.agreement_price)/NVL(l_batch_line_tbl_rec.list_price,1)) *100)),2)
2962 decode(l_batch_line_tbl_rec.discount_type,
2963 'AMT',NVL(l_batch_line_tbl_rec.approved_amount,l_batch_line_tbl_rec.discount_value),
2964 'NEWPRICE',NVL(l_batch_line_tbl_rec.approved_amount,l_batch_line_tbl_rec.agreement_price),
2966 ,l_batch_line_tbl_rec.discount_value),
2967 l_batch_line_tbl_rec.discount_currency_code,
2968 l_batch_line_tbl_rec.adjustment_type_id,--need to review
2969 l_batch_line_tbl_rec.order_source,
2970 l_batch_line_tbl_rec.batch_line_id,
2971 l_line_clm_amt, -- Total approved amount
2972 NVL(l_batch_line_tbl_rec.quantity_approved,l_batch_line_tbl_rec.quantity_shipped),-- Total approved quantity
2973 l_batch_line_tbl_rec.vendor_ref_id,
2974 l_batch_line_tbl_rec.ATTRIBUTE_CATEGORY,
2975 l_batch_line_tbl_rec.ATTRIBUTE1,
2976 l_batch_line_tbl_rec.ATTRIBUTE2,
2977 l_batch_line_tbl_rec.ATTRIBUTE3,
2978 l_batch_line_tbl_rec.ATTRIBUTE4,
2979 l_batch_line_tbl_rec.ATTRIBUTE5,
2980 l_batch_line_tbl_rec.ATTRIBUTE6,
2981 l_batch_line_tbl_rec.ATTRIBUTE7,
2982 l_batch_line_tbl_rec.ATTRIBUTE8,
2983 l_batch_line_tbl_rec.ATTRIBUTE9,
2984 l_batch_line_tbl_rec.ATTRIBUTE10,
2985 l_batch_line_tbl_rec.ATTRIBUTE11,
2986 l_batch_line_tbl_rec.ATTRIBUTE12,
2987 l_batch_line_tbl_rec.ATTRIBUTE13,
2988 l_batch_line_tbl_rec.ATTRIBUTE14,
2989 l_batch_line_tbl_rec.ATTRIBUTE15,
2990 l_batch_line_tbl_rec.ATTRIBUTE16,
2991 l_batch_line_tbl_rec.ATTRIBUTE17,
2992 l_batch_line_tbl_rec.ATTRIBUTE18,
2993 l_batch_line_tbl_rec.ATTRIBUTE19,
2994 l_batch_line_tbl_rec.ATTRIBUTE20,
2995 l_batch_line_tbl_rec.ATTRIBUTE21,
2996 l_batch_line_tbl_rec.ATTRIBUTE22,
2997 l_batch_line_tbl_rec.ATTRIBUTE23,
2998 l_batch_line_tbl_rec.ATTRIBUTE24,
2999 l_batch_line_tbl_rec.ATTRIBUTE25,
3000 l_batch_line_tbl_rec.ATTRIBUTE26,
3001 l_batch_line_tbl_rec.ATTRIBUTE27,
3002 l_batch_line_tbl_rec.ATTRIBUTE28,
3003 l_batch_line_tbl_rec.ATTRIBUTE29,
3004 l_batch_line_tbl_rec.ATTRIBUTE30,
3005 l_batch_line_tbl_rec.process_feed_flag
3006 );
3007
3008 END LOOP;
3009 END IF;
3010
3011 -- If there are over approved lines,update the status of the lines to approved,batch currency claim amount to current approved amount
3012 IF((p_batch_over_appr_lines_tbl IS NOT NULL) AND (p_batch_over_appr_lines_tbl.COUNT > 0)) THEN
3013 FOR i IN 0..p_batch_over_appr_lines_tbl.COUNT-1
3014 LOOP
3015 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
3016 'In over approved lines if loop for batch line id '||p_batch_over_appr_lines_tbl(i));
3017
3018 UPDATE ozf_sd_batch_lines_all
3019 SET batch_id = l_new_batch_id,
3020 status_code = 'APPROVED',
3021 claim_amount = ozf_utility_pvt.currround(CASE
3022 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
3023
3024 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
3025
3026 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
3027
3028 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
3029
3030 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
3031
3032 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
3033 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
3034 ELSE 0
3035 END,CLAIM_AMOUNT_CURRENCY_CODE) ,
3036 batch_curr_claim_amount = CASE
3037 WHEN (claim_amount_currency_code = l_batch_currency) THEN ozf_utility_pvt.currround(CASE
3038 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
3039
3040 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
3041
3042 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
3043
3044 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
3045
3046 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
3047
3048 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
3049 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
3050 ELSE 0
3054 l_func_currency,
3051 END,CLAIM_AMOUNT_CURRENCY_CODE)
3052 WHEN ((claim_amount_currency_code = l_func_currency) AND (l_func_currency <> l_batch_currency)) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
3053 l_batch_currency,
3055 (SELECT fu.exchange_rate_type
3056 FROM ozf_funds_utilized_all_b fu
3057 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
3058 AND ozf_sd_batch_lines_all.batch_id = p_batch_id),
3059 NULL,
3060 sysdate,
3061 CASE
3062 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
3063
3064 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
3065
3066 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
3067
3068 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
3069
3070 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
3071
3072 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
3073 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
3074 END)
3075
3076 WHEN (claim_amount_currency_code <> l_func_currency) THEN OZF_SD_UTIL_PVT.GET_CONVERTED_CURRENCY(claim_amount_currency_code,
3077 l_batch_currency,
3078 l_func_currency,
3079 (SELECT fu.exchange_rate_type
3080 FROM ozf_funds_utilized_all_b fu
3081 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
3082 AND ozf_sd_batch_lines_all.batch_id = p_batch_id),
3083 NULL,
3084 (SELECT fu.exchange_rate_date
3085 FROM ozf_funds_utilized_all_b fu
3086 WHERE fu.utilization_id = ozf_sd_batch_lines_all.utilization_id
3087 AND ozf_sd_batch_lines_all.batch_id = p_batch_id),
3088 CASE
3089 WHEN((approved_amount is null and quantity_approved is null) OR ( approved_currency_code <> CLAIM_AMOUNT_CURRENCY_CODE ) OR approved_amount < 0 OR (original_claim_amount > 0 and quantity_approved < 0) ) then 0
3090
3091 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price-agreement_price) * quantity_approved)
3092
3093 WHEN (approved_amount is null and quantity_approved IS NOT NULL AND DISCOUNT_TYPE IN ('AMT')) THEN (discount_value * quantity_approved)
3094
3095 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * QUANTITY_SHIPPED)
3096
3097 WHEN (quantity_approved is null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN (approved_amount * QUANTITY_SHIPPED)
3098
3099 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('NEWPRICE','%')) THEN ((list_price - approved_amount) * quantity_approved)
3100 WHEN (quantity_approved is not null and approved_amount is not null AND DISCOUNT_TYPE IN ('AMT')) THEN ((approved_amount) * quantity_approved)
3101 END)
3102 END,
3103 quantity_shipped = NVL(quantity_approved,quantity_shipped),
3104 discount_value = decode(discount_type,
3105 'AMT',NVL(approved_amount,discount_value),
3106 'NEWPRICE',NVL(approved_amount,agreement_price),
3107 '%',ROUND((100 - ((NVL(approved_amount,agreement_price)/NVL(list_price,1)) *100)),2),discount_value),
3108 agreement_price = decode(discount_type,'%',NVL(approved_amount,agreement_price),'NEWPRICE',NVL(approved_amount,agreement_price),agreement_price),
3109 object_version_number = object_version_number + 1,
3110 last_update_date = sysdate,
3111 last_updated_by = fnd_global.user_id,
3112 total_approved_qty = CASE WHEN total_approved_amt IS NOT NULL AND total_approved_qty IS NULL THEN NVL(l_batch_line_tbl_rec.quantity_approved,l_batch_line_tbl_rec.quantity_shipped)
3113 ELSE total_approved_qty
3114 END
3115 WHERE batch_id = p_batch_id
3116 AND batch_line_id = p_batch_over_appr_lines_tbl(i)
3117 AND purge_flag <> 'Y';
3118
3119 END LOOP;
3120 END IF;--Over Approved Lines
3121
3122 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::CREATE_CHILD_BATCH',
3123 'Procedure Ends');
3124 --raising business event
3125 ozf_sd_util_pvt.sd_raise_event (l_new_batch_id, 'CREATE', x_return_status);
3126
3127 PROCESS_COMP_APPR_BATCH(l_new_batch_id, x_return_status, x_msg_data);
3128
3129 END PROCESS_CHILD_BATCH;
3130
3131
3132 PROCEDURE PROCESS_CHILD_BATCH(p_batch_id IN NUMBER,
3133 x_return_status OUT nocopy VARCHAR2,
3134 x_msg_data OUT nocopy VARCHAR2) IS
3135
3136 l_cnt_total_line NUMBER;
3137 l_cnt_rejected_line NUMBER;
3138 l_new_batch_id NUMBER := NULL;
3142 l_org_id NUMBER;
3139 l_message VARCHAR2(1000);
3140 l_vendor_id NUMBER;
3141 l_vendor_site_id NUMBER;
3143 l_claim_amount NUMBER;
3144 l_dup_dispute NUMBER;
3145 l_batch_threshold NUMBER;
3146 l_line_threshold NUMBER;
3147 l_currency_code VARCHAR2(20);
3148 l_batch_number VARCHAR2(20);
3149 l_par_batch_curr_code VARCHAR2(20);
3150 l_par_batch_owner_id NUMBER;
3151 l_claim_number VARCHAR2(30);
3152 l_claim_id NUMBER;
3153 l_claim_minor_version NUMBER;
3154 l_msg_count NUMBER;
3155
3156 l_tot_app_claim_amt NUMBER ;
3157 l_batch_type VARCHAR2(30);
3158
3159
3160 --Start: Fix for Bug 10628160
3161 l_custom_setup_id NUMBER := NULL;
3162 l_claim_rec OZF_Claim_PVT.claim_rec_type := NULL;
3163 l_clam_def_rec_type ozf_claim_def_rule_pvt.clam_def_rec_type := NULL;
3164 l_split_claim_id NUMBER := NULL;
3165 l_msg_count3 NUMBER := NULL;
3166 l_msg_data VARCHAR2(100) := NULL;
3167 l_msg_count2 NUMBER := NULL;
3168 l_msg_data2 VARCHAR2(100) := NULL;
3169 l_return_status2 VARCHAR2(15) := NULL;
3170 l_return_status VARCHAR2(15) := NULL;
3171 --End: Fix for Bug 10628160
3172
3173
3174 BEGIN
3175
3176
3177
3178
3179 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
3180 'Procedure Starts: Batch Id :'||p_batch_id);
3181
3182 SELECT batch_number, vendor_id, vendor_site_id, org_id,
3183 currency_code, batch_amount_threshold, batch_line_amount_threshold, claim_number, claim_minor_version,batch_type,owner_id
3184 INTO l_batch_number, l_vendor_id, l_vendor_site_id, l_org_id,
3185 l_par_batch_curr_code, l_batch_threshold, l_line_threshold, l_claim_number, l_claim_minor_version,l_batch_type,l_par_batch_owner_id
3186 FROM ozf_sd_batch_headers_all
3187 WHERE batch_id = p_batch_id;
3188
3189 ozf_sd_batch_pvt.create_batch_header(l_vendor_id,
3190 l_vendor_site_id,
3191 l_org_id,
3192 l_batch_threshold,
3193 l_line_threshold,
3194 l_par_batch_curr_code,
3195 'F' ,
3196 'APPROVED',
3197 l_claim_number||'_'||l_claim_minor_version,
3198 l_claim_minor_version,
3199 p_batch_id, -- current batch (i.e) parent batch_id
3200 l_new_batch_id,
3201 l_batch_type,
3202 l_par_batch_owner_id);
3203
3204 UPDATE ozf_sd_batch_lines_all
3205 SET batch_id = l_new_batch_id,
3206 object_version_number = object_version_number + 1,
3207 last_update_date = sysdate,
3208 last_updated_by = fnd_global.user_id
3209 WHERE batch_id = p_batch_id
3210 AND status_code = 'APPROVED'
3211 AND purge_flag <> 'Y';
3212
3213 --raising business event
3214 ozf_sd_util_pvt.sd_raise_event (l_new_batch_id, 'CREATE', x_return_status);
3215
3216 SAVEPOINT BEF_INVOKE_CLM_CHILD_BATCH;
3217
3218 --Start:Fix for Bug#10628160 - Create a Claim with new custom setup for -ve amount
3219 --to get claim number
3220 -- Check if the child batch is having -ve claim sum
3221 select sum(batch_curr_claim_amount)
3222 INTO l_tot_app_claim_amt
3223 from ozf_sd_batch_lines_all
3224 where batch_id=l_new_batch_id ;
3225
3226
3227
3228 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
3229 ' l_tot_app_claim_amt = ' || l_tot_app_claim_amt);
3230
3231 IF (l_tot_app_claim_amt < 0) THEN
3232 l_claim_rec.claim_class := 'CHARGE';
3233 l_claim_rec.source_object_class := 'SD_SUPPLIER';
3234 OZF_CLAIM_DEF_RULE_PVT.get_clam_def_rule(p_claim_rec => l_claim_rec,
3235 x_clam_def_rec_type => l_clam_def_rec_type,
3236 x_return_status => l_return_status,
3237 x_msg_count => l_msg_count3,
3238 x_msg_data => l_msg_data);
3239 l_custom_setup_id := l_clam_def_rec_type.custom_setup_id;
3240
3241
3242 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
3243 ' l_custom_setup_id' || to_char(l_custom_setup_id));
3244
3245 OZF_CLAIM_PVT.Get_Claim_Number(l_split_claim_id,
3246 l_custom_setup_id,
3247 l_claim_number,
3248 l_msg_data2,
3249 l_msg_count2,
3250 l_return_status2);
3251
3252
3253 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
3254 ' Negative Claim Number = ' || l_claim_number);
3255
3256 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
3257 ' l_new_batch_id = ' || l_new_batch_id);
3258
3259 UPDATE ozf_sd_batch_headers_all
3260 SET claim_number = l_claim_number
3261 WHERE batch_id = l_new_batch_id;
3262
3263 END IF;
3264
3265 --End:Fix for Bug#10628160
3266
3267 IF (l_tot_app_claim_amt) <> 0 THEN
3268
3269 PROCESS_CLAIM(l_new_batch_id, x_return_status, x_msg_data, l_claim_id);
3273 OZF_SD_UTIL_PVT.CREATE_ADJUSTMENT(l_new_batch_id, 'F', x_return_status, l_msg_count, x_msg_data);
3270
3271 IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN -- If claim is successful
3272
3274
3275 IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN -- If adjustment is successful
3276 --raising business event
3277 ozf_sd_util_pvt.sd_raise_event (l_new_batch_id, 'CLAIM', x_return_status);
3278 UPDATE ozf_sd_batch_headers_all
3279 SET status_code = 'CLOSED',
3280 claim_id = l_claim_id,
3281 last_update_date = sysdate,
3282 last_updated_by = fnd_global.user_id,
3283 object_version_number = object_version_number + 1
3284 WHERE batch_id = l_new_batch_id;
3285 ELSE
3286 ROLLBACK TO BEF_INVOKE_CLM_CHILD_BATCH;
3287 UPDATE ozf_sd_batch_headers_all
3288 SET status_code = 'PENDING_CLAIM',
3289 last_update_date = sysdate,
3290 last_updated_by = fnd_global.user_id,
3291 object_version_number = object_version_number + 1
3292 WHERE batch_id = l_new_batch_id;
3293 END IF; -- If adjustment is successful
3294
3295 ELSE -- If claim is not successful
3296 ROLLBACK TO BEF_INVOKE_CLM_CHILD_BATCH;
3297 UPDATE ozf_sd_batch_headers_all
3298 SET status_code = 'PENDING_CLAIM',
3299 last_update_date = sysdate,
3300 last_updated_by = fnd_global.user_id,
3301 object_version_number = object_version_number + 1
3302 WHERE batch_id = l_new_batch_id;
3303 END IF; -- If claim is successful
3304
3305 END IF ;
3306
3307 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::PROCESS_CHILD_BATCH',
3308 'Procedure Ends');
3309
3310 END PROCESS_CHILD_BATCH;
3311
3312
3313
3314
3315
3316 PROCEDURE PROCESS_COMP_APPR_BATCH(p_batch_id IN NUMBER,
3317 x_return_status OUT nocopy VARCHAR2,
3318 x_msg_data OUT nocopy VARCHAR2) IS
3319
3320
3321 l_tot_app_claim_amt NUMBER ;
3322 l_claim_number VARCHAR2(30);
3323 l_claim_id NUMBER;
3324 l_claim_minor_version NUMBER;
3325 l_msg_count NUMBER;
3326 --Start: Fix for Bug 10628160
3327 l_custom_setup_id NUMBER := NULL;
3328 l_claim_rec OZF_Claim_PVT.claim_rec_type := NULL;
3329 l_clam_def_rec_type ozf_claim_def_rule_pvt.clam_def_rec_type := NULL;
3330 l_split_claim_id NUMBER := NULL;
3331 l_msg_count3 NUMBER := NULL;
3332 l_msg_data VARCHAR2(100) := NULL;
3333 l_msg_count2 NUMBER := NULL;
3334 l_msg_data2 VARCHAR2(100) := NULL;
3335 l_return_status2 VARCHAR2(15) := NULL;
3336 l_return_status VARCHAR2(15) := NULL;
3337 --End: Fix for Bug 10628160
3338
3339 BEGIN
3340
3341
3342 SAVEPOINT BEFORE_INVOKING_CLAIM;
3343
3344
3345
3346 -- Check if the batch is negative
3347 --Start:Fix for Bug#10628160 - Create a Claim with new custom setup for -ve amount
3348 --to get claim number
3349
3350 select sum(batch_curr_claim_amount) INTO l_tot_app_claim_amt from ozf_sd_batch_lines_all
3351 where batch_id=p_batch_id ;
3352
3353 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::UPDATE_DATA',
3354 ' l_tot_app_claim_amt = ' || l_tot_app_claim_amt);
3355
3356 IF (l_tot_app_claim_amt < 0) THEN
3357 l_claim_rec.claim_class := 'CHARGE';
3358 l_claim_rec.source_object_class := 'SD_SUPPLIER';
3359 OZF_CLAIM_DEF_RULE_PVT.get_clam_def_rule(p_claim_rec => l_claim_rec,
3360 x_clam_def_rec_type => l_clam_def_rec_type,
3361 x_return_status => l_return_status,
3362 x_msg_count => l_msg_count3,
3363 x_msg_data => l_msg_data);
3364 l_custom_setup_id := l_clam_def_rec_type.custom_setup_id;
3365
3366
3367 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::UPDATE_DATA',
3368 ' l_custom_setup_id' || to_char(l_custom_setup_id));
3369
3370 OZF_CLAIM_PVT.Get_Claim_Number(l_split_claim_id,
3371 l_custom_setup_id,
3372 l_claim_number,
3373 l_msg_data2,
3374 l_msg_count2,
3375 l_return_status2);
3376
3377
3378 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::UPDATE_DATA',
3379 ' Negative Claim Number = ' || l_claim_number);
3380
3381 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::UPDATE_DATA',
3382 ' l_new_batch_id = ' || p_batch_id);
3383
3384 UPDATE ozf_sd_batch_headers_all
3385 SET claim_number = l_claim_number
3386 WHERE batch_id = p_batch_id;
3387
3388 END IF;
3389
3390 --End:Fix for Bug#10628160
3391
3392
3393 IF (l_tot_app_claim_amt <> 0) THEN
3394
3395
3396 PROCESS_CLAIM(p_batch_id, x_return_status, x_msg_data, l_claim_id);
3397
3398 IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3399
3400 OZF_SD_UTIL_PVT.CREATE_ADJUSTMENT(p_batch_id, 'F', x_return_status, l_msg_count, x_msg_data); -- to pass p_comp_wrt_off
3401
3402 IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3403 --raising business event
3404 ozf_sd_util_pvt.sd_raise_event (p_batch_id, 'CLAIM', x_return_status);
3405 UPDATE ozf_sd_batch_headers_all
3406 SET status_code = 'CLOSED',
3407 claim_id = l_claim_id,
3408 last_update_date = sysdate,
3412 ELSE -- If adjustment is not successful
3409 last_updated_by = fnd_global.user_id,
3410 object_version_number = object_version_number + 1
3411 WHERE batch_id = p_batch_id;
3413 ROLLBACK TO BEFORE_INVOKING_CLAIM;
3414 UPDATE ozf_sd_batch_headers_all
3415 SET status_code = 'PENDING_CLAIM',
3416 last_update_date = sysdate,
3417 last_updated_by = fnd_global.user_id,
3418 object_version_number = object_version_number + 1
3419 WHERE batch_id = p_batch_id;
3420 END IF; -- If adjustment is successful
3421
3422 ELSE -- If claim is not successful
3423
3424 ROLLBACK TO BEFORE_INVOKING_CLAIM;
3425 UPDATE ozf_sd_batch_headers_all
3426 SET status_code = 'PENDING_CLAIM',
3427 last_update_date = sysdate,
3428 last_updated_by = fnd_global.user_id,
3429 object_version_number = object_version_number + 1
3430 WHERE batch_id = p_batch_id;
3431
3432 END IF; -- If claim is successful
3433
3434 END IF ;
3435
3436 END PROCESS_COMP_APPR_BATCH;
3437
3438
3439
3440 PROCEDURE update_dispute_data(p_batch_number varchar2,p_batch_id number) IS
3441
3442 type v_disputes IS TABLE OF VARCHAR2(50) INDEX BY binary_integer;
3443 l_disputes v_disputes;
3444 l_dispute_index NUMBER(2);
3445
3446 BEGIN
3447 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_dispute_data',
3448 'Procedure Starts: Batch number -> '||p_batch_number||' Batch Id -> '||p_batch_id );
3449
3450 FOR v_dispute_code IN (SELECT bl.batch_id,
3451 bl.batch_line_id,
3452 bint.gbl_claim_rej_code1,
3453 bint.gbl_claim_rej_code2,
3454 bint.gbl_claim_rej_code3,
3455 bint.gbl_claim_rej_code4,
3456 bint.gbl_claim_rej_code5,
3457 bint.gbl_claim_rej_code6,
3458 bint.gbl_claim_rej_code7,
3459 bint.gbl_claim_rej_code8,
3460 bint.gbl_claim_rej_code9,
3461 bint.gbl_claim_rej_code10
3462 FROM ozf_sd_batch_lines_all bl,
3463 ozf_sd_batch_lines_int_all bint
3464 WHERE bl.batch_id = bint.ship_frm_sd_claim_request_id
3465 AND bl.batch_line_number = bint.batch_line_number
3466 AND bint.GBL_CLAIM_DISPOSITION_CODE = 'REJECTED'
3467 AND bint.ship_frm_sd_claim_request_id = p_batch_number
3468 AND bint.processed_flag = 'N'
3469 AND bl.purge_flag <> 'Y'
3470 )
3471
3472 LOOP
3473
3474
3475 l_dispute_index := 0;
3476
3477 IF v_dispute_code.gbl_claim_rej_code1 IS NOT NULL THEN
3478 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code1;
3479 l_dispute_index := l_dispute_index + 1;
3480 END IF;
3481
3482 IF v_dispute_code.gbl_claim_rej_code2 IS NOT NULL THEN
3483 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code2;
3484 l_dispute_index := l_dispute_index + 1;
3485 END IF;
3486
3487 IF v_dispute_code.gbl_claim_rej_code3 IS NOT NULL THEN
3488 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code3;
3489 l_dispute_index := l_dispute_index + 1;
3490 END IF;
3491
3492 IF v_dispute_code.gbl_claim_rej_code4 IS NOT NULL THEN
3493 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code4;
3494 l_dispute_index := l_dispute_index + 1;
3495 END IF;
3496
3497 IF v_dispute_code.gbl_claim_rej_code5 IS NOT NULL THEN
3498 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code5;
3499 l_dispute_index := l_dispute_index + 1;
3500 END IF;
3501
3502 IF v_dispute_code.gbl_claim_rej_code6 IS NOT NULL THEN
3503 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code6;
3504 l_dispute_index := l_dispute_index + 1;
3505 END IF;
3506
3507 IF v_dispute_code.gbl_claim_rej_code7 IS NOT NULL THEN
3508 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code7;
3509 l_dispute_index := l_dispute_index + 1;
3510 END IF;
3511
3512 IF v_dispute_code.gbl_claim_rej_code8 IS NOT NULL THEN
3513 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code8;
3514 l_dispute_index := l_dispute_index + 1;
3515 END IF;
3516
3517 IF v_dispute_code.gbl_claim_rej_code9 IS NOT NULL THEN
3518 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code9;
3519 l_dispute_index := l_dispute_index + 1;
3520 END IF;
3521
3522 IF v_dispute_code.gbl_claim_rej_code10 IS NOT NULL THEN
3523 l_disputes(l_dispute_index) := v_dispute_code.gbl_claim_rej_code10;
3524 l_dispute_index := l_dispute_index + 1;
3525 END IF;
3526
3527 FOR i IN 0 .. l_dispute_index - 1 LOOP
3528
3529 INSERT INTO ozf_sd_batch_line_disputes
3530 (batch_line_dispute_id,
3531 batch_id,
3532 batch_line_id,
3533 object_version_number,
3534 dispute_code,
3535 review_flag,
3536 creation_date,
3537 last_update_date,
3538 last_updated_by,
3539 request_id,
3540 created_by,
3541 created_from,
3542 last_update_login,
3543 program_application_id,
3544 program_update_date,
3545 program_id,
3546 security_group_id)
3547 VALUES
3548 (ozf_sd_batch_line_disputes_s.nextval,
3549 v_dispute_code.batch_id,
3550 v_dispute_code.batch_line_id,
3551 1,
3552 l_disputes(i),
3553 NULL, --review flag
3554 sysdate,
3555 sysdate,
3556 fnd_global.user_id,
3557 fnd_global.conc_request_id,
3558 fnd_global.user_id,
3559 NULL, --created from
3560 fnd_global.conc_login_id,
3561 fnd_global.prog_appl_id, --l_program_application_id,
3562 NULL, --l_program_update_date,
3563 fnd_global.conc_program_id, -- p_Operating_Unit,
3564 fnd_global.security_group_id);
3565 END LOOP;
3566 END LOOP;
3567 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::update_dispute_data',
3568 'Procedure Ends');
3569 END update_dispute_data;
3570
3571 PROCEDURE process_claim(p_batch_id IN NUMBER,
3572 x_return_status OUT nocopy VARCHAR2,
3573 x_msg_data OUT nocopy VARCHAR2,
3574 x_claim_id OUT NOCOPY NUMBER
3575 ) IS
3576
3577 l_claim_id NUMBER := NULL;
3578 -- Incase auto claim is run
3579 l_claim_ret_status VARCHAR2(15) := NULL;
3580 l_claim_msg_count NUMBER := NULL;
3581 l_claim_msg_data VARCHAR2(500) := NULL;
3582 l_claim_type VARCHAR2(20) := 'SUPPLIER';
3583 --always defaulted to external claim
3584
3585 BEGIN
3586 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::process_claim',
3587 'Procedure Starts: Batch Id -> '||p_batch_id);
3588 --call claim API
3589 ozf_claim_accrual_pvt.initiate_sd_payment(1,
3590 fnd_api.g_false,
3591 fnd_api.g_true,
3592 fnd_api.g_valid_level_full,
3593 l_claim_ret_status,
3594 l_claim_msg_count,
3595 l_claim_msg_data,
3596 p_batch_id,
3597 l_claim_type,
3598 l_claim_id);
3599
3600 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::process_claim',
3601 'Return Status of claim API: '||l_claim_ret_status ||' Msg: '||l_claim_msg_data || 'Msg Count: '|| l_claim_msg_count);
3602
3603 FOR I IN 1..l_claim_msg_count LOOP
3604 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'OZF_SD_BATCH_FEED_PVT::process_claim',
3605 'Claim API Msg: '|| SUBSTR(FND_MSG_PUB.GET(P_MSG_INDEX => I, P_ENCODED => 'F'), 1, 254) );
3606 END LOOP;
3607
3608 x_return_status := l_claim_ret_status;
3609 x_msg_data := l_claim_msg_data;
3610 x_claim_id := l_claim_id;
3611
3612 ozf_utility_pvt.debug_message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'OZF_SD_BATCH_FEED_PVT::process_claim',
3613 'Procedure Ends');
3614 END process_claim;
3615
3616 END ozf_sd_batch_feed_pvt;
3617