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