[Home] [Help]
PACKAGE BODY: APPS.OZF_TP_ACCRUAL_PVT
Source
1 PACKAGE BODY OZF_TP_ACCRUAL_PVT AS
2 /* $Header: ozfvtpab.pls 120.46.12020000.10 2013/02/15 11:03:15 kdass ship $ */
3
4 -- Package name : OZF_TP_ACCRUAL_PVT
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- END of Comments
9
10 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OZF_TP_ACCRUAL_PVT';
11 G_FILE_NAME CONSTANT VARCHAR2(30) := 'ozfvtpab.pls';
12
13 G_PRICING_EVENT CONSTANT VARCHAR2(30) := 'PRICING';
14
15 G_TP_ACCRUAL_UTIL_TYPE CONSTANT VARCHAR2(30) :='ADJUSTMENT';
16
17 OZF_DEBUG_HIGH_ON BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
18 OZF_DEBUG_LOW_ON BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_low);
19
20 G_PRC_DIFF_BUDGET NUMBER := FND_PROFILE.value('OZF_THRDPTY_PRCDIFF_BUDGET');
21 G_TP_DEFAULT_PRICE_LIST NUMBER := FND_PROFILE.value('OZF_TP_ACCRUAL_PRICE_LIST');
22 G_PRICING_SIM_EVENT VARCHAR2(30) := FND_PROFILE.value('OZF_PRICING_SIMULATION_EVENT');
23 G_ACCRUAL_ON_SELLING VARCHAR2(1) := FND_PROFILE.value('OZF_ACC_ON_SELLING_PRICE');
24 G_BULK_LIMIT NUMBER := NVL(FND_PROFILE.value('OZF_BULK_LIMIT_SIZE') , 500);
25 G_ALLOW_INTER_COMMIT VARCHAR2(1) := NVL(FND_PROFILE.value('OZF_ALLOW_INTER_COMMIT'), 'Y');
26 --G_CONC_REQUEST_ID NUMBER := FND_GLOBAL.CONC_REQUEST_ID;
27 G_TPM_PROCESS_ENABLED VARCHAR2 (1) := NVL(fnd_profile.VALUE ('OZF_TPM_PROCESS_ENABLED'),'N');
28 G_ORDER_GL_PHASE VARCHAR2 (15) :=NVL(fnd_profile.VALUE ('OZF_ORDER_GLPOST_PHASE'), 'SHIPPED');
29 G_IDSM_PRICING_ADJ_BASIS VARCHAR2 (15) :=NVL(fnd_profile.VALUE ('OZF_IDSM_PRICING_ADJ_BASIS'), 'ORDER_DATE');
30
31
32 ---------------------------------------------------------------------
33 -- FUNCTION
34 -- is_valid_offer
35 --
36 -- PURPOSE
37 -- This procedure this offer should be accrued or not
38 --
39 -- PARAMETERS
40 -- p_list_header_id
41 --
42 -- NOTES
43 --------------------------------------------------------------------
44 PROCEDURE Is_Valid_Offer(
45 p_list_header_id IN NUMBER,
46 p_list_line_id IN NUMBER,
47 p_line_id IN NUMBER,
48 p_object_type IN VARCHAR2,
49 x_result OUT NOCOPY BOOLEAN,
50 x_return_status OUT NOCOPY VARCHAR2
51 )
52 IS
53 l_result VARCHAR2(2) := NULL;
54
55 CURSOR omo_offer_csr IS
56 SELECT 1
57 FROM ozf_offers
58 WHERE qp_list_header_id = p_list_header_id;
59
60 -- Fix for bug 12660466 : changed cursor to get all the parent list_line_ids created due to adjustments
61 -- Fix for bug 12967249 : added the current list_line_id also to the cursor, so that it will not validate the offer once accrual is created for the same line
62 -- Fix for bug 13461834 : modified the cursor , so that inner query will not fail for more than one adjustments.
63 /*CURSOR line_adjustment_csr IS
64 SELECT 1
65 FROM ozf_resale_adjustments
66 WHERE resale_line_id = p_line_id
67 AND list_header_id = p_list_header_id
68 AND list_line_id IN
69 (SELECT from_list_line_id
70 FROM ozf_offer_adj_rltd_lines
71 START WITH to_list_line_id = p_list_line_id
72 CONNECT BY PRIOR from_list_line_id = to_list_line_id
73 UNION ALL
74 SELECT to_list_line_id FROM ozf_offer_adj_rltd_lines where to_list_line_id = p_list_line_id);*/
75
76 CURSOR line_adjustment_csr IS
77 SELECT 1
78 FROM ozf_resale_adjustments
79 WHERE resale_line_id = p_line_id
80 AND list_header_id = p_list_header_id
81 AND((list_line_id = p_list_line_id)
82 OR(list_line_id IN
83 (SELECT from_list_line_id
84 FROM ozf_offer_adj_rltd_lines
85 START WITH to_list_line_id = p_list_line_id
86 CONNECT BY PRIOR from_list_line_id = to_list_line_id)));
87
88 BEGIN
89 -- Initialize API return status to sucess
90 x_return_status := FND_API.G_RET_STS_SUCCESS;
91
92 IF p_object_type <> 'PL' THEN
93 -- First it has to be an OMO offer
94 OPEN omo_offer_csr;
95 FETCH omo_offer_csr INTO l_result;
96 CLOSE omo_offer_csr;
97
98 IF l_result is not NULL AND
99 l_result = '1' THEN
100
101 x_result:= true;
102 ELSE
103 x_result:= false;
104 END IF;
105 ELSE
106 x_result:= true;
107 END IF;
108
109 l_result := null;
110 IF x_result THEN
111 -- Second it has not been accrued before
112 OPEN line_adjustment_csr;
113 FETCH line_adjustment_csr INTO l_result;
114 CLOSE line_adjustment_csr;
115 IF l_result is not NULL THEN
116 x_result:= false;
117 END IF;
118 END IF;
119 EXCEPTION
120 WHEN FND_API.G_EXC_ERROR THEN
121 x_return_status := FND_API.G_RET_STS_ERROR;
122 WHEN OTHERS THEN
123 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
124 ozf_utility_pvt.error_message('OZF_RESALE_IS_TM_OFFER');
125 END is_valid_offer;
126
127 ---------------------------------------------------------------------
128 -- PROCEDURE
129 -- Validate_Batch
130 --
131 -- PURPOSE
132 -- This procedure validates the batch information
133 --
134 -- PARAMETERS
135 --
136 --
137 -- NOTES
138 ---------------------------------------------------------------------
139 PROCEDURE Validate_Batch(
140 p_api_version IN NUMBER
141 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
142 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
143 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
144 ,p_resale_batch_id IN NUMBER
145 ,x_return_status OUT NOCOPY VARCHAR2
146 ,x_msg_data OUT NOCOPY VARCHAR2
147 ,x_msg_count OUT NOCOPY NUMBER
148 )IS
149 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Batch';
150 l_api_version CONSTANT NUMBER := 1.0;
151 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
152 --
153
154 CURSOR batch_info_csr IS
155 SELECT status_code
156 , org_id
157 from ozf_resale_batches
158 WHERE resale_batch_id = p_resale_batch_id;
159
160 l_status_code varchar2(30);
161 l_org_id NUMBER;
162
163 BEGIN
164 -- Standard begin of API savepoint
165 -- Standard call to check for call compatibility.
166 IF NOT FND_API.Compatible_API_Call (
167 l_api_version,
168 p_api_version,
169 l_api_name,
170 G_PKG_NAME)
171 THEN
172 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
173 END IF;
174
175 -- Initialize API return status to sucess
176 x_return_status := FND_API.G_RET_STS_SUCCESS;
177
178 --Initialize message list if p_init_msg_list is TRUE.
179 IF FND_API.To_Boolean (p_init_msg_list) THEN
180 FND_MSG_PUB.initialize;
181 END IF;
182
183 -- Debug Message
184 IF OZF_DEBUG_HIGH_ON THEN
185 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
186 END IF;
187
188 -- First, do some basic check
189
190 OPEN batch_info_csr;
191 FETCH batch_info_csr INTO l_status_code, l_org_id;
192 CLOSE batch_info_csr;
193
194 -- Check status
195 IF l_status_code <> 'CLOSED' THEN
196
197 x_return_status := FND_API.G_RET_STS_ERROR;
198 ozf_utility_pvt.error_message('OZF_BATCH_STATUS_WNG');
199 BEGIN
200 INSERT INTO ozf_resale_logs_all(
201 resale_log_id,
202 resale_id,
203 resale_id_type,
204 error_code,
205 error_message,
206 column_name,
207 column_value,
208 org_id
209 ) SELECT
210 ozf_resale_logs_all_s.nextval,
211 p_resale_batch_id,
212 'BATCH',
213 'OZF_BATCH_STATUS_WNG',
214 FND_MESSAGE.get_string('OZF','OZF_BATCH_STATUS_WNG'),
215 'STATUS_CODE',
216 l_status_code,
217 l_org_id
218 FROM dual
219 WHERE NOT EXISTS (
220 SELECT 1
221 FROM ozf_resale_logs a
222 WHERE a.resale_id = p_resale_batch_id
223 AND a.resale_id_type = 'BATCH'
224 AND a.error_code = 'OZF_BATCH_STATUS_WNG'
225 );
226 EXCEPTION
227 WHEN OTHERS THEN
228 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
229 FND_MESSAGE.set_name('OZF', 'OZF_INS_RESALE_LOG_WRG');
230 FND_MESSAGE.Set_Token('TEXT',l_full_name||': End');
231 FND_MSG_PUB.add;
232 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
233 END IF;
234 END;
235 END IF;
236
237 -- Debug Message
238 IF OZF_DEBUG_HIGH_ON THEN
239 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
240 END IF;
241
242 --Standard call to get message count and if count=1, get the message
243 FND_MSG_PUB.Count_And_Get (
244 p_encoded => FND_API.G_FALSE,
245 p_count => x_msg_count,
246 p_data => x_msg_data
247 );
248 EXCEPTION
249 WHEN FND_API.G_EXC_ERROR THEN
250 x_return_status := FND_API.G_RET_STS_ERROR;
251 -- Standard call to get message count and if count=1, get the message
252 FND_MSG_PUB.Count_And_Get (
253 p_encoded => FND_API.G_FALSE,
254 p_count => x_msg_count,
255 p_data => x_msg_data
256 );
257 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
258 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
259 -- Standard call to get message count and if count=1, get the message
260 FND_MSG_PUB.Count_And_Get (
261 p_encoded => FND_API.G_FALSE,
262 p_count => x_msg_count,
263 p_data => x_msg_data
264 );
265 WHEN OTHERS THEN
266 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
267
268 -- Standard call to get message count and if count=1, get the message
269 FND_MSG_PUB.Count_And_Get (
270 p_encoded => FND_API.G_FALSE,
271 p_count => x_msg_count,
272 p_data => x_msg_data
273 );
274 END Validate_Batch;
275
276 ---------------------------------------------------------------------
277 -- PROCEDURE
278 -- Validate_Order_Record
279 --
280 -- PURPOSE
281 -- This procedure validates the order information
282 -- These are validation specific to third party accrual process
283 --
284 -- PARAMETERS
285 --
286 --
287 -- NOTES
288 ---------------------------------------------------------------------
289 PROCEDURE Validate_Order_Record(
290 p_api_version IN NUMBER
291 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
292 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
293 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
294 ,p_resale_batch_id IN NUMBER
295 ,p_caller_type IN VARCHAR2
296 ,x_return_status OUT NOCOPY VARCHAR2
297 ,x_msg_data OUT NOCOPY VARCHAR2
298 ,x_msg_count OUT NOCOPY NUMBER
299 )IS
300 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Order_Record';
301 l_api_version CONSTANT NUMBER := 1.0;
302 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
303 --
304
305 BEGIN
306 -- Standard BEGIN of API savepoint
307 -- Standard call to check for call compatibility.
308 IF NOT FND_API.Compatible_API_Call (
309 l_api_version,
310 p_api_version,
311 l_api_name,
312 G_PKG_NAME)
313 THEN
314 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
315 END IF;
316
317 --Initialize message list if p_init_msg_list is TRUE.
318 IF FND_API.To_Boolean (p_init_msg_list) THEN
319 FND_MSG_PUB.initialize;
320 END IF;
321
322 -- Debug Message
323 IF OZF_DEBUG_HIGH_ON THEN
324 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
325 END IF;
326
327 -- Initialize API return status to sucess
328 x_return_status := FND_API.G_RET_STS_SUCCESS;
329
330 -- Make sure that selling_price is not NULL for direct customers
331 IF p_caller_type = 'IFACE' THEN
332 BEGIN
333 INSERT INTO ozf_resale_logs_all(
334 resale_log_id,
335 resale_id,
336 resale_id_type,
337 error_code,
338 error_message,
339 column_name,
340 column_value,
341 org_id
342 ) SELECT
343 ozf_resale_logs_all_s.nextval,
344 resale_line_int_id,
345 'IFACE',
346 'OZF_RESALE_SELL_PRICE_NULL',
347 FND_MESSAGE.get_string('OZF','OZF_RESALE_SELL_PRICE_NULL'),
348 'SELLING_PRICE',
349 NULL,
350 org_id
351 FROM ozf_resale_lines_int_all b
352 WHERE b.status_code = 'OPEN'
353 AND b.direct_customer_flag = 'T'
354 AND b.selling_price IS NULL
355 AND b.resale_batch_id = p_resale_batch_id
356 AND NOT EXISTS(
357 SELECT 1
358 FROM ozf_resale_logs_all a
359 WHERE a.resale_id = b.resale_line_int_id
360 AND a.resale_id_type = 'IFACE'
361 AND a.error_code ='OZF_RESALE_SELL_PRICE_NULL'
362 );
363 EXCEPTION
364 WHEN OTHERS THEN
365 ozf_utility_pvt.error_message('OZF_INS_RESALE_LOG_WRG');
366 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
367 END;
368
369 BEGIN
370 UPDATE ozf_resale_lines_int_all
371 SET status_code = 'DISPUTED',
372 dispute_code = 'OZF_RESALE_SELL_PRICE_NULL'
373 WHERE status_code = 'OPEN'
374 AND direct_customer_flag = 'T'
375 AND selling_price IS NULL
376 AND resale_batch_id = p_resale_batch_id;
377 EXCEPTION
378 WHEN OTHERS THEN
379 ozf_utility_pvt.error_message('OZF_UPD_RESALE_INT_WRG');
380 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
381 END;
382
383 ELSE
384 BEGIN
385 INSERT INTO ozf_resale_logs_all(
386 resale_log_id,
387 resale_id,
388 resale_id_type,
389 error_code,
390 error_message,
391 column_name,
392 column_value,
393 org_id
394 ) SELECT
395 ozf_resale_logs_all_s.nextval,
396 b.resale_line_id,
397 'LINE',
398 'OZF_RESALE_SELL_PRICE_NULL',
399 FND_MESSAGE.get_string('OZF','OZF_RESALE_SELL_PRICE_NULL'),
400 'SELLING_PRICE',
401 NULL,
402 b.org_id
403 FROM ozf_resale_lines_all b
404 , ozf_resale_batch_line_maps_all c
405 WHERE b.direct_customer_flag = 'T'
406 AND b.selling_price IS NULL
407 AND b.resale_line_id = c.resale_line_id
408 AND c.resale_batch_id = p_resale_batch_id
409 AND NOT EXISTS(SELECT 1
410 FROM ozf_resale_logs_all a
411 WHERE a.resale_id = b.resale_line_id
412 AND a.resale_id_type = 'LINE'
413 AND a.error_code ='OZF_RESALE_SELL_PRICE_NULL'
414 );
415 EXCEPTION
416 WHEN OTHERS THEN
417 ozf_utility_pvt.error_message('OZF_INS_RESALE_LOG_WRG');
418 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
419 END;
420
421 END IF;
422
423 -- Debug Message
424 IF OZF_DEBUG_HIGH_ON THEN
425 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
426 END IF;
427 --Standard call to get message count and if count=1, get the message
428 FND_MSG_PUB.Count_And_Get (
429 p_encoded => FND_API.G_FALSE,
430 p_count => x_msg_count,
431 p_data => x_msg_data
432 );
433 EXCEPTION
434 WHEN FND_API.G_EXC_ERROR THEN
435 x_return_status := FND_API.G_RET_STS_ERROR;
436 -- Standard call to get message count and if count=1, get the message
437 FND_MSG_PUB.Count_And_Get (
438 p_encoded => FND_API.G_FALSE,
439 p_count => x_msg_count,
440 p_data => x_msg_data
441 );
442 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
443 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
444 -- Standard call to get message count and if count=1, get the message
445 FND_MSG_PUB.Count_And_Get (
446 p_encoded => FND_API.G_FALSE,
447 p_count => x_msg_count,
448 p_data => x_msg_data
449 );
450 WHEN OTHERS THEN
451 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
452
453 -- Standard call to get message count and if count=1, get the message
454 FND_MSG_PUB.Count_And_Get (
455 p_encoded => FND_API.G_FALSE,
456 p_count => x_msg_count,
457 p_data => x_msg_data
458 );
459 END Validate_Order_Record;
460
461 ---------------------------------------------------------------------
462 -- PROCEDURE
463 -- process_one_line
464 --
465 -- PURPOSE
466 -- This procedure process the pricing call result for third party accrual.
467 -- It creates resale lines and accruals based on the discount information.
468 --
469 -- PARAMETERS
470 -- p_resale_line_int_rec IN OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype,
471 -- p_resale_line_rec IN OZF_RESALE_LINES_ALL%rowtype,
472 -- p_line_result_rec IN OZF_ORDER_PRICE_PVT.LINE_REC_TYPE,
473 -- p_header_id IN NUMBER,
474 -- p_resale_batch_id IN NUMBER,
475 -- p_inventory_tracking IN BOOLEAN,
476 -- p_price_diff_fund_id IN NUMBER,
477 -- p_object_type IN VARCHAR2,
478 -- x_return_status OUT NOCOPY VARCHAR2)
479 --
480 -- NOTES
481 -- 1. Non-monetray accruals have not been considered. Should look INTO ldets.benefit_qty
482 -- and ldets.benefit_uom for calculation.
483 --
484 ---------------------------------------------------------------------
485
486
487
488
489
490
491 PROCEDURE Process_One_Line(
492 p_resale_line_int_rec IN OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype,
493 p_resale_line_rec IN OZF_RESALE_LINES%rowtype,
494 p_line_result_rec IN OZF_ORDER_PRICE_PVT.LINE_REC_TYPE,
495 p_header_id IN NUMBER,
496 p_resale_batch_id IN NUMBER,
497 p_inventory_tracking IN BOOLEAN,
498 p_price_diff_fund_id IN NUMBER,
499 p_caller_type IN VARCHAR2,
500 p_approver_id IN NUMBER,
501 p_run_mode IN VARCHAR2,
502 p_draft_run_id IN NUMBER,
503 x_return_status OUT NOCOPY VARCHAR2,
504 x_ozf_act_budgets_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_act_budgets_table,
505 x_ozf_funds_new_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_funds_table,
506 x_draft_accrual_tbl IN OUT NOCOPY ozf_draft_accrual_tbl_type
507 )
508 IS
509 l_api_name CONSTANT VARCHAR2(30) := 'Process_One_Line';
510 l_api_version CONSTANT NUMBER := 1.0;
511 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
512 ---
513 l_msg_data VARCHAR2(2000);
514 l_msg_count NUMBER;
515 l_return_status VARCHAR2(30);
516
517 l_resale_line_int_rec OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype := p_resale_line_int_rec;
518
519 l_use_fund_staging_tables VARCHAR2(1):= 'T';
520 l_budget_count NUMBER := 0;
521 ozf_funds_old_rectype OZF_UTILITY_PVT.ozf_funds_all_b_rectype;
522
523
524 --
525 -- NOTES: PPL has pricing_group_sequence as 0
526 CURSOR line_ldets_tbl_csr(p_index IN NUMBER) IS
527 SELECT *
528 FROM qp_ldets_v
529 WHERE line_index = p_index
530 ORDER BY pricing_group_sequence;
531
532 TYPE line_ldets_tbl_type IS TABLE OF line_ldets_tbl_csr%rowtype
533 INDEX BY binary_integer;
534
535 l_line_ldets_tbl line_ldets_tbl_type;
536 l_line_id NUMBER := NULL;
537 l_ldets_tbl OZF_ORDER_PRICE_PVT.LDETS_TBL_TYPE;
538
539 --j NUMBER :=1;
540 m NUMBER := 1;
541
542 --l_pric_act_budgets_rec ozf_actbudgets_pvt.act_budgets_rec_type;
543 --l_pric_act_util_rec ozf_actbudgets_pvt.act_util_rec_type;
544 --l_pric_price_adj_rec ozf_resale_adjustments_all%rowtype;
545
546 l_act_budgets_rec OZF_ACTBUDGETS_PVT.act_budgets_rec_type;
547 l_act_util_rec OZF_ACTBUDGETS_PVT.act_util_rec_type;
548 l_adjustment_rec OZF_RESALE_ADJUSTMENTS_ALL%rowtype;
549
550 l_is_valid_offer BOOLEAN;
551 l_price_diff_util BOOLEAN;
552 l_object_type VARCHAR2(30);
553 l_line_int_rec OZF_RESALE_LINES_INT%rowtype;
554
555 l_rate NUMBER;
556 l_exchange_type VARCHAR2(30);
557 l_to_create_utilization BOOLEAN;
558 l_ssd_on_idsm VARCHAR(3);
559
560 /*
561 -- Only chargeback batch can share the agreement information.
562 CURSOR adjustment_info( p_line_id NUMBER,
563 p_batch_id NUMBER) IS
564 SELECT a.orig_system_agreement_uom,
565 a.orig_system_agreement_name,
566 a.orig_system_agreement_type,
567 a.orig_system_agreement_status,
568 a.orig_system_agreement_curr,
569 a.orig_system_agreement_price,
570 a.orig_system_agreement_quantity,
571 a.agreement_id, a.agreement_type,
572 a.agreement_name, a.agreement_price,
573 a.agreement_uom_code,
574 a.corrected_agreement_id,
575 a.corrected_agreement_name,
576 a.credit_code,
577 a.credit_advice_date
578 FROM ozf_resale_adjustments a, ozf_resale_batches b
579 WHERE a.resale_line_id = p_line_id
580 AND a.resale_batch_id = p_batch_id
581 AND a.line_agreement_flag = 'T'
582 AND a.resale_batch_id = b.resale_batch_id
583 AND b.batch_type = OZF_RESALE_COMMON_PVT.G_CHARGEBACK
584 AND rownum = 1;
585 */
586 l_log_id NUMBER;
587
588 l_sales_transaction_id NUMBER;
589 l_sales_transaction_rec OZF_SALES_TRANSACTIONS_PVT.sales_transaction_rec_type;
590 l_vol_offr_apply_discount NUMBER;
591
592 CURSOR party_id_csr(p_cust_account_id IN NUMBER) IS
593 SELECT party_id
594 FROM hz_cust_accounts
595 WHERE cust_account_id = p_cust_account_id;
596
597 CURSOR party_site_id_csr(p_account_site_id number) is
598 SELECT party_site_id
599 FROM hz_cust_acct_sites
600 WHERE cust_acct_site_id = p_account_site_id;
601
602 l_new_request_amount NUMBER;
603
604 -- julou 5723309: create util for VO PBH line only
605 CURSOR c_offer_type(p_qp_list_header_id NUMBER) IS
606 SELECT offer_type, custom_setup_id, description, offer_id
607 FROM ozf_offers off, qp_list_headers_all qp
608 WHERE off.qp_list_header_id = p_qp_list_header_id
609 AND off.qp_list_header_id = qp.list_header_id;
610
611 CURSOR c_purchase_price(p_resale_line_id number) is
612 SELECT supplier_item_cost
613 FROM ozf_resale_lines_all
614 WHERE resale_line_id = p_resale_line_id;
615
616 CURSOR c_sd_request_header_id(p_list_header_id IN NUMBER) IS
617 SELECT request_header_id
618 FROM ozf_sd_request_headers_all_b
619 WHERE offer_id =p_list_header_id;
620
621 CURSOR c_sd_offer_discount (p_list_line_id IN NUMBER) IS
622 SELECT NVL(qpll.price_by_formula_id, qpll.operand),
623 qpll.arithmetic_operator
624 FROM qp_list_lines qpll
625 WHERE qpll.list_line_id = p_list_line_id;
626
627 l_custom_setup_id NUMBER;
628 l_cost_price NUMBER;
629 l_offer_type VARCHAR2(30);
630 l_offer_name VARCHAR2(2000);
631 l_beneficiary_account_id NUMBER;
632 l_offer_id NUMBER;
633 -- end julou 5723309
634 l_utilization_id NUMBER;
635
636 l_draft_utilization_id NUMBER; -- Bug 14194884 - TPA In Draft Mode ER
637
638 BEGIN
639 IF OZF_DEBUG_HIGH_ON THEN
640 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
641 END IF;
642
643 SAVEPOINT PROC_ONE_LINE;
644
645 x_return_status := FND_API.G_RET_STS_SUCCESS;
646
647 -- Make sure that records are passed in due to different caller type
648 IF p_caller_type = 'IFACE' AND
649 p_resale_line_int_rec.resale_line_int_id IS NULL THEN
650 ozf_utility_pvt.error_message('OZF_RESALE_INT_RECD_NULL');
651 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
652 END IF;
653
654 IF p_caller_type = 'RESALE' AND
655 p_resale_line_rec.resale_line_id IS NULL THEN
656 ozf_utility_pvt.error_message('OZF_RESALE_RECD_NULL');
657 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
658 END IF;
659
660
661 -- create a resale line record, if it's FROM iface
662 IF p_caller_type = 'IFACE' THEN
663 -- Bug 14194884 - TPA In Draft Mode ER : Skipping creation of resale lines, line mappings and sales transactions in case of DRAFT mode
664 IF p_run_mode <> 'DRAFT' THEN
665 OZF_RESALE_COMMON_PVT.Insert_resale_line(
666 p_api_version => 1
667 ,p_init_msg_list => FND_API.G_FALSE
668 ,p_commit => FND_API.G_FALSE
669 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
670 ,p_line_int_rec => p_resale_line_int_rec
671 ,p_header_id => p_header_id
672 ,x_line_id => l_line_id
673 ,x_return_status => l_return_status
674 ,x_msg_data => l_msg_data
675 ,x_msg_count => l_msg_count
676 );
677 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
678 ozf_utility_pvt.error_message('OZF_INS_RESALE_LINE_WRG');
679 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
680 END IF;
681
682 OZF_RESALE_COMMON_PVT.Insert_Resale_Line_Mapping(
683 p_api_version => 1
684 ,p_init_msg_list => FND_API.G_FALSE
685 ,p_commit => FND_API.G_FALSE
686 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
687 ,p_resale_batch_id => p_resale_batch_id
688 ,p_line_id => l_line_id
689 ,x_return_status => l_return_status
690 ,x_msg_data => l_msg_data
691 ,x_msg_count => l_msg_count
692 );
693 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
694 RAISE FND_API.G_EXC_ERROR;
695 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
696 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
697 END IF;
698
699 OZF_RESALE_COMMON_PVT.Create_Sales_Transaction(
700 p_api_version => 1
701 ,p_init_msg_list => FND_API.G_FALSE
702 ,p_commit => FND_API.G_FALSE
703 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
704 ,p_line_int_rec => p_resale_line_int_rec
705 ,p_header_id => p_header_id
706 ,p_line_id => l_line_id
707 ,x_sales_transaction_id => l_sales_transaction_id
708 ,x_return_status => l_return_status
709 ,x_msg_data => l_msg_data
710 ,x_msg_count => l_msg_count
711 );
712 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
713 RAISE FND_API.G_EXC_ERROR;
714 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
715 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
716 END IF;
717
718 -- Bug 4380203 (+)
719 -- Bug 4380203 Fixing: Inventory Temp table is already updated in Validate_Inventory_Level
720 /*
721 IF p_inventory_tracking THEN
722 OZF_SALES_TRANSACTIONS_PVT.update_inventory_tmp (
723 p_api_version => 1.0
724 ,p_init_msg_list => FND_API.G_FALSE
725 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
726 ,p_sales_transaction_id => l_sales_transaction_id
727 ,x_return_status => l_return_status
728 ,x_msg_data => l_msg_data
729 ,x_msg_count => l_msg_count
730 );
731 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
732 RAISE FND_API.G_EXC_ERROR;
733 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
734 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
735 END IF;
736 END IF;
737 */
738 -- Bug 4380203 (-)
739 END IF; -- IF p_run_mode <> 'DRAFT' THEN -- Bug 14194884 - TPA In Draft Mode ER
740 ELSE
741 -- For resale caller, just need to gat the id
742 l_line_id := p_resale_line_rec.resale_line_id;
743 END IF;
744
745
746 -- I create adjustment, if a line was created before and adjustment is new
747 -- or a new line is just created
748
749 -- clear up the temparory result PL/SQL table
750 IF l_ldets_tbl.EXISTS(1) THEN
751 l_ldets_tbl.DELETE;
752 END IF;
753
754 m:=1;
755
756 OPEN line_ldets_tbl_csr(p_line_result_rec.line_index);
757 FETCH line_ldets_tbl_csr BULK COLLECT INTO l_ldets_tbl;
758 --LOOP
759 -- FETCH line_ldets_tbl_csr INTO l_ldets_tbl(m);
760 -- EXIT when line_ldets_tbl_csr%NOTFOUND;
761 -- m := m + 1;
762 --END LOOP;
763 CLOSE line_ldets_tbl_csr;
764
765 l_price_diff_util := ( p_caller_type = 'IFACE' AND
766 p_line_result_rec.unit_price < p_resale_line_int_rec.selling_price
767 )
768 OR
769 ( p_caller_type = 'RESALE' AND
770 p_line_result_rec.unit_price < p_resale_line_rec.selling_price
771 );
772 IF OZF_DEBUG_LOW_ON THEN
773 ozf_utility_PVT.debug_message(l_full_name||':unit_price:'||p_line_result_rec.unit_price);
774 ozf_utility_PVT.debug_message(l_full_name||':selling_price'||p_resale_line_rec.selling_price);
775 END IF;
776
777 IF OZF_DEBUG_LOW_ON THEN
778 IF l_price_diff_util THEN
779 ozf_utility_PVT.debug_message(l_api_name||' >> do price adjustment');
780 ELSE
781 ozf_utility_pvt.debug_message(l_api_name||' >> no price adjustment');
782 END IF;
783 END IF;
784
785 IF OZF_DEBUG_LOW_ON THEN
786 ozf_utility_PVT.debug_message(l_full_name||':l_ldets_tbl.count:'||l_ldets_tbl.count);
787 END IF;
788
789 IF l_ldets_tbl.EXISTS(1) THEN
790 FOR k IN 1..l_ldets_tbl.LAST LOOP
791
792 l_adjustment_rec := NULL;
793 l_act_budgets_rec := NULL;
794 l_act_util_rec := NULL;
795
796 -- Look in to list_line_type_code in view or CREATED_FROM_LIST_LINE_TYPE in tbl = 'DIS'
797 -- IF applied_flag= 'Y' OR
798 -- applied_flag= 'N' AND accrual_flag = 'Y' AND automatic_flag ='Y'THEN
799 -- create a price adjustment record
800 -- create a util_rec and act_budet_rec based on the discount
801 -- END IF;
802 -- INSERT INTO price adustment table
803 -- call budget api
804 -- Create an accrual for this accrual, pass in l_header_id as a refrence.
805 -- IF CREATED_FROM_LIST_LINE_TYPE = 'PBH' Then
806 -- do the same thing for each child line
807 -- END IF;
808 -- list_line_type_code 'PLL' is added.
809
810 IF OZF_DEBUG_LOW_ON THEN
811 ozf_utility_pvt.debug_message(l_api_name||' >> qp_ldets_v (+)');
812 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').list_header_id = '||l_ldets_tbl(k).list_header_id);
813 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').list_line_type_code = '||l_ldets_tbl(k).list_line_type_code);
814 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').applied_flag = '||l_ldets_tbl(k).applied_flag);
815 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').accrual_flag = '||l_ldets_tbl(k).accrual_flag);
816 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').automatic_flag = '||l_ldets_tbl(k).automatic_flag);
817 ozf_utility_pvt.debug_message(l_api_name||' >> qp_ldets_v (-)');
818 END IF;
819
820 IF l_ldets_tbl(k).list_line_type_code IN ('DIS','PBH', 'PLL') THEN
821 -- create utilization based on an offer
822
823 IF (l_ldets_tbl(k).applied_flag = 'Y' AND
824 l_ldets_tbl(k).accrual_flag = 'N'
825 )
826 OR
827 (l_ldets_tbl(k).accrual_flag = 'Y' AND
828 l_ldets_tbl(k).automatic_flag = 'Y'
829 )
830 OR
831 l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
832
833 IF l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
834 l_object_type := 'PL';
835 ELSE
836 l_object_type := 'OFFR';
837 END IF;
838 -- only accrual for TM offers
839 Is_Valid_Offer(p_list_header_id => l_ldets_tbl(k).list_header_id,
840 p_list_line_id => l_ldets_tbl(k).list_line_id,
841 p_line_id => l_line_id,
842 p_object_type => l_object_type,
843 x_result => l_is_valid_offer,
844 x_return_status => l_return_status
845 );
846 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
847 RAISE FND_API.G_EXC_ERROR;
848 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
849 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
850 END IF;
851
852 IF OZF_DEBUG_LOW_ON THEN
853 IF l_is_valid_offer OR l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
854 ozf_utility_pvt.debug_message(l_api_name||' >> Accrual for TM OFFR or PLL adjustment (+)');
855 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').list_header_id = '||l_ldets_tbl(k).list_header_id);
856 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').order_qty_adj_amt = '||l_ldets_tbl(k).order_qty_adj_amt);
857 ozf_utility_pvt.debug_message('l_ldets_tbl('||k||').line_quantity = '||l_ldets_tbl(k).line_quantity);
858 ozf_utility_pvt.debug_message('order line priced_quantity = '||p_line_result_rec.priced_quantity);
859 IF l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
860 ozf_utility_pvt.debug_message('order line unit_price = '||p_line_result_rec.unit_price);
861 END IF;
862 ozf_utility_pvt.debug_message(l_api_name||' >> Accrual for TM OFFR or PLL adjustment (-)');
863 END IF;
864 END IF;
865
866 IF l_is_valid_offer THEN
867 IF (l_ldets_tbl(k).list_line_type_code = 'PLL' AND
868 l_price_diff_util
869 )
870 OR
871 l_ldets_tbl(k).list_line_type_code IN ('DIS','PBH') THEN
872
873 -- IF l_ldets_tbl(k).line_quantity IS NULL THEN
874 l_ldets_tbl(k).line_quantity := NVL(p_line_result_rec.priced_quantity, ABS(p_resale_line_int_rec.quantity));
875 -- END IF;
876
877 -- BUG 4581928 (+)
878 IF p_caller_type = 'IFACE' THEN
879 l_ldets_tbl(k).line_quantity := l_ldets_tbl(k).line_quantity
880 * SIGN(p_resale_line_int_rec.quantity);
881 ELSE -- p_caller_type = 'RESALE'
882 l_ldets_tbl(k).line_quantity := l_ldets_tbl(k).line_quantity
883 * SIGN(p_resale_line_rec.quantity);
884 END IF;
885 -- BUG 4581928 (-)
886
887 -- R12 Volumn Offer Enhancement (+)
888 -- TPA in DRAFT mode ER : Update tracking line(ozf_order_group_prod table) only in FINAL mode
889 IF l_object_type = 'OFFR' AND p_run_mode <> 'DRAFT' THEN
890 OZF_VOLUME_CALCULATION_PUB.Update_Tracking_Line(
891 p_init_msg_list => FND_API.g_false
892 ,p_api_version => 1.0
893 ,p_commit => FND_API.g_false
894 ,x_return_status => l_return_status
895 ,x_msg_count => l_msg_count
896 ,x_msg_data => l_msg_data
897 ,p_list_header_id => l_ldets_tbl(k).list_header_id
898 ,p_interface_line_id => p_resale_line_int_rec.resale_line_int_id
899 ,p_resale_line_id => l_line_id
900 );
901 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
902 RAISE FND_API.G_EXC_ERROR;
903 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
904 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
905 END IF;
906 END IF;
907 -- R12 Volumn Offer Enhancement (-)
908
909 OPEN OZF_RESALE_COMMON_PVT.g_adjustment_id_csr;
910 FETCH OZF_RESALE_COMMON_PVT.g_adjustment_id_csr INTO l_adjustment_rec.resale_adjustment_id;
911 CLOSE OZF_RESALE_COMMON_PVT.g_adjustment_id_csr;
912
913 l_adjustment_rec.resale_batch_id := p_resale_batch_id;
914 l_adjustment_rec.resale_line_id := l_line_id;
915 l_adjustment_rec.list_header_id := l_ldets_tbl(k).list_header_id;
916 l_adjustment_rec.list_line_id := l_ldets_tbl(k).list_line_id;
917 IF l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
918 IF p_caller_type = 'IFACE' THEN
919 l_adjustment_rec.accepted_amount :=
920 -1 * (p_resale_line_int_rec.selling_price - p_line_result_rec.unit_price);
921 ELSE
922 l_adjustment_rec.accepted_amount :=
923 -1 * (p_resale_line_rec.selling_price - p_line_result_rec.unit_price);
924 END IF;
925 ELSE
926 IF l_ldets_tbl(k).applied_flag = 'Y' THEN
927 l_adjustment_rec.accepted_amount := l_ldets_tbl(k).order_qty_adj_amt;
928 END IF;
929 END IF;
930 -- BUG 4558568 (+)
931 --l_adjustment_rec.total_accepted_amount :=
932 --l_adjustment_rec.accepted_amount * ABS(l_ldets_tbl(k).line_quantity); --abs(p_line_result_rec.priced_quantity);
933 --l_adjustment_rec.priced_quantity := ABS(l_ldets_tbl(k).line_quantity); --abs(p_line_result_rec.priced_quantity);
934 l_adjustment_rec.total_accepted_amount :=
935 l_adjustment_rec.accepted_amount * l_ldets_tbl(k).line_quantity;
936
937 -- nepanda : fix for bug # 13506138 : start
938 ozf_utility_pvt.write_conc_log('accrual amount from pricing = '|| l_adjustment_rec.total_accepted_amount);
939
940 l_adjustment_rec.total_accepted_amount := ozf_utility_pvt.currround(l_adjustment_rec.total_accepted_amount , p_line_result_rec.currency_code);
941
942 ozf_utility_pvt.write_conc_log('accrual amount from pricing(after rounding) = '|| l_adjustment_rec.total_accepted_amount);
943 -- nepanda : fix for bug # 13506138 : end
944
945 l_adjustment_rec.priced_quantity := l_ldets_tbl(k).line_quantity;
946 -- BUG 4558568 (-)
947 l_adjustment_rec.priced_uom_code := p_line_result_rec.priced_uom_code;
948 l_adjustment_rec.operand := l_ldets_tbl(k).operand_value;
949 l_adjustment_rec.operand_calculation_code := l_ldets_tbl(k).operand_calculation_code;
950 l_adjustment_rec.priced_unit_price := p_line_result_rec.unit_price;
951 l_adjustment_rec.calculated_price := p_line_result_rec.unit_price;
952 l_adjustment_rec.STATUS_CODE := 'CLOSED';
953 l_adjustment_rec.claimed_amount := 0;
954 l_adjustment_rec.total_claimed_amount := 0;
955 l_adjustment_rec.allowed_amount := 0;
956 l_adjustment_rec.total_allowed_amount := 0;
957 l_adjustment_rec.tolerance_flag := 'F';
958 l_adjustment_rec.line_tolerance_amount := 0;
959
960 IF l_ldets_tbl(k).list_line_type_code = 'PLL' AND
961 p_caller_type = 'IFACE' THEN
962 l_adjustment_rec.orig_system_agreement_uom := p_resale_line_int_rec.orig_system_agreement_uom;
963 l_adjustment_rec.orig_system_agreement_name := p_resale_line_int_rec.orig_system_agreement_name;
964 l_adjustment_rec.orig_system_agreement_type := p_resale_line_int_rec.orig_system_agreement_type;
965 l_adjustment_rec.orig_system_agreement_status := p_resale_line_int_rec.orig_system_agreement_status;
966 l_adjustment_rec.orig_system_agreement_curr := p_resale_line_int_rec.orig_system_agreement_curr;
967 l_adjustment_rec.orig_system_agreement_price := p_resale_line_int_rec.orig_system_agreement_price;
968 l_adjustment_rec.orig_system_agreement_quantity := p_resale_line_int_rec.orig_system_agreement_quantity;
969 l_adjustment_rec.agreement_id := p_resale_line_int_rec.agreement_id;
970 l_adjustment_rec.agreement_type := p_resale_line_int_rec.agreement_type;
971 l_adjustment_rec.agreement_name := p_resale_line_int_rec.agreement_name;
972 l_adjustment_rec.agreement_price := p_resale_line_int_rec.agreement_price;
973 l_adjustment_rec.AGREEMENT_uom_code := p_resale_line_int_rec.agreement_uom_code;
974 l_adjustment_rec.corrected_agreement_id := p_resale_line_int_rec.corrected_agreement_id;
975 l_adjustment_rec.corrected_agreement_name := p_resale_line_int_rec.corrected_agreement_name;
976 l_adjustment_rec.credit_code := p_resale_line_int_rec.credit_code;
977 l_adjustment_rec.credit_advice_date := p_resale_line_int_rec.credit_advice_date;
978 l_adjustment_rec.line_agreement_flag := 'T';
979 ELSE
980 l_adjustment_rec.orig_system_agreement_uom := NULL;
981 l_adjustment_rec.orig_system_agreement_name := NULL;
982 l_adjustment_rec.orig_system_agreement_type := NULL;
983 l_adjustment_rec.orig_system_agreement_status := NULL;
984 l_adjustment_rec.orig_system_agreement_curr := NULL;
985 l_adjustment_rec.orig_system_agreement_price := NULL;
986 l_adjustment_rec.orig_system_agreement_quantity := NULL;
987 l_adjustment_rec.agreement_id := NULL;
988 l_adjustment_rec.agreement_type := NULL;
989 l_adjustment_rec.agreement_name := NULL;
990 l_adjustment_rec.agreement_price := NULL;
991 l_adjustment_rec.agreement_uom_code := NULL;
992 l_adjustment_rec.corrected_agreement_id := NULL;
993 l_adjustment_rec.corrected_agreement_name := NULL;
994 l_adjustment_rec.credit_code := NULL;
995 l_adjustment_rec.credit_advice_date := NULL;
996 l_adjustment_rec.line_agreement_flag := 'F';
997 END IF;
998
999 -- R12 MOAC (+)
1000 IF p_caller_type = 'IFACE' THEN
1001 l_adjustment_rec.org_id := p_resale_line_int_rec.org_id;
1002 ELSE
1003 l_adjustment_rec.org_id := p_resale_line_rec.org_id;
1004 END IF;
1005 -- R12 MOAC (-)
1006
1007 -- Create act Utilization Record.
1008 l_act_util_rec.object_type := 'TP_ORDER';
1009 l_act_util_rec.object_id := l_line_id;
1010 l_act_util_rec.product_level_type :='PRODUCT';
1011
1012 l_act_util_rec.bill_to_site_use_id := p_resale_line_rec.bill_to_site_use_id;
1013 l_act_util_rec.ship_to_site_use_id := p_resale_line_rec.ship_to_site_use_id;
1014 ozf_utility_pvt.write_conc_log('JL: bill_to_site_use_id = ' || p_resale_line_rec.bill_to_site_use_id);
1015 ozf_utility_pvt.write_conc_log('JL: ship_to_site_use_id = ' || p_resale_line_rec.ship_to_site_use_id);
1016 IF p_caller_type = 'IFACE' THEN
1017 l_act_util_rec.product_id := p_resale_line_int_rec.inventory_item_Id;
1018 -- Here, there is a need to look INTO trading group issue
1019 -- Handled by budget
1020 l_act_util_rec.billto_cust_account_id := p_resale_line_int_rec.bill_to_cust_account_id ;
1021 l_act_util_rec.gl_date := p_resale_line_int_rec.date_shipped;
1022 -- R12 MOAC (+)
1023 l_act_util_rec.org_id := p_resale_line_int_rec.org_id;
1024 -- R12 MOAC (-)
1025 -- bug fix 13552986
1026 IF G_IDSM_PRICING_ADJ_BASIS = 'INVOICE_DATE' THEN
1027 l_act_util_rec.adjustment_date := NVL(p_resale_line_int_rec.date_invoiced,NVL(p_resale_line_int_rec.date_shipped,p_resale_line_int_rec.date_ordered));
1028 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'SHIP_DATE' THEN
1029 l_act_util_rec.adjustment_date := NVL(p_resale_line_int_rec.date_shipped,p_resale_line_int_rec.date_ordered);
1030 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'ORDER_DATE' THEN
1031 l_act_util_rec.adjustment_date := p_resale_line_int_rec.date_ordered;
1032 END IF;
1033 ELSE
1034 l_act_util_rec.product_id := p_resale_line_rec.inventory_item_Id;
1035 -- Here, there is a need to look INTO trading group issue
1036 -- Handled by budget
1037 l_act_util_rec.billto_cust_account_id := p_resale_line_rec.bill_to_cust_account_id;
1038 l_act_util_rec.gl_date := p_resale_line_rec.date_shipped;
1039 -- R12 MOAC (+)
1040 l_act_util_rec.org_id := p_resale_line_rec.org_id;
1041 -- R12 MOAC (-)
1042 -- bug fix 13552986
1043 IF G_IDSM_PRICING_ADJ_BASIS = 'INVOICE_DATE' THEN
1044 l_act_util_rec.adjustment_date := NVL(p_resale_line_rec.date_invoiced,NVL(p_resale_line_rec.date_shipped,p_resale_line_rec.date_ordered));
1045 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'SHIP_DATE' THEN
1046 l_act_util_rec.adjustment_date := NVL(p_resale_line_rec.date_shipped,p_resale_line_rec.date_ordered);
1047 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'ORDER_DATE' THEN
1048 l_act_util_rec.adjustment_date := p_resale_line_rec.date_ordered;
1049 END IF;
1050 END IF;
1051
1052 l_act_util_rec.price_adjustment_id := l_adjustment_rec.resale_adjustment_id;
1053
1054 IF l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
1055 l_act_util_rec.utilization_type :='ADJUSTMENT' ; -- Adjustment for price difference
1056 l_act_util_rec.adjustment_type_id := -10;
1057 ELSE
1058 l_act_util_rec.utilization_type :='UTILIZED' ; -- Always it is utilized.
1059 END IF;
1060
1061 -- Create act Budget Record.
1062 l_act_budgets_rec.act_budget_used_by_id := l_ldets_tbl(k).list_header_id;
1063 l_act_budgets_rec.budget_source_id := l_ldets_tbl(k).list_header_id;
1064 l_act_budgets_rec.status_code := 'APPROVED';
1065 l_act_budgets_rec.transfer_type := 'UTILIZED';
1066
1067 IF l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
1068 l_act_budgets_rec.arc_act_budget_used_by := 'PRIC';
1069 l_act_budgets_rec.budget_source_type := 'PRIC';
1070 l_act_budgets_rec.approver_id := ozf_utility_pvt.get_resource_id(p_approver_id);
1071 l_act_budgets_rec.requester_id := ozf_utility_pvt.get_resource_id(p_approver_id);
1072 l_act_budgets_rec.request_currency := p_line_result_rec.currency_code;
1073
1074 -- Get fund info for price difference
1075 -- get chargeback budget id FROM profile
1076 IF p_price_diff_fund_id IS NULL THEN
1077 ozf_utility_pvt.error_message('OZF_THRDPTY_BUDGET_ERR');
1078 RAISE FND_API.g_exc_error;
1079 ELSE
1080 l_act_budgets_rec.parent_source_id := p_price_diff_fund_id;
1081 END IF;
1082
1083 l_act_budgets_rec.parent_src_curr := OZF_ACTBUDGETS_PVT.get_object_currency (
1084 'FUND'
1085 ,l_act_budgets_rec.parent_source_id
1086 ,l_return_status
1087 );
1088 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1089 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1090 END IF;
1091 l_act_budgets_rec.justification := 'THIRD PARTY PRICE DIFF';
1092
1093 l_act_util_rec.fund_request_currency_code := OZF_ACTBUDGETS_PVT.get_object_currency (
1094 'PRIC'
1095 ,l_ldets_tbl(k).list_header_id
1096 ,l_return_status
1097 );
1098
1099 ELSE
1100 l_act_budgets_rec.arc_act_budget_used_by := 'OFFR';
1101 l_act_budgets_rec.budget_source_type := 'OFFR';
1102
1103 --nirprasa,12.2 ER 8399134
1104 /*l_act_budgets_rec.request_currency := OZF_ACTBUDGETS_PVT.get_object_currency (
1105 'OFFR'
1106 ,l_ldets_tbl(k).list_header_id
1107 ,l_return_status
1108 );*/
1109 l_act_budgets_rec.request_currency := p_line_result_rec.currency_code;
1110 l_act_util_rec.fund_request_currency_code := OZF_ACTBUDGETS_PVT.get_object_currency (
1111 'OFFR'
1112 ,l_ldets_tbl(k).list_header_id
1113 ,l_return_status
1114 );
1115
1116 --nirprasa,12.2
1117 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1118 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1119 END IF;
1120 END IF;
1121
1122 -- get adjusted amount in budget currency
1123 -- Problem in 115.9 is fixed. no need here.
1124
1125 IF OZF_DEBUG_LOW_ON THEN
1126 ozf_utility_pvt.debug_message('l_adjustment_rec.total_accepted_amount = ' || l_adjustment_rec.total_accepted_amount);
1127 END IF;
1128 --ER9447673
1129
1130 -- julou 5723309: create util for VO PBH line only
1131 OPEN c_offer_type(l_ldets_tbl(k).list_header_id);
1132 FETCH c_offer_type INTO l_offer_type, l_custom_setup_id,l_offer_name, l_offer_id;
1133 CLOSE c_offer_type;
1134
1135 IF OZF_DEBUG_LOW_ON THEN
1136 ozf_utility_pvt.debug_message('l_ldets_tbl(k).list_header_id = ' || l_ldets_tbl(k).list_header_id);
1137 ozf_utility_pvt.debug_message('l_custom_setup_id = ' || l_custom_setup_id);
1138 ozf_utility_pvt.debug_message('l_offer_type = ' || l_offer_type);
1139 ozf_utility_pvt.debug_message('l_adjustment_rec.org_id = ' || l_adjustment_rec.org_id);
1140 ozf_utility_pvt.debug_message('l_line_id = ' || l_line_id);
1141 END IF;
1142
1143 --nirprasa, ER9447673 populate new columns
1144
1145 -- Reference for batch
1146 IF l_custom_setup_id = 118 THEN
1147 OPEN c_sd_request_header_id(l_ldets_tbl(k).list_header_id);
1148 FETCH c_sd_request_header_id INTO l_act_util_rec.reference_id;
1149 CLOSE c_sd_request_header_id;
1150
1151 l_act_util_rec.reference_type := 'SD_REQUEST';
1152
1153 --Populate Discount Amount, Discount Type, Discount Currency for SDR Offers
1154 OPEN c_sd_offer_discount(l_ldets_tbl(k).list_line_id);
1155 FETCH c_sd_offer_discount INTO l_act_util_rec.discount_amount, l_act_util_rec.discount_type;
1156 CLOSE c_sd_offer_discount;
1157
1158 IF OZF_DEBUG_LOW_ON THEN
1159 ozf_utility_pvt.debug_message('l_act_util_rec.discount_amount = ' || l_act_util_rec.discount_amount);
1160 ozf_utility_pvt.debug_message('l_act_util_rec.discount_type = ' || l_act_util_rec.discount_type);
1161 ozf_utility_pvt.debug_message('l_act_budgets_rec.request_currency = ' || l_act_budgets_rec.request_currency);
1162 END IF;
1163
1164 IF l_act_util_rec.discount_type in ('AMT', 'NEWPRICE') THEN
1165 l_act_util_rec.discount_amount_currency_code := l_act_budgets_rec.request_currency;
1166 END IF;
1167
1168 MO_GLOBAL.set_policy_context('S', l_adjustment_rec.org_id);
1169 l_ssd_on_idsm := fnd_profile.value('OZF_SSD_ON_IDSM');
1170 IF OZF_DEBUG_LOW_ON THEN
1171 ozf_utility_pvt.debug_message('l_ssd_on_idsm = ' || l_ssd_on_idsm);
1172 END IF;
1173
1174 IF l_ssd_on_idsm = 'Y' THEN
1175 OPEN c_purchase_price(l_line_id);
1176 FETCH c_purchase_price INTO l_cost_price;
1177 CLOSE c_purchase_price;
1178
1179 IF (l_cost_price = -1 AND (l_ldets_tbl(k).operand_calculation_code = '%' OR l_ldets_tbl(k).operand_calculation_code ='UNIT_PRICE')) THEN
1180 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_error) THEN
1181 FND_MESSAGE.Set_Token('OZF', 'OZF_COST_PRICE_NOT_FOUND');
1182 FND_MESSAGE.Set_Token('OFFR',l_offer_name); --OR LIST_HEADER_ID?
1183 FND_MESSAGE.Set_Token('ORDER',l_act_util_rec.object_id);
1184 FND_MESSAGE.Set_Token('ITEM',l_act_util_rec.product_id);
1185 FND_MESSAGE.Set_Token('TEXT',sqlerrm);
1186 fnd_msg_pub.add;
1187 END IF;
1188 RAISE fnd_api.g_exc_error;
1189 END IF;
1190
1191 IF OZF_DEBUG_LOW_ON THEN
1192 ozf_utility_pvt.debug_message('l_ldets_tbl(k).operand_calculation_code = ' || l_ldets_tbl(k).operand_calculation_code);
1193 ozf_utility_pvt.debug_message('l_ldets_tbl(k).operand_value = ' || l_ldets_tbl(k).operand_value);
1194 ozf_utility_pvt.debug_message('p_resale_line_rec.selling_price = ' || p_resale_line_rec.selling_price);
1195 ozf_utility_pvt.debug_message('l_cost_price = ' || l_cost_price);
1196 END IF;
1197
1198 IF l_ldets_tbl(k).operand_calculation_code = '%' THEN
1199 l_adjustment_rec.total_accepted_amount := l_cost_price * l_ldets_tbl(k).operand_value/100 * l_ldets_tbl(k).line_quantity * -1;
1200 ELSIF l_ldets_tbl(k).operand_calculation_code = 'UNIT_PRICE' THEN
1201 l_adjustment_rec.total_accepted_amount := (l_cost_price - l_ldets_tbl(k).operand_value) * l_ldets_tbl(k).line_quantity * -1;
1202 ELSE
1203 l_adjustment_rec.total_accepted_amount := l_ldets_tbl(k).operand_value * -1; --make sure operand value calculated after applying formula, if any is used.
1204 END IF;
1205
1206 l_act_util_rec.cost_price := l_cost_price;
1207 l_act_util_rec.cost_price_currency_code := l_act_budgets_rec.request_currency;
1208 ELSE -- l_ssd_on_idsm = 'N'/NULL
1209 ozf_utility_pvt.write_conc_log('Profile OZF: Supplier Ship and Debit on Indirect Sales is set to No or is NULL.');
1210 GOTO LABEL_FOR_NEXT_ITERATION;
1211 END IF;
1212 ELSE
1213 l_act_util_rec.reference_type := 'BATCH';
1214 l_act_util_rec.reference_id := p_resale_batch_id;
1215 END IF;
1216
1217
1218
1219 IF OZF_DEBUG_LOW_ON THEN
1220 ozf_utility_pvt.debug_message('l_adjustment_rec.total_accepted_amount = ' || l_adjustment_rec.total_accepted_amount);
1221 END IF;
1222 --ER9447673
1223
1224 l_act_budgets_rec.request_amount := l_adjustment_rec.total_accepted_amount;
1225 --nirprasa 12.2 ER 8399134
1226 l_act_util_rec.plan_currency_code := l_act_budgets_rec.request_currency;
1227
1228 l_adjustment_rec.calculated_amount := l_act_budgets_rec.request_amount;
1229
1230 l_act_budgets_rec.request_currency := OZF_ACTBUDGETS_PVT.get_object_currency (
1231 'OFFR'
1232 ,l_ldets_tbl(k).list_header_id
1233 ,l_return_status
1234 );
1235
1236
1237 --nirprasa,12.2 remove currency conversion b/w order and offer currency
1238 IF p_line_result_rec.currency_code <> l_act_budgets_rec.request_currency THEN
1239 -- get convert type
1240 OPEN OZF_RESALE_COMMON_PVT.g_exchange_rate_type_csr;
1241 FETCH OZF_RESALE_COMMON_PVT.g_exchange_rate_type_csr INTO l_exchange_type;
1242 CLOSE OZF_RESALE_COMMON_PVT.g_exchange_rate_type_csr;
1243
1244 OZF_UTILITY_PVT.convert_currency(
1245 p_from_currency => p_line_result_rec.currency_code
1246 ,p_to_currency => l_act_budgets_rec.request_currency
1247 ,p_conv_type => l_exchange_type
1248 ,p_conv_rate => FND_API.G_MISS_NUM
1249 ,p_conv_date => sysdate
1250 ,p_from_amount => l_act_budgets_rec.request_amount
1251 ,x_return_status => l_return_status
1252 ,x_to_amount => l_new_request_amount
1253 ,x_rate => l_rate
1254 );
1255 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1256 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1257 END IF;
1258 l_act_budgets_rec.request_amount := l_new_request_amount;
1259 END IF;
1260 --nirprasa,12.2
1261 IF OZF_DEBUG_LOW_ON THEN
1262 ozf_utility_PVT.debug_message('act budget: '||l_act_budgets_rec.request_amount);
1263 END IF;
1264
1265 -- Utilization always have different sign than the price adjustment
1266
1267 l_act_budgets_rec.request_amount := l_act_budgets_rec.request_amount * -1;
1268
1269 IF l_ldets_tbl(k).list_line_type_code = 'PLL' THEN
1270 l_act_budgets_rec.parent_src_apprvd_amt := l_act_budgets_rec.request_amount;
1271 IF p_line_result_rec.currency_code <> l_act_budgets_rec.parent_src_curr THEN
1272 -- get convert type
1273 OPEN OZF_RESALE_COMMON_PVT.g_exchange_rate_type_csr;
1274 FETCH OZF_RESALE_COMMON_PVT.g_exchange_rate_type_csr INTO l_exchange_type;
1275 CLOSE OZF_RESALE_COMMON_PVT.g_exchange_rate_type_csr;
1276
1277 OZF_UTILITY_PVT.convert_currency(
1278 p_FROM_currency => p_line_result_rec.currency_code
1279 ,p_to_currency => l_act_budgets_rec.parent_src_curr
1280 ,p_conv_type => l_exchange_type
1281 ,p_conv_rate => FND_API.G_MISS_NUM
1282 ,p_conv_date => sysdate
1283 ,p_FROM_amount => l_act_budgets_rec.parent_src_apprvd_amt
1284 ,x_return_status => l_return_status
1285 ,x_to_amount => l_new_request_amount
1286 ,x_rate => l_rate
1287 );
1288 IF l_return_status = FND_API.g_ret_sts_error THEN
1289 RAISE FND_API.g_exc_error;
1290 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1291 RAISE FND_API.g_exc_error;
1292 END IF;
1293 l_act_budgets_rec.parent_src_apprvd_amt := l_new_request_amount;
1294 END IF;
1295 END IF;
1296
1297
1298
1299 IF OZF_DEBUG_LOW_ON THEN
1300 ozf_utility_pvt.debug_message(' JL offer_type: ' || l_offer_type);
1301 ozf_utility_pvt.debug_message(' JL list_line_type_code: ' || l_ldets_tbl(k).list_line_type_code);
1302 ozf_utility_pvt.debug_message(' JL calculated_amount: ' || l_adjustment_rec.calculated_amount);
1303 END IF;
1304
1305 l_to_create_utilization := (l_ldets_tbl(k).list_line_type_code = 'PLL' AND
1306 l_adjustment_rec.calculated_amount IS NOT NULL)
1307 OR
1308 (l_ldets_tbl(k).list_line_type_code = 'DIS' AND
1309 l_offer_type <> 'VOLUME_OFFER' AND
1310 l_adjustment_rec.calculated_amount IS NOT NULL)
1311 OR
1312 (l_ldets_tbl(k).list_line_type_code = 'PBH' AND
1313 --l_offer_type = 'VOLUME_OFFER' AND --multi-tier offer also stores effective accrual on PBH line
1314 l_adjustment_rec.calculated_amount IS NOT NULL);
1315 -- end julou 5723309
1316 /*
1317 l_to_create_utilization := (l_ldets_tbl(k).list_line_type_code = 'PLL' AND
1318 l_adjustment_rec.calculated_amount IS NOT NULL)
1319 OR
1320 (l_ldets_tbl(k).list_line_type_code = 'DIS' AND
1321 l_adjustment_rec.calculated_amount IS NOT NULL);
1322 */
1323
1324 --kdass bug 12912760 - populate beneficary for volume offer
1325 IF l_offer_type = 'VOLUME_OFFER' AND l_act_util_rec.object_type = 'TP_ORDER'
1326 AND l_act_budgets_rec.arc_act_budget_used_by = 'OFFR' THEN
1327 l_beneficiary_account_id := ozf_volume_calculation_pub.get_beneficiary(l_offer_id
1328 ,l_act_util_rec.object_id);
1329 IF OZF_DEBUG_LOW_ON THEN
1330 ozf_utility_pvt.write_conc_log ('l_offer_id: ' || l_offer_id);
1331 ozf_utility_pvt.write_conc_log ('l_beneficiary_account_id: ' || l_beneficiary_account_id);
1332 END IF;
1333
1334 IF l_beneficiary_account_id = 0 THEN
1335 l_act_util_rec.cust_account_id := l_act_util_rec.billto_cust_account_id;
1336 ELSE
1337 l_act_util_rec.cust_account_id := l_beneficiary_account_id;
1338 l_act_util_rec.ship_to_site_use_id := NULL;
1339 l_act_util_rec.bill_to_site_use_id := NULL;
1340 END IF;
1341 END IF;
1342
1343 -- Bug 14194884 - TPA In Draft Mode ER : Call new procedure to create DRAFT utilizations in case of DRAFT mode.
1344 IF p_run_mode = 'DRAFT' THEN
1345
1346 OZF_RESALE_COMMON_PVT.Create_Draft_Utilization(
1347 p_api_version => 1
1348 ,p_init_msg_list => FND_API.G_FALSE
1349 ,p_commit => FND_API.G_FALSE
1350 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1351 ,p_price_adj_rec => l_adjustment_rec
1352 ,p_act_budgets_rec => l_act_budgets_rec
1353 ,p_act_util_rec => l_act_util_rec
1354 ,p_resale_line_int_rec => l_resale_line_int_rec
1355 ,p_draft_run_id => p_draft_run_id
1356 ,p_caller_type => p_caller_type
1357 ,px_draft_accrual_tbl => x_draft_accrual_tbl
1358 ,x_return_status => l_return_status
1359 ,x_msg_data => l_msg_data
1360 ,x_msg_count => l_msg_count
1361 ,x_draft_utilization_id => l_draft_utilization_id
1362 );
1363 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1364 RAISE FND_API.G_EXC_ERROR;
1365 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1366 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1367 END IF;
1368
1369 ELSE -- IF p_run_mode = 'DRAFT' THEN
1370
1371 OZF_RESALE_COMMON_PVT.Create_Adj_and_Utilization(
1372 p_api_version => 1
1373 ,p_init_msg_list => FND_API.G_FALSE
1374 ,p_commit => FND_API.G_FALSE
1375 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1376 ,p_price_adj_rec => l_adjustment_rec
1377 ,p_act_budgets_rec => l_act_budgets_rec
1378 ,p_act_util_rec => l_act_util_rec
1379 ,p_to_create_utilization => l_to_create_utilization
1380 ,x_return_status => l_return_status
1381 ,x_msg_data => l_msg_data
1382 ,x_msg_count => l_msg_count
1383 ,x_utilization_id => l_utilization_id
1384 -- For TPA Parallel Execution ER - 9614703 (+)
1385 ,p_batch_type => 'TP_ACCRUAL'
1386 ,p_use_fund_staging_tables => l_use_fund_staging_tables
1387 ,px_ozf_act_budgets_tbl => x_ozf_act_budgets_tbl
1388 ,px_ozf_funds_old_rectype => ozf_funds_old_rectype
1389 ,px_ozf_funds_new_tbl => x_ozf_funds_new_tbl
1390 -- For TPA Parallel Execution ER - 9614703 (-)
1391 );
1392 --IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1393 -- RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1394 --END IF;
1395
1396 IF l_return_status = fnd_api.g_ret_sts_error THEN
1397 RAISE fnd_api.g_exc_error;
1398 ELSIF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
1399 RAISE fnd_api.g_exc_unexpected_error;
1400 END IF;
1401
1402 IF l_to_create_utilization AND
1403 l_act_budgets_rec.arc_act_budget_used_by = 'OFFR' THEN
1404
1405 IF p_caller_type = 'IFACE' THEN
1406 l_sales_transaction_rec.sold_from_cust_account_id := p_resale_line_int_rec.sold_from_cust_account_id;
1407 l_sales_transaction_rec.sold_to_cust_account_id := p_resale_line_int_rec.bill_to_cust_account_id;
1408 l_sales_transaction_rec.sold_to_party_id := p_resale_line_int_rec.bill_to_party_id;
1409 l_sales_transaction_rec.sold_to_party_site_id := p_resale_line_int_rec.bill_to_party_site_id;
1410 l_sales_transaction_rec.bill_to_site_use_id := p_resale_line_int_rec.bill_to_site_use_id;
1411 l_sales_transaction_rec.ship_to_site_use_id := p_resale_line_int_rec.ship_to_site_use_id;
1412 l_sales_transaction_rec.transaction_date := p_resale_line_int_rec.date_ordered;
1413 IF p_resale_line_int_rec.product_transfer_movement_type = 'TI' THEN
1414 l_sales_transaction_rec.transfer_type := 'IN';
1415 ELSIF p_resale_line_int_rec.product_transfer_movement_type = 'TO' THEN
1416 l_sales_transaction_rec.transfer_type := 'OUT';
1417 ELSIF p_resale_line_int_rec.product_transfer_movement_type = 'DC' THEN
1418 l_sales_transaction_rec.transfer_type := 'OUT';
1419 ELSIF p_resale_line_int_rec.product_transfer_movement_type = 'CD' THEN
1420 l_sales_transaction_rec.transfer_type := 'IN';
1421 END IF;
1422 l_sales_transaction_rec.quantity := p_resale_line_int_rec.quantity;
1423 l_sales_transaction_rec.uom_code := p_resale_line_int_rec.uom_code;
1424 -- l_sales_transaction_rec.amount := ABS(p_resale_line_int_rec.selling_price * p_resale_line_int_rec.quantity);
1425 l_sales_transaction_rec.amount := ABS(p_line_result_rec.unit_price * p_resale_line_int_rec.quantity);
1426 l_sales_transaction_rec.currency_code := p_resale_line_int_rec.currency_code;
1427 l_sales_transaction_rec.inventory_item_id := p_resale_line_int_rec.inventory_item_id;
1428 l_sales_transaction_rec.header_id := p_header_id;
1429 l_sales_transaction_rec.line_id := l_line_id;
1430 l_sales_transaction_rec.source_code := 'IS';
1431 ELSIF p_caller_type = 'RESALE' THEN
1432 l_sales_transaction_rec.sold_from_cust_account_id := p_resale_line_rec.sold_from_cust_account_id;
1433 l_sales_transaction_rec.sold_to_cust_account_id := p_resale_line_rec.bill_to_cust_account_id;
1434 l_sales_transaction_rec.sold_to_party_id := p_resale_line_rec.bill_to_party_id;
1435 l_sales_transaction_rec.sold_to_party_site_id := p_resale_line_rec.bill_to_party_site_id;
1436 l_sales_transaction_rec.bill_to_site_use_id := p_resale_line_rec.bill_to_site_use_id;
1437 l_sales_transaction_rec.ship_to_site_use_id := p_resale_line_rec.ship_to_site_use_id;
1438 l_sales_transaction_rec.transaction_date := p_resale_line_rec.date_ordered;
1439 IF p_resale_line_rec.product_transfer_movement_type = 'TI' THEN
1440 l_sales_transaction_rec.transfer_type := 'IN';
1441 ELSIF p_resale_line_rec.product_transfer_movement_type = 'TO' THEN
1442 l_sales_transaction_rec.transfer_type := 'OUT';
1443 ELSIF p_resale_line_rec.product_transfer_movement_type = 'DC' THEN
1444 l_sales_transaction_rec.transfer_type := 'OUT';
1445 ELSIF p_resale_line_rec.product_transfer_movement_type = 'CD' THEN
1446 l_sales_transaction_rec.transfer_type := 'IN';
1447 END IF;
1448 l_sales_transaction_rec.quantity := p_resale_line_rec.quantity;
1449 l_sales_transaction_rec.uom_code := p_resale_line_rec.uom_code;
1450 --l_sales_transaction_rec.amount := ABS(p_resale_line_rec.selling_price * p_resale_line_rec.quantity);
1451 -- changed by feliu on 12/13/06 since selling_price could be null.
1452 l_sales_transaction_rec.amount := ABS(p_line_result_rec.unit_price * p_resale_line_rec.quantity);
1453 l_sales_transaction_rec.currency_code := p_resale_line_rec.currency_code;
1454 l_sales_transaction_rec.inventory_item_id := p_resale_line_rec.inventory_item_id;
1455 l_sales_transaction_rec.header_id := p_header_id;
1456 l_sales_transaction_rec.line_id := l_line_id;
1457 l_sales_transaction_rec.source_code := 'IS';
1458 END IF;
1459
1460 OZF_VOLUME_CALCULATION_PUB.Create_Volume(
1461 p_init_msg_list => FND_API.g_false
1462 ,p_api_version => 1.0
1463 ,p_commit => FND_API.g_false
1464 ,x_return_status => l_return_status
1465 ,x_msg_count => l_msg_count
1466 ,x_msg_data => l_msg_data
1467 ,p_volume_detail_rec => l_sales_transaction_rec
1468 ,p_qp_list_header_id => l_ldets_tbl(k).list_header_id
1469 ,x_apply_discount => l_vol_offr_apply_discount
1470 ,p_use_vol_smry_stg_tbl => 'T'
1471 ,p_resale_batch_id => p_resale_batch_id
1472 );
1473 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1474 RAISE FND_API.G_EXC_ERROR;
1475 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1476 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1477 END IF;
1478
1479
1480 END IF;
1481 END IF; -- IF p_run_mode = 'DRAFT' THEN -- Bug 14194884 - TPA In Draft Mode ER
1482 END IF; -- END line_type_code is the 'PLL' and price differ or in ('PHB','DIS')
1483 END IF; -- END is valid offer
1484 END IF; -- END accrual flag
1485 END IF; -- END list type
1486 <<LABEL_FOR_NEXT_ITERATION>> --ER9447673
1487 NULL; --ER9447673
1488 END LOOP; -- END LOOP through ldets_lines
1489 END IF; -- END if ldets_line has nothing
1490
1491 x_return_status := l_return_status;
1492
1493 IF OZF_DEBUG_HIGH_ON THEN
1494 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': start');
1495 END IF;
1496
1497 EXCEPTION
1498 WHEN FND_API.G_EXC_ERROR THEN
1499 ozf_utility_pvt.write_conc_log('ERROR in process_one_line');
1500 --ROLLBACK TO PROC_ONE_LINE;
1501 x_return_status := FND_API.G_RET_STS_ERROR;
1502 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1503 ozf_utility_pvt.write_conc_log('UNEXP ERROR in process_one_line');
1504 --ROLLBACK TO PROC_ONE_LINE;
1505 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1506 WHEN OTHERS THEN
1507 ozf_utility_pvt.write_conc_log('OTHER ERROR in process_one_line');
1508 --ROLLBACK TO PROC_ONE_LINE;
1509 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1510 END process_one_line;
1511
1512 PROCEDURE Process_One_Line(
1513 p_resale_line_int_rec IN OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype,
1514 p_resale_line_rec IN OZF_RESALE_LINES%rowtype,
1515 p_line_result_rec IN OZF_ORDER_PRICE_PVT.LINE_REC_TYPE,
1516 p_header_id IN NUMBER,
1517 p_resale_batch_id IN NUMBER,
1518 p_inventory_tracking IN BOOLEAN,
1519 p_price_diff_fund_id IN NUMBER,
1520 p_caller_type IN VARCHAR2,
1521 p_approver_id IN NUMBER,
1522 x_return_status OUT NOCOPY VARCHAR2,
1523 x_ozf_act_budgets_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_act_budgets_table,
1524 x_ozf_funds_new_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_funds_table
1525 )
1526 IS
1527 l_run_mode VARCHAR2(10);
1528 l_draft_run_id NUMBER;
1529 l_draft_accrual_tbl ozf_draft_accrual_tbl_type;
1530 BEGIN
1531 l_run_mode := 'FINAL' ;
1532 l_draft_run_id := NULL;
1533 Process_One_Line(
1534 p_resale_line_int_rec => p_resale_line_int_rec,
1535 p_resale_line_rec => p_resale_line_rec,
1536 p_line_result_rec => p_line_result_rec,
1537 p_header_id => p_header_id,
1538 p_resale_batch_id => p_resale_batch_id,
1539 p_inventory_tracking => p_inventory_tracking,
1540 p_price_diff_fund_id => p_price_diff_fund_id,
1541 p_caller_type => p_caller_type,
1542 p_approver_id => p_approver_id,
1543 p_run_mode => l_run_mode,
1544 p_draft_run_id => l_draft_run_id,
1545 x_return_status => x_return_status,
1546 x_ozf_act_budgets_tbl => x_ozf_act_budgets_tbl,
1547 x_ozf_funds_new_tbl => x_ozf_funds_new_tbl,
1548 x_draft_accrual_tbl => l_draft_accrual_tbl
1549 );
1550 END Process_One_Line;
1551 PROCEDURE Process_One_Line(
1552 p_resale_line_int_rec IN OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype,
1553 p_resale_line_rec IN OZF_RESALE_LINES%rowtype,
1554 p_line_result_rec IN OZF_ORDER_PRICE_PVT.LINE_REC_TYPE,
1555 p_header_id IN NUMBER,
1556 p_resale_batch_id IN NUMBER,
1557 p_inventory_tracking IN BOOLEAN,
1558 p_price_diff_fund_id IN NUMBER,
1559 p_caller_type IN VARCHAR2,
1560 p_approver_id IN NUMBER,
1561 x_return_status OUT NOCOPY VARCHAR2
1562 )
1563 IS
1564 l_ozf_act_budgets_tbl OZF_UTILITY_PVT.ozf_act_budgets_table;
1565 l_ozf_funds_new_tbl OZF_UTILITY_PVT.ozf_funds_table;
1566
1567 BEGIN
1568
1569 Process_One_Line(
1570 p_resale_line_int_rec => p_resale_line_int_rec,
1571 p_resale_line_rec => p_resale_line_rec,
1572 p_line_result_rec => p_line_result_rec,
1573 p_header_id => p_header_id,
1574 p_resale_batch_id => p_resale_batch_id,
1575 p_inventory_tracking => p_inventory_tracking,
1576 p_price_diff_fund_id => p_price_diff_fund_id,
1577 p_caller_type => p_caller_type,
1578 p_approver_id => p_approver_id,
1579 x_return_status => x_return_status,
1580 x_ozf_act_budgets_tbl => l_ozf_act_budgets_tbl,
1581 x_ozf_funds_new_tbl => l_ozf_funds_new_tbl
1582 );
1583
1584 END Process_One_Line;
1585 ---------------------------------------------------------------------
1586 -- PROCEDURE
1587 -- process_pricing_result
1588 --
1589 -- PURPOSE
1590 -- This procedure process the pricing call result. It creates accruals based
1591 -- on the discount information.
1592 --
1593 -- PARAMETERS
1594 -- p_resale_batch_id IN NUMBER,
1595 -- p_line_tbl IN OZF_ORDER_PRICE_PVT.LINE_REC_TBL_TYPE,
1596 -- p_caller_type IN VARCHAR2,
1597 -- x_return_status OUT NOCOPY VARCHAR2
1598 --
1599 -- NOTES
1600 -- 1. Non-monetray accruals have not been considered. Should look INTO ldets.benefit_qty
1601 -- and ldets.benefit_uom for calculation.
1602 -- 2. We will not do third party accruals on tracing data
1603 --
1604 ---------------------------------------------------------------------
1605
1606
1607
1608 PROCEDURE Process_Pricing_Result(
1609 p_resale_batch_id IN NUMBER,
1610 p_line_tbl IN OZF_ORDER_PRICE_PVT.LINE_REC_TBL_TYPE,
1611 p_caller_type IN VARCHAR2,
1612 p_run_mode IN VARCHAR2,
1613 p_draft_run_id IN NUMBER,
1614 x_return_status OUT NOCOPY VARCHAR2,
1615 x_ozf_act_budgets_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_act_budgets_table,
1616 x_ozf_funds_new_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_funds_table,
1617 x_draft_accrual_tbl IN OUT NOCOPY ozf_draft_accrual_tbl_type
1618 )
1619 IS
1620 l_api_name CONSTANT VARCHAR2(30) := 'Process_Pricing_Result';
1621 l_api_version CONSTANT NUMBER := 1.0;
1622 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
1623 ---
1624 l_msg_data VARCHAR2(2000);
1625 l_msg_count NUMBER;
1626 l_return_status VARCHAR2(30);
1627 l_direct_order_flag VARCHAR2(1) := 'N';
1628 --
1629 CURSOR order_identifiers_csr (p_id IN NUMBER) IS
1630 SELECT order_number
1631 , bill_to_cust_account_id
1632 , date_ordered
1633 FROM ozf_resale_lines_int_all
1634 WHERE resale_line_int_id = p_id;
1635
1636 CURSOR resale_info_csr (p_id IN NUMBER) IS
1637 SELECT resale_header_id
1638 FROM ozf_resale_lines
1639 WHERE resale_line_id = p_id;
1640
1641 l_order_number VARCHAR2(30);
1642 l_cust_account_id NUMBER;
1643 l_date_ordered DATE;
1644
1645 l_has_error BOOLEAN := FALSE;
1646 l_log_id NUMBER;
1647
1648 CURSOR resale_rec_csr (p_id IN NUMBER) IS
1649 SELECT *
1650 FROM ozf_resale_lines
1651 WHERE resale_line_id = p_id;
1652
1653 l_resale_int_rec OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype;
1654 l_resale_rec OZF_RESALE_LINES%rowtype;
1655
1656 l_header_id NUMBER;
1657 l_line_id NUMBER;
1658
1659 CURSOR exchange_rate_type_csr IS
1660 SELECT exchange_rate_type
1661 FROM ozf_sys_parameters;
1662
1663 l_default_exchange_type VARCHAR2(30);
1664 l_exchange_type VARCHAR2(30);
1665 l_exchange_date DATE;
1666 l_acctd_adj_unit_price NUMBER;
1667 l_acctd_selling_price NUMBER;
1668 l_rate NUMBER;
1669
1670 CURSOR func_currency_cd_csr IS
1671 SELECT gs.currency_code
1672 FROM gl_sets_of_books gs,
1673 ozf_sys_parameters osp
1674 WHERE gs.set_of_books_id = osp.set_of_books_id
1675 AND osp.org_id = MO_GLOBAL.GET_CURRENT_ORG_ID(); -- BUG 5058027
1676
1677 l_func_currency_code VARCHAR2(15);
1678
1679 --AMITAMKU Fix for Bug 16038553
1680 --Commented this cursor as the duplicated line is handeled now before calling of this procedure
1681 /*
1682 CURSOR dup_line_csr( p_id IN NUMBER
1683 , p_order_number IN VARCHAR2
1684 , p_cust_id IN NUMBER
1685 , p_date IN DATE
1686 ) IS
1687 SELECT 1
1688 FROM ozf_resale_lines_int_all
1689 WHERE resale_batch_id = p_id
1690 AND order_number = p_order_number
1691 AND bill_to_cust_account_id = p_cust_id
1692 AND date_ordered = p_date
1693 AND status_code = 'DUPLICATED';
1694 */
1695
1696 --l_create_order_header BOOLEAN;
1697 l_dup_line_count NUMBER;
1698 l_inventory_tracking VARCHAR2(30);
1699
1700 --AMITAMKU Fix for Bug 16038553
1701 --Commented this cursor as the duplicated line is handeled now before calling of this procedure
1702 /*
1703 CURSOR dup_header_csr( p_id IN NUMBER
1704 , p_order_number IN VARCHAR2
1705 , p_cust_id IN NUMBER
1706 , p_date IN DATE
1707 ) IS
1708 SELECT a.resale_header_id
1709 FROM ozf_resale_headers_all a
1710 , ozf_resale_lines_int_all b
1711 , ozf_resale_lines_all c
1712 WHERE b.resale_batch_id = p_id
1713 AND b.order_number = p_order_number
1714 AND b.bill_to_cust_account_id = p_cust_id
1715 AND b.date_ordered = p_date
1716 AND b.status_code = 'DUPLICATED'
1717 AND b.duplicated_line_id = c.resale_line_id
1718 AND c.resale_header_id = a.resale_header_id;
1719 */
1720
1721 l_fund_id NUMBER:= G_PRC_DIFF_BUDGET; --fnd_profile.value('OZF_THRDPTY_PRCDIFF_BUDGET');
1722 l_id_type VARCHAR2(30);
1723
1724 CURSOR batch_info_csr (p_id IN NUMBER) IS
1725 SELECT partner_cust_account_id,
1726 partner_party_id,
1727 report_start_date,
1728 report_end_date,
1729 last_updated_by,
1730 NVL(direct_order_flag,'N') -- For Bug#9447673 SSD IDSM
1731 FROM ozf_resale_batches_all
1732 WHERE resale_batch_id = p_id;
1733
1734 l_partner_cust_account_id NUMBER;
1735 l_partner_party_id NUMBER;
1736 l_report_start_date DATE;
1737 l_report_end_date DATE;
1738 l_last_updated_by NUMBER(15);
1739 -- Bug 4380203 (+)
1740 l_inventory_level_valid BOOLEAN;
1741 -- Bug 4380203 (-)
1742 -- bug 6317120
1743 l_org_id NUMBER;
1744 -- end bug 6317120
1745 l_dispute_code VARCHAR2(300);
1746 BEGIN
1747 -- Debug Message
1748 IF OZF_DEBUG_HIGH_ON THEN
1749 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': start');
1750 END IF;
1751
1752 x_return_status := FND_API.G_RET_STS_SUCCESS;
1753
1754 SAVEPOINT PROC_PRIC_RESULT;
1755
1756 OPEN batch_info_csr(p_resale_batch_id);
1757 FETCH batch_info_csr into l_partner_cust_account_id,
1758 l_partner_party_id,
1759 l_report_start_date,
1760 l_report_end_date,
1761 l_last_updated_by,
1762 l_direct_order_flag;
1763 CLOSE batch_info_csr;
1764
1765 IF l_fund_id is null THEN
1766 ozf_utility_pvt.error_message('OZF_THRDPTY_BUDGET_ERR');
1767 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Please setup Profile OZF : Price Difference Budget before running Third Party Accrual.');
1768 RAISE FND_API.g_exc_error;
1769 END IF;
1770
1771 -- First check whether the order result collection EXISTS or not
1772 IF p_line_tbl.EXISTS(1) THEN
1773 -- get order identification
1774 IF p_caller_type = 'IFACE' THEN
1775 OPEN order_identifiers_csr(p_line_tbl(1).chargeback_int_id);
1776 FETCH order_identifiers_csr INTO l_order_number,
1777 l_cust_account_id,
1778 l_date_ordered;
1779 CLOSE order_identifiers_csr;
1780 ELSE
1781 OPEN resale_info_csr(p_line_tbl(1).chargeback_int_id);
1782 FETCH resale_info_csr INTO l_header_id;
1783 CLOSE resale_info_csr;
1784 END IF;
1785
1786 -- LOOP through the result to find if there is an error in the result.
1787 FOR i in 1..p_line_tbl.LAST LOOP
1788 l_has_error := p_line_tbl(i).pricing_status_code <> QP_PREQ_PUB.G_STATUS_NEW AND
1789 p_line_tbl(i).pricing_status_code <> QP_PREQ_PUB.G_STATUS_UNCHANGED AND
1790 p_line_tbl(i).pricing_status_code <> QP_PREQ_PUB.G_STATUS_UPDATED;
1791
1792 EXIT WHEN l_has_error;
1793 END LOOP;
1794
1795 IF l_has_error THEN
1796
1797 -- IF there is an error for a line or lines, we need to UPDATE the whole order as error;
1798 -- nothing to UPDATE if it's FROM line.
1799 IF p_caller_type = 'IFACE' THEN
1800 BEGIN
1801 UPDATE ozf_resale_lines_int_all
1802 SET status_code = 'DISPUTED'
1803 WHERE status_code = 'OPEN'
1804 AND order_NUMBER = l_order_number
1805 AND bill_to_cust_account_id = l_cust_account_id
1806 AND date_ordered = l_date_ordered
1807 AND resale_batch_id = p_resale_batch_id;
1808 EXCEPTION
1809 WHEN OTHERS THEN
1810 ozf_utility_pvt.error_message('OZF_UPD_RESALE_INT_WRG');
1811 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1812 END;
1813 l_id_type := 'IFACE';
1814 ELSE
1815 l_id_type := 'LINE';
1816 END IF;
1817
1818 FOR i in 1..p_line_tbl.LAST LOOP
1819 BEGIN
1820 OPEN OZF_RESALE_COMMON_PVT.g_log_id_csr;
1821 FETCH OZF_RESALE_COMMON_PVT.g_log_id_csr INTO l_log_id;
1822 CLOSE OZF_RESALE_COMMON_PVT.g_log_id_csr;
1823
1824 -- julou bug 6317120. get org_id from table
1825 IF l_id_type = 'LINE' THEN
1826 OPEN OZF_RESALE_COMMON_PVT.gc_line_org_id(p_line_tbl(i).chargeback_int_id);
1827 FETCH OZF_RESALE_COMMON_PVT.gc_line_org_id INTO l_org_id;
1828 CLOSE OZF_RESALE_COMMON_PVT.gc_line_org_id;
1829 ELSIF l_id_type = 'IFACE' THEN
1830 OPEN OZF_RESALE_COMMON_PVT.gc_iface_org_id(p_line_tbl(i).chargeback_int_id);
1831 FETCH OZF_RESALE_COMMON_PVT.gc_iface_org_id INTO l_org_id;
1832 CLOSE OZF_RESALE_COMMON_PVT.gc_iface_org_id;
1833 END IF;
1834
1835 OZF_RESALE_LOGS_PKG.Insert_Row(
1836 px_resale_log_id => l_log_id,
1837 p_resale_id => p_line_tbl(i).chargeback_int_id,
1838 p_resale_id_type => l_id_type,
1839 p_error_code => p_line_tbl(i).pricing_status_code,
1840 p_error_message => p_line_tbl(i).pricing_status_text,
1841 p_column_name => NULL,
1842 p_column_value => NULL,
1843 --px_org_id => OZF_RESALE_COMMON_PVT.g_org_id
1844 px_org_id => l_org_id
1845 );
1846 EXCEPTION
1847 WHEN OTHERS THEN
1848 ozf_utility_pvt.error_message('OZF_INS_RESALE_LOG_WRG');
1849 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1850 END;
1851 END LOOP;
1852 ELSE
1853 -- There is no error in the resulting. We need to process the result one by one.
1854 -- Since there is no time overlap between data process and payment initiatioin, I will
1855 -- not check duplicates again
1856
1857 IF p_caller_type = 'IFACE' THEN
1858 --We need to check create an order header first.
1859
1860 --AMITAMKU Fix for Bug 16038553
1861 /*
1862 OPEN dup_line_csr( p_resale_batch_id
1863 , l_order_number
1864 , l_cust_account_id
1865 , l_date_ordered
1866 );
1867 FETCH dup_line_csr INTO l_dup_line_count;
1868 CLOSE dup_line_csr;
1869 */
1870
1871 -- Here, I assume if a line is the duplicate of another line, then they share
1872 -- the same order header. Hence all order with this duplicated line share the
1873 -- the same order with the oringinal lines.
1874
1875 --AMITAMKU Fix for Bug 16038553
1876 -- l_create_order_header := l_dup_line_count IS NULL;
1877
1878 -- Check whether there is a need to do inventory_verification
1879 OPEN OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr;
1880 FETCH OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr INTO l_inventory_tracking;
1881 CLOSE OZF_RESALE_COMMON_PVT.g_inventory_tracking_csr;
1882
1883 /*
1884 For Bug#9447673 SSD IDSM ER - Restricting the
1885 Initiate inventory flow for Direct order only
1886 */
1887 IF l_inventory_tracking = 'T'
1888 AND (l_direct_order_flag <> 'Y') THEN
1889 OZF_SALES_TRANSACTIONS_PVT.Initiate_Inventory_tmp (
1890 p_api_version => 1.0
1891 ,p_init_msg_list => FND_API.G_FALSE
1892 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1893 ,p_resale_batch_id => p_resale_batch_id
1894 ,p_start_date => l_report_start_date
1895 ,p_end_date => l_report_end_date
1896 ,x_return_status => l_return_status
1897 ,x_msg_count => l_msg_count
1898 ,x_msg_data => l_msg_data
1899 );
1900 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1901 OZF_UTILITY_PVT.error_message('OZF_RESALE_INIT_INV_TMP_ERR');
1902 RAISE FND_API.G_EXC_ERROR;
1903 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1904 OZF_UTILITY_PVT.error_message('OZF_RESALE_INIT_INV_TMP_ERR');
1905 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1906 END IF;
1907 /*
1908 OZF_SALES_TRANSACTIONS_PVT.Initiate_Inventory_tmp (
1909 p_api_version => 1.0
1910 ,p_init_msg_list => FND_API.G_FALSE
1911 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1912 ,p_party_id => l_partner_party_id
1913 ,p_start_date => l_report_start_date
1914 ,x_return_status => l_return_status
1915 ,x_msg_count => l_msg_count
1916 ,x_msg_data => l_msg_data
1917 );
1918 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1919 ozf_utility_pvt.error_message('OZF_RESALE_INIT_INV_TMP_ERR');
1920 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1921 END IF;
1922 */
1923 -- Bug
1924 END IF;
1925
1926 -- get functional currency code and convertion type
1927 OPEN func_currency_cd_csr;
1928 FETCH func_currency_cd_csr INTO l_func_currency_code;
1929 CLOSE func_currency_cd_csr;
1930
1931 OPEN exchange_rate_type_csr;
1932 FETCH exchange_rate_type_csr INTO l_default_exchange_type;
1933 CLOSE exchange_rate_type_csr;
1934 END IF;
1935
1936 -- For each chargeback of the line, we will update the line and
1937 -- create an record in the ozf_resale_adjustment_all.
1938 For i in 1..p_line_tbl.LAST LOOP
1939 BEGIN
1940
1941 IF p_line_tbl(i).line_type_code = 'LINE' THEN
1942
1943 IF p_caller_type = 'IFACE' THEN
1944 -- Process interface data
1945
1946 OPEN OZF_RESALE_COMMON_PVT.g_interface_rec_csr(p_line_tbl(i).chargeback_int_id);
1947 FETCH OZF_RESALE_COMMON_PVT.g_interface_rec_csr INTO l_resale_int_rec;
1948 CLOSE OZF_RESALE_COMMON_PVT.g_interface_rec_csr;
1949
1950 -- Bug 4380203 (+)
1951
1952 -- Check inventory level FOR thIS order.
1953 -- If inventory level IS lower than the asked, then there IS no need to
1954 -- continue processing
1955
1956 /*
1957 For Bug#9447673 SSD IDSM ER - Restricting the
1958 Validate inventory flow for Direct order only
1959 */
1960 IF l_inventory_tracking = 'T'
1961 AND (l_direct_order_flag <> 'Y') THEN
1962 IF OZF_DEBUG_LOW_ON THEN
1963 OZF_UTILITY_PVT.debug_message(l_api_name||' >> Need inventory tracking' );
1964 END IF;
1965
1966 -- Check inventory level first
1967 OZF_SALES_TRANSACTIONS_PVT.Validate_Inventory_level (
1968 p_api_version => 1.0
1969 ,p_init_msg_list => FND_API.G_FALSE
1970 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
1971 ,p_line_int_rec => l_resale_int_rec
1972 ,x_valid => l_inventory_level_valid
1973 ,x_return_status => l_return_status
1974 ,x_msg_count => l_msg_count
1975 ,x_msg_data => l_msg_data
1976 );
1977
1978 IF NOT l_inventory_level_valid THEN
1979 IF OZF_DEBUG_LOW_ON THEN
1980 OZF_UTILITY_PVT.debug_message(l_api_name||' >> Did not pass inventory checking');
1981 END IF;
1982 --
1983 -- Fux for bug Bug 14584673 : Added exception block at the end of the loop to log all type of errors at one place.
1984 /* OZF_RESALE_COMMON_PVT.Insert_Resale_Log (
1985 p_id_value => l_resale_int_rec.resale_line_int_id,
1986 p_id_type => 'IFACE',
1987 p_error_code => 'OZF_RESALE_INV_LEVEL_ERROR',
1988 p_column_name => NULL,
1989 p_column_value => NULL,
1990 x_return_status => l_return_status
1991 );
1992 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1993 RAISE FND_API.g_exc_error;
1994 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1995 RAISE FND_API.g_exc_unexpected_error;
1996 END IF;
1997
1998 -- Delink resale interface line from batch
1999 UPDATE ozf_resale_lines_int_all
2000 SET resale_batch_id = null,
2001 request_id = null,
2002 status_code = 'DISPUTED',
2003 dispute_code = 'OZF_LT_INVT'
2004 WHERE resale_line_int_id = l_resale_int_rec.resale_line_int_id;*/
2005
2006 l_resale_int_rec.dispute_code := 'OZF_LT_INVT';
2007 OZF_UTILITY_PVT.error_message('OZF_LT_INVT');
2008 RAISE FND_API.g_exc_error;
2009
2010 -- Batch status won't be set to DISPUTED.
2011 -- TP Accrual Process will still continue.
2012 ELSE
2013 IF OZF_DEBUG_LOW_ON THEN
2014 OZF_UTILITY_PVT.debug_message(l_api_name||' >> Pass inventory validation');
2015 END IF;
2016 END IF;
2017 --
2018 END IF;
2019 -- Bug 4380203 (-)
2020
2021 IF i = 1 THEN
2022 -- I need to create a header
2023 IF p_run_mode <> 'DRAFT' THEN -- AIT-ER
2024
2025 --AMITAMKU Fix for Bug 16038553
2026 -- IF l_create_order_header THEN
2027
2028 OZF_RESALE_COMMON_PVT.Insert_Resale_Header(
2029 p_api_version => 1
2030 ,p_init_msg_list => FND_API.G_FALSE
2031 ,p_commit => FND_API.G_FALSE
2032 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
2033 ,p_line_int_rec => l_resale_int_rec
2034 ,x_header_id => l_header_id
2035 ,x_return_status => l_return_status
2036 ,x_msg_data => l_msg_data
2037 ,x_msg_count => l_msg_count
2038 );
2039 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2040 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2041 END IF;
2042
2043 --AMITAMKU Fix for Bug 16038553
2044 --Commented ELSE block since the duplicated lines are handeled now, before calling of this procedure
2045 /* ELSE
2046 -- get header id of the dup lines
2047 OPEN dup_header_csr( p_resale_batch_id
2048 , l_order_number
2049 , l_cust_account_id
2050 , l_date_ordered
2051 );
2052 FETCH dup_header_csr INTO l_header_id;
2053 CLOSE dup_header_csr;
2054
2055 END IF;
2056 */
2057 END IF; -- Bug 14194884 - TPA In Draft Mode ER
2058 END IF;
2059
2060 -- I will convert the adjusted amount to functional currency code.
2061 l_exchange_type := l_resale_int_rec.exchange_rate_type;
2062 l_exchange_date := l_resale_int_rec.exchange_rate_date;
2063 l_rate := l_resale_int_rec.exchange_rate;
2064
2065 IF l_func_currency_code <> l_resale_int_rec.currency_code THEN
2066 IF l_rate IS NULL THEN
2067 IF l_exchange_type IS NULL THEN
2068 l_exchange_type := l_default_exchange_type;
2069 END IF;
2070
2071 IF l_exchange_type IS NULL THEN
2072 ozf_utility_pvt.error_message('OZF_CLAIM_CONTYPE_MISSING');
2073 l_resale_int_rec.dispute_code := 'OZF_CLAIM_CONTYPE_MISSING';
2074 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2075 END IF;
2076
2077 IF l_exchange_date IS NULL THEN
2078 l_exchange_date := sysdate;
2079 END IF;
2080
2081 IF OZF_DEBUG_LOW_ON THEN
2082 OZF_UTILITY_PVT.debug_message(l_api_name||' >> Convert Currency <<');
2083 OZF_UTILITY_PVT.debug_message(l_api_name||' >> from currency :' || l_resale_int_rec.currency_code);
2084 OZF_UTILITY_PVT.debug_message(l_api_name||' >> to currency :' || l_func_currency_code);
2085 OZF_UTILITY_PVT.debug_message(l_api_name||' >> rate :' || l_rate);
2086 OZF_UTILITY_PVT.debug_message(l_api_name||' >> exchange date :' || l_exchange_date);
2087 OZF_UTILITY_PVT.debug_message(l_api_name||' >> exchange type :' || l_exchange_type);
2088 END IF;
2089
2090 OZF_UTILITY_PVT.Convert_Currency(
2091 p_from_currency => l_resale_int_rec.currency_code
2092 ,p_to_currency => l_func_currency_code
2093 ,p_conv_type => l_exchange_type
2094 ,p_conv_rate => l_rate
2095 ,p_conv_date => l_exchange_date
2096 ,p_from_amount => p_line_tbl(i).adjusted_unit_price
2097 ,x_return_status => l_return_status
2098 ,x_to_amount => l_acctd_adj_unit_price
2099 ,x_rate => l_rate
2100 );
2101 IF l_return_status = FND_API.g_ret_sts_error THEN
2102 RAISE FND_API.g_exc_error;
2103 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2104 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2105 END IF;
2106
2107 OZF_UTILITY_PVT.Convert_Currency(
2108 p_from_currency => l_resale_int_rec.currency_code
2109 ,p_to_currency => l_func_currency_code
2110 ,p_conv_type => l_exchange_type
2111 ,p_conv_rate => l_rate
2112 ,p_conv_date => l_exchange_date
2113 ,p_FROM_amount => l_resale_int_rec.selling_price
2114 ,x_return_status => l_return_status
2115 ,x_to_amount => l_acctd_selling_price
2116 ,x_rate => l_rate);
2117 IF l_return_status = FND_API.g_ret_sts_error THEN
2118 RAISE FND_API.g_exc_error;
2119 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2120 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2121 END IF;
2122 ELSE
2123 l_acctd_adj_unit_price := OZF_UTILITY_PVT.CurrRound(p_line_tbl(i).adjusted_unit_price*l_rate, l_func_currency_code);
2124 l_acctd_selling_price := OZF_UTILITY_PVT.CurrRound(l_resale_int_rec.selling_price*l_rate, l_func_currency_code);
2125 END IF;
2126 ELSE
2127 l_rate := 1;
2128 l_acctd_adj_unit_price := p_line_tbl(i).adjusted_unit_price;
2129 l_acctd_selling_price := l_resale_int_rec.selling_price;
2130 END IF;
2131 ELSE
2132 -- Process Resale Data
2133 l_inventory_tracking := 'F';
2134 -- get resale_rec
2135 OPEN resale_rec_csr(p_line_tbl(i).chargeback_int_id);
2136 FETCH resale_rec_csr INTO l_resale_rec;
2137 CLOSE resale_rec_csr;
2138 END IF;
2139
2140 Process_One_Line(
2141 p_resale_line_int_rec => l_resale_int_rec,
2142 p_resale_line_rec => l_resale_rec,
2143 p_line_result_rec => p_line_tbl(i),
2144 p_header_id => l_header_id,
2145 p_resale_batch_id => p_resale_batch_id,
2146 p_inventory_tracking => l_inventory_tracking = 'T',
2147 p_price_diff_fund_id => l_fund_id,
2148 p_caller_type => p_caller_type,
2149 p_approver_id => l_last_updated_by,
2150 p_run_mode => p_run_mode, -- Bug 14194884 - TPA In Draft Mode ER
2151 p_draft_run_id => p_draft_run_id,
2152 x_return_status => l_return_status,
2153 x_ozf_act_budgets_tbl => x_ozf_act_budgets_tbl,
2154 x_ozf_funds_new_tbl => x_ozf_funds_new_tbl,
2155 x_draft_accrual_tbl => x_draft_accrual_tbl
2156 );
2157 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2158 IF l_resale_int_rec.dispute_code IS NULL THEN
2159 l_resale_int_rec.dispute_code := 'OZF_PRIC_RESULT_ERR';
2160 END IF;
2161 OZF_UTILITY_PVT.error_message('OZF_PRIC_RESULT_ERR');
2162 RAISE FND_API.G_EXC_ERROR;
2163 -- drop this line from batch if it is from interface
2164 -- Fux for bug Bug 14584673 : Added exception block at the end of the loop to log all type of errors at one place.
2165 /* IF p_caller_type = 'IFACE' THEN
2166 BEGIN
2167 UPDATE ozf_resale_lines_int_all
2168 SET resale_batch_id = NULL,
2169 request_id = NULL,
2170 status_code = 'DISPUTED',
2171 dispute_code = 'OZF_PRIC_RESULT_ERR'
2172 WHERE resale_line_int_id = p_line_tbl(i).chargeback_int_id;
2173 EXCEPTION
2174 WHEN OTHERS THEN
2175 ozf_utility_pvt.error_message('OZF_UPD_RESALE_INT_WRG');
2176 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2177 END;
2178 END IF;*/
2179 ELSE
2180 -- CLOSE THIS LINE If it is from interface
2181 IF p_caller_type = 'IFACE' THEN
2182 BEGIN
2183 UPDATE ozf_resale_lines_int_all
2184 SET status_code= 'CLOSED'
2185 WHERE resale_line_int_id = p_line_tbl(i).chargeback_int_id;
2186 EXCEPTION
2187 WHEN OTHERS THEN
2188 ozf_utility_pvt.error_message('OZF_UPD_RESALE_INT_WRG');
2189 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2190 END;
2191 END IF;
2192
2193 -- For TPA Parallel Execution ER - 9614703 (-)
2194 END IF;
2195 END IF; -- END if current record is a line
2196 -- Fux for bug Bug 14584673 : New exception block : This will catch exception for each line and log them into ozf_resale_logs_all table.
2197 -- Program will not error out and Processing for other records will continue.
2198 EXCEPTION
2199 WHEN OTHERS THEN
2200 l_dispute_code := l_resale_int_rec.dispute_code;
2201 IF l_dispute_code IS NULL THEN
2202 l_dispute_code := 'OZF_PRIC_RESULT_ERR' ;
2203 END IF;
2204 OZF_RESALE_COMMON_PVT.Insert_Resale_Log (
2205 p_id_value => l_resale_int_rec.resale_line_int_id,
2206 p_id_type => 'IFACE',
2207 p_error_code => l_dispute_code,
2208 p_column_name => NULL,
2209 p_column_value => NULL,
2210 x_return_status => l_return_status
2211 );
2212 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2213 RAISE FND_API.g_exc_error;
2214 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2215 RAISE FND_API.g_exc_unexpected_error;
2216 END IF;
2217 IF p_run_mode <> 'DRAFT' THEN
2218 -- Delink resale interface line from batch
2219 UPDATE ozf_resale_lines_int_all
2220 SET resale_batch_id = null,
2221 request_id = null,
2222 status_code = 'DISPUTED',
2223 dispute_code = l_dispute_code
2224 WHERE resale_line_int_id = l_resale_int_rec.resale_line_int_id;
2225 ELSE
2226 UPDATE ozf_resale_lines_int_all
2227 SET status_code = 'DISPUTED',
2228 dispute_code = l_dispute_code
2229 WHERE resale_line_int_id = l_resale_int_rec.resale_line_int_id;
2230 END IF;
2231 l_return_status := FND_API.G_RET_STS_SUCCESS;
2232 END;
2233 END LOOP; -- END LOOP through lines
2234 END IF; -- END of checking error
2235 END IF; -- END of EXISTS
2236
2237 x_return_status := l_return_status;
2238
2239 IF OZF_DEBUG_HIGH_ON THEN
2240 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': end');
2241 END IF;
2242
2243 EXCEPTION
2244 WHEN FND_API.G_EXC_ERROR THEN
2245 ozf_utility_pvt.write_conc_log('ERROR in process_pricing_result');
2246 --ROLLBACK TO PROC_PRIC_RESULT;
2247 x_return_status := FND_API.G_RET_STS_ERROR;
2248 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2249 ozf_utility_pvt.write_conc_log('UNEXP ERROR in process_pricing_result');
2250 --ROLLBACK TO PROC_PRIC_RESULT;
2251 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2252 WHEN OTHERS THEN
2253 ozf_utility_pvt.write_conc_log('OTHER ERROR in process_pricing_result');
2254 --ROLLBACK TO PROC_PRIC_RESULT;
2255 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2256 END process_pricing_result;
2257
2258 -- Bug 14194884 - TPA In Draft Mode ER
2259 PROCEDURE Process_Pricing_Result(
2260 p_resale_batch_id IN NUMBER,
2261 p_line_tbl IN OZF_ORDER_PRICE_PVT.LINE_REC_TBL_TYPE,
2262 p_caller_type IN VARCHAR2,
2263 x_return_status OUT NOCOPY VARCHAR2,
2264 x_ozf_act_budgets_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_act_budgets_table,
2265 x_ozf_funds_new_tbl IN OUT NOCOPY OZF_UTILITY_PVT.ozf_funds_table
2266 )IS
2267 l_run_mode VARCHAR2(10) ;
2268 l_draft_run_id NUMBER;
2269 l_draft_accrual_tbl ozf_draft_accrual_tbl_type;
2270 BEGIN
2271 l_run_mode := 'FINAL';
2272 l_draft_run_id := NULL;
2273 Process_Pricing_Result(
2274 p_resale_batch_id => p_resale_batch_id,
2275 p_line_tbl => p_line_tbl,
2276 p_caller_type => p_caller_type,
2277 p_run_mode => l_run_mode,
2278 p_draft_run_id => l_draft_run_id,
2279 x_return_status => x_return_status,
2280 x_ozf_act_budgets_tbl=> x_ozf_act_budgets_tbl,
2281 x_ozf_funds_new_tbl => x_ozf_funds_new_tbl,
2282 x_draft_accrual_tbl => l_draft_accrual_tbl
2283 );
2284 END Process_Pricing_Result;
2285 PROCEDURE Process_Pricing_Result(
2286 p_resale_batch_id IN NUMBER,
2287 p_line_tbl IN OZF_ORDER_PRICE_PVT.LINE_REC_TBL_TYPE,
2288 p_caller_type IN VARCHAR2,
2289 x_return_status OUT NOCOPY VARCHAR2
2290 )
2291 IS
2292 l_ozf_act_budgets_tbl OZF_UTILITY_PVT.ozf_act_budgets_table;
2293 l_ozf_funds_new_tbl OZF_UTILITY_PVT.ozf_funds_table;
2294 BEGIN
2295 Process_Pricing_Result(
2296 p_resale_batch_id => p_resale_batch_id,
2297 p_line_tbl => p_line_tbl,
2298 p_caller_type => p_caller_type,
2299 x_return_status => x_return_status,
2300 x_ozf_act_budgets_tbl => l_ozf_act_budgets_tbl,
2301 x_ozf_funds_new_tbl => l_ozf_funds_new_tbl
2302 );
2303 END Process_Pricing_Result;
2304
2305 ---------------------------------------------------------------------
2306 -- PROCEDURE
2307 -- Process_Resale_Order
2308 --
2309 -- PURPOSE
2310 -- Process resale batch information. Reads date FROM ozf_reasle_lines table.
2311 --
2312 -- PARAMETERS
2313 --
2314 -- NOTES
2315 --
2316 ---------------------------------------------------------------------
2317 PROCEDURE Process_Resale_Order
2318 (
2319 p_api_version IN NUMBER
2320 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2321 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
2322 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
2323 ,p_resale_batch_id IN NUMBER
2324 ,x_return_status OUT NOCOPY VARCHAR2
2325 ,x_msg_data OUT NOCOPY VARCHAR2
2326 ,x_msg_count OUT NOCOPY NUMBER
2327 )IS
2328 l_api_name CONSTANT VARCHAR2(30) := 'Process_Resale_Order';
2329 l_api_version CONSTANT NUMBER := 1.0;
2330 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
2331 --
2332 l_return_status VARCHAR2(30);
2333 l_msg_data VARCHAR2(2000);
2334 l_msg_count NUMBER;
2335
2336 CURSOR header_id_csr IS
2337 SELECT DISTINCT a.resale_header_id --Bug# 8328719 fixed by ateotia
2338 , a.header_attribute_category
2339 , a.header_attribute1
2340 , a.header_attribute2
2341 , a.header_attribute3
2342 , a.header_attribute4
2343 , a.header_attribute5
2344 , a.header_attribute6
2345 , a.header_attribute7
2346 , a.header_attribute8
2347 , a.header_attribute9
2348 , a.header_attribute10
2349 , a.header_attribute11
2350 , a.header_attribute12
2351 , a.header_attribute13
2352 , a.header_attribute14
2353 , a.header_attribute15
2354 FROM ozf_resale_headers_all a
2355 , ozf_resale_lines_all b
2356 , ozf_resale_batch_line_maps_all c
2357 WHERE a.resale_header_id = b.resale_header_id
2358 AND b.resale_line_id = c.resale_line_id
2359 AND c.resale_batch_id = p_resale_batch_id;
2360
2361 TYPE header_id_tbl_type is TABLE OF header_id_csr%rowtype INDEX BY binary_integer;
2362 l_header_id_tbl header_id_tbl_type;
2363
2364 CURSOR order_header_csr(p_header_id in NUMBER) IS
2365 SELECT *
2366 FROM ozf_resale_headers
2367 WHERE resale_header_id = p_header_id;
2368
2369 l_header_rec order_header_csr%rowtype;
2370
2371 CURSOR order_set_csr(p_header_id in NUMBER) IS
2372 SELECT *
2373 FROM ozf_resale_lines
2374 WHERE resale_header_id = p_header_id;
2375
2376 TYPE resale_lines_tbl_type is TABLE OF order_set_csr%rowtype INDEX BY binary_integer;
2377 l_order_set_tbl resale_lines_tbl_type;
2378
2379 l_control_rec QP_PREQ_GRP.CONTROL_RECORD_TYPE;
2380
2381 l_line_tbl OZF_ORDER_PRICE_PVT.LINE_REC_TBL_TYPE;
2382 l_ldets_tbl OZF_ORDER_PRICE_PVT.LDETS_TBL_TYPE;
2383 l_related_lines_tbl OZF_ORDER_PRICE_PVT.RLTD_LINE_TBL_TYPE;
2384
2385 p NUMBER;
2386 k NUMBER;
2387
2388 l_log_id NUMBER;
2389
2390 l_temp_count NUMBER;
2391 l_temp_data VARCHAR2(2000);
2392 l_price_flag VARCHAR2(1) := NULL;
2393
2394 --mkothari 13-dec-2006
2395 l_list_price_override_flag VARCHAR2(1) := NULL;
2396
2397 l_accrual_on_selling VARCHAR2(3);
2398 l_default_price_list_id NUMBER;
2399 -- bug 6317120
2400 l_org_id NUMBER;
2401 -- end bug 6317120
2402 l_ozf_act_budgets_tbl OZF_UTILITY_PVT.ozf_act_budgets_table;
2403 l_ozf_funds_new_tbl OZF_UTILITY_PVT.ozf_funds_table;
2404 x_fund_update_status VARCHAR2(30) := OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED;
2405 x_budget_update_status VARCHAR2(30) := OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED;
2406 BEGIN
2407 -- Standard BEGIN of API savepoint
2408 SAVEPOINT Process_Resale_Order;
2409 -- Standard call to check for call compatibility.
2410 IF NOT FND_API.Compatible_API_Call (
2411 l_api_version,
2412 p_api_version,
2413 l_api_name,
2414 G_PKG_NAME)
2415 THEN
2416 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2417 END IF;
2418
2419 --Initialize message list if p_init_msg_list is TRUE.
2420 IF FND_API.To_Boolean (p_init_msg_list) THEN
2421 FND_MSG_PUB.initialize;
2422 END IF;
2423
2424 -- Debug Message
2425 IF OZF_DEBUG_HIGH_ON THEN
2426 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
2427 END IF;
2428
2429 -- Initialize API return status to sucess
2430 x_return_status := FND_API.G_RET_STS_SUCCESS;
2431
2432 -- We need to UPDATE the order FROM indirect customers so that they're not to be included in the
2433 -- pricing simulation;
2434
2435 -- Get profile value for price list
2436 l_default_price_list_id := G_TP_DEFAULT_PRICE_LIST; --fnd_profile.value('OZF_TP_ACCRUAL_PRICE_LIST');
2437
2438 -- Define control rec
2439 -- setup pricing_event based on purpose code and profile
2440 -- privcing_event is based on profile
2441
2442 l_control_rec.pricing_event := fnd_profile.value('OZF_PRICING_SIMULATION_EVENT');
2443
2444 IF l_control_rec.pricing_event is NULL THEN
2445 IF OZF_DEBUG_LOW_ON THEN
2446 ozf_utility_PVT.debug_message('pricing event default');
2447 END IF;
2448 l_control_rec.pricing_event := 'BATCH,BOOK,SHIP';
2449 ELSE
2450 IF l_control_rec.pricing_event = 'BATCH' THEN
2451 l_control_rec.pricing_event := 'BATCH';
2452 ELSIF l_control_rec.pricing_event = 'BOOK' THEN
2453 l_control_rec.pricing_event := 'BATCH,BOOK';
2454 ELSIF l_control_rec.pricing_event = 'SHIP' THEN
2455 l_control_rec.pricing_event := 'BATCH,BOOK,SHIP';
2456 END IF;
2457 END IF;
2458
2459 IF OZF_DEBUG_LOW_ON THEN
2460 ozf_utility_PVT.debug_message('Event:' ||l_control_rec.pricing_event );
2461 END IF;
2462
2463 l_control_rec.calculate_flag := 'Y';
2464 l_control_rec.simulation_flag := 'Y';
2465 l_control_rec.source_order_amount_flag := 'Y';
2466 l_control_rec.GSA_CHECK_FLAG := 'N';
2467 l_control_rec.GSA_DUP_CHECK_FLAG := 'N';
2468 l_control_rec.TEMP_TABLE_INSERT_FLAG := 'N';
2469
2470 IF l_header_id_tbl.EXISTS(1) THEN
2471 l_header_id_tbl.DELETE;
2472 END IF;
2473 --p := 1;
2474 OPEN header_id_csr;
2475 FETCH header_id_csr BULK COLLECT INTO l_header_id_tbl;
2476 -- LOOP
2477 -- FETCH header_id_csr INTO l_header_id_tbl(p);
2478 -- EXIT when header_id_csr%notfound;
2479 -- p:= p+1;
2480 -- END LOOP;
2481 CLOSE header_id_csr;
2482
2483 IF l_header_id_tbl.EXISTS(1) THEN
2484 -- setup price_flag based on profile
2485 l_accrual_on_selling := G_ACCRUAL_ON_SELLING; --fnd_profile.value('OZF_ACC_ON_SELLING_PRICE');
2486
2487 -- If this profile is not set, we default the value to 'N'
2488
2489 IF l_accrual_on_selling is NULL THEN
2490 l_accrual_on_selling := 'N';
2491 END IF;
2492
2493 -- convert the value of the profile to proper price flag value
2494 IF l_accrual_on_selling = 'Y' THEN
2495 --l_price_flag := 'G'; -- 'G' is not implemented in QP -- mkothari
2496
2497 --mkothari 13-dec-2006
2498 l_price_flag := 'Y';
2499 l_list_price_override_flag := 'Y';
2500
2501 ELSE
2502 l_price_flag := 'Y';
2503 END IF;
2504 IF OZF_DEBUG_LOW_ON THEN
2505 ozf_utility_PVT.debug_message('Price flag:' ||l_price_flag );
2506 ozf_utility_PVT.debug_message('List Price Override Flag:' ||l_list_price_override_flag);
2507 END IF;
2508
2509 For i in 1..l_header_id_tbl.LAST
2510 LOOP
2511
2512 IF l_header_id_tbl(i).resale_header_id is not NULL THEN
2513
2514 QP_Price_Request_Context.Set_Request_Id;
2515
2516 IF OZF_DEBUG_LOW_ON THEN
2517 ozf_utility_PVT.debug_message('/*--- Processing order for order NUMBER:'||l_header_id_tbl(i).resale_header_id||'---*/');
2518 END IF;
2519
2520 -- Before start process, clean up the data structures if necessary.
2521 IF l_order_set_tbl.EXISTS(1) THEN l_order_set_tbl.DELETE; END IF;
2522 IF l_line_tbl.EXISTS(1) THEN l_line_tbl.DELETE; END IF;
2523 IF l_ldets_tbl.EXISTS(1) THEN l_ldets_tbl.DELETE; END IF;
2524 IF l_related_lines_tbl.EXISTS(1) THEN l_related_lines_tbl.DELETE; END IF;
2525 IF OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL.EXISTS(1) THEN OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL.DELETE; END IF;
2526 IF OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL.EXISTS(1) THEN OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL.DELETE; END IF;
2527
2528 -- get order_header_rec
2529 OPEN order_header_csr(l_header_id_tbl(i).resale_header_id);
2530 FETCH order_header_csr INTO l_header_rec;
2531 CLOSE order_header_csr;
2532
2533 --k:=1;
2534 OPEN order_set_csr(l_header_id_tbl(i).resale_header_id);
2535 FETCH order_set_csr BULK COLLECT INTO l_order_set_tbl;
2536 --LOOP
2537 -- FETCH order_set_csr INTO l_order_set_tbl(k);
2538 -- EXIT when order_set_csr%notfound;
2539 -- k:=k+1;
2540 --END LOOP;
2541 CLOSE order_set_csr;
2542
2543 IF OZF_DEBUG_LOW_ON THEN
2544 ozf_utility_PVT.debug_message('after order set'||l_order_set_tbl.LAST);
2545 END IF;
2546 IF l_order_set_tbl.exists(1) THEN
2547 For J in 1..l_order_set_tbl.LAST
2548 LOOP
2549
2550 -- ???????? Purge the any error message that might be there. Rethink this
2551 -- OK for now
2552 BEGIN
2553 DELETE FROM ozf_resale_logs
2554 WHERE resale_id = l_order_set_tbl(J).resale_line_id
2555 AND resale_id_type = OZF_RESALE_COMMON_PVT.G_ID_TYPE_LINE;
2556 EXCEPTION
2557 WHEN OTHERS THEN
2558 ozf_utility_pvt.error_message('OZF_DEL_RESALE_LOG_WRG');
2559 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2560 END;
2561
2562 IF OZF_DEBUG_LOW_ON THEN
2563 ozf_utility_PVT.debug_message(l_api_name||'>> building order line for resale line id: '||l_order_set_tbl(j).resale_line_id);
2564 END IF;
2565 -- INSERT INTO l_line_tbl
2566 l_line_tbl(j).line_index := j;
2567 l_line_tbl(j).line_id := l_order_set_tbl(j).resale_line_id;
2568 l_line_tbl(j).line_type_code := OZF_ORDER_PRICE_PVT.G_ORDER_LINE_TYPE;
2569 --l_line_tbl(j).pricing_effective_date := l_order_set_tbl(j).date_ordered;
2570 l_line_tbl(j).active_date_first := l_order_set_tbl(j).date_ordered;
2571 l_line_tbl(j).active_date_first_type := 'ORD';
2572 l_line_tbl(j).active_date_second := l_order_set_tbl(j).date_shipped;
2573 l_line_tbl(j).active_date_second_type := 'SHIP';
2574 l_line_tbl(j).line_quantity := ABS(l_order_set_tbl(j).quantity); -- BUG 4581928
2575 l_line_tbl(j).line_uom_code := l_order_set_tbl(j).uom_code;
2576 l_line_tbl(j).request_type_code := 'ONT';
2577 -- Pricing might be able to default it
2578
2579 --13552986
2580 IF G_IDSM_PRICING_ADJ_BASIS = 'INVOICE_DATE' THEN
2581 l_line_tbl(j).pricing_effective_date := NVL(l_order_set_tbl(j).date_invoiced,NVL(l_order_set_tbl(j).date_shipped,l_order_set_tbl(j).date_ordered));
2582 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'SHIP_DATE' THEN
2583 l_line_tbl(j).pricing_effective_date := NVL(l_order_set_tbl(j).date_shipped,l_order_set_tbl(j).date_ordered);
2584 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'ORDER_DATE' THEN
2585 l_line_tbl(j).pricing_effective_date := l_order_set_tbl(j).date_ordered;
2586 END IF;
2587
2588 --mkothari 13-dec-2006
2589 --IF l_price_flag ='G' THEN
2590 IF l_list_price_override_flag = 'Y' THEN
2591 l_line_tbl(j).priced_quantity := ABS(l_order_set_tbl(j).quantity); -- BUG 4581928
2592 l_line_tbl(j).priced_uom_code := l_order_set_tbl(j).uom_code;
2593 l_line_tbl(j).unit_price := l_order_set_tbl(j).selling_price;
2594 END IF;
2595 l_line_tbl(j).currency_code := l_order_set_tbl(j).currency_code;
2596
2597 IF l_header_rec.price_list_id IS NOT NULL THEN
2598 l_line_tbl(j).price_list_id := l_header_rec.price_list_id;
2599 ELSE
2600 l_line_tbl(j).price_list_id := l_default_price_list_id;
2601 END IF;
2602
2603 l_line_tbl(j).price_flag := l_price_flag;
2604 --mkothari 13-dec-2006
2605 l_line_tbl(j).list_price_override_flag := l_list_price_override_flag;
2606
2607 l_line_tbl(j).pricing_status_code := QP_PREQ_GRP.G_STATUS_UNCHANGED;
2608 l_line_tbl(j).chargeback_int_id := l_order_set_tbl(j).resale_line_id;
2609 l_line_tbl(j).resale_table_type := 'LINE'; -- bug 5360598
2610 -- l_line_tbl(j).UNIT_PRICE := NULL;
2611 -- l_line_tbl(j).PERCENT_PRICE := NULL;
2612 -- l_line_tbl(j).UOM_QUANTITY := NULL;
2613 -- l_line_tbl(j).ADJUSTED_UNIT_PRICE := NULL;
2614 -- l_line_tbl(j).UPD_ADJUSTED_UNIT_PRICE NUMBER:= FND_API.G_MISS_NUM,
2615 -- l_line_tbl(j).PROCESSED_FLAG VARCHAR2(1):= FND_API.G_MISS_CHAR,
2616 -- l_line_tbl(j).PROCESSING_ORDER := NULL;
2617 -- l_line_tbl(j).PRICING_STATUS_TEXT := NULL;
2618 -- l_line_tbl(j).ROUNDING_FLAG := NULL;
2619 -- l_line_tbl(j).ROUNDING_FACTOR := NULL;
2620 -- l_line_tbl(j).QUALIFIERS_EXIST_FLAG := NULL;
2621 -- l_line_tbl(j).PRICING_ATTRS_EXIST_FLAG := NULL;
2622 -- l_line_tbl(j).PL_VALIDATED_FLAG := NULL;
2623 -- l_line_tbl(j).PRICE_REQUEST_CODE := NULL;
2624 -- l_line_tbl(j).USAGE_PRICING_TYPE := NULL;
2625 -- l_line_tbl(j).LINE_CATEGORY := NULL;
2626
2627
2628 -- populate the order_price global line arrary
2629 -- Here I only populate the values of the qualifiers for ONT.
2630 -- The real global structure will be populate in ozf_order_price_pvt.
2631 -- And it's value can be change in OZF_CHARGEBACK_ATTRMAP_PUB
2632
2633 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).header_id := l_order_set_tbl.LAST + 1;
2634 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).line_id := l_order_set_tbl(j).resale_line_id;
2635 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).line_type_id := l_header_rec.order_type_id;
2636 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).inventory_item_id := l_order_set_tbl(j).inventory_item_id;
2637 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ordered_quantity := ABS(l_order_set_tbl(j).quantity);
2638 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).order_quantity_uom := l_order_set_tbl(j).uom_code;
2639 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).invoice_to_org_id := l_order_set_tbl(j).bill_to_site_use_id;
2640 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ship_to_org_id := l_order_set_tbl(j).ship_to_site_use_id;
2641 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).sold_to_org_id := l_order_set_tbl(j).bill_to_cust_account_id;
2642 --OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).sold_from_org_id := l_order_set_tbl(j).sold_from_cust_account_id;
2643 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).invoice_to_party_id := l_order_set_tbl(j).bill_to_party_id;
2644 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).invoice_to_party_site_id := l_order_set_tbl(j).bill_to_party_site_id;
2645 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ship_to_party_id := l_order_set_tbl(j).ship_to_party_id;
2646 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ship_to_party_site_id := l_order_set_tbl(j).ship_to_party_site_id;
2647 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).price_list_id := l_line_tbl(j).price_list_id;
2648 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).request_date := l_order_set_tbl(j).date_ordered;
2649 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).actual_shipment_date := l_order_set_tbl(j).date_shipped;
2650
2651 --//ER 13333298
2652 --OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).pricing_date := l_order_set_tbl(j).date_ordered;
2653 /*IF G_ORDER_GL_PHASE = 'INVOICED' THEN
2654 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).pricing_date := NVL(l_order_set_tbl(j).date_invoiced,NVL(l_order_set_tbl(j).date_shipped,l_order_set_tbl(j).date_ordered));
2655 ELSIF G_ORDER_GL_PHASE = 'SHIPPED' THEN
2656 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).pricing_date := NVL(l_order_set_tbl(j).date_shipped,l_order_set_tbl(j).date_ordered);
2657 END IF;*/
2658
2659 --13552986
2660 IF G_IDSM_PRICING_ADJ_BASIS = 'INVOICE_DATE' THEN
2661 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).pricing_date := NVL(l_order_set_tbl(j).date_invoiced,NVL(l_order_set_tbl(j).date_shipped,l_order_set_tbl(j).date_ordered));
2662 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'SHIP_DATE' THEN
2663 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).pricing_date := NVL(l_order_set_tbl(j).date_shipped,l_order_set_tbl(j).date_ordered);
2664 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'ORDER_DATE' THEN
2665 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).pricing_date := l_order_set_tbl(j).date_ordered;
2666 END IF;
2667
2668 -- R12 Populate Global Resale Structure (+)
2669 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).batch_type := 'TP_ACCRUAL';
2670 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).qp_context_request_id := QP_Price_Request_Context.Get_Request_Id;
2671 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_index := l_line_tbl(j).line_index;
2672 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).resale_table_type := 'RESALE';
2673 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_id := l_order_set_tbl(j).resale_line_id;
2674 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).resale_transfer_type := l_order_set_tbl(j).resale_transfer_type;
2675 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).product_transfer_movement_type := l_order_set_tbl(j).product_transfer_movement_type;
2676 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).product_transfer_date := l_order_set_tbl(j).product_transfer_date;
2677 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).tracing_flag := l_order_set_tbl(j).tracing_flag;
2678 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).sold_from_cust_account_id := l_order_set_tbl(j).sold_from_cust_account_id;
2679 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).sold_from_site_id := l_order_set_tbl(j).sold_from_site_id;
2680 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).sold_from_contact_party_id := l_order_set_tbl(j).sold_from_contact_party_id;
2681 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_from_cust_account_id := l_order_set_tbl(j).ship_from_cust_account_id;
2682 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_from_site_id := l_order_set_tbl(j).ship_from_site_id;
2683 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_from_contact_party_id := l_order_set_tbl(j).ship_from_contact_party_id;
2684 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).bill_to_party_id := l_order_set_tbl(j).bill_to_party_id;
2685 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).bill_to_party_site_id := l_order_set_tbl(j).bill_to_party_site_id;
2686 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).bill_to_contact_party_id := l_order_set_tbl(j).bill_to_contact_party_id;
2687 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_to_party_id := l_order_set_tbl(j).ship_to_party_id;
2688 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_to_party_site_id := l_order_set_tbl(j).ship_to_party_site_id;
2689 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_to_contact_party_id := l_order_set_tbl(j).ship_to_contact_party_id;
2690 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_party_id := l_order_set_tbl(j).end_cust_party_id;
2691 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_site_use_id := l_order_set_tbl(j).end_cust_site_use_id;
2692 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_site_use_code := l_order_set_tbl(j).end_cust_site_use_code;
2693 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_party_site_id := l_order_set_tbl(j).end_cust_party_site_id;
2694 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_contact_party_id := l_order_set_tbl(j).end_cust_contact_party_id;
2695 --OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).data_source_code := ??
2696 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute_category := l_header_id_tbl(i).header_attribute_category;
2697 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute1 := l_header_id_tbl(i).header_attribute1;
2698 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute2 := l_header_id_tbl(i).header_attribute2;
2699 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute3 := l_header_id_tbl(i).header_attribute3;
2700 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute4 := l_header_id_tbl(i).header_attribute4;
2701 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute5 := l_header_id_tbl(i).header_attribute5;
2702 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute6 := l_header_id_tbl(i).header_attribute6;
2703 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute7 := l_header_id_tbl(i).header_attribute7;
2704 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute8 := l_header_id_tbl(i).header_attribute8;
2705 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute9 := l_header_id_tbl(i).header_attribute9;
2706 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute10 := l_header_id_tbl(i).header_attribute10;
2707 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute11 := l_header_id_tbl(i).header_attribute11;
2708 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute12 := l_header_id_tbl(i).header_attribute12;
2709 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute13 := l_header_id_tbl(i).header_attribute13;
2710 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute14 := l_header_id_tbl(i).header_attribute14;
2711 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute15 := l_header_id_tbl(i).header_attribute15;
2712 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute_category := l_order_set_tbl(j).line_attribute_category;
2713 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute1 := l_order_set_tbl(j).line_attribute1;
2714 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute2 := l_order_set_tbl(j).line_attribute2;
2715 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute3 := l_order_set_tbl(j).line_attribute3;
2716 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute4 := l_order_set_tbl(j).line_attribute4;
2717 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute5 := l_order_set_tbl(j).line_attribute5;
2718 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute6 := l_order_set_tbl(j).line_attribute6;
2719 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute7 := l_order_set_tbl(j).line_attribute7;
2720 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute8 := l_order_set_tbl(j).line_attribute8;
2721 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute9 := l_order_set_tbl(j).line_attribute9;
2722 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute10 := l_order_set_tbl(j).line_attribute10;
2723 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute11 := l_order_set_tbl(j).line_attribute11;
2724 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute12 := l_order_set_tbl(j).line_attribute12;
2725 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute13 := l_order_set_tbl(j).line_attribute13;
2726 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute14 := l_order_set_tbl(j).line_attribute14;
2727 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute15 := l_order_set_tbl(j).line_attribute15;
2728 -- R12 Populate Global Resale Structure (-)
2729
2730
2731
2732 END LOOP;
2733
2734 IF OZF_DEBUG_LOW_ON THEN
2735 ozf_utility_PVT.debug_message(l_api_name||'>> building order header');
2736 END IF;
2737
2738 -- build summary line
2739 k := l_order_set_tbl.LAST + 1;
2740 l_line_tbl(k).line_index := k;
2741 l_line_tbl(k).line_id := NULL;
2742 l_line_tbl(k).line_type_code := OZF_ORDER_PRICE_PVT.G_ORDER_HEADER_TYPE;
2743 --l_line_tbl(k).pricing_effective_date := l_header_rec.date_ordered;
2744 l_line_tbl(k).active_date_first := l_header_rec.date_ordered;
2745 l_line_tbl(k).active_date_first_type := 'ORD'; -- Change because of ONT QP order 'NO TYPE';
2746 l_line_tbl(k).active_date_second := l_header_rec.date_shipped;
2747 l_line_tbl(k).active_date_second_type := 'SHIP'; -- change because of ONT QP order 'NO TYPE';
2748 l_line_tbl(k).request_type_code := 'ONT';
2749 l_line_tbl(k).currency_code := l_order_set_tbl(1).currency_code;
2750 l_line_tbl(k).price_list_id := l_line_tbl(1).price_list_id;
2751 l_line_tbl(k).price_flag := l_price_flag;
2752
2753 --//ER 13333298
2754 /*IF G_ORDER_GL_PHASE = 'INVOICED' THEN
2755 l_line_tbl(k).pricing_effective_date := NVL(l_order_set_tbl(1).date_invoiced,NVL(l_header_rec.date_shipped, l_header_rec.date_ordered));
2756 ELSIF G_ORDER_GL_PHASE = 'SHIPPED' THEN
2757 l_line_tbl(k).pricing_effective_date := NVL(l_header_rec.date_shipped, l_header_rec.date_ordered);
2758 END IF;*/
2759
2760 --13552986
2761
2762 IF G_IDSM_PRICING_ADJ_BASIS = 'INVOICE_DATE' THEN
2763 l_line_tbl(k).pricing_effective_date := NVL(l_order_set_tbl(1).date_invoiced,NVL(l_header_rec.date_shipped, l_header_rec.date_ordered));
2764 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'SHIP_DATE' THEN
2765 l_line_tbl(k).pricing_effective_date := NVL(l_header_rec.date_shipped, l_header_rec.date_ordered);
2766 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'ORDER_DATE' THEN
2767 l_line_tbl(k).pricing_effective_date := l_header_rec.date_ordered;
2768 END IF;
2769
2770 --mkothari 13-dec-2006
2771 l_line_tbl(k).list_price_override_flag := l_list_price_override_flag;
2772 l_line_tbl(k).pricing_status_code := QP_PREQ_GRP.G_STATUS_UNCHANGED;
2773 l_line_tbl(k).chargeback_int_id := l_order_set_tbl(1).resale_line_id;
2774 l_line_tbl(k).resale_table_type := 'LINE'; -- bug 5360598
2775
2776
2777 -- populate the order_price global header structure
2778 -- Here I only populate the values of the qualifiers for ONT.
2779 -- The real global structure will be populate in ozf_order_price_pvt.
2780 -- And it's value can be change in OZF_CHARGEBACK_ATTRMAP_PUB
2781
2782 -- Might be able to add more value here.
2783 OZF_ORDER_PRICE_PVT.G_HEADER_REC.header_id := k;
2784 OZF_ORDER_PRICE_PVT.G_HEADER_REC.order_type_id := l_header_rec.order_type_id;
2785 OZF_ORDER_PRICE_PVT.G_HEADER_REC.sold_to_org_id := l_header_rec.bill_to_cust_account_id;
2786 OZF_ORDER_PRICE_PVT.G_HEADER_REC.invoice_to_org_id := l_header_rec.bill_to_site_use_id;
2787 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ship_to_org_id := l_header_rec.ship_to_site_use_id;
2788 OZF_ORDER_PRICE_PVT.G_HEADER_REC.invoice_to_party_id := l_header_rec.bill_to_party_id;
2789 OZF_ORDER_PRICE_PVT.G_HEADER_REC.invoice_to_party_site_id := l_header_rec.bill_to_party_site_id;
2790 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ship_to_party_id := l_header_rec.ship_to_party_id;
2791 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ship_to_party_site_id := l_header_rec.ship_to_party_site_id;
2792 OZF_ORDER_PRICE_PVT.G_HEADER_REC.price_list_id := l_line_tbl(1).price_list_id;
2793 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ordered_date := l_header_rec.date_ordered;
2794 OZF_ORDER_PRICE_PVT.G_HEADER_REC.request_date := l_header_rec.date_ordered;
2795
2796 --//ER 13333298
2797 --OZF_ORDER_PRICE_PVT.G_HEADER_REC.pricing_date := l_header_rec.date_ordered;
2798 /*IF G_ORDER_GL_PHASE = 'INVOICED' THEN
2799 OZF_ORDER_PRICE_PVT.G_HEADER_REC.pricing_date :=NVL(l_order_set_tbl(1).date_invoiced,NVL(l_header_rec.date_shipped,l_header_rec.date_ordered));
2800 ELSIF G_ORDER_GL_PHASE = 'SHIPPED' THEN
2801 OZF_ORDER_PRICE_PVT.G_HEADER_REC.pricing_date :=NVL(l_header_rec.date_shipped,l_header_rec.date_ordered);
2802 END IF;*/
2803
2804 --13552986
2805
2806 IF G_IDSM_PRICING_ADJ_BASIS = 'INVOICE_DATE' THEN
2807 OZF_ORDER_PRICE_PVT.G_HEADER_REC.pricing_date := NVL(l_order_set_tbl(1).date_invoiced,NVL(l_header_rec.date_shipped,l_header_rec.date_ordered));
2808 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'SHIP_DATE' THEN
2809 OZF_ORDER_PRICE_PVT.G_HEADER_REC.pricing_date := NVL(l_header_rec.date_shipped,l_header_rec.date_ordered);
2810 ELSIF G_IDSM_PRICING_ADJ_BASIS = 'ORDER_DATE' THEN
2811 OZF_ORDER_PRICE_PVT.G_HEADER_REC.pricing_date := l_header_rec.date_ordered;
2812 END IF;
2813
2814
2815
2816 IF OZF_DEBUG_LOW_ON THEN
2817 ozf_utility_PVT.debug_message(l_api_name||'>> Calling Get_Order_');
2818 END IF;
2819
2820 OZF_ORDER_PRICE_PVT.Get_Order_Price (
2821 p_api_version => 1.0
2822 ,p_init_msg_list => FND_API.G_FALSE
2823 ,p_commit => FND_API.G_FALSE
2824 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
2825 ,x_return_status => l_return_status
2826 ,x_msg_data => l_msg_data
2827 ,x_msg_count => l_msg_count
2828 ,p_control_rec => l_control_rec
2829 ,xp_line_tbl => l_line_tbl
2830 ,x_ldets_tbl => l_ldets_tbl
2831 ,x_related_lines_tbl => l_related_lines_tbl
2832 );
2833 IF l_return_status<> FND_API.G_RET_STS_SUCCESS THEN
2834 ozf_utility_pvt.error_message('OZF_GET_ORDER_PRIC_ERR');
2835
2836 FOR p in 1..l_order_set_tbl.LAST
2837 LOOP
2838 BEGIN
2839 OPEN OZF_RESALE_COMMON_PVT.g_log_id_csr;
2840 FETCH OZF_RESALE_COMMON_PVT.g_log_id_csr INTO l_log_id;
2841 CLOSE OZF_RESALE_COMMON_PVT.g_log_id_csr;
2842
2843 -- julou bug 6317120. get org_id from table
2844 OPEN OZF_RESALE_COMMON_PVT.gc_line_org_id(l_order_set_tbl(p).resale_line_id);
2845 FETCH OZF_RESALE_COMMON_PVT.gc_line_org_id INTO l_org_id;
2846 CLOSE OZF_RESALE_COMMON_PVT.gc_line_org_id;
2847
2848 OZF_RESALE_LOGS_PKG.Insert_Row(
2849 px_resale_log_id => l_log_id,
2850 p_resale_id => l_order_set_tbl(p).resale_line_id,
2851 p_resale_id_type => OZF_RESALE_COMMON_PVT.G_ID_TYPE_LINE,
2852 p_error_code => 'OZF_GET_ORDER_PRIC_ERR',
2853 p_error_message => fnd_message.get_string('OZF','OZF_GET_ORDER_PRIC_ERR'),
2854 p_column_name => NULL,
2855 p_column_value => NULL,
2856 --px_org_id => OZF_RESALE_COMMON_PVT.g_org_id
2857 px_org_id => l_org_id
2858 );
2859 EXCEPTION
2860 WHEN OTHERS THEN
2861 ozf_utility_pvt.error_message('OZF_INS_RESALE_LOG_WRG');
2862 RAISE FND_API.g_exc_unexpected_error;
2863 END;
2864 END LOOP;
2865 IF OZF_DEBUG_LOW_ON THEN
2866 ozf_utility_PVT.debug_message('/*--- Get order price failed ---*/');
2867 END IF;
2868 GOTO END_LOOP;
2869 END IF;
2870 IF OZF_DEBUG_LOW_ON THEN
2871 ozf_utility_PVT.debug_message('/*--- Get order price succeeded ---*/');
2872 ozf_utility_PVT.debug_message('calling process price result');
2873 ozf_utility_PVT.debug_message('/*--- Calling process_price_result: ---*/');
2874 END IF;
2875
2876 -- Here, reasle_batch_id is passed for some process convenience, it's not necessary.
2877
2878 process_pricing_result(
2879 p_resale_batch_id => p_resale_batch_id,
2880 p_line_tbl => l_line_tbl,
2881 p_caller_type => G_RESALE_CALLER,
2882 x_return_status => l_return_status,
2883 x_ozf_act_budgets_tbl => l_ozf_act_budgets_tbl,
2884 x_ozf_funds_new_tbl => l_ozf_funds_new_tbl
2885 );
2886 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2887 FND_MSG_PUB.Count_And_Get (
2888 p_encoded => FND_API.G_FALSE,
2889 p_count => l_temp_count,
2890 p_data => l_temp_data
2891 );
2892
2893 fnd_msg_pub.Get(
2894 p_msg_index => l_temp_count,
2895 p_encoded => FND_API.G_FALSE,
2896 p_data => l_temp_data,
2897 p_msg_index_out => l_temp_count
2898 );
2899 IF OZF_DEBUG_LOW_ON THEN
2900 ozf_utility_PVT.debug_message('After process_price:'||l_temp_count||' ,'||l_temp_data);
2901 ozf_utility_PVT.debug_message('l_return_status:'||l_return_status);
2902 END IF;
2903 FOR i in 1..l_order_set_tbl.LAST
2904 LOOP
2905 BEGIN
2906 OPEN OZF_RESALE_COMMON_PVT.g_log_id_csr;
2907 FETCH OZF_RESALE_COMMON_PVT.g_log_id_csr INTO l_log_id;
2908 CLOSE OZF_RESALE_COMMON_PVT.g_log_id_csr;
2909
2910 -- julou bug 6317120. get org_id from table
2911 OPEN OZF_RESALE_COMMON_PVT.gc_line_org_id(l_order_set_tbl(i).resale_line_id);
2912 FETCH OZF_RESALE_COMMON_PVT.gc_line_org_id INTO l_org_id;
2913 CLOSE OZF_RESALE_COMMON_PVT.gc_line_org_id;
2914
2915 OZF_RESALE_LOGS_PKG.Insert_Row(
2916 px_resale_log_id => l_log_id,
2917 p_resale_id => l_order_set_tbl(i).resale_line_id,
2918 p_resale_id_type => OZF_RESALE_COMMON_PVT.G_ID_TYPE_LINE,
2919 p_error_code => 'OZF_PROC_PRIC_RESLT_ERR',
2920 p_error_message => fnd_message.get_string('OZF','OZF_PROC_PRIC_RESLT_ERR'),
2921 p_column_name => NULL,
2922 p_column_value => NULL,
2923 --px_org_id => OZF_RESALE_COMMON_PVT.g_org_id
2924 px_org_id => l_org_id
2925 );
2926 EXCEPTION
2927 WHEN OTHERS THEN
2928 ozf_utility_pvt.error_message('OZF_INS_RESALE_LOG_WRG');
2929 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2930 END;
2931 END LOOP;
2932 IF OZF_DEBUG_LOW_ON THEN
2933 ozf_utility_PVT.debug_message('/*--- process_price_result Failed ---*/');
2934 END IF;
2935 goto END_LOOP;
2936 END IF;
2937 ELSE
2938 IF OZF_DEBUG_LOW_ON THEN
2939 ozf_utility_PVT.debug_message('No order line to be processed');
2940 END IF;
2941 END IF;
2942 END IF; -- END if for order_NUMBER, bill_to cust not NULL
2943 << END_LOOP >>
2944 NULL;
2945 END LOOP;
2946
2947 --13-DEC-2010 muthsubr - TPA Parallel Execution ER - 9614703
2948 ozf_utility_pvt.write_conc_log('p_resale_batch_id: ' || p_resale_batch_id);
2949 ozf_utility_pvt.write_conc_log('l_ozf_funds_new_tbl.COUNT: ' || l_ozf_funds_new_tbl.COUNT);
2950 ozf_utility_pvt.write_conc_log('l_ozf_act_budgets_tbl.COUNT: ' || l_ozf_act_budgets_tbl.COUNT);
2951 IF l_ozf_funds_new_tbl.COUNT > 0 THEN
2952 OZF_UTILITY_PVT.UPDATE_OZF_FUNDS_ALL_B(p_resale_batch_id, x_return_status, x_fund_update_status, l_ozf_funds_new_tbl, 'TP_ACCRUAL');
2953 IF x_return_status = FND_API.g_ret_sts_error THEN
2954 RAISE FND_API.g_exc_error;
2955 ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
2956 RAISE FND_API.g_exc_unexpected_error;
2957 END IF;
2958 END IF;
2959
2960 IF l_ozf_act_budgets_tbl.COUNT > 0 THEN
2961 OZF_UTILITY_PVT.UPDATE_OZF_ACT_BUDGETS(p_resale_batch_id, x_return_status, x_budget_update_status, l_ozf_act_budgets_tbl, 'TP_ACCRUAL');
2962 IF x_return_status = FND_API.g_ret_sts_error THEN
2963 RAISE FND_API.g_exc_error;
2964 ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
2965 RAISE FND_API.g_exc_unexpected_error;
2966 END IF;
2967 END IF;
2968
2969 --Update Batch status to Pending Accruals in case locking happens, Batch Line status remains unchanged
2970 IF x_fund_update_status = 'PENDING_ACCRUALS' OR x_budget_update_status = 'PENDING_ACCRUALS' THEN
2971 UPDATE ozf_resale_batches_all
2972 SET status_code = 'PENDING_ACCRUALS'
2973 WHERE resale_batch_id = p_resale_batch_id;
2974
2975 ozf_utility_pvt.write_conc_log('Updated batch status to Pending Accruals - p_resale_batch_id: ' || p_resale_batch_id);
2976
2977 IF OZF_DEBUG_LOW_ON THEN
2978 OZF_UTILITY_PVT.debug_message('x_fund_update_status: ' || x_fund_update_status);
2979 OZF_UTILITY_PVT.debug_message('x_budget_update_status: ' || x_budget_update_status);
2980 OZF_UTILITY_PVT.debug_message('Updated batch status to Pending Accruals');
2981 END IF;
2982 END IF;
2983
2984 ELSE
2985 IF OZF_DEBUG_LOW_ON THEN
2986 ozf_utility_PVT.debug_message('/*--- No order to process ---*/');
2987 END IF;
2988 END IF;
2989 -- Debug Message
2990
2991 x_return_status := l_return_status;
2992
2993
2994 IF OZF_DEBUG_HIGH_ON THEN
2995 OZF_UTILITY_PVT.debug_message(l_full_name||': End'|| x_return_status);
2996 END IF;
2997 --Standard call to get message count and if count=1, get the message
2998 FND_MSG_PUB.Count_And_Get (
2999 p_encoded => FND_API.G_FALSE,
3000 p_count => x_msg_count,
3001 p_data => x_msg_data
3002 );
3003 EXCEPTION
3004 WHEN FND_API.G_EXC_ERROR THEN
3005 ROLLBACK TO Process_Resale_Order;
3006 x_return_status := FND_API.G_RET_STS_ERROR;
3007 -- Standard call to get message count and if count=1, get the message
3008 FND_MSG_PUB.Count_And_Get (
3009 p_encoded => FND_API.G_FALSE,
3010 p_count => x_msg_count,
3011 p_data => x_msg_data
3012 );
3013 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3014 ROLLBACK TO Process_Resale_Order;
3015 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3016
3017 -- Standard call to get message count and if count=1, get the message
3018 FND_MSG_PUB.Count_And_Get (
3019 p_encoded => FND_API.G_FALSE,
3020 p_count => x_msg_count,
3021 p_data => x_msg_data
3022 );
3023 WHEN OTHERS THEN
3024 ROLLBACK TO Process_Resale_Order;
3025 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3026
3027 -- Standard call to get message count and if count=1, get the message
3028 FND_MSG_PUB.Count_And_Get (
3029 p_encoded => FND_API.G_FALSE,
3030 p_count => x_msg_count,
3031 p_data => x_msg_data
3032 );
3033 END Process_Resale_Order;
3034
3035 ---------------------------------------------------------------------
3036 -- PROCEDURE
3037 -- Process_Resale
3038 --
3039 -- PURPOSE
3040 -- Process a batch FROM resale tables.
3041 --
3042 -- PARAMETERS
3043 --
3044 -- NOTES
3045 --
3046 ---------------------------------------------------------------------
3047 PROCEDURE Process_Resale (
3048 p_api_version IN NUMBER
3049 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
3050 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
3051 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
3052 ,p_resale_batch_id IN NUMBER
3053 ,x_return_status OUT NOCOPY VARCHAR2
3054 ,x_msg_data OUT NOCOPY VARCHAR2
3055 ,x_msg_count OUT NOCOPY NUMBER
3056 )IS
3057 l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_RESALE';
3058 l_api_version CONSTANT NUMBER := 1.0;
3059 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
3060 --
3061 l_return_status VARCHAR2(30);
3062 l_msg_data VARCHAR2(2000);
3063 l_msg_count NUMBER;
3064
3065 BEGIN
3066 -- Standard BEGIN of API savepoint
3067 SAVEPOINT PROCESS_TP_RESALE;
3068 -- Standard call to check for call compatibility.
3069 IF NOT FND_API.Compatible_API_Call (
3070 l_api_version,
3071 p_api_version,
3072 l_api_name,
3073 G_PKG_NAME)
3074 THEN
3075 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3076 END IF;
3077
3078 --Initialize message lISt if p_init_msg_list IS TRUE.
3079 IF FND_API.To_BOOLEAN (p_init_msg_list) THEN
3080 FND_MSG_PUB.initialize;
3081 END IF;
3082
3083 -- Debug Message
3084 IF OZF_DEBUG_LOW_ON THEN
3085 OZF_UTILITY_PVT.debug_message(l_full_name||': Start');
3086 END IF;
3087
3088 -- Initialize API return status to sucess
3089 x_return_status := FND_API.G_RET_STS_SUCCESS;
3090
3091 -- validate batch for resale processing
3092 Validate_batch(
3093 p_api_version => 1
3094 ,p_init_msg_list => FND_API.G_FALSE
3095 ,p_commit => FND_API.G_FALSE
3096 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3097 ,p_resale_batch_id => p_resale_batch_id
3098 ,x_return_status => l_return_status
3099 ,x_msg_data => l_msg_data
3100 ,x_msg_count => l_msg_count
3101 );
3102
3103 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3104 RAISE FND_API.G_EXC_ERROR;
3105 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3106 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3107 END IF;
3108
3109 -- calling Third party accrual validation for this batch
3110 Validate_Order_Record(
3111 p_api_version => 1
3112 ,p_init_msg_list => FND_API.G_FALSE
3113 ,p_commit => FND_API.G_FALSE
3114 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3115 ,p_resale_batch_id => p_resale_batch_id
3116 ,p_caller_type => G_RESALE_CALLER
3117 ,x_return_status => l_return_status
3118 ,x_msg_data => l_msg_data
3119 ,x_msg_count => l_msg_count
3120 );
3121
3122 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3123 RAISE FND_API.G_EXC_ERROR;
3124 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3125 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3126 END IF;
3127
3128 Process_Resale_Order (
3129 p_api_version => 1.0
3130 ,p_init_msg_list => FND_API.G_FALSE
3131 ,p_commit => FND_API.G_FALSE
3132 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3133 ,p_resale_batch_id => p_resale_batch_id
3134 ,x_return_status => l_return_status
3135 ,x_msg_data => l_msg_data
3136 ,x_msg_count => l_msg_count
3137 );
3138
3139 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3140 RAISE FND_API.G_EXC_ERROR;
3141 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3142 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3143 END IF;
3144
3145 -- Debug Message
3146 IF OZF_DEBUG_HIGH_ON THEN
3147 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
3148 END IF;
3149 --Standard call to get message count and if count=1, get the message
3150 FND_MSG_PUB.Count_And_Get (
3151 p_encoded => FND_API.G_FALSE,
3152 p_count => x_msg_count,
3153 p_data => x_msg_data
3154 );
3155
3156 EXCEPTION
3157 WHEN FND_API.G_EXC_ERROR THEN
3158 ROLLBACK TO PROCESS_TP_RESALE;
3159 x_return_status := FND_API.G_RET_STS_ERROR;
3160 -- Standard call to get message count and if count=1, get the message
3161 FND_MSG_PUB.Count_And_Get (
3162 p_encoded => FND_API.G_FALSE,
3163 p_count => x_msg_count,
3164 p_data => x_msg_data
3165 );
3166 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3167 ROLLBACK TO PROCESS_TP_RESALE;
3168 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3169
3170 -- Standard call to get message count and if count=1, get the message
3171 FND_MSG_PUB.Count_And_Get (
3172 p_encoded => FND_API.G_FALSE,
3173 p_count => x_msg_count,
3174 p_data => x_msg_data
3175 );
3176 WHEN OTHERS THEN
3177 ROLLBACK TO PROCESS_TP_RESALE;
3178 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3179
3180 -- Standard call to get message count and if count=1, get the message
3181 FND_MSG_PUB.Count_And_Get (
3182 p_encoded => FND_API.G_FALSE,
3183 p_count => x_msg_count,
3184 p_data => x_msg_data
3185 );
3186 END Process_Resale;
3187
3188 ---------------------------------------------------------------------
3189 -- PROCEDURE
3190 -- Move_Indirect_Customer_Order
3191 --
3192 -- PURPOSE
3193 --
3194 -- This procedure is to move indirect customer data to the resale tables. It
3195 -- is called during the process of IFACE data
3196 --
3197 -- THIS IS TO BE USED IN MAKE PAYMENT
3198 -- need to INSERT these transaction in inventory
3199 --
3200 -- PARAMETERS
3201 --
3202 --
3203 -- NOTES
3204 --
3205 ---------------------------------------------------------------------
3206 PROCEDURE Move_Indirect_Customer_Order
3207 (
3208 p_api_version IN NUMBER
3209 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
3210 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
3211 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
3212 ,p_resale_batch_id IN NUMBER
3213 ,x_return_status OUT NOCOPY VARCHAR2
3214 ,x_msg_data OUT NOCOPY VARCHAR2
3215 ,x_msg_count OUT NOCOPY NUMBER
3216 )IS
3217 l_api_name CONSTANT VARCHAR2(30) := 'Move_Indirect_Customer_Order';
3218 l_api_version CONSTANT NUMBER := 1.0;
3219 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
3220 --
3221 l_return_status VARCHAR2(30);
3222 l_msg_data VARCHAR2(2000);
3223 l_msg_count NUMBER;
3224
3225 l_org_id NUMBER;
3226 -- Start: bug # 5997978 fixed
3227 /*CURSOR org_id_csr IS
3228 SELECT (TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'), 1, 10)))
3229 FROM dual; */
3230 l_batch_org_id NUMBER;
3231 CURSOR org_id_csr(cv_resale_batch_id IN NUMBER) IS
3232 SELECT org_id
3233 FROM ozf_resale_batches_all
3234 WHERE resale_batch_id = cv_resale_batch_id;
3235 -- End: bug # 5997978 fixed
3236
3237 CURSOR order_num_csr is
3238 SELECT distinct order_NUMBER,
3239 bill_to_cust_account_id,
3240 date_ordered
3241 FROM ozf_resale_lines_int
3242 WHERE status_code=OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_OPEN
3243 AND direct_customer_flag = 'F'
3244 AND resale_batch_id = p_resale_batch_id
3245 ORDER BY date_ordered;
3246
3247 TYPE order_num_tbl_type is TABLE OF order_num_csr%rowtype INDEX BY binary_integer;
3248 l_order_num_tbl order_num_tbl_type;
3249
3250 -- we only need one record
3251 CURSOR interface_rec_csr(p_num in VARCHAR2,
3252 p_name in VARCHAR2,
3253 p_date in date) IS
3254 SELECT *
3255 FROM ozf_resale_lines_int
3256 WHERE order_NUMBER = p_num
3257 AND bill_to_cust_account_id = p_name
3258 AND date_ordered = p_date
3259 AND direct_customer_flag ='F'
3260 AND status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_OPEN
3261 AND resale_batch_id = p_resale_batch_id;
3262
3263 TYPE interface_tbl_type is TABLE OF OZF_RESALE_COMMON_PVT.g_interface_rec_csr%rowtype INDEX BY binary_integer;
3264
3265 l_resale_int_tbl interface_tbl_type;
3266
3267 l_header_id NUMBER;
3268 l_line_id NUMBER;
3269
3270 j NUMBER;
3271 k NUMBER;
3272 BEGIN
3273 -- Standard BEGIN of API savepoint
3274 SAVEPOINT TP_ACCRUAL_MV_IC;
3275 -- Standard call to check for call compatibility.
3276 IF NOT FND_API.Compatible_API_Call (
3277 l_api_version,
3278 p_api_version,
3279 l_api_name,
3280 G_PKG_NAME)
3281 THEN
3282 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3283 END IF;
3284
3285 --Initialize message list if p_init_msg_list is TRUE.
3286 IF FND_API.To_Boolean (p_init_msg_list) THEN
3287 FND_MSG_PUB.initialize;
3288 END IF;
3289
3290 -- Debug Message
3291 IF OZF_DEBUG_HIGH_ON THEN
3292 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
3293 END IF;
3294
3295 -- Initialize API return status to sucess
3296 x_return_status := FND_API.G_RET_STS_SUCCESS;
3297
3298 IF OZF_DEBUG_LOW_ON THEN
3299 ozf_utility_PVT.debug_message('in mv id cust' );
3300 END IF;
3301 -- get org_id
3302 -- Start: bug # 5997978 fixed
3303 --OPEN org_id_csr;
3304 OPEN org_id_csr(p_resale_batch_id);
3305 -- End: bug # 5997978 fixed
3306 FETCH org_id_csr INTO l_batch_org_id;
3307 l_org_id := MO_GLOBAL.get_valid_org(l_batch_org_id);
3308 CLOSE org_id_csr;
3309
3310 IF l_org_id is NULL THEN
3311 ozf_utility_pvt.error_message('OZF_CLAIM_ORG_ID_MISSING');
3312 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3313 END IF;
3314
3315 --j:=1;
3316 IF l_order_num_tbl.EXISTS(1) THEN
3317 l_order_num_tbl.DELETE;
3318 END IF;
3319 -- INSERT order headers and UPDATE lines.
3320 OPEN order_num_csr;
3321 FETCH order_num_csr BULK COLLECT INTO l_order_num_tbl;
3322 --LOOP
3323 -- EXIT WHEN order_num_csr%NOTFOUND;
3324 -- FETCH order_num_csr INTO l_order_num_tbl(j);
3325 -- j:=j+1;
3326 --END LOOP;
3327 CLOSE order_num_csr;
3328
3329 IF l_order_num_tbl.EXISTS(1) THEN
3330 FOR i in 1..l_order_num_tbl.LAST
3331 LOOP
3332 IF OZF_DEBUG_LOW_ON THEN
3333 ozf_utility_PVT.debug_message('mv indirect customer with order NUMBER, cust name:' || l_order_num_tbl(i).order_NUMBER|| ','||l_order_num_tbl(i).bill_to_cust_account_id);
3334 END IF;
3335
3336 j:=1;
3337 OPEN interface_rec_csr( l_order_num_tbl(i).order_NUMBER,
3338 l_order_num_tbl(i).bill_to_cust_account_id,
3339 l_order_num_tbl(i).date_ordered);
3340 LOOP
3341 EXIT when interface_rec_csr%NOTFOUND;
3342 FETCH interface_rec_csr INTO l_resale_int_tbl(j);
3343 j:=j+1;
3344 END LOOP;
3345 CLOSE interface_rec_csr;
3346
3347 -- DELETE the error log before INSERT the orders
3348 DELETE FROM ozf_resale_logs_all a
3349 WHERE a.resale_id_type = 'IFACE'
3350 AND a.resale_id IN (
3351 SELECT resale_line_int_id
3352 FROM ozf_resale_lines_int_all b
3353 WHERE b.direct_customer_flag = 'F'
3354 AND b.status_code = 'OPEN'
3355 AND b.order_number = l_order_num_tbl(i).order_number
3356 AND b.bill_to_cust_account_id = l_order_num_tbl(i).bill_to_cust_account_id
3357 AND b.date_ordered = l_order_num_tbl(i).date_ordered
3358 AND b.resale_batch_id = p_resale_batch_id
3359 );
3360
3361 -- ???? Consider recording order info in ozf_sales_transactions
3362
3363 IF l_resale_int_tbl.EXISTS(1) THEN
3364
3365 FOR k in 1..l_resale_int_tbl.LAST LOOP
3366
3367 -- Create an order header for the order_NUMBER;
3368 IF k = 1 THEN
3369 OZF_RESALE_COMMON_PVT.Insert_resale_header(
3370 p_api_version => 1
3371 ,p_init_msg_list => FND_API.G_FALSE
3372 ,p_commit => FND_API.G_FALSE
3373 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3374 ,p_line_int_rec => l_resale_int_tbl(k)
3375 ,x_header_id => l_header_id
3376 ,x_return_status => l_return_status
3377 ,x_msg_data => l_msg_data
3378 ,x_msg_count => l_msg_count
3379 );
3380 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3381 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3382 END IF;
3383 END IF;
3384
3385 OZF_RESALE_COMMON_PVT.Insert_resale_line(
3386 p_api_version => 1
3387 ,p_init_msg_list => FND_API.G_FALSE
3388 ,p_commit => FND_API.G_FALSE
3389 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3390 ,p_line_int_rec => l_resale_int_tbl(k)
3391 ,p_header_id => l_header_id
3392 ,x_line_id => l_line_id
3393 ,x_return_status => l_return_status
3394 ,x_msg_data => l_msg_data
3395 ,x_msg_count => l_msg_count
3396 );
3397 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3398 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3399 END IF;
3400 END LOOP;
3401 END IF;
3402 END LOOP;
3403
3404 BEGIN
3405 UPDATE ozf_resale_lines_int
3406 SET status_code= OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_CLOSED
3407 WHERE direct_customer_flag ='F'
3408 AND status_code = OZF_RESALE_COMMON_PVT.G_BATCH_ADJ_OPEN
3409 AND resale_batch_id = p_resale_batch_id;
3410 EXCEPTION
3411 WHEN OTHERS THEN
3412 ozf_utility_pvt.error_message('OZF_UPD_RESALE_INT_WRG');
3413 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3414 END;
3415 END IF;
3416 -- Debug Message
3417 IF OZF_DEBUG_HIGH_ON THEN
3418 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
3419 END IF;
3420
3421 --Standard call to get message count and if count=1, get the message
3422 FND_MSG_PUB.Count_And_Get (
3423 p_encoded => FND_API.G_FALSE,
3424 p_count => x_msg_count,
3425 p_data => x_msg_data
3426 );
3427 EXCEPTION
3428 WHEN FND_API.G_EXC_ERROR THEN
3429 x_return_status := FND_API.G_RET_STS_ERROR;
3430 -- Standard call to get message count and if count=1, get the message
3431 FND_MSG_PUB.Count_And_Get (
3432 p_encoded => FND_API.G_FALSE,
3433 p_count => x_msg_count,
3434 p_data => x_msg_data
3435 );
3436 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3437 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3438
3439 -- Standard call to get message count and if count=1, get the message
3440 FND_MSG_PUB.Count_And_Get (
3441 p_encoded => FND_API.G_FALSE,
3442 p_count => x_msg_count,
3443 p_data => x_msg_data
3444 );
3445 WHEN OTHERS THEN
3446 ROLLBACK TO TP_ACCRUAL_MV_IC;
3447 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3448
3449 -- Standard call to get message count and if count=1, get the message
3450 FND_MSG_PUB.Count_And_Get (
3451 p_encoded => FND_API.G_FALSE,
3452 p_count => x_msg_count,
3453 p_data => x_msg_data
3454 );
3455 END Move_Indirect_Customer_Order;
3456
3457 ---------------------------------------------------------------------
3458 -- PROCEDURE
3459 -- Process_Order
3460 --
3461 -- PURPOSE
3462 -- Process order information. Only direct customer order will be simulated.
3463 -- It is called by UI or concurrent program.
3464 --
3465 -- PARAMETERS
3466 --
3467 -- NOTES
3468 -- Bug 14194884 - TPA In Draft Mode ER - Added two new parameters.p_run_mode and p_draft_run_id
3469
3470 ---------------------------------------------------------------------
3471 PROCEDURE Process_Order(
3472 p_api_version IN NUMBER
3473 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
3474 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
3475 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
3476 ,p_resale_batch_id IN NUMBER
3477 ,p_run_mode IN VARCHAR2 := NULL
3478 ,p_draft_run_id IN NUMBER := NULL
3479 ,x_return_status OUT NOCOPY VARCHAR2
3480 ,x_msg_data OUT NOCOPY VARCHAR2
3481 ,x_msg_count OUT NOCOPY NUMBER
3482 )IS
3483 l_api_name CONSTANT VARCHAR2(30) := 'Process_Order';
3484 l_api_version CONSTANT NUMBER := 1.0;
3485 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
3486 --
3487 l_return_status VARCHAR2(30);
3488 l_msg_data VARCHAR2(2000);
3489 l_msg_count NUMBER;
3490 l_run_mode VARCHAR2(10); --ER 14194884
3491
3492 CURSOR order_num_csr IS
3493 SELECT DISTINCT order_NUMBER,
3494 bill_to_cust_account_id,
3495 date_ordered
3496 FROM ozf_resale_lines_int_all
3497 WHERE status_code IN ('OPEN', 'DUPLICATED')
3498 AND duplicated_adjustment_id IS NULL
3499 AND resale_batch_id = p_resale_batch_id
3500 AND direct_customer_flag <> 'F' -- TPA in DRAFT mode ER : will pick up only the direct customer orders
3501 ORDER BY date_ordered; -- as the indirect customer orders are taken care of in Move_Indirect_Customer_Order
3502
3503 TYPE order_num_tbl_type IS TABLE OF order_num_csr%rowtype
3504 INDEX BY binary_integer;
3505
3506 l_order_num_tbl order_num_tbl_type;
3507
3508 CURSOR order_set_csr( p_order_number IN VARCHAR2,
3509 p_id IN NUMBER,
3510 p_date IN DATE
3511 ) IS
3512 SELECT *
3513 FROM ozf_resale_lines_int_all
3514 WHERE order_number = p_order_number
3515 AND bill_to_cust_account_id= p_id
3516 AND date_ordered = p_date
3517 AND status_code IN ('OPEN', 'DUPLICATED')
3518 AND duplicated_adjustment_id is NULL
3519 AND resale_batch_id = p_resale_batch_id
3520 AND tracing_flag = 'F';
3521
3522 TYPE resale_lines_tbl_type IS TABLE OF order_set_csr%rowtype
3523 INDEX BY binary_integer;
3524
3525 l_order_set_tbl resale_lines_tbl_type;
3526
3527 l_control_rec QP_PREQ_GRP.CONTROL_RECORD_TYPE;
3528
3529 l_line_tbl OZF_ORDER_PRICE_PVT.LINE_REC_TBL_TYPE;
3530 l_ldets_tbl OZF_ORDER_PRICE_PVT.LDETS_TBL_TYPE;
3531 l_related_lines_tbl OZF_ORDER_PRICE_PVT.RLTD_LINE_TBL_TYPE;
3532
3533 p NUMBER;
3534 k NUMBER;
3535
3536 l_log_id NUMBER;
3537
3538 l_temp_count NUMBER;
3539 l_temp_data VARCHAR2(2000);
3540 l_price_flag VARCHAR2(1) := NULL;
3541 l_batch_status VARCHAR2(30);
3542
3543 --mkothari 13-dec-2006
3544 l_list_price_override_flag VARCHAR2(1) := NULL;
3545
3546 CURSOR dup_adjustments_csr( p_order_number IN VARCHAR2,
3547 p_id IN NUMBER,
3548 p_date IN DATE
3549 ) IS
3550 SELECT *
3551 FROM ozf_resale_lines_int_all
3552 WHERE order_number = p_order_number
3553 AND bill_to_cust_account_id = p_id
3554 AND date_ordered = p_date
3555 AND status_code = 'DUPLICATED'
3556 AND duplicated_adjustment_id IS NOT NULL
3557 AND resale_batch_id = p_resale_batch_id
3558 AND tracing_flag = 'F';
3559
3560 CURSOR tracing_data_csr( p_order_number IN VARCHAR2,
3561 p_id IN NUMBER,
3562 p_date IN DATE
3563 ) IS
3564 SELECT *
3565 FROM ozf_resale_lines_int_all
3566 WHERE order_number = p_order_number -- ?? need this
3567 AND bill_to_cust_account_id = p_id -- ?? need this
3568 AND date_ordered = p_date
3569 AND status_code IN ('OPEN', 'DUPLICATED')
3570 AND resale_batch_id = p_resale_batch_id
3571 AND tracing_flag = 'T';
3572
3573 -- [BEGIN OF BUG 4233341 FIXING]
3574 CURSOR csr_valid_line_count(cv_batch_id IN NUMBER) IS
3575 SELECT COUNT(1)
3576 FROM ozf_resale_lines_int_all
3577 WHERE status_code IN ('PROCESSED', 'CLOSED', 'DUPLICATED')
3578 AND resale_batch_id = cv_batch_id;
3579
3580 CURSOR csr_get_batch_number(cv_batch_id IN NUMBER) IS
3581 SELECT batch_number
3582 FROM ozf_resale_batches_all
3583 WHERE resale_batch_id = cv_batch_id;
3584
3585 l_valid_line_count NUMBER;
3586 l_batch_number VARCHAR2(30);
3587
3588
3589 CURSOR csr_out_dispute_pre_proc(cv_batch_id IN NUMBER) IS
3590 SELECT i.resale_line_int_id id
3591 , lk.meaning dispute_code
3592 , lg.error_message
3593 , lg.column_name
3594 , lg.column_value
3595 FROM ozf_resale_lines_int_all i
3596 , ozf_resale_logs_all lg
3597 , ozf_lookups lk
3598 WHERE i.dispute_code = lk.lookup_code(+)
3599 AND lk.lookup_type(+) = 'OZF_RESALE_DISPUTE_CODE'
3600 AND i.status_code = 'DISPUTED'
3601 AND i.resale_batch_id = cv_batch_id
3602 AND i.resale_line_int_id = lg.resale_id (+)
3603 ORDER BY i.resale_line_int_id;
3604
3605 --AMITAMKU Bug 14685303, Added cursor to print duplicate line detail in output file.
3606 CURSOR csr_out_duplicate_pre_proc(cv_batch_id IN NUMBER) IS
3607 SELECT i.resale_line_int_id id
3608 , DECODE(lg.column_value,'-1', 'RESALE_LINE_INT_ID', '-2', 'RESALE_LINE_ID') column_name
3609 , i.duplicated_line_id column_value
3610 FROM ozf_resale_lines_int_all i
3611 , ozf_resale_logs_all lg
3612 WHERE i.status_code = 'DUPLICATED'
3613 AND i.resale_batch_id = cv_batch_id
3614 AND i.resale_line_int_id = lg.resale_id
3615 ORDER BY i.resale_line_int_id;
3616
3617 TYPE output_dispute_line_tbl IS TABLE OF csr_out_dispute_pre_proc%ROWTYPE
3618 INDEX BY BINARY_INTEGER;
3619
3620 l_output_dispute_line_tbl output_dispute_line_tbl;
3621 i_output_idx NUMBER;
3622
3623 TYPE output_duplicate_line_tbl IS TABLE OF csr_out_duplicate_pre_proc%ROWTYPE
3624 INDEX BY BINARY_INTEGER;
3625
3626 l_output_duplicate_line_tbl output_duplicate_line_tbl;
3627
3628 l_lines_disputed NUMBER;
3629 l_calculated_amount NUMBER;
3630 l_total_accepted_amount NUMBER;
3631 l_total_allowed_amount NUMBER;
3632 l_total_disputed_amount NUMBER;
3633 l_total_claimed_amount NUMBER;
3634 l_status_code VARCHAR2(30);
3635
3636 l_lines_invalid NUMBER;
3637 l_accrual_on_selling VARCHAR2(3);
3638 l_new_batch_status VARCHAR2(30);
3639 l_default_price_list_id NUMBER;
3640 -- bug 6317120
3641 l_org_id NUMBER;
3642 -- end bug 6317120
3643 l_ozf_act_budgets_tbl OZF_UTILITY_PVT.ozf_act_budgets_table;
3644 l_ozf_funds_new_tbl OZF_UTILITY_PVT.ozf_funds_table;
3645 l_ozf_draft_accrual_tbl ozf_draft_accrual_tbl_type;
3646 x_fund_update_status VARCHAR2(30) := OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED;
3647 x_budget_update_status VARCHAR2(30) := OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED;
3648 l_ozf_draft_accrual_rec ozf_draft_accrual_rec_type;
3649 BEGIN
3650 -- Standard BEGIN of API savepoint
3651 SAVEPOINT Process_Order;
3652 -- Standard call to check for call compatibility.
3653 IF NOT FND_API.Compatible_API_Call (
3654 l_api_version,
3655 p_api_version,
3656 l_api_name,
3657 G_PKG_NAME)
3658 THEN
3659 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3660 END IF;
3661
3662 --Initialize message list if p_init_msg_list is TRUE.
3663 IF FND_API.To_Boolean (p_init_msg_list) THEN
3664 FND_MSG_PUB.initialize;
3665 END IF;
3666
3667 -- Debug Message
3668 IF OZF_DEBUG_HIGH_ON THEN
3669 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': start');
3670 END IF;
3671
3672 -- Initialize API return status to sucess
3673 x_return_status := FND_API.G_RET_STS_SUCCESS;
3674
3675 --Get the run mode for TPA for Draft Mode
3676 l_run_mode := NVL(p_run_mode, 'FINAL');
3677
3678 -- Call preprocess here.
3679 OZF_PRE_PROCESS_PVT.Resale_Pre_Process(
3680 p_api_version_number => 1
3681 ,p_init_msg_list => FND_API.G_FALSE
3682 ,p_commit => FND_API.G_FALSE
3683 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3684 ,p_batch_id => p_resale_batch_id
3685 ,x_batch_status => l_new_batch_status
3686 ,x_return_status => l_return_status
3687 ,x_msg_data => l_msg_data
3688 ,x_msg_count => l_msg_count
3689 );
3690 IF l_return_status <> FND_API.g_ret_sts_SUCCESS THEN
3691 ozf_utility_pvt.error_message('OZF_PRE_PROCESS_ERR');
3692 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3693 END IF;
3694
3695 -- [BUG 4233341 FIXING]: add output file
3696 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Disputed Interface Lines After Pre-Processing:');
3697 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
3698 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Interface');
3699 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Line Id Dispute Code Error Column Name Column Value');
3700 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' --------- -------------------------------- -------------------------------- -------------------- ------------');
3701
3702 --i_output_idx := 1;
3703 IF l_output_dispute_line_tbl.EXISTS(1) THEN
3704 l_output_dispute_line_tbl.DELETE;
3705 END IF;
3706 OPEN csr_out_dispute_pre_proc(p_resale_batch_id);
3707 FETCH csr_out_dispute_pre_proc BULK COLLECT INTO l_output_dispute_line_tbl;
3708 CLOSE csr_out_dispute_pre_proc;
3709
3710 FOR i_output_idx IN 1..l_output_dispute_line_tbl.COUNT LOOP
3711 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' '
3712 ||RPAD(l_output_dispute_line_tbl(i_output_idx).id, 10, ' ')
3713 ||RPAD(l_output_dispute_line_tbl(i_output_idx).dispute_code, 33, ' ')
3714 ||RPAD(l_output_dispute_line_tbl(i_output_idx).error_message, 34, ' ')
3715 ||RPAD(l_output_dispute_line_tbl(i_output_idx).column_name, 21, ' ')
3716 ||RPAD(l_output_dispute_line_tbl(i_output_idx).column_value, 15, ' ')
3717 );
3718 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
3719 END LOOP;
3720 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
3721
3722 --AMITAMKU Bug 14685303 - Added call of this procedure to check if the duplicates of the existing lines
3723 --If duplicate lines are found, then the status is updated as DUPLICATED
3724 OZF_RESALE_COMMON_PVT.Update_Duplicates (
3725 p_api_version => 1
3726 ,p_init_msg_LIST => FND_API.G_FALSE
3727 ,p_commit => FND_API.G_FALSE
3728 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3729 ,p_resale_batch_id => p_resale_batch_id
3730 ,p_resale_batch_type => OZF_RESALE_COMMON_PVT.G_TP_ACCRUAL
3731 ,p_batch_status => l_batch_status
3732 ,x_batch_status => l_new_batch_status
3733 ,x_return_status => l_return_status
3734 ,x_msg_data => l_msg_data
3735 ,x_msg_count => l_msg_count
3736 );
3737
3738 --AMITAMKU Bug 14685303 - details of duplicate lines are printed in output file
3739 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Duplicated Interface Lines After Pre-Processing:');
3740 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
3741 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Interface');
3742 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Line Id Column Name Column Value');
3743 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' --------- -------------------- ------------');
3744
3745 IF l_output_duplicate_line_tbl.EXISTS(1) THEN
3746 l_output_duplicate_line_tbl.DELETE;
3747 END IF;
3748
3749 OPEN csr_out_duplicate_pre_proc(p_resale_batch_id);
3750 FETCH csr_out_duplicate_pre_proc BULK COLLECT INTO l_output_duplicate_line_tbl;
3751 CLOSE csr_out_duplicate_pre_proc;
3752
3753 FOR i_output_idx IN 1..l_output_duplicate_line_tbl.COUNT LOOP
3754 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' '
3755 ||RPAD(l_output_duplicate_line_tbl(i_output_idx).id, 10, ' ')
3756 ||RPAD(l_output_duplicate_line_tbl(i_output_idx).column_name, 21, ' ')
3757 ||RPAD(l_output_duplicate_line_tbl(i_output_idx).column_value, 15, ' ')
3758 );
3759 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
3760 END LOOP;
3761 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
3762
3763 --AMITAMKU Bug 14685303 - Added check so that if the batch is rejected then no need to calculate third party accruals
3764 IF l_new_batch_status = 'REJECTED' THEN
3765 RETURN;
3766 END IF;
3767
3768
3769 -- Bug 14194884 - TPA In Draft Mode ER : Indirect Orders to be processed only in FINAL mode
3770 IF l_run_mode = 'FINAL' THEN
3771 -- remove all the disputed lines
3772 UPDATE ozf_resale_lines_int
3773 SET resale_batch_id = null
3774 , request_id = null -- [BUG 4233341 FIXING]
3775 Where resale_batch_id = p_resale_batch_id
3776 and status_code = 'DISPUTED';
3777
3778 -- OK to do it here
3779 Move_Indirect_Customer_Order (
3780 p_api_version => 1
3781 ,p_init_msg_list => FND_API.G_FALSE
3782 ,p_commit => FND_API.G_FALSE
3783 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3784 ,p_resale_batch_id => p_resale_batch_id
3785 ,x_return_status => l_return_status
3786 ,x_msg_data => l_msg_data
3787 ,x_msg_count => l_msg_count
3788 );
3789 IF l_return_status <> FND_API.g_ret_sts_SUCCESS THEN
3790 ozf_utility_pvt.error_message('OZF_MV_ID_CUST_ORDER_ERR');
3791 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3792 END IF;
3793 END IF;
3794 -- Get profile value for price list
3795 l_default_price_list_id := G_TP_DEFAULT_PRICE_LIST; --fnd_profile.value('OZF_TP_ACCRUAL_PRICE_LIST');
3796
3797 -- Define control rec
3798 -- setup pricing_event based on purpose code and profile
3799 -- privcing_event is based on profile
3800
3801 -- We need to UPDATE the order FROM indirect customers so that they're not to be included in the
3802 -- pricing simulation;
3803 l_control_rec.pricing_event := G_PRICING_SIM_EVENT; --fnd_profile.value('OZF_PRICING_SIMULATION_EVENT');
3804 IF l_control_rec.pricing_event is NULL THEN
3805 l_control_rec.pricing_event := 'BATCH,BOOK,SHIP';
3806 ELSE
3807 IF l_control_rec.pricing_event = 'BATCH' THEN
3808 l_control_rec.pricing_event := 'BATCH';
3809 ELSIF l_control_rec.pricing_event = 'BOOK' THEN
3810 l_control_rec.pricing_event := 'BATCH,BOOK';
3811 ELSIF l_control_rec.pricing_event = 'SHIP' THEN
3812 l_control_rec.pricing_event := 'BATCH,BOOK,SHIP';
3813 END IF;
3814 END IF;
3815
3816 IF OZF_DEBUG_LOW_ON THEN
3817 ozf_utility_PVT.debug_message('Event:' ||l_control_rec.pricing_event );
3818 END IF;
3819
3820 l_control_rec.calculate_flag := 'Y';
3821 l_control_rec.simulation_flag := 'Y';
3822 l_control_rec.source_order_amount_flag := 'Y';
3823 l_control_rec.gsa_check_flag := 'N';
3824 l_control_rec.gsa_dup_check_flag := 'N';
3825 l_control_rec.temp_table_insert_flag := 'N';
3826
3827 --p := 1;
3828 IF l_order_num_tbl.EXISTS(1) THEN
3829 l_order_num_tbl.DELETE;
3830 END IF;
3831 OPEN order_num_csr;
3832 FETCH order_num_csr BULK COLLECT INTO l_order_num_tbl;
3833 --LOOP
3834 -- FETCH order_num_csr INTO l_order_num_tbl(p);
3835 -- EXIT when order_num_csr%notfound;
3836 -- p:= p+1;
3837 --END LOOP;
3838 CLOSE order_num_csr;
3839
3840 IF l_order_num_tbl.EXISTS(1) THEN
3841
3842 l_accrual_on_selling := fnd_profile.value('OZF_ACC_ON_SELLING_PRICE');
3843
3844 -- If this profile is not set, we default the value to 'N'
3845
3846 IF l_accrual_on_selling IS NULL THEN
3847 l_accrual_on_selling := 'N';
3848 END IF;
3849
3850 -- convert the value of the profile to proper price flag value
3851 IF l_accrual_on_selling = 'Y' THEN
3852 --l_price_flag := 'G'; -- 'G' is not implemented in QP -- mkothari
3853
3854 --mkothari 13-dec-2006
3855 l_price_flag := 'Y';
3856 l_list_price_override_flag := 'Y';
3857
3858 ELSE
3859 l_price_flag := 'Y';
3860 END IF;
3861
3862 IF OZF_DEBUG_LOW_ON THEN
3863 ozf_utility_PVT.debug_message('Price flag:' ||l_price_flag );
3864 ozf_utility_PVT.debug_message('List Price Override Flag:' ||l_list_price_override_flag);
3865 END IF;
3866
3867 FOR i IN 1..l_order_num_tbl.LAST LOOP
3868 IF l_order_num_tbl(i).order_number IS NOT NULL AND
3869 l_order_num_tbl(i).bill_to_cust_account_id IS NOT NULL AND
3870 l_order_num_tbl(i).date_ordered IS NOT NULL THEN
3871
3872 -- UPDATE tracing order lines to processed for this order to be processed
3873 UPDATE ozf_resale_lines_int_all
3874 SET status_code= 'PROCESSED'
3875 WHERE status_code = 'OPEN'
3876 AND order_number = l_order_num_tbl(i).order_number
3877 AND bill_to_cust_account_id = l_order_num_tbl(i).bill_to_cust_account_id
3878 AND date_ordered = l_order_num_tbl(i).date_ordered
3879 AND tracing_flag = 'T'
3880 AND resale_batch_id = p_resale_batch_id; -- bug 5222273
3881
3882 QP_Price_Request_Context.Set_Request_Id;
3883
3884 IF OZF_DEBUG_LOW_ON THEN
3885 ozf_utility_PVT.debug_message(l_api_name||'>> order_number = '||l_order_num_tbl(i).order_number||' (+)');
3886 ozf_utility_PVT.debug_message(l_api_name||'>> bill_to_cust_account_id = '||l_order_num_tbl(i).bill_to_cust_account_id);
3887 END IF;
3888
3889 --k:=1;
3890 OPEN order_set_csr( l_order_num_tbl(i).order_number
3891 , l_order_num_tbl(i).bill_to_cust_account_id
3892 , l_order_num_tbl(i).date_ordered
3893 );
3894
3895 LOOP
3896
3897 -- Before start process, clean up the data structures if necessary.
3898 IF l_order_set_tbl.EXISTS(1) THEN l_order_set_tbl.DELETE; END IF;
3899 IF l_line_tbl.EXISTS(1) THEN l_line_tbl.DELETE; END IF;
3900 IF l_ldets_tbl.EXISTS(1) THEN l_ldets_tbl.DELETE; END IF;
3901 IF l_related_lines_tbl.EXISTS(1) THEN l_related_lines_tbl.DELETE; END IF;
3902 IF OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL.EXISTS(1) THEN OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL.DELETE; END IF;
3903 IF OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL.EXISTS(1) THEN OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL.DELETE; END IF;
3904
3905 FETCH order_set_csr BULK COLLECT INTO l_order_set_tbl LIMIT G_BULK_LIMIT;
3906 IF l_order_set_tbl.FIRST IS NULL THEN
3907 EXIT;
3908 END IF;
3909 --CLOSE order_set_csr;
3910 /*
3911 FETCH order_set_csr BULK COLLECT INTO l_order_set_tbl;
3912 --LOOP
3913 -- FETCH order_set_csr INTO l_order_set_tbl(k);
3914 -- EXIT when order_set_csr%notfound;
3915 -- k := k+1;
3916 --END LOOP;
3917 CLOSE order_set_csr;
3918 */
3919
3920 IF OZF_DEBUG_LOW_ON THEN
3921 ozf_utility_PVT.debug_message(l_api_name||'>> order count = '||l_order_set_tbl.COUNT);
3922 END IF;
3923
3924 FOR j IN l_order_set_tbl.FIRST .. l_order_set_tbl.LAST
3925 LOOP
3926 -- Purge the any error message that might be there.
3927 BEGIN
3928 DELETE FROM ozf_resale_logs
3929 WHERE resale_id = l_order_set_tbl(j).resale_line_int_id
3930 AND resale_id_type = 'IFACE';
3931 EXCEPTION
3932 WHEN OTHERS THEN
3933 ozf_utility_pvt.error_message('OZF_DEL_RESALE_LOG_WRG');
3934 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3935 END;
3936
3937 IF OZF_DEBUG_LOW_ON THEN
3938 ozf_utility_PVT.debug_message(l_api_name||'>> building order line for inteface id: '||l_order_set_tbl(j).resale_line_int_id);
3939 END IF;
3940
3941 -- INSERT INTO l_line_tbl
3942 l_line_tbl(j).line_index := j;
3943 l_line_tbl(j).line_id := l_order_set_tbl(j).resale_line_int_id;
3944 l_line_tbl(j).line_type_code := OZF_ORDER_PRICE_PVT.G_ORDER_LINE_TYPE;
3945 l_line_tbl(j).pricing_effective_date := l_order_set_tbl(j).date_ordered;
3946 l_line_tbl(j).active_date_first := l_order_set_tbl(j).date_ordered;
3947 l_line_tbl(j).active_date_first_type := 'ORD';
3948 l_line_tbl(j).active_date_second := l_order_set_tbl(j).date_shipped;
3949 l_line_tbl(j).active_date_second_type := 'SHIP';
3950 l_line_tbl(j).line_quantity := ABS(l_order_set_tbl(j).quantity); -- BUG 4581928
3951 l_line_tbl(j).line_uom_code := l_order_set_tbl(j).uom_code;
3952 l_line_tbl(j).request_type_code := 'ONT';
3953 -- Pricing might be able to default it
3954 --mkothari 13-dec-2006
3955 --IF l_price_flag ='G' THEN
3956 IF l_list_price_override_flag = 'Y' THEN
3957 l_line_tbl(j).priced_quantity := ABS(l_order_set_tbl(j).quantity); -- BUG 4581928
3958 l_line_tbl(j).priced_uom_code := l_order_set_tbl(j).uom_code;
3959 l_line_tbl(j).unit_price := l_order_set_tbl(j).selling_price;
3960 END IF;
3961 l_line_tbl(j).currency_code := l_order_set_tbl(j).currency_code;
3962 IF l_order_set_tbl(j).price_list_id IS NULL THEN
3963 l_line_tbl(j).price_list_id := l_default_price_list_id;
3964 ELSE
3965 l_line_tbl(j).price_list_id := l_order_set_tbl(j).price_list_id;
3966 END IF;
3967 l_line_tbl(j).price_flag := l_price_flag;
3968 --mkothari 13-dec-2006
3969 l_line_tbl(j).list_price_override_flag := l_list_price_override_flag;
3970 l_line_tbl(j).pricing_status_code := QP_PREQ_GRP.G_STATUS_UNCHANGED;
3971 l_line_tbl(j).chargeback_int_id := l_order_set_tbl(j).resale_line_int_id;
3972 l_line_tbl(j).resale_table_type := 'IFACE'; -- bug 5360598
3973 -- l_line_tbl(j).UNIT_PRICE := NULL;
3974 -- l_line_tbl(j).PERCENT_PRICE := NULL;
3975 -- l_line_tbl(j).UOM_QUANTITY := NULL;
3976 -- l_line_tbl(j).ADJUSTED_UNIT_PRICE := NULL;
3977 -- l_line_tbl(j).UPD_ADJUSTED_UNIT_PRICE NUMBER:= FND_API.G_MISS_NUM,
3978 -- l_line_tbl(j).PROCESSED_FLAG VARCHAR2(1):= FND_API.G_MISS_CHAR,
3979 -- l_line_tbl(j).PROCESSING_ORDER := NULL;
3980 -- l_line_tbl(j).PRICING_STATUS_TEXT := NULL;
3981 -- l_line_tbl(j).ROUNDING_FLAG := NULL;
3982 -- l_line_tbl(j).ROUNDING_FACTOR := NULL;
3983 -- l_line_tbl(j).QUALIFIERS_EXIST_FLAG := NULL;
3984 -- l_line_tbl(j).PRICING_ATTRS_EXIST_FLAG := NULL;
3985 -- l_line_tbl(j).PL_VALIDATED_FLAG := NULL;
3986 -- l_line_tbl(j).PRICE_REQUEST_CODE := NULL;
3987 -- l_line_tbl(j).USAGE_PRICING_TYPE := NULL;
3988 -- l_line_tbl(j).LINE_CATEGORY := NULL;
3989
3990 -- populate the order_price global line arrary
3991 -- Here I only populate the values of the qualifiers for ONT.
3992 -- The real global structure will be populate in ozf_order_price_pvt.
3993 -- And it's value can be change in OZF_CHARGEBACK_ATTRMAP_PUB
3994
3995 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).header_id := l_order_set_tbl.LAST + 1;
3996 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).line_id := l_order_set_tbl(j).resale_line_int_id;
3997 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).line_type_id := l_order_set_tbl(j).order_type_id;
3998 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).inventory_item_id := l_order_set_tbl(j).inventory_item_id;
3999 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ordered_quantity := ABS(l_order_set_tbl(j).quantity); -- BUG 4581928
4000 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).order_quantity_uom := l_order_set_tbl(j).uom_code;
4001 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).invoice_to_org_id := l_order_set_tbl(j).bill_to_site_use_id;
4002 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ship_to_org_id := l_order_set_tbl(j).ship_to_site_use_id;
4003 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).sold_to_org_id := l_order_set_tbl(j).bill_to_cust_account_id;
4004 --OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).sold_from_org_id := l_order_set_tbl(j).sold_from_cust_account_id;
4005 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).invoice_to_party_id := l_order_set_tbl(j).bill_to_party_id;
4006 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).invoice_to_party_site_id := l_order_set_tbl(j).bill_to_party_site_id;
4007 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ship_to_party_id := l_order_set_tbl(j).ship_to_party_id;
4008 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).ship_to_party_site_id := l_order_set_tbl(j).ship_to_party_site_id;
4009 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).price_list_id := l_line_tbl(j).price_list_id;
4010 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).request_date := l_order_set_tbl(j).date_ordered;
4011 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).actual_shipment_date := l_order_set_tbl(j).date_shipped;
4012 OZF_ORDER_PRICE_PVT.G_LINE_REC_TBL(j).pricing_date := l_order_set_tbl(j).date_ordered;
4013
4014 -- R12 Populate Global Resale Structure (+)
4015 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).batch_type := 'TP_ACCRUAL';
4016 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).qp_context_request_id := QP_Price_Request_Context.Get_Request_Id;
4017 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_index := l_line_tbl(j).line_index;
4018 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).resale_table_type := 'IFACE';
4019 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_id := l_order_set_tbl(j).resale_line_int_id;
4020 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).resale_transfer_type := l_order_set_tbl(j).resale_transfer_type;
4021 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).product_transfer_movement_type := l_order_set_tbl(j).product_transfer_movement_type;
4022 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).product_transfer_date := l_order_set_tbl(j).product_transfer_date;
4023 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).tracing_flag := l_order_set_tbl(j).tracing_flag;
4024 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).sold_from_cust_account_id := l_order_set_tbl(j).sold_from_cust_account_id;
4025 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).sold_from_site_id := l_order_set_tbl(j).sold_from_site_id;
4026 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).sold_from_contact_party_id := l_order_set_tbl(j).sold_from_contact_party_id;
4027 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_from_cust_account_id := l_order_set_tbl(j).ship_from_cust_account_id;
4028 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_from_site_id := l_order_set_tbl(j).ship_from_site_id;
4029 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_from_contact_party_id := l_order_set_tbl(j).ship_from_contact_party_id;
4030 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).bill_to_party_id := l_order_set_tbl(j).bill_to_party_id;
4031 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).bill_to_party_site_id := l_order_set_tbl(j).bill_to_party_site_id;
4032 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).bill_to_contact_party_id := l_order_set_tbl(j).bill_to_contact_party_id;
4033 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_to_party_id := l_order_set_tbl(j).ship_to_party_id;
4034 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_to_party_site_id := l_order_set_tbl(j).ship_to_party_site_id;
4035 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).ship_to_contact_party_id := l_order_set_tbl(j).ship_to_contact_party_id;
4036 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_party_id := l_order_set_tbl(j).end_cust_party_id;
4037 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_site_use_id := l_order_set_tbl(j).end_cust_site_use_id;
4038 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_site_use_code := l_order_set_tbl(j).end_cust_site_use_code;
4039 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_party_site_id := l_order_set_tbl(j).end_cust_party_site_id;
4040 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).end_cust_contact_party_id := l_order_set_tbl(j).end_cust_contact_party_id;
4041 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).data_source_code := l_order_set_tbl(j).data_source_code;
4042 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute_category := l_order_set_tbl(j).header_attribute_category;
4043 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute1 := l_order_set_tbl(j).header_attribute1;
4044 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute2 := l_order_set_tbl(j).header_attribute2;
4045 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute3 := l_order_set_tbl(j).header_attribute3;
4046 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute4 := l_order_set_tbl(j).header_attribute4;
4047 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute5 := l_order_set_tbl(j).header_attribute5;
4048 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute6 := l_order_set_tbl(j).header_attribute6;
4049 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute7 := l_order_set_tbl(j).header_attribute7;
4050 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute8 := l_order_set_tbl(j).header_attribute8;
4051 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute9 := l_order_set_tbl(j).header_attribute9;
4052 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute10 := l_order_set_tbl(j).header_attribute10;
4053 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute11 := l_order_set_tbl(j).header_attribute11;
4054 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute12 := l_order_set_tbl(j).header_attribute12;
4055 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute13 := l_order_set_tbl(j).header_attribute13;
4056 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute14 := l_order_set_tbl(j).header_attribute14;
4057 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).header_attribute15 := l_order_set_tbl(j).header_attribute15;
4058 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute_category := l_order_set_tbl(j).line_attribute_category;
4059 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute1 := l_order_set_tbl(j).line_attribute1;
4060 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute2 := l_order_set_tbl(j).line_attribute2;
4061 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute3 := l_order_set_tbl(j).line_attribute3;
4062 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute4 := l_order_set_tbl(j).line_attribute4;
4063 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute5 := l_order_set_tbl(j).line_attribute5;
4064 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute6 := l_order_set_tbl(j).line_attribute6;
4065 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute7 := l_order_set_tbl(j).line_attribute7;
4066 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute8 := l_order_set_tbl(j).line_attribute8;
4067 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute9 := l_order_set_tbl(j).line_attribute9;
4068 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute10 := l_order_set_tbl(j).line_attribute10;
4069 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute11 := l_order_set_tbl(j).line_attribute11;
4070 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute12 := l_order_set_tbl(j).line_attribute12;
4071 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute13 := l_order_set_tbl(j).line_attribute13;
4072 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute14 := l_order_set_tbl(j).line_attribute14;
4073 OZF_ORDER_PRICE_PVT.G_RESALE_LINE_TBL(j).line_attribute15 := l_order_set_tbl(j).line_attribute15;
4074 -- R12 Populate Global Resale Structure (-)
4075
4076 END LOOP; ---FOR i IN l_order_set_tbl.FIRST .. l_order_set_tbl.LAST
4077
4078
4079 IF OZF_DEBUG_LOW_ON THEN
4080 ozf_utility_PVT.debug_message(l_api_name||'>> building order header');
4081 END IF;
4082
4083 -- build summary line
4084 k := l_order_set_tbl.LAST + 1;
4085 l_line_tbl(k).line_index := k;
4086 l_line_tbl(k).line_id := NULL;
4087 l_line_tbl(k).line_type_code := OZF_ORDER_PRICE_PVT.G_ORDER_HEADER_TYPE;
4088 l_line_tbl(k).pricing_effective_date := l_order_set_tbl(1).date_ordered;
4089 l_line_tbl(k).active_date_first := l_order_set_tbl(1).date_ordered;
4090 l_line_tbl(k).active_date_first_type := 'ORD'; -- Change because of ONT QP order 'NO TYPE';
4091 l_line_tbl(k).active_date_second := l_order_set_tbl(1).date_shipped;
4092 l_line_tbl(k).active_date_second_type := 'SHIP'; -- change because of ONT QP order 'NO TYPE';
4093 l_line_tbl(k).request_type_code := 'ONT';
4094 l_line_tbl(k).currency_code := l_order_set_tbl(1).currency_code;
4095 l_line_tbl(k).price_list_id := l_line_tbl(1).price_list_id;
4096 l_line_tbl(k).price_flag := l_price_flag;
4097
4098 --mkothari 13-dec-2006
4099 l_line_tbl(k).list_price_override_flag := l_list_price_override_flag;
4100 l_line_tbl(k).pricing_status_code := QP_PREQ_GRP.G_STATUS_UNCHANGED;
4101 l_line_tbl(k).chargeback_int_id := l_order_set_tbl(1).resale_line_int_id;
4102 l_line_tbl(k).resale_table_type := 'IFACE'; -- bug 5360598
4103
4104 -- l_line_tbl(k).LINE_QUANTITY := NULL;
4105 -- l_line_tbl(k).LINE_UOM_CODE := NULL;
4106 -- l_line_tbl(k).PRICED_QUANTITY := NULL;
4107 -- l_line_tbl(k).PRICED_UOM_CODE := NULL;
4108 -- l_line_tbl(j).UNIT_PRICE := l_order_set_tbl(j).
4109 -- l_line_tbl(j).PERCENT_PRICE := l_order_set_tbl(j).
4110 -- l_line_tbl(j).UOM_QUANTITY := l_order_set_tbl(j).
4111 -- l_line_tbl(j).ADJUSTED_UNIT_PRICE := l_order_set_tbl(j).
4112 -- l_line_tbl(j).UPD_ADJUSTED_UNIT_PRICE NUMBER:= FND_API.G_MISS_NUM,
4113 -- l_line_tbl(j).PROCESSED_FLAG VARCHAR2(1):= FND_API.G_MISS_CHAR,
4114 -- l_line_tbl(j).PROCESSING_ORDER := NULL;
4115 -- l_line_tbl(j).PRICING_STATUS_TEXT := NULL;
4116 -- l_line_tbl(j).ROUNDING_FLAG := NULL;
4117 -- l_line_tbl(j).ROUNDING_FACTOR := NULL;
4118 -- l_line_tbl(j).QUALIFIERS_EXIST_FLAG := NULL;
4119 -- l_line_tbl(j).PRICING_ATTRS_EXIST_FLAG := NULL;
4120 -- l_line_tbl(j).PL_VALIDATED_FLAG := NULL;
4121 -- l_line_tbl(j).PRICE_REQUEST_CODE := NULL;
4122 -- l_line_tbl(j).USAGE_PRICING_TYPE := NULL;
4123 -- l_line_tbl(j).LINE_CATEGORY := NULL;
4124
4125 -- populate the order_price global header structure
4126 -- Here I only populate the values of the qualifiers for ONT.
4127 -- The real global structure will be populate in ozf_order_price_pvt.
4128 -- And it's value can be change in OZF_CHARGEBACK_ATTRMAP_PUB
4129
4130 -- Might be able to add more value here.
4131 OZF_ORDER_PRICE_PVT.G_HEADER_REC.header_id := k;
4132 OZF_ORDER_PRICE_PVT.G_HEADER_REC.order_type_id := l_order_set_tbl(1).order_type_id;
4133 OZF_ORDER_PRICE_PVT.G_HEADER_REC.sold_to_org_id := l_order_set_tbl(1).bill_to_cust_account_id;
4134 OZF_ORDER_PRICE_PVT.G_HEADER_REC.invoice_to_org_id := l_order_set_tbl(1).bill_to_site_use_id;
4135 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ship_to_org_id := l_order_set_tbl(1).ship_to_site_use_id;
4136 OZF_ORDER_PRICE_PVT.G_HEADER_REC.invoice_to_party_id := l_order_set_tbl(1).bill_to_party_id;
4137 OZF_ORDER_PRICE_PVT.G_HEADER_REC.invoice_to_party_site_id := l_order_set_tbl(1).bill_to_party_site_id;
4138 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ship_to_party_id := l_order_set_tbl(1).ship_to_party_id;
4139 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ship_to_party_site_id := l_order_set_tbl(1).ship_to_party_site_id;
4140 OZF_ORDER_PRICE_PVT.G_HEADER_REC.price_list_id := l_line_tbl(1).price_list_id;
4141 OZF_ORDER_PRICE_PVT.G_HEADER_REC.ordered_date := l_order_set_tbl(1).date_ordered;
4142 OZF_ORDER_PRICE_PVT.G_HEADER_REC.request_date := l_order_set_tbl(1).date_ordered;
4143 OZF_ORDER_PRICE_PVT.G_HEADER_REC.pricing_date := l_order_set_tbl(1).date_ordered;
4144
4145 IF OZF_DEBUG_LOW_ON THEN
4146 ozf_utility_PVT.debug_message(l_api_name||'>> Calling Get_Order_');
4147 END IF;
4148
4149 OZF_ORDER_PRICE_PVT.Get_Order_Price (
4150 p_api_version => 1.0
4151 ,p_init_msg_list => FND_API.G_FALSE
4152 ,p_commit => FND_API.G_FALSE
4153 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
4154 ,x_return_status => l_return_status
4155 ,x_msg_data => l_msg_data
4156 ,x_msg_count => l_msg_count
4157 ,p_control_rec => l_control_rec
4158 ,xp_line_tbl => l_line_tbl
4159 ,x_ldets_tbl => l_ldets_tbl
4160 ,x_related_lines_tbl => l_related_lines_tbl
4161 );
4162 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4163 ozf_utility_pvt.error_message('OZF_GET_ORDER_PRIC_ERR');
4164
4165 BEGIN
4166 UPDATE ozf_resale_lines_int
4167 SET status_code = 'DISPUTED'
4168 WHERE status_code = 'OPEN'
4169 AND order_number = l_order_num_tbl(i).order_number
4170 AND bill_to_cust_account_id = l_order_num_tbl(i).bill_to_cust_account_id
4171 AND date_ordered = l_order_num_tbl(i).date_ordered
4172 AND resale_batch_id = p_resale_batch_id;
4173 EXCEPTION
4174 WHEN OTHERS THEN
4175 ozf_utility_pvt.error_message('OZF_UPD_RESALE_INT_WRG');
4176 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4177 END;
4178
4179 FOR p in 1..l_order_set_tbl.LAST
4180 LOOP
4181 BEGIN
4182 OPEN OZF_RESALE_COMMON_PVT.g_log_id_csr;
4183 FETCH OZF_RESALE_COMMON_PVT.g_log_id_csr INTO l_log_id;
4184 CLOSE OZF_RESALE_COMMON_PVT.g_log_id_csr;
4185
4186 -- julou bug 6317120. get org_id from table
4187 OPEN OZF_RESALE_COMMON_PVT.gc_iface_org_id(l_order_set_tbl(p).resale_line_int_id);
4188 FETCH OZF_RESALE_COMMON_PVT.gc_iface_org_id INTO l_org_id;
4189 CLOSE OZF_RESALE_COMMON_PVT.gc_iface_org_id;
4190
4191 OZF_RESALE_LOGS_PKG.Insert_Row(
4192 px_resale_log_id => l_log_id,
4193 p_resale_id => l_order_set_tbl(p).resale_line_int_id,
4194 p_resale_id_type => 'IFACE',
4195 p_error_code => 'OZF_GET_ORDER_PRIC_ERR',
4196 p_error_message => FND_MESSAGE.get_string('OZF','OZF_GET_ORDER_PRIC_ERR'),
4197 p_column_name => NULL,
4198 p_column_value => NULL,
4199 --px_org_id => OZF_RESALE_COMMON_PVT.g_org_id
4200 px_org_id => l_org_id
4201 );
4202 EXCEPTION
4203 WHEN OTHERS THEN
4204 ozf_utility_pvt.error_message('OZF_INS_RESALE_LOG_WRG');
4205 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4206 END;
4207 END LOOP;
4208
4209 IF OZF_DEBUG_LOW_ON THEN
4210 ozf_utility_PVT.debug_message(l_api_name||'>> Get_Order_Price Failed!');
4211 END IF;
4212
4213 GOTO END_LOOP;
4214 END IF;
4215
4216 Process_Pricing_Result(
4217 p_resale_batch_id => p_resale_batch_id,
4218 p_line_tbl => l_line_tbl,
4219 p_caller_type => 'IFACE',
4220 p_run_mode => l_run_mode,
4221 p_draft_run_id => p_draft_run_id,
4222 x_return_status => l_return_status,
4223 x_ozf_act_budgets_tbl => l_ozf_act_budgets_tbl,
4224 x_ozf_funds_new_tbl => l_ozf_funds_new_tbl,
4225 x_draft_accrual_tbl => l_ozf_draft_accrual_tbl
4226 );
4227 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4228 FND_MSG_PUB.Count_And_Get (
4229 p_encoded => FND_API.G_FALSE,
4230 p_count => l_temp_count,
4231 p_data => l_temp_data
4232 );
4233
4234 -- FND_MSG_PUB.Get(
4235 -- p_msg_index => l_temp_count,
4236 -- p_encoded => FND_API.G_FALSE,
4237 -- p_data => l_temp_data,
4238 -- p_msg_index_out => l_temp_count
4239 -- );
4240
4241 FOR p in 1..l_order_set_tbl.LAST LOOP
4242 BEGIN
4243 OPEN OZF_RESALE_COMMON_PVT.g_log_id_csr;
4244 FETCH OZF_RESALE_COMMON_PVT.g_log_id_csr INTO l_log_id;
4245 CLOSE OZF_RESALE_COMMON_PVT.g_log_id_csr;
4246
4247 -- julou bug 6317120. get org_id from table
4248 OPEN OZF_RESALE_COMMON_PVT.gc_iface_org_id(l_order_set_tbl(p).resale_line_int_id);
4249 FETCH OZF_RESALE_COMMON_PVT.gc_iface_org_id INTO l_org_id;
4250 CLOSE OZF_RESALE_COMMON_PVT.gc_iface_org_id;
4251
4252 OZF_RESALE_LOGS_PKG.Insert_Row(
4253 px_resale_log_id => l_log_id,
4254 p_resale_id => l_order_set_tbl(p).resale_line_int_id,
4255 p_resale_id_type => 'IFACE',
4256 p_error_code => 'OZF_PRIC_RESULT_ERR',
4257 p_error_message => FND_MESSAGE.get_string('OZF','OZF_PRIC_RESULT_ERR'),
4258 p_column_name => NULL,
4259 p_column_value => NULL,
4260 --px_org_id => OZF_RESALE_COMMON_PVT.g_org_id
4261 px_org_id => l_org_id
4262 );
4263 EXCEPTION
4264 WHEN OTHERS THEN
4265 ozf_utility_pvt.error_message('OZF_INS_RESALE_LOG_WRG');
4266 END;
4267 END LOOP;
4268
4269 BEGIN
4270 UPDATE ozf_resale_lines_int_all
4271 SET status_code = 'DISPUTED'
4272 WHERE status_code = 'OPEN'
4273 AND order_number = l_order_num_tbl(i).order_number
4274 AND bill_to_cust_account_id = l_order_num_tbl(i).bill_to_cust_account_id
4275 AND date_ordered = l_order_num_tbl(i).date_ordered
4276 AND resale_batch_id = p_resale_batch_id;
4277 EXCEPTION
4278 WHEN OTHERS THEN
4279 ozf_utility_pvt.error_message('OZF_UPD_RESALE_INT_WRG');
4280 END;
4281
4282 GOTO END_LOOP;
4283 END IF;
4284 /* ????????????
4285 -- non tracing data and non dup data process successful
4286 IF l_header_id is NULL THEN
4287 -- create a header_id for duplicated adjs and tracing_data
4288 END IF;
4289
4290 OPEN dup adjustment
4291
4292 create link between batch_id and duplicated_line_id
4293
4294 OPEN tracing
4295 If status_code = duplicated then
4296 create a link between batch_id and duplicated_line_id
4297 else
4298 create a line and a link.
4299 END
4300
4301 */
4302
4303
4304
4305 IF OZF_DEBUG_LOW_ON THEN
4306 ozf_utility_PVT.debug_message(l_api_name||'>>- Success and Committed: Processing order for order number:'||l_order_num_tbl(i).order_number||'(-)');
4307 ozf_utility_PVT.debug_message(l_api_name||'>>- and customer:'||l_order_num_tbl(i).bill_to_cust_account_id||'(-)');
4308 END IF;
4309
4310 -- commit the data created by processing these G_BULK_LIMIT (default 500) lines
4311 IF G_ALLOW_INTER_COMMIT = 'Y' THEN -- Fix for Bug 14579860
4312
4313 COMMIT;
4314 END IF;
4315
4316 << END_LOOP >>
4317 null;
4318
4319 EXIT WHEN order_set_csr%NOTFOUND;
4320 END LOOP; -- OPEN order_set_csr
4321 CLOSE order_set_csr;
4322 END IF; -- END if for order_NUMBER, bill_to cust not NULL
4323 END LOOP; -- END LOOP FOR l_order_num_tbl
4324
4325 IF l_run_mode = 'DRAFT' THEN
4326 -- Fix for Bug 14584673 : INSERT INTO OZF_FUNDS_UTILIZED_DRAFT_ALL table is done here for accruals of all the lines at one time.
4327 IF l_ozf_draft_accrual_tbl IS NOT NULL THEN
4328 IF l_ozf_draft_accrual_tbl.count > 0 THEN
4329
4330 --//Fix for Bug 16170069 - Syntax correction
4331 $IF DBMS_DB_VERSION.VER_LE_10 $THEN
4332 FORALL ip IN NVL(l_ozf_draft_accrual_tbl.FIRST, 1) .. NVL(l_ozf_draft_accrual_tbl.LAST, 0)
4333 INSERT INTO
4334 (SELECT DRAFT_UTILIZATION_ID,
4335 DRAFT_RUN_ID,
4336 OBJECT_TYPE,
4337 OBJECT_ID,
4338 LAST_UPDATE_DATE,
4339 LAST_UPDATED_BY,
4340 LAST_UPDATE_LOGIN,
4341 CREATION_DATE,
4342 CREATED_BY,
4343 REQUEST_ID,
4344 PROGRAM_APPLICATION_ID,
4345 PROGRAM_ID,
4346 PROGRAM_UPDATE_DATE,
4347 UTILIZATION_TYPE,
4348 PLAN_TYPE,
4349 PLAN_ID,
4350 ACCTD_AMOUNT,
4351 EXCHANGE_RATE_TYPE,
4352 EXCHANGE_RATE_DATE,
4353 EXCHANGE_RATE,
4354 ORG_ID,
4355 PRODUCT_ID,
4356 CUST_ACCOUNT_ID,
4357 PRODUCT_LEVEL_TYPE,
4358 PLAN_CURR_AMOUNT,
4359 ACTIVITY_PRODUCT_ID,
4360 BILLTO_CUST_ACCOUNT_ID,
4361 REFERENCE_TYPE,
4362 REFERENCE_ID,
4363 SHIP_TO_SITE_USE_ID,
4364 BILL_TO_SITE_USE_ID,
4365 PLAN_CURRENCY_CODE,
4366 DISCOUNT_TYPE,
4367 DISCOUNT_AMOUNT,
4368 DISCOUNT_AMOUNT_CURRENCY_CODE,
4369 LIST_LINE_ID
4370 FROM OZF_FUNDS_UTILIZED_DRAFT_ALL)
4371 VALUES l_ozf_draft_accrual_tbl(ip);
4372 $ELSE
4373 FORALL ip IN NVL(l_ozf_draft_accrual_tbl.FIRST, 1) .. NVL(l_ozf_draft_accrual_tbl.LAST, 0)
4374 INSERT INTO OZF_FUNDS_UTILIZED_DRAFT_ALL
4375 ( DRAFT_UTILIZATION_ID,
4376 DRAFT_RUN_ID,
4377 OBJECT_TYPE,
4378 OBJECT_ID,
4379 LAST_UPDATE_DATE,
4380 LAST_UPDATED_BY,
4381 LAST_UPDATE_LOGIN,
4382 CREATION_DATE,
4383 CREATED_BY,
4384 REQUEST_ID,
4385 PROGRAM_APPLICATION_ID,
4386 PROGRAM_ID,
4387 PROGRAM_UPDATE_DATE,
4388 UTILIZATION_TYPE,
4389 PLAN_TYPE,
4390 PLAN_ID,
4391 ACCTD_AMOUNT,
4392 EXCHANGE_RATE_TYPE,
4393 EXCHANGE_RATE_DATE,
4394 EXCHANGE_RATE,
4395 ORG_ID,
4396 PRODUCT_ID,
4397 CUST_ACCOUNT_ID,
4398 PRODUCT_LEVEL_TYPE,
4399 PLAN_CURR_AMOUNT,
4400 ACTIVITY_PRODUCT_ID,
4401 BILLTO_CUST_ACCOUNT_ID,
4402 REFERENCE_TYPE,
4403 REFERENCE_ID,
4404 SHIP_TO_SITE_USE_ID,
4405 BILL_TO_SITE_USE_ID,
4406 PLAN_CURRENCY_CODE,
4407 DISCOUNT_TYPE,
4408 DISCOUNT_AMOUNT,
4409 DISCOUNT_AMOUNT_CURRENCY_CODE,
4410 LIST_LINE_ID)
4411 VALUES ( l_ozf_draft_accrual_tbl(ip).DRAFT_UTILIZATION_ID
4412 , l_ozf_draft_accrual_tbl(ip).DRAFT_RUN_ID
4413 , l_ozf_draft_accrual_tbl(ip).object_type
4414 , l_ozf_draft_accrual_tbl(ip).object_id
4415 , l_ozf_draft_accrual_tbl(ip).LAST_UPDATE_DATE
4416 , l_ozf_draft_accrual_tbl(ip).LAST_UPDATED_BY
4417 , l_ozf_draft_accrual_tbl(ip).LAST_UPDATE_LOGIN
4418 , l_ozf_draft_accrual_tbl(ip).CREATION_DATE
4419 , l_ozf_draft_accrual_tbl(ip).CREATED_BY
4420 , l_ozf_draft_accrual_tbl(ip).REQUEST_ID
4421 , l_ozf_draft_accrual_tbl(ip).PROGRAM_APPLICATION_ID
4422 , l_ozf_draft_accrual_tbl(ip).PROGRAM_ID
4423 , l_ozf_draft_accrual_tbl(ip).PROGRAM_UPDATE_DATE
4424 , l_ozf_draft_accrual_tbl(ip).utilization_type
4425 , l_ozf_draft_accrual_tbl(ip).plan_type
4426 , l_ozf_draft_accrual_tbl(ip).plan_id
4427 , l_ozf_draft_accrual_tbl(ip).acctd_amount
4428 , l_ozf_draft_accrual_tbl(ip).exchange_rate_type
4429 , l_ozf_draft_accrual_tbl(ip).EXCHANGE_RATE_DATE
4430 , l_ozf_draft_accrual_tbl(ip).exchange_rate
4431 , l_ozf_draft_accrual_tbl(ip).org_id
4432 , l_ozf_draft_accrual_tbl(ip).product_id
4433 , l_ozf_draft_accrual_tbl(ip).cust_account_id
4434 , l_ozf_draft_accrual_tbl(ip).product_level_type
4435 , l_ozf_draft_accrual_tbl(ip).plan_curr_amount
4436 , l_ozf_draft_accrual_tbl(ip).activity_product_id
4437 , l_ozf_draft_accrual_tbl(ip).billto_cust_account_id
4438 , l_ozf_draft_accrual_tbl(ip).REFERENCE_TYPE -- Null for TPA From Interface Table
4439 , l_ozf_draft_accrual_tbl(ip).REFERENCE_ID -- Null for TPA From Interface Table
4440 , l_ozf_draft_accrual_tbl(ip).ship_to_site_use_id
4441 , l_ozf_draft_accrual_tbl(ip).bill_to_site_use_id
4442 , l_ozf_draft_accrual_tbl(ip).plan_currency_code
4443 , l_ozf_draft_accrual_tbl(ip).discount_type
4444 , l_ozf_draft_accrual_tbl(ip).discount_amount
4445 , l_ozf_draft_accrual_tbl(ip).discount_amount_currency_code
4446 , l_ozf_draft_accrual_tbl(ip).LIST_LINE_ID
4447 );
4448 $END
4449 END IF; -- IF l_ozf_draft_accrual_tbl.count > 0 THEN
4450 END IF; -- IF l_ozf_draft_accrual_tbl IS NOT NULL THEN
4451 END IF; --IF l_run_mode = 'DRAFT' THEN
4452
4453 -- Bug 14194884 - TPA In Draft Mode ER : TPA Parallel execution only to be executed for FINAL mode
4454 IF l_run_mode = 'FINAL' THEN
4455 --13-DEC-2010 muthsubr - TPA Parallel Execution ER - 9614703
4456 IF l_ozf_funds_new_tbl.COUNT > 0 THEN
4457 OZF_UTILITY_PVT.UPDATE_OZF_FUNDS_ALL_B(p_resale_batch_id, x_return_status, x_fund_update_status, l_ozf_funds_new_tbl, 'TP_ACCRUAL');
4458 IF x_return_status = FND_API.g_ret_sts_error THEN
4459 RAISE FND_API.g_exc_error;
4460 ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
4461 RAISE FND_API.g_exc_unexpected_error;
4462 END IF;
4463 END IF;
4464
4465 IF l_ozf_act_budgets_tbl.COUNT > 0 THEN
4466 OZF_UTILITY_PVT.UPDATE_OZF_ACT_BUDGETS(p_resale_batch_id, x_return_status, x_budget_update_status, l_ozf_act_budgets_tbl, 'TP_ACCRUAL');
4467 IF x_return_status = FND_API.g_ret_sts_error THEN
4468 RAISE FND_API.g_exc_error;
4469 ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
4470 RAISE FND_API.g_exc_unexpected_error;
4471 END IF;
4472 END IF;
4473
4474 --Update Batch status to Pending Accruals in case locking happens, Batch Line status remains unchanged
4475 IF x_fund_update_status = 'PENDING_ACCRUALS' OR x_budget_update_status = 'PENDING_ACCRUALS' THEN
4476
4477 l_batch_status := 'PENDING_ACCRUALS';
4478
4479 IF OZF_DEBUG_LOW_ON THEN
4480 OZF_UTILITY_PVT.debug_message('x_fund_update_status: ' || x_fund_update_status);
4481 OZF_UTILITY_PVT.debug_message('x_budget_update_status: ' || x_budget_update_status);
4482 OZF_UTILITY_PVT.debug_message('Updated batch status to Pending Accruals');
4483 END IF;
4484 ELSE
4485 l_batch_status := OZF_RESALE_COMMON_PVT.G_BATCH_CLOSED;
4486 END IF;
4487 END IF; -- IF l_run_mode = 'FINAL' THEN
4488 ELSE -- IF l_order_num_tbl.EXISTS(1) THEN
4489
4490 IF OZF_DEBUG_LOW_ON THEN
4491 ozf_utility_PVT.debug_message(l_api_name||'>> No Order to process <<');
4492 END IF;
4493 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' There is no valid order to process.');
4494
4495 END IF; -- IF l_order_num_tbl.EXISTS(1) THEN
4496
4497
4498 -- [BUG 4233341 FIXING]: add output file
4499 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Disputed Lines After Processing Order:');
4500 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
4501 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Interface');
4502 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Line Id Dispute Code Error Column Name Column Value');
4503 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' --------- -------------------------------- -------------------------------- -------------------- ------------');
4504
4505 --i_output_idx := 1;
4506 IF l_output_dispute_line_tbl.EXISTS(1) THEN
4507 l_output_dispute_line_tbl.DELETE;
4508 END IF;
4509 OPEN csr_out_dispute_pre_proc(p_resale_batch_id);
4510 FETCH csr_out_dispute_pre_proc BULK COLLECT INTO l_output_dispute_line_tbl;
4511 --LOOP
4512 -- FETCH csr_out_dispute_pre_proc INTO l_output_dispute_line_tbl(i_output_idx);
4513 -- EXIT WHEN csr_out_dispute_pre_proc%NOTFOUND;
4514 -- i_output_idx := i_output_idx + 1;
4515 --END LOOP;
4516 /*
4517 FETCH csr_out_dispute_pre_proc BULK COLLECT INTO l_output_dispute_code_tbl
4518 , l_output_dispute_bill_to_tbl
4519 , l_output_dispute_order_tbl
4520 , l_output_dispute_order_date_tbl
4521 , l_output_dispute_item_tbl;
4522 */
4523 CLOSE csr_out_dispute_pre_proc;
4524
4525 FOR i_output_idx IN 1..l_output_dispute_line_tbl.COUNT LOOP
4526 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' '
4527 ||RPAD(l_output_dispute_line_tbl(i_output_idx).id, 10, ' ')
4528 ||RPAD(l_output_dispute_line_tbl(i_output_idx).dispute_code, 33, ' ')
4529 ||RPAD(l_output_dispute_line_tbl(i_output_idx).error_message, 34, ' ')
4530 ||RPAD(l_output_dispute_line_tbl(i_output_idx).column_name, 21, ' ')
4531 ||RPAD(l_output_dispute_line_tbl(i_output_idx).column_value, 15, ' ')
4532 );
4533 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
4534 END LOOP;
4535 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
4536
4537
4538 -- Bug 14194884 - TPA In Draft Mode ER : nepanda -- this if condition needs to be moved here
4539 IF l_run_mode <> 'DRAFT' THEN
4540
4541 -- [BEGIN OF BUG 4233341 FIXING]
4542 -- delink all the new/processed/disputed lines
4543 UPDATE ozf_resale_lines_int_all
4544 SET resale_batch_id = null
4545 , request_id = null
4546 WHERE resale_batch_id = p_resale_batch_id
4547 AND status_code IN ('NEW', 'OPEN', 'DISPUTED'); -- 'PROCESSED'
4548
4549 OPEN csr_valid_line_count(p_resale_batch_id);
4550 FETCH csr_valid_line_count INTO l_valid_line_count;
4551 CLOSE csr_valid_line_count;
4552
4553 IF l_valid_line_count > 0 THEN
4554 -- close this batch
4555 UPDATE ozf_resale_batches_all
4556 SET status_code = l_batch_status
4557 , batch_count = l_valid_line_count
4558 WHERE resale_batch_id = p_resale_batch_id;
4559
4560 OPEN csr_get_batch_number(p_resale_batch_id);
4561 FETCH csr_get_batch_number INTO l_batch_number;
4562 CLOSE csr_get_batch_number;
4563
4564 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Batch Successfully Created and Closed:');
4565 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
4566 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Batch Number: '||l_batch_number);
4567 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Successfully Processed: '||l_valid_line_count);
4568 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
4569
4570 ELSE
4571 DELETE FROM ozf_resale_batches_all
4572 WHERE resale_batch_id = p_resale_batch_id;
4573 END IF;
4574 -- [END OF BUG 4233341 FIXING]
4575 END IF; -- Bug 14194884 - TPA In Draft Mode ER
4576
4577 -- Debug Message
4578 IF OZF_DEBUG_HIGH_ON THEN
4579 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': end');
4580 END IF;
4581 --Standard call to get message count and if count=1, get the message
4582 FND_MSG_PUB.Count_And_Get (
4583 p_encoded => FND_API.G_FALSE,
4584 p_count => x_msg_count,
4585 p_data => x_msg_data
4586 );
4587
4588 EXCEPTION
4589 WHEN FND_API.G_EXC_ERROR THEN
4590 ozf_utility_pvt.write_conc_log('ERROR in Process_Order');
4591 x_return_status := FND_API.G_RET_STS_ERROR;
4592 -- Standard call to get message count and if count=1, get the message
4593 FND_MSG_PUB.Count_And_Get (
4594 p_encoded => FND_API.G_FALSE,
4595 p_count => x_msg_count,
4596 p_data => x_msg_data
4597 );
4598 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4599 ozf_utility_pvt.write_conc_log('UNEXP ERROR in Process_Order');
4600 --ROLLBACK TO Process_Order;
4601 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4602
4603 -- Standard call to get message count and if count=1, get the message
4604 FND_MSG_PUB.Count_And_Get (
4605 p_encoded => FND_API.G_FALSE,
4606 p_count => x_msg_count,
4607 p_data => x_msg_data
4608 );
4609 WHEN OTHERS THEN
4610 ozf_utility_pvt.write_conc_log('OTHER ERROR in Process_Order ' || SQLERRM);
4611 --ROLLBACK TO Process_Order;
4612 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4613
4614 -- Standard call to get message count and if count=1, get the message
4615 FND_MSG_PUB.Count_And_Get (
4616 p_encoded => FND_API.G_FALSE,
4617 p_count => x_msg_count,
4618 p_data => x_msg_data
4619 );
4620 END Process_Order;
4621
4622 ---------------------------------------------------------------------
4623 -- PROCEDURE
4624 -- Process_TP_ACCRUAL
4625 --
4626 -- PURPOSE
4627 -- This function is for backword compatable. It is called by the concurrent program.
4628 --
4629 --
4630 -- PARAMETERS
4631 --
4632 --
4633 -- NOTES
4634 --
4635 -- HISTORY
4636 -- SEP-02-2008 ateotia bug # 7375849 fixed. FP:11510-R12 7369835
4637 -- THIRD PARTY ACCRUAL FROM INTERFACE TABLE FINSIHES WITH ERROR
4638 ---------------------------------------------------------------------
4639 PROCEDURE Process_TP_ACCRUAL (
4640 p_api_version IN NUMBER
4641 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
4642 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
4643 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
4644 ,p_data_source_code IN VARCHAR2 := NULL
4645 ,p_run_mode IN VARCHAR2 -- Bug 14194884 - TPA In Draft Mode ER
4646 ,x_return_status OUT NOCOPY VARCHAR2
4647 ,x_msg_data OUT NOCOPY VARCHAR2
4648 ,x_msg_count OUT NOCOPY NUMBER
4649 )
4650 IS
4651 l_api_name CONSTANT VARCHAR2(30) := 'Process_TP_ACCRUAL';
4652 l_api_version CONSTANT NUMBER := 1.0;
4653 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
4654 --
4655 l_return_status VARCHAR2(30);
4656 l_msg_data VARCHAR2(2000);
4657 l_msg_count NUMBER;
4658 l_partner_party_id NUMBER;
4659 l_direct_order_flag VARCHAR2(1);
4660
4661 /*
4662 CURSOR batch_set_csr(p_data_source_code in VARCHAR2,
4663 p_start_date in date,
4664 p_END_date in date) IS
4665 SELECT resale_batch_id
4666 FROM ozf_resale_batches
4667 WHERE data_source_code = p_data_source_code;
4668 */
4669
4670 TYPE batch_set_tbl_type is TABLE OF NUMBER INDEX BY binary_integer;
4671 l_batch_tbl batch_set_tbl_type;
4672
4673 i NUMBER:=1;
4674
4675 l_org_id NUMBER := MO_GLOBAL.get_current_org_id(); -- nepanda : Fix for bug # 15900683
4676
4677 CURSOR account_id_csr (p_id NUMBER)IS
4678 SELECT distinct sold_from_cust_account_id, org_id, currency_code
4679 FROM ozf_resale_lines_int
4680 WHERE resale_batch_id IS NULL
4681 AND request_id = p_id
4682 AND org_id = l_org_id; -- nepanda : Fix for bug # 15900683
4683
4684 l_sold_from_cust_id_tbl OZF_RESALE_COMMON_PVT.number_tbl_type;
4685
4686 -- bug # 7375849 fixed by ateotia (+)
4687 --l_sold_from_cust_name_tbl OZF_RESALE_COMMON_PVT.varchar_tbl_type;
4688 TYPE varchar_tbl_type IS TABLE OF VARCHAR2(360) INDEX BY BINARY_INTEGER;
4689 l_sold_from_cust_name_tbl varchar_tbl_type;
4690 -- bug # 7375849 fixed by ateotia (-)
4691
4692 l_org_id_tbl OZF_RESALE_COMMON_PVT.number_tbl_type;
4693 l_currency_code_tbl OZF_RESALE_COMMON_PVT.varchar_tbl_type;
4694
4695 CURSOR party_id_csr(p_id number)IS
4696 SELECT hca.party_id
4697 -- bug # 7375849 fixed by ateotia (+)
4698 --, substr(hp.party_name, 1,30)
4699 , hp.party_name
4700 -- bug # 7375849 fixed by ateotia (-)
4701 FROM hz_cust_accounts hca
4702 , hz_parties hp
4703 WHERE hca.cust_account_id = p_id
4704 AND hca.party_id = hp.party_id;
4705
4706 l_party_id number;
4707 l_party_name varchar2(360);
4708
4709 l_obj_number NUMBER := 1.0;
4710
4711 CURSOR resale_batch_id_csr IS
4712 SELECT ozf_resale_batches_all_s.nextval
4713 FROM dual;
4714 l_resale_batch_id NUMBER;
4715
4716 CURSOR resale_batch_number_csr IS
4717 SELECT to_char(ozf_resale_batch_number_s.nextval)
4718 FROM dual;
4719 l_resale_batch_number VARCHAR2(30);
4720
4721 CURSOR line_info_csr(p_id NUMBER,
4722 p_org_id NUMBER,
4723 p_currency_code VARCHAR2) IS
4724 SELECT orli.created_from
4725 , orli.data_source_code
4726 , orli.sold_from_cust_account_id
4727 , orli.sold_from_site_id
4728 , orli.sold_from_contact_party_id
4729 , orli.sold_from_contact_name
4730 , orli.sold_from_email
4731 , orli.sold_from_phone
4732 , orli.sold_from_fax
4733 ,orli.currency_code
4734 FROM ozf_resale_lines_int orli
4735 WHERE orli.resale_batch_id IS NULL
4736 AND orli.sold_from_cust_account_id = p_id
4737 AND orli.request_id = G_CONC_REQUEST_ID
4738 AND orli.org_id = p_org_id
4739 AND orli.currency_code = p_currency_code
4740 AND rownum = 1;
4741
4742 l_created_from VARCHAR2(30);
4743 l_data_source_code VARCHAR2(30);
4744 l_sold_from_cust_account_id NUMBER;
4745 l_sold_from_site_id NUMBER;
4746 l_sold_from_contact_party_id NUMBER;
4747 l_sold_from_contact_name VARCHAR2(240);
4748 l_sold_from_email VARCHAR2(240);
4749 l_sold_from_phone VARCHAR2(240);
4750 l_sold_from_fax VARCHAR2(240);
4751 l_currency_code VARCHAR2(30);
4752
4753 CURSOR start_end_date_csr( p_account_id NUMBER,
4754 p_org_id NUMBER,
4755 p_currency_code VARCHAR2) IS
4756 SELECT MIN(date_ordered), MAX(date_ordered)
4757 FROM ozf_resale_lines_int_all
4758 WHERE sold_from_cust_account_id = p_account_id
4759 AND request_id = FND_GLOBAL.CONC_REQUEST_ID
4760 AND org_id = p_org_id
4761 AND currency_code = p_currency_code;
4762
4763 l_start_date date;
4764 l_end_date date;
4765
4766 -- Bug 14194884 - TPA In Draft Mode ER
4767 l_run_mode VARCHAR2(10) := p_run_mode ;
4768 l_draft_run_id NUMBER;
4769
4770 -- TPA iN Draft Mode - start
4771 -- Fix for Bug 14584673
4772 /*CURSOR csr_resale_lines_int_tmp_dtls IS
4773 SELECT resale_line_int_id FROM OZF_RESALE_LINES_INT_ALL_TEMP ;
4774 l_resale_line_int_id_tbl OZF_RESALE_COMMON_PVT.number_tbl_type; */
4775
4776 l_status VARCHAR2(5);
4777 l_industry VARCHAR2(5);
4778 l_schema VARCHAR2(30);
4779 l_return BOOLEAN;
4780
4781 CURSOR csr_resale_log_details IS
4782 SELECT
4783 OZF_RESALE_DRAFT_LOG_S.NEXTVAL RESALE_DRAFT_LOG_ID
4784 ,logs.resale_id RESALE_ID
4785 ,l_draft_run_id DRAFT_RUN_ID
4786 ,logs.resale_id_type RESALE_ID_TYPE
4787 ,logs.error_code ERROR_CODE
4788 ,logs.error_message ERROR_MESSAGE
4789 ,logs.column_name COLUMN_NAME
4790 ,logs.column_value COLUMN_VALUE
4791 ,logs.org_id ORG_ID
4792 ,SYSDATE CREATION_DATE
4793 ,NVL (fnd_global.user_id, -1) CREATED_BY
4794 ,SYSDATE LAST_UPDATE_DATE
4795 ,NVL (fnd_global.user_id, -1) LAST_UPDATED_BY
4796 ,NVL (fnd_global.conc_login_id, -1) LAST_UPDATE_LOGIN
4797 ,OZF_TP_ACCRUAL_PVT.G_CONC_REQUEST_ID REQUEST_ID
4798 ,fnd_global.prog_appl_id PROGRAM_APPLICATION_ID
4799 ,fnd_global.conc_program_id PROGRAM_ID
4800 ,SYSDATE PROGRAM_UPDATE_DATE
4801 FROM ozf_resale_logs_all logs, ozf_resale_lines_int_draft_all intDraft -- Fix for Bug 14584673
4802 WHERE logs.resale_id = intDraft.resale_line_int_id
4803 AND intDraft.draft_run_id = l_draft_run_id
4804 AND intDraft.org_id = l_org_id; -- nepanda : Fix for bug # 15900683
4805
4806 TYPE l_resale_logs_tbl_type IS TABLE OF csr_resale_log_details%ROWTYPE;
4807 l_resale_logs_tbl l_resale_logs_tbl_type;
4808
4809 -- nepanda : Fix for bug # 15900683 : cursor to find out number of lines being fetched for an org id
4810 CURSOR csr_processed_lines_count IS
4811 SELECT COUNT(*) FROM ozf_resale_lines_int_all
4812 WHERE REQUEST_ID = G_CONC_REQUEST_ID
4813 AND ORG_ID = l_org_id ;
4814
4815 l_processed_lines_count NUMBER;
4816 -- TPA iN Draft Mode - end
4817
4818 BEGIN
4819 -- Standard BEGIN of API savepoint
4820 SAVEPOINT Process_TP_ACCRUAL;
4821
4822 -- new code - TPA iN Draft Mode
4823 l_return := fnd_installation.get_app_info('OZF', l_status, l_industry, l_schema);
4824
4825 -- Standard call to check for call compatibility.
4826 IF NOT FND_API.Compatible_API_Call (
4827 l_api_version,
4828 p_api_version,
4829 l_api_name,
4830 G_PKG_NAME)
4831 THEN
4832 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4833 END IF;
4834
4835 --Initialize message list if p_init_msg_list is TRUE.
4836 IF FND_API.To_Boolean (p_init_msg_list) THEN
4837 FND_MSG_PUB.initialize;
4838 END IF;
4839
4840 -- Debug Message
4841 IF OZF_DEBUG_HIGH_ON THEN
4842 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
4843 END IF;
4844
4845 -- Initialize API return status to sucess
4846 x_return_status := FND_API.G_RET_STS_SUCCESS;
4847
4848
4849 /*
4850 IF p_data_source_code is NULL THEN
4851 ozf_utility_pvt.error_message('OZF_RESALE_TP_SOURCE_NULL');
4852 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4853 END IF;
4854 */
4855
4856 -- Mark all the records that will be processed.
4857 IF p_data_source_code is null OR
4858 p_data_source_code = 'ALL' THEN
4859
4860 IF p_data_source_code is null THEN
4861 IF OZF_DEBUG_LOW_ON THEN
4862 ozf_utility_PVT.debug_message('source code is null, id:' || FND_GLOBAL.CONC_REQUEST_ID );
4863 END IF;
4864 ELSE
4865 IF OZF_DEBUG_LOW_ON THEN
4866 ozf_utility_PVT.debug_message('source code is '|| p_data_source_code||', id:' || FND_GLOBAL.CONC_REQUEST_ID );
4867 END IF;
4868 END IF;
4869
4870 UPDATE ozf_resale_lines_int_all
4871 SET request_id = G_CONC_REQUEST_ID
4872 , dispute_code = null
4873 , program_application_id = FND_GLOBAL.PROG_APPL_ID
4874 , program_update_date = SYSDATE
4875 , program_id = FND_GLOBAL.CONC_PROGRAM_ID
4876 WHERE resale_batch_id IS NULL
4877 AND request_id IS NULL
4878 AND org_id = l_org_id; -- nepanda : Fix for bug # 15900683
4879
4880 ELSE
4881 IF OZF_DEBUG_LOW_ON THEN
4882 ozf_utility_PVT.debug_message('source code is '|| p_data_source_code||', id:' || FND_GLOBAL.CONC_REQUEST_ID );
4883 END IF;
4884
4885 UPDATE ozf_resale_lines_int_all
4886 SET request_id = G_CONC_REQUEST_ID
4887 , dispute_code = null
4888 , program_application_id = FND_GLOBAL.PROG_APPL_ID
4889 , program_update_date = SYSDATE
4890 , program_id = FND_GLOBAL.CONC_PROGRAM_ID
4891 WHERE resale_batch_id IS NULL
4892 AND data_source_code = p_data_source_code
4893 AND request_id IS NULL
4894 AND org_id = l_org_id; -- nepanda : Fix for bug # 15900683
4895 END IF;
4896
4897 DELETE FROM ozf_resale_logs_all
4898 WHERE resale_id IN (SELECT resale_line_int_id
4899 FROM ozf_resale_lines_int
4900 WHERE request_id = G_CONC_REQUEST_ID
4901 AND org_id = l_org_id ) -- nepanda : Fix for bug # 15900683
4902 AND resale_id_type = 'IFACE';
4903
4904
4905 -- [BUG 4233341 FIXING: Add program output file]
4906 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Request Id : '||G_CONC_REQUEST_ID);
4907 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Operating Unit : '||l_org_id);
4908 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Data Source Code : '||p_data_source_code);
4909 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Run Mode : '||l_run_mode);
4910
4911 -- Bug 14194884 - TPA In Draft Mode ER : Getting the Draft Run Id from the sequence. Draft Run Id will be incremented everytime TPA is run in DRAFT mode.
4912 IF l_run_mode = 'DRAFT' THEN
4913 SELECT OZF_DRAFT_RUN_S.nextval INTO l_draft_run_id FROM DUAL;
4914 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Draft Run Id : '|| l_draft_run_id);
4915 END IF;
4916
4917 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '*------------------------------------------------------------------------------------------------------*');
4918
4919 -- list of partner_party_id based on the sold_from_cust_account_id
4920 --Add org_id, currency_code
4921 OPEN account_id_csr(G_CONC_REQUEST_ID);
4922 FETCH account_id_csr BULK COLLECT INTO l_sold_from_cust_id_tbl, l_org_id_tbl, l_currency_code_tbl;
4923 CLOSE account_id_csr;
4924
4925 IF l_sold_from_cust_id_tbl.exists(1) THEN
4926 FOR j in 1..l_sold_from_cust_id_tbl.LAST LOOP
4927
4928 l_party_id := NULL;
4929 l_party_name := NULL;
4930
4931 OPEN party_id_csr (l_sold_from_cust_id_tbl(j));
4932 FETCH party_id_csr into l_party_id, l_party_name;
4933 CLOSE party_id_csr;
4934
4935 --create a batch header with resale_batch_id
4936 OPEN resale_batch_id_csr;
4937 FETCH resale_batch_id_csr into l_resale_batch_id;
4938 CLOSE resale_batch_id_csr;
4939
4940 OPEN resale_batch_number_csr;
4941 FETCH resale_batch_number_csr into l_resale_batch_number;
4942 CLOSE resale_batch_number_csr;
4943
4944 -- get one line
4945 OPEN line_info_csr(l_sold_from_cust_id_tbl(j),
4946 l_org_id_tbl(j),
4947 l_currency_code_tbl(j));
4948 FETCH line_info_csr INTO l_created_from,
4949 l_data_source_code,
4950 l_sold_from_cust_account_id,
4951 l_sold_from_site_id,
4952 l_sold_from_contact_party_id,
4953 l_sold_from_contact_name,
4954 l_sold_from_email,
4955 l_sold_from_phone,
4956 l_sold_from_fax,
4957 l_currency_code;
4958 CLOSE line_info_csr;
4959
4960 OPEN start_end_date_csr(l_sold_from_cust_id_tbl(j),
4961 l_org_id_tbl(j),
4962 l_currency_code_tbl(j));
4963 FETCH start_end_date_csr into l_start_date, l_end_date;
4964 CLOSE start_end_date_csr;
4965
4966 /*For Bug#9447673 SSD IDSM ER(+)
4967 Checking the profile of partner party and if it same
4968 as that of the party uploading the batch then the batch is considered
4969 as the direct batch. i.e., setting the direct_order_flag as 'Y'
4970 */
4971 l_partner_party_id := FND_PROFILE.VALUE('OZF_IDSM_ORDER_SRC_PARTY_ID');
4972
4973 IF l_party_id = l_partner_party_id THEN
4974 l_direct_order_flag := 'Y';
4975 END IF;
4976 -- For Bug#9447673 SSD IDSM ER(-)
4977
4978 OZF_RESALE_BATCHES_PKG.Insert_Row(
4979 px_resale_batch_id => l_resale_batch_id,
4980 px_object_version_number => l_obj_number,
4981 p_last_update_date => SYSdate,
4982 p_last_updated_by => NVL(FND_GLOBAL.user_id,-1),
4983 p_creation_date => SYSdate,
4984 p_request_id => G_CONC_REQUEST_ID,
4985 p_created_by => NVL(FND_GLOBAL.user_id,-1),
4986 p_last_update_login => NVL(FND_GLOBAL.conc_login_id,-1),
4987 p_program_application_id => FND_GLOBAL.PROG_APPL_ID,
4988 p_program_update_date => SYSdate,
4989 p_program_id => FND_GLOBAL.CONC_PROGRAM_ID,
4990 p_created_from => l_created_from,
4991 p_batch_number => l_resale_batch_number,
4992 p_batch_type => OZF_RESALE_COMMON_PVT.G_TP_ACCRUAL,
4993 p_batch_count => NULL,
4994 p_year => NULL,
4995 p_month => NULL,
4996 p_report_date => trunc(sysdate),
4997 p_report_start_date => trunc(l_start_date),
4998 p_report_end_date => trunc(l_end_date),
4999 p_status_code => OZF_RESALE_COMMON_PVT.G_BATCH_NEW,
5000 p_data_source_code => l_data_source_code,
5001 p_reference_type => NULL,
5002 p_reference_number => NULL,
5003 p_comments => NULL,
5004 p_partner_claim_number => NULL,
5005 p_transaction_purpose_code => NULL,
5006 p_transaction_type_code => NULL,
5007 p_partner_type => NULL,
5008 p_partner_id => NULL,
5009 p_partner_party_id => l_party_id,
5010 p_partner_cust_account_id => l_sold_from_cust_id_tbl(j) ,
5011 p_partner_site_id => l_sold_from_site_id,
5012 p_partner_contact_party_id => l_sold_from_contact_party_id ,
5013 p_partner_contact_name => l_sold_from_contact_name,
5014 p_partner_email => l_sold_from_email,
5015 p_partner_phone => l_sold_from_phone,
5016 p_partner_fax => l_sold_from_fax,
5017 p_header_tolerance_operand => NULL,
5018 p_header_tolerance_calc_code => NULL,
5019 p_line_tolerance_operand => NULL,
5020 p_line_tolerance_calc_code => NULL,
5021 p_currency_code => l_currency_code_tbl(j),
5022 p_claimed_amount => NULL,
5023 p_allowed_amount => NULL,
5024 p_paid_amount => NULL,
5025 p_disputed_amount => NULL,
5026 p_accepted_amount => NULL,
5027 p_lines_invalid => NULL,
5028 p_lines_w_tolerance => NULL,
5029 p_lines_disputed => NULL,
5030 p_batch_set_id_code => NULL,
5031 p_credit_code => NULL,
5032 p_credit_advice_date => NULL,
5033 p_purge_flag => NULL,
5034 p_attribute_category => NULL,
5035 p_attribute1 => NULL,
5036 p_attribute2 => NULL,
5037 p_attribute3 => NULL,
5038 p_attribute4 => NULL,
5039 p_attribute5 => NULL,
5040 p_attribute6 => NULL,
5041 p_attribute7 => NULL,
5042 p_attribute8 => NULL,
5043 p_attribute9 => NULL,
5044 p_attribute10 => NULL,
5045 p_attribute11 => NULL,
5046 p_attribute12 => NULL,
5047 p_attribute13 => NULL,
5048 p_attribute14 => NULL,
5049 p_attribute15 => NULL,
5050 px_org_id => l_org_id_tbl(j),
5051 p_direct_order_flag => l_direct_order_flag); -- For Bug#9447673 SSD IDSM ER
5052
5053 l_batch_tbl(i) := l_resale_batch_id;
5054 l_sold_from_cust_name_tbl(i) := l_party_name;
5055 i := i +1;
5056
5057 UPDATE ozf_resale_lines_int_all orli
5058 SET resale_batch_id = l_resale_batch_id
5059 WHERE orli.sold_from_cust_account_id = l_sold_from_cust_id_tbl(j)
5060 AND orli.org_id = l_org_id_tbl(j)
5061 AND orli.currency_code = l_currency_code_tbl(j)
5062 AND orli.request_id = G_CONC_REQUEST_ID;
5063 END LOOP;
5064 END IF;
5065
5066 IF l_batch_tbl.EXISTS(1) THEN
5067 FOR i in 1..l_batch_tbl.LAST LOOP
5068 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '* Sold From Customer: '||l_sold_from_cust_name_tbl(i));
5069 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '* Currency Code: '||l_currency_code_tbl(i));
5070 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
5071
5072 Process_order(
5073 p_api_version => 1
5074 ,p_init_msg_list => FND_API.G_FALSE
5075 ,p_commit => FND_API.G_FALSE
5076 ,p_validation_level=> FND_API.G_VALID_LEVEL_FULL
5077 ,p_resale_batch_id => l_batch_tbl(i)
5078 ,p_run_mode => l_run_mode
5079 ,p_draft_run_id => l_draft_run_id
5080 ,x_return_status => l_return_status
5081 ,x_msg_data => l_msg_data
5082 ,x_msg_count => l_msg_count
5083 );
5084 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5085 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5086 END IF;
5087 END LOOP;
5088 END IF; -- END if l_batch_tbl.EXISTS
5089
5090 -- Bug 14194884 - TPA In Draft Mode ER : start : Updating OZF_RESALE_LINES_INT_ALL table with the records populated in OZF_RESALE_LINES_INT_ALL_TEMP table except for STATUS_CODE
5091 IF l_run_mode = 'DRAFT' THEN
5092 -- Inserting data into OZF_RESALE_LINES_INT_DRAFT_ALL for the request_id
5093 INSERT INTO OZF_RESALE_LINES_INT_DRAFT_ALL
5094 ( RESALE_LINES_INT_DRAFT_ID,
5095 DRAFT_RUN_ID,
5096 RESALE_LINE_INT_ID,
5097 OBJECT_VERSION_NUMBER,
5098 LAST_UPDATE_DATE,
5099 LAST_UPDATED_BY,
5100 CREATION_DATE,
5101 REQUEST_ID,
5102 CREATED_BY,
5103 CREATED_FROM,
5104 LAST_UPDATE_LOGIN,
5105 PROGRAM_APPLICATION_ID,
5106 PROGRAM_UPDATE_DATE,
5107 PROGRAM_ID,
5108 STATUS_CODE,
5109 RESALE_TRANSFER_TYPE,
5110 PRODUCT_TRANSFER_MOVEMENT_TYPE,
5111 PRODUCT_TRANSFER_DATE,
5112 TRACING_FLAG,
5113 SHIP_FROM_CUST_ACCOUNT_ID,
5114 SHIP_FROM_SITE_ID,
5115 SHIP_FROM_PARTY_NAME,
5116 SHIP_FROM_LOCATION,
5117 SHIP_FROM_ADDRESS,
5118 SHIP_FROM_CITY,
5119 SHIP_FROM_STATE,
5120 SHIP_FROM_POSTAL_CODE,
5121 SHIP_FROM_COUNTRY,
5122 SHIP_FROM_CONTACT_PARTY_ID,
5123 SHIP_FROM_CONTACT_NAME,
5124 SHIP_FROM_EMAIL,
5125 SHIP_FROM_FAX,
5126 SHIP_FROM_PHONE,
5127 SOLD_FROM_CUST_ACCOUNT_ID,
5128 SOLD_FROM_SITE_ID,
5129 SOLD_FROM_PARTY_NAME,
5130 SOLD_FROM_LOCATION,
5131 SOLD_FROM_ADDRESS,
5132 SOLD_FROM_CITY,
5133 SOLD_FROM_STATE,
5134 SOLD_FROM_POSTAL_CODE,
5135 SOLD_FROM_COUNTRY,
5136 SOLD_FROM_CONTACT_PARTY_ID,
5137 SOLD_FROM_CONTACT_NAME,
5138 SOLD_FROM_EMAIL,
5139 SOLD_FROM_PHONE,
5140 SOLD_FROM_FAX,
5141 BILL_TO_CUST_ACCOUNT_ID,
5142 BILL_TO_SITE_USE_ID,
5143 BILL_TO_PARTY_ID,
5144 BILL_TO_PARTY_SITE_ID,
5145 BILL_TO_PARTY_NAME,
5146 BILL_TO_DUNS_NUMBER,
5147 BILL_TO_LOCATION,
5148 BILL_TO_ADDRESS,
5149 BILL_TO_CITY,
5150 BILL_TO_STATE,
5151 BILL_TO_POSTAL_CODE,
5152 BILL_TO_COUNTRY,
5153 BILL_TO_CONTACT_PARTY_ID,
5154 BILL_TO_CONTACT_NAME,
5155 BILL_TO_EMAIL,
5156 BILL_TO_PHONE,
5157 BILL_TO_FAX,
5158 SHIP_TO_CUST_ACCOUNT_ID,
5159 SHIP_TO_SITE_USE_ID,
5160 SHIP_TO_PARTY_ID,
5161 SHIP_TO_PARTY_SITE_ID,
5162 SHIP_TO_PARTY_NAME,
5163 SHIP_TO_DUNS_NUMBER,
5164 SHIP_TO_LOCATION,
5165 SHIP_TO_ADDRESS,
5166 SHIP_TO_CITY,
5167 SHIP_TO_COUNTRY,
5168 SHIP_TO_POSTAL_CODE,
5169 SHIP_TO_STATE,
5170 SHIP_TO_CONTACT_PARTY_ID,
5171 SHIP_TO_CONTACT_NAME,
5172 SHIP_TO_EMAIL,
5173 SHIP_TO_PHONE,
5174 SHIP_TO_FAX,
5175 END_CUST_PARTY_ID,
5176 END_CUST_SITE_USE_ID,
5177 END_CUST_SITE_USE_CODE,
5178 END_CUST_PARTY_SITE_ID,
5179 END_CUST_PARTY_NAME,
5180 END_CUST_LOCATION,
5181 END_CUST_ADDRESS,
5182 END_CUST_CITY,
5183 END_CUST_STATE,
5184 END_CUST_POSTAL_CODE,
5185 END_CUST_COUNTRY,
5186 END_CUST_CONTACT_PARTY_ID,
5187 END_CUST_CONTACT_NAME,
5188 END_CUST_EMAIL,
5189 END_CUST_PHONE,
5190 END_CUST_FAX,
5191 DIRECT_CUSTOMER_FLAG,
5192 ORDER_TYPE_ID,
5193 ORDER_TYPE,
5194 ORDER_CATEGORY,
5195 AGREEMENT_TYPE,
5196 AGREEMENT_ID,
5197 AGREEMENT_NAME,
5198 AGREEMENT_PRICE,
5199 AGREEMENT_UOM_CODE,
5200 CORRECTED_AGREEMENT_ID,
5201 CORRECTED_AGREEMENT_NAME,
5202 PRICE_LIST_ID,
5203 PRICE_LIST_NAME,
5204 ORIG_SYSTEM_REFERENCE,
5205 ORIG_SYSTEM_LINE_REFERENCE,
5206 ORIG_SYSTEM_CURRENCY_CODE,
5207 ORIG_SYSTEM_SELLING_PRICE,
5208 ORIG_SYSTEM_QUANTITY,
5209 ORIG_SYSTEM_UOM,
5210 ORIG_SYSTEM_PURCHASE_UOM,
5211 ORIG_SYSTEM_PURCHASE_CURR,
5212 ORIG_SYSTEM_PURCHASE_PRICE,
5213 ORIG_SYSTEM_PURCHASE_QUANTITY,
5214 ORIG_SYSTEM_AGREEMENT_UOM,
5215 ORIG_SYSTEM_AGREEMENT_NAME,
5216 ORIG_SYSTEM_AGREEMENT_TYPE,
5217 ORIG_SYSTEM_AGREEMENT_STATUS,
5218 ORIG_SYSTEM_AGREEMENT_CURR,
5219 ORIG_SYSTEM_AGREEMENT_PRICE,
5220 ORIG_SYSTEM_AGREEMENT_QUANTITY,
5221 ORIG_SYSTEM_ITEM_NUMBER,
5222 CURRENCY_CODE,
5223 EXCHANGE_RATE,
5224 EXCHANGE_RATE_TYPE,
5225 EXCHANGE_RATE_DATE,
5226 PO_NUMBER,
5227 PO_RELEASE_NUMBER,
5228 PO_TYPE,
5229 INVOICE_NUMBER,
5230 DATE_INVOICED,
5231 ORDER_NUMBER,
5232 DATE_ORDERED,
5233 DATE_SHIPPED,
5234 CLAIMED_AMOUNT,
5235 ALLOWED_AMOUNT,
5236 TOTAL_ALLOWED_AMOUNT,
5237 ACCEPTED_AMOUNT,
5238 TOTAL_ACCEPTED_AMOUNT,
5239 LINE_TOLERANCE_AMOUNT,
5240 TOLERANCE_FLAG,
5241 TOTAL_CLAIMED_AMOUNT,
5242 PURCHASE_PRICE,
5243 PURCHASE_UOM_CODE,
5244 ACCTD_PURCHASE_PRICE,
5245 SELLING_PRICE,
5246 ACCTD_SELLING_PRICE,
5247 UOM_CODE,
5248 QUANTITY,
5249 CALCULATED_PRICE,
5250 ACCTD_CALCULATED_PRICE,
5251 CALCULATED_AMOUNT,
5252 CREDIT_CODE,
5253 CREDIT_ADVICE_DATE,
5254 UPC_CODE,
5255 INVENTORY_ITEM_ID,
5256 ITEM_NUMBER,
5257 ITEM_DESCRIPTION,
5258 INVENTORY_ITEM_SEGMENT1,
5259 INVENTORY_ITEM_SEGMENT2,
5260 INVENTORY_ITEM_SEGMENT3,
5261 INVENTORY_ITEM_SEGMENT4,
5262 INVENTORY_ITEM_SEGMENT5,
5263 INVENTORY_ITEM_SEGMENT6,
5264 INVENTORY_ITEM_SEGMENT7,
5265 INVENTORY_ITEM_SEGMENT8,
5266 INVENTORY_ITEM_SEGMENT9,
5267 INVENTORY_ITEM_SEGMENT10,
5268 INVENTORY_ITEM_SEGMENT11,
5269 INVENTORY_ITEM_SEGMENT12,
5270 INVENTORY_ITEM_SEGMENT13,
5271 INVENTORY_ITEM_SEGMENT14,
5272 INVENTORY_ITEM_SEGMENT15,
5273 INVENTORY_ITEM_SEGMENT16,
5274 INVENTORY_ITEM_SEGMENT17,
5275 INVENTORY_ITEM_SEGMENT18,
5276 INVENTORY_ITEM_SEGMENT19,
5277 INVENTORY_ITEM_SEGMENT20,
5278 PRODUCT_CATEGORY_ID,
5279 CATEGORY_NAME,
5280 DUPLICATED_LINE_ID,
5281 DUPLICATED_ADJUSTMENT_ID,
5282 RESPONSE_TYPE,
5283 RESPONSE_CODE,
5284 REJECT_REASON_CODE,
5285 FOLLOWUP_ACTION_CODE,
5286 NET_ADJUSTED_AMOUNT,
5287 DISPUTE_CODE,
5288 DATA_SOURCE_CODE,
5289 HEADER_ATTRIBUTE_CATEGORY,
5290 HEADER_ATTRIBUTE1,
5291 HEADER_ATTRIBUTE2,
5292 HEADER_ATTRIBUTE3,
5293 HEADER_ATTRIBUTE4,
5294 HEADER_ATTRIBUTE5,
5295 HEADER_ATTRIBUTE6,
5296 HEADER_ATTRIBUTE7,
5297 HEADER_ATTRIBUTE8,
5298 HEADER_ATTRIBUTE9,
5299 HEADER_ATTRIBUTE10,
5300 HEADER_ATTRIBUTE11,
5301 HEADER_ATTRIBUTE12,
5302 HEADER_ATTRIBUTE13,
5303 HEADER_ATTRIBUTE14,
5304 HEADER_ATTRIBUTE15,
5305 LINE_ATTRIBUTE_CATEGORY,
5306 LINE_ATTRIBUTE1,
5307 LINE_ATTRIBUTE2,
5308 LINE_ATTRIBUTE3,
5309 LINE_ATTRIBUTE4,
5310 LINE_ATTRIBUTE5,
5311 LINE_ATTRIBUTE6,
5312 LINE_ATTRIBUTE7,
5313 LINE_ATTRIBUTE8,
5314 LINE_ATTRIBUTE9,
5315 LINE_ATTRIBUTE10,
5316 LINE_ATTRIBUTE11,
5317 LINE_ATTRIBUTE12,
5318 LINE_ATTRIBUTE13,
5319 LINE_ATTRIBUTE14,
5320 LINE_ATTRIBUTE15,
5321 ORG_ID,
5322 SECURITY_GROUP_ID,
5323 INVOICE_LINE_NUMBER,
5324 ORDER_LINE_NUMBER,
5325 SUPPLIER_ITEM_COST,
5326 SUPPLIER_ITEM_UOM)
5327 (SELECT OZF_RESALE_LINES_INT_DRAFT_S.NEXTVAL, -- RESALE_LINES_INT_DRAFT_ID
5328 l_draft_run_id, -- DRAFT_RUN_ID
5329 RESALE_LINE_INT_ID, -- RESALE_LINE_INT_ID
5330 OBJECT_VERSION_NUMBER, -- OBJECT_VERSION_NUMBER
5331 LAST_UPDATE_DATE, -- LAST_UPDATE_DATE
5332 LAST_UPDATED_BY, -- LAST_UPDATED_BY
5333 CREATION_DATE, -- CREATION_DATE
5334 REQUEST_ID, -- REQUEST_ID
5335 CREATED_BY, -- CREATED_BY
5336 CREATED_FROM, -- CREATED_FROM
5337 LAST_UPDATE_LOGIN, -- LAST_UPDATE_LOGIN
5338 PROGRAM_APPLICATION_ID, -- PROGRAM_APPLICATION_ID
5339 PROGRAM_UPDATE_DATE, -- PROGRAM_UPDATE_DATE
5340 PROGRAM_ID, -- PROGRAM_ID
5341 STATUS_CODE, -- STATUS_CODE
5342 RESALE_TRANSFER_TYPE, -- RESALE_TRANSFER_TYPE
5343 PRODUCT_TRANSFER_MOVEMENT_TYPE, -- PRODUCT_TRANSFER_MOVEMENT_TYPE
5344 PRODUCT_TRANSFER_DATE, -- PRODUCT_TRANSFER_DATE
5345 TRACING_FLAG, -- TRACING_FLAG
5346 SHIP_FROM_CUST_ACCOUNT_ID, -- SHIP_FROM_CUST_ACCOUNT_ID
5347 SHIP_FROM_SITE_ID, -- SHIP_FROM_SITE_ID
5348 SHIP_FROM_PARTY_NAME, -- SHIP_FROM_PARTY_NAME
5349 SHIP_FROM_LOCATION, -- SHIP_FROM_LOCATION
5350 SHIP_FROM_ADDRESS, -- SHIP_FROM_ADDRESS
5351 SHIP_FROM_CITY, -- SHIP_FROM_CITY
5352 SHIP_FROM_STATE, -- SHIP_FROM_STATE
5353 SHIP_FROM_POSTAL_CODE, -- SHIP_FROM_POSTAL_CODE
5354 SHIP_FROM_COUNTRY, -- SHIP_FROM_COUNTRY
5355 SHIP_FROM_CONTACT_PARTY_ID, -- SHIP_FROM_CONTACT_PARTY_ID
5356 SHIP_FROM_CONTACT_NAME, -- SHIP_FROM_CONTACT_NAME
5357 SHIP_FROM_EMAIL, -- SHIP_FROM_EMAIL
5358 SHIP_FROM_FAX, -- SHIP_FROM_FAX
5359 SHIP_FROM_PHONE, -- SHIP_FROM_PHONE
5360 SOLD_FROM_CUST_ACCOUNT_ID, -- SOLD_FROM_CUST_ACCOUNT_ID
5361 SOLD_FROM_SITE_ID, -- SOLD_FROM_SITE_ID
5362 SOLD_FROM_PARTY_NAME, -- SOLD_FROM_PARTY_NAME
5363 SOLD_FROM_LOCATION, -- SOLD_FROM_LOCATION
5364 SOLD_FROM_ADDRESS, -- SOLD_FROM_ADDRESS
5365 SOLD_FROM_CITY, -- SOLD_FROM_CITY
5366 SOLD_FROM_STATE, -- SOLD_FROM_STATE
5367 SOLD_FROM_POSTAL_CODE, -- SOLD_FROM_POSTAL_CODE
5368 SOLD_FROM_COUNTRY, -- SOLD_FROM_COUNTRY
5369 SOLD_FROM_CONTACT_PARTY_ID, -- SOLD_FROM_CONTACT_PARTY_ID
5370 SOLD_FROM_CONTACT_NAME, -- SOLD_FROM_CONTACT_NAME
5371 SOLD_FROM_EMAIL, -- SOLD_FROM_EMAIL
5372 SOLD_FROM_PHONE, -- SOLD_FROM_PHONE
5373 SOLD_FROM_FAX, -- SOLD_FROM_FAX
5374 BILL_TO_CUST_ACCOUNT_ID, -- BILL_TO_CUST_ACCOUNT_ID
5375 BILL_TO_SITE_USE_ID, -- BILL_TO_SITE_USE_ID
5376 BILL_TO_PARTY_ID, -- BILL_TO_PARTY_ID
5377 BILL_TO_PARTY_SITE_ID, -- BILL_TO_PARTY_SITE_ID
5378 BILL_TO_PARTY_NAME, -- BILL_TO_PARTY_NAME
5379 BILL_TO_DUNS_NUMBER, -- BILL_TO_DUNS_NUMBER
5380 BILL_TO_LOCATION, -- BILL_TO_LOCATION
5381 BILL_TO_ADDRESS, -- BILL_TO_ADDRESS
5382 BILL_TO_CITY, -- BILL_TO_CITY
5383 BILL_TO_STATE, -- BILL_TO_STATE
5384 BILL_TO_POSTAL_CODE, -- BILL_TO_POSTAL_CODE
5385 BILL_TO_COUNTRY, -- BILL_TO_COUNTRY
5386 BILL_TO_CONTACT_PARTY_ID, -- BILL_TO_CONTACT_PARTY_ID
5387 BILL_TO_CONTACT_NAME, -- BILL_TO_CONTACT_NAME
5388 BILL_TO_EMAIL, -- BILL_TO_EMAIL
5389 BILL_TO_PHONE, -- BILL_TO_PHONE
5390 BILL_TO_FAX, -- BILL_TO_FAX
5391 SHIP_TO_CUST_ACCOUNT_ID, -- SHIP_TO_CUST_ACCOUNT_ID
5392 SHIP_TO_SITE_USE_ID, -- SHIP_TO_SITE_USE_ID
5393 SHIP_TO_PARTY_ID, -- SHIP_TO_PARTY_ID
5394 SHIP_TO_PARTY_SITE_ID, -- SHIP_TO_PARTY_SITE_ID
5395 SHIP_TO_PARTY_NAME, -- SHIP_TO_PARTY_NAME
5396 SHIP_TO_DUNS_NUMBER, -- SHIP_TO_DUNS_NUMBER
5397 SHIP_TO_LOCATION, -- SHIP_TO_LOCATION
5398 SHIP_TO_ADDRESS, -- SHIP_TO_ADDRESS
5399 SHIP_TO_CITY, -- SHIP_TO_CITY
5400 SHIP_TO_COUNTRY, -- SHIP_TO_COUNTRY
5401 SHIP_TO_POSTAL_CODE, -- SHIP_TO_POSTAL_CODE
5402 SHIP_TO_STATE, -- SHIP_TO_STATE
5403 SHIP_TO_CONTACT_PARTY_ID, -- SHIP_TO_CONTACT_PARTY_ID
5404 SHIP_TO_CONTACT_NAME, -- SHIP_TO_CONTACT_NAME
5405 SHIP_TO_EMAIL, -- SHIP_TO_EMAIL
5406 SHIP_TO_PHONE, -- SHIP_TO_PHONE
5407 SHIP_TO_FAX, -- SHIP_TO_FAX
5408 END_CUST_PARTY_ID, -- END_CUST_PARTY_ID
5409 END_CUST_SITE_USE_ID, -- END_CUST_SITE_USE_ID
5410 END_CUST_SITE_USE_CODE, -- END_CUST_SITE_USE_CODE
5411 END_CUST_PARTY_SITE_ID, -- END_CUST_PARTY_SITE_ID
5412 END_CUST_PARTY_NAME, -- END_CUST_PARTY_NAME
5413 END_CUST_LOCATION, -- END_CUST_LOCATION
5414 END_CUST_ADDRESS, -- END_CUST_ADDRESS
5415 END_CUST_CITY, -- END_CUST_CITY
5416 END_CUST_STATE, -- END_CUST_STATE
5417 END_CUST_POSTAL_CODE, -- END_CUST_POSTAL_CODE
5418 END_CUST_COUNTRY, -- END_CUST_COUNTRY
5419 END_CUST_CONTACT_PARTY_ID, -- END_CUST_CONTACT_PARTY_ID
5420 END_CUST_CONTACT_NAME, -- END_CUST_CONTACT_NAME
5421 END_CUST_EMAIL, -- END_CUST_EMAIL
5422 END_CUST_PHONE, -- END_CUST_PHONE
5423 END_CUST_FAX, -- END_CUST_FAX
5424 DIRECT_CUSTOMER_FLAG, -- DIRECT_CUSTOMER_FLAG
5425 ORDER_TYPE_ID, -- ORDER_TYPE_ID
5426 ORDER_TYPE, -- ORDER_TYPE
5427 ORDER_CATEGORY, -- ORDER_CATEGORY
5428 AGREEMENT_TYPE, -- AGREEMENT_TYPE
5429 AGREEMENT_ID, -- AGREEMENT_ID
5430 AGREEMENT_NAME, -- AGREEMENT_NAME
5431 AGREEMENT_PRICE, -- AGREEMENT_PRICE
5432 AGREEMENT_UOM_CODE, -- AGREEMENT_UOM_CODE
5433 CORRECTED_AGREEMENT_ID, -- CORRECTED_AGREEMENT_ID
5434 CORRECTED_AGREEMENT_NAME, -- CORRECTED_AGREEMENT_NAME
5435 PRICE_LIST_ID, -- PRICE_LIST_ID
5436 PRICE_LIST_NAME, -- PRICE_LIST_NAME
5437 ORIG_SYSTEM_REFERENCE, -- ORIG_SYSTEM_REFERENCE
5438 ORIG_SYSTEM_LINE_REFERENCE, -- ORIG_SYSTEM_LINE_REFERENCE
5439 ORIG_SYSTEM_CURRENCY_CODE, -- ORIG_SYSTEM_CURRENCY_CODE
5440 ORIG_SYSTEM_SELLING_PRICE, -- ORIG_SYSTEM_SELLING_PRICE
5441 ORIG_SYSTEM_QUANTITY, -- ORIG_SYSTEM_QUANTITY
5442 ORIG_SYSTEM_UOM, -- ORIG_SYSTEM_UOM
5443 ORIG_SYSTEM_PURCHASE_UOM, -- ORIG_SYSTEM_PURCHASE_UOM
5444 ORIG_SYSTEM_PURCHASE_CURR, -- ORIG_SYSTEM_PURCHASE_CURR
5445 ORIG_SYSTEM_PURCHASE_PRICE, -- ORIG_SYSTEM_PURCHASE_PRICE
5446 ORIG_SYSTEM_PURCHASE_QUANTITY, -- ORIG_SYSTEM_PURCHASE_QUANTITY
5447 ORIG_SYSTEM_AGREEMENT_UOM, -- ORIG_SYSTEM_AGREEMENT_UOM
5448 ORIG_SYSTEM_AGREEMENT_NAME, -- ORIG_SYSTEM_AGREEMENT_NAME
5449 ORIG_SYSTEM_AGREEMENT_TYPE, -- ORIG_SYSTEM_AGREEMENT_TYPE
5450 ORIG_SYSTEM_AGREEMENT_STATUS, -- ORIG_SYSTEM_AGREEMENT_STATUS
5451 ORIG_SYSTEM_AGREEMENT_CURR, -- ORIG_SYSTEM_AGREEMENT_CURR
5452 ORIG_SYSTEM_AGREEMENT_PRICE, -- ORIG_SYSTEM_AGREEMENT_PRICE
5453 ORIG_SYSTEM_AGREEMENT_QUANTITY, -- ORIG_SYSTEM_AGREEMENT_QUANTITY
5454 ORIG_SYSTEM_ITEM_NUMBER, -- ORIG_SYSTEM_ITEM_NUMBER
5455 CURRENCY_CODE, -- CURRENCY_CODE
5456 EXCHANGE_RATE, -- EXCHANGE_RATE
5457 EXCHANGE_RATE_TYPE, -- EXCHANGE_RATE_TYPE
5458 EXCHANGE_RATE_DATE, -- EXCHANGE_RATE_DATE
5459 PO_NUMBER, -- PO_NUMBER
5460 PO_RELEASE_NUMBER, -- PO_RELEASE_NUMBER
5461 PO_TYPE, -- PO_TYPE
5462 INVOICE_NUMBER, -- INVOICE_NUMBER
5463 DATE_INVOICED, -- DATE_INVOICED
5464 ORDER_NUMBER, -- ORDER_NUMBER
5465 DATE_ORDERED, -- DATE_ORDERED
5466 DATE_SHIPPED, -- DATE_SHIPPED
5467 CLAIMED_AMOUNT, -- CLAIMED_AMOUNT
5468 ALLOWED_AMOUNT, -- ALLOWED_AMOUNT
5469 TOTAL_ALLOWED_AMOUNT, -- TOTAL_ALLOWED_AMOUNT
5470 ACCEPTED_AMOUNT, -- ACCEPTED_AMOUNT
5471 TOTAL_ACCEPTED_AMOUNT, -- TOTAL_ACCEPTED_AMOUNT
5472 LINE_TOLERANCE_AMOUNT, -- LINE_TOLERANCE_AMOUNT
5473 TOLERANCE_FLAG, -- TOLERANCE_FLAG
5474 TOTAL_CLAIMED_AMOUNT, -- TOTAL_CLAIMED_AMOUNT
5475 PURCHASE_PRICE, -- PURCHASE_PRICE
5476 PURCHASE_UOM_CODE, -- PURCHASE_UOM_CODE
5477 ACCTD_PURCHASE_PRICE, -- ACCTD_PURCHASE_PRICE
5478 SELLING_PRICE, -- SELLING_PRICE
5479 ACCTD_SELLING_PRICE, -- ACCTD_SELLING_PRICE
5480 UOM_CODE, -- UOM_CODE
5481 QUANTITY, -- QUANTITY
5482 CALCULATED_PRICE, -- CALCULATED_PRICE
5483 ACCTD_CALCULATED_PRICE, -- ACCTD_CALCULATED_PRICE
5484 CALCULATED_AMOUNT, -- CALCULATED_AMOUNT
5485 CREDIT_CODE, -- CREDIT_CODE
5486 CREDIT_ADVICE_DATE, -- CREDIT_ADVICE_DATE
5487 UPC_CODE, -- UPC_CODE
5488 INVENTORY_ITEM_ID, -- INVENTORY_ITEM_ID
5489 ITEM_NUMBER, -- ITEM_NUMBER
5490 ITEM_DESCRIPTION, -- ITEM_DESCRIPTION
5491 INVENTORY_ITEM_SEGMENT1, -- INVENTORY_ITEM_SEGMENT1
5492 INVENTORY_ITEM_SEGMENT2, -- INVENTORY_ITEM_SEGMENT2
5493 INVENTORY_ITEM_SEGMENT3, -- INVENTORY_ITEM_SEGMENT3
5494 INVENTORY_ITEM_SEGMENT4, -- INVENTORY_ITEM_SEGMENT4
5495 INVENTORY_ITEM_SEGMENT5, -- INVENTORY_ITEM_SEGMENT5
5496 INVENTORY_ITEM_SEGMENT6, -- INVENTORY_ITEM_SEGMENT6
5497 INVENTORY_ITEM_SEGMENT7, -- INVENTORY_ITEM_SEGMENT7
5498 INVENTORY_ITEM_SEGMENT8, -- INVENTORY_ITEM_SEGMENT8
5499 INVENTORY_ITEM_SEGMENT9, -- INVENTORY_ITEM_SEGMENT9
5500 INVENTORY_ITEM_SEGMENT10, -- INVENTORY_ITEM_SEGMENT10
5501 INVENTORY_ITEM_SEGMENT11, -- INVENTORY_ITEM_SEGMENT11
5502 INVENTORY_ITEM_SEGMENT12, -- INVENTORY_ITEM_SEGMENT12
5503 INVENTORY_ITEM_SEGMENT13, -- INVENTORY_ITEM_SEGMENT13
5504 INVENTORY_ITEM_SEGMENT14, -- INVENTORY_ITEM_SEGMENT14
5505 INVENTORY_ITEM_SEGMENT15, -- INVENTORY_ITEM_SEGMENT15
5506 INVENTORY_ITEM_SEGMENT16, -- INVENTORY_ITEM_SEGMENT16
5507 INVENTORY_ITEM_SEGMENT17, -- INVENTORY_ITEM_SEGMENT17
5508 INVENTORY_ITEM_SEGMENT18, -- INVENTORY_ITEM_SEGMENT18
5509 INVENTORY_ITEM_SEGMENT19, -- INVENTORY_ITEM_SEGMENT19
5510 INVENTORY_ITEM_SEGMENT20, -- INVENTORY_ITEM_SEGMENT20
5511 PRODUCT_CATEGORY_ID, -- PRODUCT_CATEGORY_ID
5512 CATEGORY_NAME, -- CATEGORY_NAME
5513 DUPLICATED_LINE_ID, -- DUPLICATED_LINE_ID
5514 DUPLICATED_ADJUSTMENT_ID, -- DUPLICATED_ADJUSTMENT_ID
5515 RESPONSE_TYPE, -- RESPONSE_TYPE
5516 RESPONSE_CODE, -- RESPONSE_CODE
5517 REJECT_REASON_CODE, -- REJECT_REASON_CODE
5518 FOLLOWUP_ACTION_CODE, -- FOLLOWUP_ACTION_CODE
5519 NET_ADJUSTED_AMOUNT, -- NET_ADJUSTED_AMOUNT
5520 DISPUTE_CODE, -- DISPUTE_CODE
5521 DATA_SOURCE_CODE, -- DATA_SOURCE_CODE
5522 HEADER_ATTRIBUTE_CATEGORY, -- HEADER_ATTRIBUTE_CATEGORY
5523 HEADER_ATTRIBUTE1, -- HEADER_ATTRIBUTE1
5524 HEADER_ATTRIBUTE2, -- HEADER_ATTRIBUTE2
5525 HEADER_ATTRIBUTE3, -- HEADER_ATTRIBUTE3
5526 HEADER_ATTRIBUTE4, -- HEADER_ATTRIBUTE4
5527 HEADER_ATTRIBUTE5, -- HEADER_ATTRIBUTE5
5528 HEADER_ATTRIBUTE6, -- HEADER_ATTRIBUTE6
5529 HEADER_ATTRIBUTE7, -- HEADER_ATTRIBUTE7
5530 HEADER_ATTRIBUTE8, -- HEADER_ATTRIBUTE8
5531 HEADER_ATTRIBUTE9, -- HEADER_ATTRIBUTE9
5532 HEADER_ATTRIBUTE10, -- HEADER_ATTRIBUTE10
5533 HEADER_ATTRIBUTE11, -- HEADER_ATTRIBUTE11
5534 HEADER_ATTRIBUTE12, -- HEADER_ATTRIBUTE12
5535 HEADER_ATTRIBUTE13, -- HEADER_ATTRIBUTE13
5536 HEADER_ATTRIBUTE14, -- HEADER_ATTRIBUTE14
5537 HEADER_ATTRIBUTE15, -- HEADER_ATTRIBUTE15
5538 LINE_ATTRIBUTE_CATEGORY, -- LINE_ATTRIBUTE_CATEGORY
5539 LINE_ATTRIBUTE1, -- LINE_ATTRIBUTE1
5540 LINE_ATTRIBUTE2, -- LINE_ATTRIBUTE2
5541 LINE_ATTRIBUTE3, -- LINE_ATTRIBUTE3
5542 LINE_ATTRIBUTE4, -- LINE_ATTRIBUTE4
5543 LINE_ATTRIBUTE5, -- LINE_ATTRIBUTE5
5544 LINE_ATTRIBUTE6, -- LINE_ATTRIBUTE6
5545 LINE_ATTRIBUTE7, -- LINE_ATTRIBUTE7
5546 LINE_ATTRIBUTE8, -- LINE_ATTRIBUTE8
5547 LINE_ATTRIBUTE9, -- LINE_ATTRIBUTE9
5548 LINE_ATTRIBUTE10, -- LINE_ATTRIBUTE10
5549 LINE_ATTRIBUTE11, -- LINE_ATTRIBUTE11
5550 LINE_ATTRIBUTE12, -- LINE_ATTRIBUTE12
5551 LINE_ATTRIBUTE13, -- LINE_ATTRIBUTE13
5552 LINE_ATTRIBUTE14, -- LINE_ATTRIBUTE14
5553 LINE_ATTRIBUTE15, -- LINE_ATTRIBUTE15
5554 ORG_ID, -- ORG_ID
5555 SECURITY_GROUP_ID, -- SECURITY_GROUP_ID
5556 INVOICE_LINE_NUMBER, -- INVOICE_LINE_NUMBER
5557 ORDER_LINE_NUMBER, -- ORDER_LINE_NUMBER
5558 SUPPLIER_ITEM_COST, -- SUPPLIER_ITEM_COST
5559 SUPPLIER_ITEM_UOM -- SUPPLIER_ITEM_UOM
5560 FROM OZF_RESALE_LINES_INT_ALL
5561 WHERE REQUEST_ID = G_CONC_REQUEST_ID
5562 AND ORG_ID = l_org_id -- nepanda : Fix for bug # 15900683
5563 );
5564
5565
5566 --Delete the data from OZF_RESALE_BATCHES_ALL for the request
5567 DELETE FROM ozf_resale_batches_all
5568 WHERE request_id = G_CONC_REQUEST_ID
5569 AND org_id = l_org_id; -- nepanda : Fix for bug # 15900683
5570
5571 OPEN csr_processed_lines_count;
5572 FETCH csr_processed_lines_count INTO l_processed_lines_count;
5573 CLOSE csr_processed_lines_count;
5574
5575 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Draft Run completed for Run Id : ' || l_draft_run_id || ' And Org Id : ' || l_org_id); -- nepanda : Fix for bug # 15900683
5576 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Number Of Lines Processed : '|| l_processed_lines_count);
5577 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' Please check OZF_FUNDS_UTILIZED_DRAFT_ALL, OZF_RESALE_DRAFT_LOGS_ALL and OZF_RESALE_LINES_INT_DRAFT_ALL tables for accrual details ');
5578 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' ');
5579
5580 -- Fix for Bug 14584673
5581 UPDATE ozf_resale_lines_int_all
5582 SET request_id = null, resale_batch_id = null
5583 WHERE REQUEST_ID = G_CONC_REQUEST_ID
5584 AND ORG_ID = l_org_id ; -- nepanda : Fix for bug # 15900683
5585
5586 --//Populate Draft Logs all table
5587 OPEN csr_resale_log_details;
5588 FETCH csr_resale_log_details BULK COLLECT INTO l_resale_logs_tbl;
5589 CLOSE csr_resale_log_details;
5590
5591 IF l_resale_logs_tbl.EXISTS(1) THEN
5592 $IF DBMS_DB_VERSION.VER_LE_10 $THEN
5593 FORALL i IN NVL(l_resale_logs_tbl.FIRST, 1) .. NVL(l_resale_logs_tbl.LAST, 0)
5594 INSERT INTO (SELECT
5595 RESALE_DRAFT_LOG_ID,
5596 RESALE_ID,
5597 DRAFT_RUN_ID,
5598 RESALE_ID_TYPE,
5599 ERROR_CODE,
5600 ERROR_MESSAGE,
5601 COLUMN_NAME,
5602 COLUMN_VALUE,
5603 ORG_ID,
5604 CREATION_DATE,
5605 CREATED_BY,
5606 LAST_UPDATE_DATE,
5607 LAST_UPDATED_BY,
5608 LAST_UPDATE_LOGIN,
5609 REQUEST_ID,
5610 PROGRAM_APPLICATION_ID,
5611 PROGRAM_ID,
5612 PROGRAM_UPDATE_DATE
5613 FROM OZF_RESALE_DRAFT_LOGS_ALL)
5614 VALUES l_resale_logs_tbl(i);
5615 $ELSE
5616 FORALL i IN NVL(l_resale_logs_tbl.FIRST, 1) .. NVL(l_resale_logs_tbl.LAST, 0)
5617 INSERT INTO OZF_RESALE_DRAFT_LOGS_ALL
5618 ( RESALE_DRAFT_LOG_ID,
5619 RESALE_ID,
5620 DRAFT_RUN_ID,
5621 RESALE_ID_TYPE,
5622 ERROR_CODE,
5623 ERROR_MESSAGE,
5624 COLUMN_NAME,
5625 COLUMN_VALUE,
5626 ORG_ID,
5627 CREATION_DATE,
5628 CREATED_BY,
5629 LAST_UPDATE_DATE,
5630 LAST_UPDATED_BY,
5631 LAST_UPDATE_LOGIN,
5632 REQUEST_ID,
5633 PROGRAM_APPLICATION_ID,
5634 PROGRAM_ID,
5635 PROGRAM_UPDATE_DATE)
5636 VALUES
5637 ( l_resale_logs_tbl(i).resale_draft_log_id,
5638 l_resale_logs_tbl(i).resale_id,
5639 l_resale_logs_tbl(i).draft_run_id,
5640 l_resale_logs_tbl(i).resale_id_type,
5641 l_resale_logs_tbl(i).error_code,
5642 -- nepanda : Fix for bug # 15900683
5643 -- Error message is coming as null from pricing in some error scenarios, will insert '' in case of error_message = null
5644 NVL(l_resale_logs_tbl(i).error_message, ' '),
5645 l_resale_logs_tbl(i).column_name,
5646 l_resale_logs_tbl(i).column_value,
5647 l_resale_logs_tbl(i).org_id,
5648 l_resale_logs_tbl(i).creation_date,
5649 l_resale_logs_tbl(i).created_by,
5650 l_resale_logs_tbl(i).last_update_date,
5651 l_resale_logs_tbl(i).last_updated_by,
5652 l_resale_logs_tbl(i).last_update_login,
5653 l_resale_logs_tbl(i).request_id,
5654 l_resale_logs_tbl(i).program_application_id,
5655 l_resale_logs_tbl(i).program_id,
5656 l_resale_logs_tbl(i).program_update_date
5657 );
5658 $END
5659 END IF;
5660 END IF; -- IF l_run_mode = 'DRAFT' THEN
5661 -- TPA In Draft Mode ER : end
5662
5663 -- Debug Message
5664 IF OZF_DEBUG_HIGH_ON THEN
5665 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
5666 END IF;
5667 --Standard call to get message count and if count=1, get the message
5668 FND_MSG_PUB.Count_And_Get (
5669 p_encoded => FND_API.G_FALSE,
5670 p_count => x_msg_count,
5671 p_data => x_msg_data
5672 );
5673 x_return_status := l_return_status;
5674 EXCEPTION
5675 WHEN FND_API.G_EXC_ERROR THEN
5676 ozf_utility_pvt.write_conc_log('ERROR in Process_TP_ACCRUAL: '|| SQLERRM);
5677 x_return_status := FND_API.G_RET_STS_ERROR;
5678 -- Standard call to get message count and if count=1, get the message
5679 FND_MSG_PUB.Count_And_Get (
5680 p_encoded => FND_API.G_FALSE,
5681 p_count => x_msg_count,
5682 p_data => x_msg_data
5683 );
5684 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5685 ozf_utility_pvt.write_conc_log('UNEXPECTED ERROR in Process_TP_ACCRUAL: '|| SQLERRM);
5686 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5687
5688 -- Standard call to get message count and if count=1, get the message
5689 FND_MSG_PUB.Count_And_Get (
5690 p_encoded => FND_API.G_FALSE,
5691 p_count => x_msg_count,
5692 p_data => x_msg_data
5693 );
5694 WHEN OTHERS THEN
5695 ozf_utility_pvt.write_conc_log('OTHER ERROR in Process_TP_ACCRUAL: '|| SQLERRM);
5696 --ROLLBACK TO Process_TP_ACCRUAL;
5697 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5698
5699 -- Standard call to get message count and if count=1, get the message
5700 FND_MSG_PUB.Count_And_Get (
5701 p_encoded => FND_API.G_FALSE,
5702 p_count => x_msg_count,
5703 p_data => x_msg_data
5704 );
5705 END Process_TP_ACCRUAL;
5706
5707
5708 ---------------------------------------------------------------------
5709 -- PROCEDURE
5710 -- Start_TP_ACCRUAL
5711 --
5712 -- PURPOSE
5713 -- This procedure to initiate concurrent program to process third party accrual.
5714 -- It is to for backword compatibility issue on 11.5.9
5715 --
5716 -- PARAMETERS
5717 --
5718 --
5719 -- NOTES
5720 ---------------------------------------------------------------------
5721 PROCEDURE Start_TP_ACCRUAL (
5722 ERRBUF OUT NOCOPY VARCHAR2,
5723 RETCODE OUT NOCOPY NUMBER,
5724 p_org_id IN NUMBER DEFAULT NULL, -- nepanda : Fix for bug # 15900683
5725 p_data_source_code IN VARCHAR2 := NULL,
5726 p_run_mode IN VARCHAR2 := NULL -- Bug 14194884 - TPA In Draft Mode ER
5727 )
5728 IS
5729 l_api_name CONSTANT VARCHAR2(30) := 'Start_TP_ACCRUAL';
5730 l_api_version CONSTANT NUMBER := 1.0;
5731 l_full_name CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| l_api_name;
5732 --
5733 l_return_status VARCHAR2(30);
5734 l_msg_data VARCHAR2(2000);
5735 l_msg_count NUMBER;
5736
5737 l_budget_data CLOB;
5738 l_offer_data CLOB;
5739 l_item_key VARCHAR2(50);
5740 l_event_name VARCHAR2(80);
5741 l_parameter_list wf_parameter_list_t;
5742
5743 l_run_mode VARCHAR2(10); -- Bug 14194884 - TPA In Draft Mode ER
5744
5745 -- nepanda : Fix for bug # 15900683
5746 CURSOR operating_unit_csr IS
5747 SELECT ou.organization_id org_id
5748 FROM hr_operating_units ou
5749 WHERE mo_global.check_access(ou.organization_id) = 'Y';
5750
5751 m NUMBER := 0;
5752 l_org_id OZF_UTILITY_PVT.operating_units_tbl;
5753 BEGIN
5754
5755 SAVEPOINT START_TP_ACCRUAL;
5756 RETCODE := 0;
5757 IF OZF_DEBUG_HIGH_ON THEN
5758 OZF_UTILITY_PVT.write_conc_log('p_run_mode => '|| p_run_mode);
5759 END IF;
5760
5761 l_run_mode := NVL(p_run_mode, 'FINAL'); -- Bug 14194884 - TPA In Draft Mode ER : Defaulting Draft Run Mode to FINAL
5762
5763 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '*======================================================================================================*');
5764 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Execution Starts On: ' || to_char(sysdate,'MM-DD-YYYY HH24:MI:SS'));
5765 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '*------------------------------------------------------------------------------------------------------*');
5766 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Third Party Accrual Run Mode: ' || p_run_mode);
5767 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '*------------------------------------------------------------------------------------------------------*');
5768
5769
5770 -- Debug Message
5771 IF OZF_DEBUG_HIGH_ON THEN
5772 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': Start');
5773 END IF;
5774
5775 -- nepanda : Fix for bug # 15900683 : start
5776 IF p_org_id IS NULL THEN
5777
5778 OPEN operating_unit_csr;
5779 LOOP
5780 FETCH operating_unit_csr
5781 INTO l_org_id(m);
5782 m := m + 1;
5783 EXIT WHEN operating_unit_csr%NOTFOUND;
5784 END LOOP;
5785 CLOSE operating_unit_csr;
5786 ELSE
5787 l_org_id(m) := p_org_id;
5788 END IF;
5789 IF (l_org_id.COUNT > 0) THEN
5790 FOR m IN l_org_id.FIRST .. l_org_id.LAST LOOP
5791 BEGIN
5792 IF OZF_DEBUG_LOW_ON THEN
5793 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '--- Start Fetch Records for Organization id ---' || to_char(l_org_id(m)));
5794 END IF;
5795 MO_GLOBAL.set_policy_context('S', l_org_id(m));
5796
5797 -- nepanda : Fix for bug # 15900683 : end
5798 Process_TP_ACCRUAL (
5799 p_api_version => 1.0
5800 ,p_init_msg_list => FND_API.G_FALSE
5801 ,p_commit => FND_API.G_FALSE
5802 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
5803 ,p_data_source_code => p_data_source_code
5804 ,p_run_mode => l_run_mode -- Bug 14194884 - TPA In Draft Mode ER
5805 ,x_return_status => l_return_status
5806 ,x_msg_data => l_msg_data
5807 ,x_msg_count => l_msg_count
5808 );
5809 IF l_return_status = FND_API.g_ret_sts_error THEN
5810 ozf_utility_pvt.error_message('OZF_PROC_RESALE_ERR');
5811 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Error occurred for Organization id ---' || to_char(l_org_id(m)));
5812 --RAISE FND_API.G_EXC_ERROR;
5813 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
5814 ozf_utility_pvt.error_message('OZF_PROC_RESALE_ERR');
5815 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Unexpected Error occurred for Organization id ---' || to_char(l_org_id(m)));
5816 --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5817 END IF;
5818 END;
5819 END LOOP; -- FOR m IN l_org_id.FIRST .. l_org_id.LAST LOOP
5820 END IF; -- IF (l_org_id.COUNT > 0) THEN
5821
5822 --//TPM Integration ER
5823 IF G_TPM_PROCESS_ENABLED = 'Y' THEN
5824 l_item_key := 'ACCRUAL_INFO' || TO_CHAR(SYSDATE,'DDMMRRRRHH24MISS');
5825 l_parameter_list := WF_PARAMETER_LIST_T();
5826
5827 l_budget_data := DBMS_XMLGEN.getXml('SELECT ''FUND'' AccrualType,
5828 util.utilization_id UtilizationId,
5829 util.fund_id FundId,
5830 NVL(map.xref_line_id_value,oe.list_line_id) DiscountLineId,
5831 util.product_id ProductId,
5832 line.resale_header_id OrderId,
5833 line.resale_line_id OrderLineId,
5834 line.quantity ShippedQuantity,
5835 (line.quantity*NVL(line.selling_price,line.purchase_price)) Revenue,
5836 NVL(util.plan_curr_amount,0) AccrualAmount
5837 FROM ozf_resale_lines_all line, ozf_funds_utilized_all_b util,
5838 ozf_offers off, ozf_resale_adjustments_all oe,
5839 ozf_xref_map map
5840 WHERE line.resale_line_id = util.object_id
5841 AND util.object_type = ''TP_ORDER''
5842 AND util.request_id = ' || G_CONC_REQUEST_ID ||
5843 ' AND util.plan_type = ''OFFR''
5844 AND util.plan_id = off.qp_list_header_id
5845 AND util.price_adjustment_id = oe.resale_adjustment_id
5846 AND util.gl_posted_flag IN (''Y'', ''X'')
5847 AND oe.list_line_id = map.list_line_id(+)
5848 AND NVL(off.budget_offer_yn, ''N'') = ''Y''', 0);
5849 l_offer_data := DBMS_XMLGEN.getXml('SELECT ''OFFR'' AccrualType,
5850 util.utilization_id UtilizationId,
5851 util.plan_id PromotionId,
5852 util.fund_id FundId,
5853 NVL(map.xref_line_id_value,oe.list_line_id) DiscountLineId,
5854 util.product_id ProductId,
5855 line.resale_header_id OrderId,
5856 line.resale_line_id OrderLineId,
5857 util.cust_account_id CustomerId,
5858 line.quantity ShippedQuantity,
5859 (line.quantity*NVL(line.selling_price,line.purchase_price)) Revenue,
5860 NVL(util.plan_curr_amount,0) AccrualAmount
5861 FROM ozf_resale_lines_all line, ozf_funds_utilized_all_b util,
5862 ozf_offers off, ozf_resale_adjustments_all oe,
5863 ozf_xref_map map
5864 WHERE line.resale_line_id = util.object_id
5865 AND util.object_type = ''TP_ORDER''
5866 AND util.request_id = ' || G_CONC_REQUEST_ID ||
5867 ' AND util.plan_type = ''OFFR''
5868 AND util.plan_id = off.qp_list_header_id
5869 AND util.price_adjustment_id = oe.resale_adjustment_id
5870 AND util.gl_posted_flag = ''Y''
5871 AND oe.list_line_id = map.list_line_id(+)
5872 AND NVL(off.budget_offer_yn, ''N'') = ''N''', 0);
5873
5874 l_event_name := 'oracle.apps.ozf.order.accrual.info';
5875
5876 wf_event.raise(p_event_name => l_event_name,
5877 p_event_key => l_item_key,
5878 p_event_data => l_budget_data,
5879 p_parameters => l_parameter_list,
5880 p_send_date => sysdate);
5881
5882 wf_event.raise(p_event_name => l_event_name,
5883 p_event_key => l_item_key,
5884 p_event_data => l_offer_data,
5885 p_parameters => l_parameter_list,
5886 p_send_date => sysdate);
5887
5888 END IF;
5889
5890 -- Debug Message
5891 IF OZF_DEBUG_HIGH_ON THEN
5892 OZF_UTILITY_PVT.debug_message(p_message_text => l_full_name||': End');
5893 END IF;
5894
5895 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '*------------------------------------------------------------------------------------------------------*');
5896 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Execution Ends On: ' || to_char(sysdate,'MM-DD-YYYY HH24:MI:SS'));
5897 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '*======================================================================================================*');
5898
5899 -- Write all messages to a log
5900 OZF_UTILITY_PVT.Write_Conc_Log;
5901 EXCEPTION
5902 WHEN FND_API.g_exc_error THEN
5903 ozf_utility_pvt.write_conc_log('ERROR in Start_TP_ACCRUAL: '|| SQLERRM);
5904 OZF_UTILITY_PVT.Write_Conc_Log;
5905 ERRBUF := l_msg_data;
5906
5907 WHEN FND_API.g_exc_unexpected_error THEN
5908 ozf_utility_pvt.write_conc_log('UNEXP ERROR in Start_TP_ACCRUAL: '|| SQLERRM);
5909 OZF_UTILITY_PVT.Write_Conc_Log;
5910 ERRBUF := l_msg_data;
5911 RETCODE := 2;
5912
5913 WHEN OTHERS THEN
5914 ozf_utility_pvt.write_conc_log('OTHERS ERROR in Start_TP_ACCRUAL: '|| SQLERRM);
5915 --ROLLBACK TO START_TP_ACCRUAL;
5916 OZF_UTILITY_PVT.Write_Conc_Log;
5917 ERRBUF := l_msg_data;
5918 RETCODE := 2;
5919 END Start_TP_ACCRUAL;
5920
5921 END OZF_TP_ACCRUAL_PVT;