DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_CREDIT_EXPOSURE_PVT

Source


1 PACKAGE BODY OE_CREDIT_EXPOSURE_PVT AS
2 -- $Header: OEXVCRXB.pls 120.19.12020000.2 2012/11/14 19:38:01 cpati ship $
3 
4 --+=======================================================================+
5 --|               Copyright (c) 1998 Oracle Corporation                   |
6 --|                       Redwood Shores, CA, USA                         |
7 --|                         All rights reserved.                          |
8 --+=======================================================================+
9 --| FILENAME                                                              |
10 --|    OEXVCRXB.pls                                                       |
11 --|                                                                       |
12 --| DESCRIPTION                                                           |
13 --|    Body of OE_CREDIT_EXPOSURE_PVT                                     |
14 --|                                                                       |
15 --| HISTORY                                                               |
16 --|     06/05/2001 Rene Schaub     Created                                |
17 --|     02/04/2002 Rajesh Krishnan ontdev => 115.10 2001/09/01 00:53:53   |
18 --|                                multi org FEB-04-2002 7PM              |
19 --|     03/15/2002 Vanessa To      modified get_exposure - include        |
20 --|                                external exposure.                     |
21 --|     05/01/2002 rajkrish        Bug 2352020                            |
22 --|     06/18/2002 vto             renee -- init summary only             |
23 --|     Aug-2002  rajkrish - Implement MUlti buckets algorithm            |
24 --|               ontdev==> 115.14 2002/05/02                             |
25 --|     August-29-2002 rajkrish 6PM                                       |
26 --|     12/20/2002 vto             Added NOCOPY to OUT variables          |
27 --|     23-DEc-2002 - BR Issue                                            |
28 --|     07/02/2003 tsimmond     Added code for the FPJ Returns project in |
29 --|                             Init_Summary_Table,balance types proc.,   |
30 --|                             Retrieve_Exposure                         |
31 --|     08/27/2003 vto          Modification for Partial payments support |
32 --|                                                                       |
33 --|     12/23/2003 tsimmond     Modified insert for G_ORDER_RETURN_HOLDS, |
34 --|                             G_ORDER_RETURN_TAX_HOLDS,                 |
35 --|                             G_LINE_RETURN_TAX_HOLDS,                  |
36 --|                             and G_LINE_RETURN_HOLDS, bug fix 3223770  |
37 --|     01/06/2004 vto          3320260. Modified to handle non-multiorg  |
38 --|     08/06/2004 vto          3818562. Add NVL on h.request_date        |
39 --+======================================================================*/
40 
41 
42 --===================
43 -- CONSTANTS
44 --===================
45 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_CREDIT_EXPOSURE_PVT';
46 G_debug_flag        VARCHAR2(1) :=
47  NVL(oe_credit_check_util.check_debug_flag , 'N' ) ;
48 --===================
49 -- GLOBAL VARIABLES
50 --===================
51   b1              NUMBER;
52   b2              NUMBER;
53   b3              NUMBER;
54   b4              NUMBER;
55   b5              NUMBER;
56   b6              NUMBER;
57   b7              NUMBER;
58   b8              NUMBER;
59   b9              NUMBER;
60   b10             NUMBER;
61   b11             NUMBER;
62   b12             NUMBER;
63   b13             NUMBER;
64   b14             NUMBER;
65   b15             NUMBER;
66   b16             NUMBER;
67   b17             NUMBER;
68   b18             NUMBER;
69   b21             NUMBER;
70   b22             NUMBER;
71 
72 ----added for the RETURNS-------
73   b23             NUMBER;
74   b24             NUMBER;
75   b25             NUMBER;
76   b26             NUMBER;
77   b27             NUMBER;
78   b28             NUMBER;
79   b29             NUMBER;
80   b30             NUMBER;
81   b31             NUMBER;
82   b32             NUMBER;
83   b33             NUMBER;
84   b34             NUMBER;
85   b35             NUMBER;
86   b36             NUMBER;
87   --TaxER start
88   b37             NUMBER;
89   b38             NUMBER;
90   b39             NUMBER;
91   b40             NUMBER;
92   b41             NUMBER;
93   b42             NUMBER;
94   b43             NUMBER;
95   b44             NUMBER;
96   b45             NUMBER;
97   b46             NUMBER;
98   b47             NUMBER;
99   b48             NUMBER;
100   --TaxER end
101 
102   g_error_curr_tbl        OE_CREDIT_CHECK_UTIL.curr_tbl_type;
103   g_conversion_type       OE_Credit_Check_Rules.conversion_type%TYPE;
104   g_functional_currency   FND_CURRENCIES.Currency_code%TYPE;
105   g_use_party_hierarchy   VARCHAR2(1) ;
106 
107   --g_external_exposure    NUMBER ;
108 
109 --===================
110 -- PRIVATE PROCEDURES
111 --===================
112 
113 ------------------------------------------------------
114 -- Function used for debug log printing the time execution
115 -------------------------------------------------------
116 
117 FUNCTION Do_Time RETURN VARCHAR2 IS
118   t   VARCHAR2(30);
119 BEGIN
120 
121  t := TO_CHAR( SYSDATE, 'YYYY-MON-HH-MI-SS' ) ;
122   RETURN t;
123 
124 END;
125 
126 
127 ------------------------------------------------------
128 -- PROCEDURE  : get_invoices_over_duedate
129 -- DESCRIPTION: Returns Y if Invoices exist past due dates
130 -- HISTORY:
131 -- 01/06/04  3320260: Modified to handle non-multiorg setup
132 -- 12/20/05  4514215: Modified all the cursors, replaced the condition
133 -- bucket  < l_jdate with   bucket  <= l_jdate
134 --------------------------------------------------------
135 PROCEDURE get_invoices_over_duedate
136 ( p_customer_id          IN   NUMBER
137 , p_site_use_id          IN   NUMBER
138 , p_party_id             IN   NUMBER
139 , p_credit_check_rule_rec IN
140              OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type
141 , p_credit_level         IN   VARCHAR2
142 , p_usage_curr           IN   oe_credit_check_util.curr_tbl_type
143 , p_include_all_flag     IN   VARCHAR2
144 , p_global_exposure_flag IN   VARCHAR2 := 'N'
145 , p_org_id               IN   NUMBER
146 , x_exist_flag           OUT  NOCOPY VARCHAR2
147 )
148 IS
149 
150 l_jdate NUMBER;
151 l_return VARCHAR2(1) ;
152 
153  CURSOR chk_inv_past_due_cust(p_curr_code IN VARCHAR2 ) IS
154   SELECT 'Y'
155   FROM    OE_credit_summaries
156   WHERE   cust_account_id = p_customer_id
157    AND  currency_code   = p_curr_code
158    AND  bucket  <= l_jdate
159    AND  bucket_duration = 1
160    AND  ((org_id             =  p_org_id)
161          OR
162         (org_id IS NULL AND p_org_id IS NULL))
163    AND  balance_type    = 20 ;
164 
165  CURSOR chk_inv_past_due_cust_gl(p_curr_code IN VARCHAR2 ) IS
166   SELECT 'Y'
167   FROM    OE_credit_summaries
168   WHERE   cust_account_id = p_customer_id
169    AND  currency_code   = p_curr_code
170    AND  bucket  <= l_jdate
171    AND  bucket_duration = 1
172    AND  balance_type    = 20 ;
173 
174 
175  CURSOR chk_inv_past_due_site(p_curr_code IN VARCHAR2 ) IS
176   SELECT 'Y'
177   FROM    OE_credit_summaries
178   WHERE   site_use_id    = p_site_use_id
179    AND   currency_code  = p_curr_code
180    AND  bucket  <= l_jdate
181    AND  bucket_duration = 1
182    AND  balance_type    = 20 ;
183 
184  CURSOR chk_inv_past_due_party(p_curr_code IN VARCHAR2 ) IS
185    SELECT 'Y'
186   FROM    OE_credit_summaries oes
187      ,    hz_hierarchy_nodes hn
188   WHERE   hn.parent_id                 = p_party_id
189   AND  hn.parent_object_type           = 'ORGANIZATION'
190   and  hn.parent_table_name            = 'HZ_PARTIES'
191   and  hn.child_object_type            = 'ORGANIZATION'
192   and  hn.effective_start_date  <=  sysdate
193   and  hn.effective_end_date    >= SYSDATE
194   and  hn.hierarchy_type     =
195             OE_CREDIT_CHECK_UTIL.G_hierarchy_type
196   AND  oes.party_id                    =  hn.child_id
197   AND  oes.currency_code               = p_curr_code
198   AND  oes.bucket                 <= l_jdate
199   AND  oes.balance_type    = 20
200   AND  oes.bucket_duration = 1 ;
201 
202  --Bug 4991241
203  CURSOR chk_inv_past_due_single_party(p_curr_code IN VARCHAR2 ) IS
204   SELECT 'Y'
205   FROM    OE_credit_summaries
206   WHERE   party_id    = p_party_id
207    AND   currency_code  = p_curr_code
208    AND  bucket  <= l_jdate
209    AND  bucket_duration = 1
210    AND  balance_type    = 20 ;
211 
212  CURSOR chk_inv_past_due_cust_all IS
213   SELECT 'Y'
214   FROM    OE_credit_summaries
215   WHERE cust_account_id = p_customer_id
216    AND  bucket  <= l_jdate
217    AND  bucket_duration = 1
218    AND  ((org_id              =  p_org_id)
219           OR
220          (org_id IS NULL AND p_org_id IS NULL))
221    AND  balance_type    = 20 ;
222 
223  CURSOR chk_inv_past_due_cust_all_gl IS
224   SELECT 'Y'
225   FROM    OE_credit_summaries
226   WHERE cust_account_id = p_customer_id
227    AND  bucket  <= l_jdate
228    AND  bucket_duration = 1
229    AND  balance_type    = 20 ;
230 
231 
232  CURSOR chk_inv_past_due_site_all IS
233   SELECT 'Y'
234   FROM    OE_credit_summaries
235   WHERE site_use_id    = p_site_use_id
236    AND  bucket  <= l_jdate
237    AND  bucket_duration = 1
238    AND  balance_type    = 20 ;
239 
240  CURSOR chk_inv_past_due_party_all IS
241   SELECT 'Y'
242   FROM    OE_credit_summaries oes
243      ,    hz_hierarchy_nodes hn
244   WHERE   hn.parent_id                 = p_party_id
245   AND  hn.parent_object_type           = 'ORGANIZATION'
246   and  hn.parent_table_name            = 'HZ_PARTIES'
247   and  hn.child_object_type            = 'ORGANIZATION'
248   and  hn.effective_start_date  <=  sysdate
249   and  hn.effective_end_date    >= SYSDATE
250   and  hn.hierarchy_type     =
251             OE_CREDIT_CHECK_UTIL.G_hierarchy_type
252   AND  oes.party_id                      =  hn.child_id
253   AND  oes.bucket  <= l_jdate
254   AND  oes.balance_type    = 20
255   AND  oes.bucket_duration = 1;
256 
257  --Bug 4991241
258  CURSOR chk_inv_past_party_single_all IS
259   SELECT 'Y'
260   FROM    OE_credit_summaries
261   WHERE party_id    = p_party_id
262    AND  bucket  <= l_jdate
263    AND  bucket_duration = 1
264    AND  balance_type    = 20 ;
265 
266 BEGIN
267 
268   l_jdate := TO_NUMBER( TO_CHAR( ( SYSDATE -
269               p_credit_check_rule_rec.maximum_days_past_due ), 'J' ) );
270 
271   x_exist_flag := 'N' ;
272 
273   IF G_debug_flag = 'Y'
274   THEN
275     oe_debug_pub.add(' l_jdate => '|| l_jdate );
276     oe_debug_pub.add(' p_credit_level => '|| p_credit_level );
277     oe_debug_pub.add(' p_site_use_id => '|| p_site_use_id );
278     oe_debug_pub.add(' p_customer_id => '|| p_customer_id );
279     oe_debug_pub.add(' p_party_id => '|| p_party_id );
280   END IF;
281 
282  BEGIN
283 
284   IF p_credit_level = 'CUSTOMER'
285   THEN
286     IF p_include_all_flag = 'N'
287     THEN
288       FOR i IN 1..p_usage_curr.count
289       LOOP
290         IF p_global_exposure_flag = 'N'
291         THEN
292           OPEN chk_inv_past_due_cust (p_usage_curr(i).usage_curr_code ) ;
293           FETCH chk_inv_past_due_cust
294           INTO x_exist_flag ;
295 
296           IF chk_inv_past_due_cust%NOTFOUND
297           THEN
298             x_exist_flag := 'N' ;
299           ELSE
300             CLOSE chk_inv_past_due_cust ;
301             EXIT ;
302           END IF;
303           CLOSE chk_inv_past_due_cust ;
304 
305         ELSE
306          OPEN chk_inv_past_due_cust_gl (p_usage_curr(i).usage_curr_code ) ;
307          FETCH chk_inv_past_due_cust_gl INTO x_exist_flag ;
308          IF chk_inv_past_due_cust_gl%NOTFOUND
309          THEN
310            x_exist_flag := 'N' ;
311          ELSE
312            CLOSE chk_inv_past_due_cust_gl ;
313            EXIT;
314          END IF;
315          CLOSE chk_inv_past_due_cust_gl ;
316        END IF; -- global
317       END LOOP ;
318 
319     ELSE -- al currency
320       IF p_global_exposure_flag = 'N'
321       THEN
322         OPEN chk_inv_past_due_cust_all ;
323         FETCH chk_inv_past_due_cust_all
324         INTO x_exist_flag ;
325 
326           IF chk_inv_past_due_cust_all%NOTFOUND
327           THEN
328             x_exist_flag := 'N' ;
329           END IF;
330         CLOSE chk_inv_past_due_cust_all ;
331       ELSE
332         OPEN chk_inv_past_due_cust_all_gl  ;
333         FETCH chk_inv_past_due_cust_all_gl INTO x_exist_flag ;
334         IF chk_inv_past_due_cust_all_gl%NOTFOUND
335         THEN
336            x_exist_flag := 'N' ;
337         END IF;
338 
339         CLOSE chk_inv_past_due_cust_all_gl ;
340       END IF ; -- global;
341     END IF; -- all curr
342 
343   ELSIF p_credit_level = 'SITE'
344   THEN
345    IF p_include_all_flag = 'N'
346    THEN
347      FOR i IN 1..p_usage_curr.count
348      LOOP
349 
350       OPEN chk_inv_past_due_site(p_usage_curr(i).usage_curr_code) ;
351       FETCH chk_inv_past_due_site
352       INTO x_exist_flag ;
353 
354         IF chk_inv_past_due_site%NOTFOUND
355         THEN
356           x_exist_flag := 'N' ;
357         ELSE
358           CLOSE chk_inv_past_due_site ;
359           EXIT ;
360         END IF;
361 
362        CLOSE chk_inv_past_due_site ;
363      END LOOP;
364    ELSE -- all curr
365      OPEN chk_inv_past_due_site_all ;
366      FETCH chk_inv_past_due_site_all
367      INTO x_exist_flag ;
368 
369        IF chk_inv_past_due_site_all%NOTFOUND
370         THEN
371           x_exist_flag := 'N' ;
372        END IF;
373 
374       CLOSE chk_inv_past_due_site_all ;
375    END IF;
376 
377  ELSIF p_credit_level = 'PARTY'
378  THEN
379    IF p_include_all_flag = 'N'
380    THEN
381      FOR i IN 1..p_usage_curr.count
382      LOOP
383        --Bug 4991241
384        OPEN chk_inv_past_due_single_party(p_usage_curr(i).usage_curr_code ) ;
385        FETCH chk_inv_past_due_single_party
386        INTO x_exist_flag ;
387        IF chk_inv_past_due_single_party%NOTFOUND
388        THEN
389          x_exist_flag := 'N' ;
390        ELSE
391          CLOSE chk_inv_past_due_single_party ;
392          EXIT ;
393        END IF;
394        CLOSE chk_inv_past_due_single_party ;
395 
396        OPEN chk_inv_past_due_party(p_usage_curr(i).usage_curr_code ) ;
397        FETCH chk_inv_past_due_party
398        INTO x_exist_flag ;
399 
400        IF chk_inv_past_due_party%NOTFOUND
401        THEN
402          x_exist_flag := 'N' ;
403        ELSE
404          CLOSE chk_inv_past_due_party ;
405          EXIT ;
406        END IF;
407        CLOSE chk_inv_past_due_party ;
408      END LOOP;
409    ELSE
410      --Bug 4991241
411      OPEN chk_inv_past_party_single_all ;
412      FETCH  chk_inv_past_party_single_all INTO x_exist_flag ;
413 
414       IF chk_inv_past_party_single_all%NOTFOUND
415       THEN
416         x_exist_flag := 'N' ;
417       END IF;
418      CLOSE chk_inv_past_party_single_all ;
419 
420      IF x_exist_flag = 'N' THEN
421      OPEN chk_inv_past_due_party_all ;
422      FETCH  chk_inv_past_due_party_all INTO x_exist_flag ;
423 
424       IF chk_inv_past_due_party_all%NOTFOUND
425       THEN
426         x_exist_flag := 'N' ;
427       END IF;
428      CLOSE chk_inv_past_due_party_all ;
429      END IF;
430    END IF;
431 
432 
433  END IF; -- credit level
434 
435  END ;
436 
437 END get_invoices_over_duedate ;
438 
439 ------------------------------------------------------------------
440 -- This procedure will populate the PL/SQL table
441 -- used for storing the currencies that failed the
442 -- conversion to the credit limit currencies
443 -----------------------------------------------------
444 PROCEDURE add_error_currency
445 ( x_error_curr_tbl     IN OUT  NOCOPY  OE_CREDIT_CHECK_UTIL.curr_tbl_type
446 , p_error_currency     IN           HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
447 )
448 IS
449   i  BINARY_INTEGER;
450 BEGIN
451   i  := x_error_curr_tbl.FIRST;
452   WHILE  i  IS NOT NULL  LOOP
453     IF
454       p_error_currency  =  x_error_curr_tbl(i).usage_curr_code
455     THEN
456       EXIT;
457     END IF;
458     i := x_error_curr_tbl.NEXT(i);
459   END LOOP;
460 
461   IF  i  IS NULL THEN
462     x_error_curr_tbl( NVL(x_error_curr_tbl.LAST, 0) + 1 ).usage_curr_code  :=
463       p_error_currency;
464   END IF;
465 END;
466 
467 ------------------------------------------------------
468 --- This function will return the OM Horizon Date
469 --- in the Juilan format
470 ---------------------------------------------
471 
472 FUNCTION ship_date( p_date  IN  DATE )
473 RETURN NUMBER
474 IS
475   l_date   NUMBER;
476 BEGIN
477   IF p_date  IS NULL  THEN
478     l_date  := TO_NUMBER( TO_CHAR( (SYSDATE + 1000 ), 'J' ) );
479     -- last day of a max bucket in the far future
480     l_date  := l_date - MOD( l_date, G_MAX_BUCKET_LENGTH )  - 1;
481   ELSE
482     l_date  := TO_NUMBER( TO_CHAR( p_date, 'J' ) );
483   END IF;
484 
485   IF G_debug_flag = 'Y'
486   THEN
487     oe_debug_pub.add( 'Shipping Horizon Julian Date is:' || l_date, 2 );
488   END IF;
489 
490   RETURN l_date;
491 
492 END ship_date;
493 
494 -----------------------------------------------------
495 -- This function will return the AR Horizon date
496 -- in Juilan format
497 --------------------------------------------------------
498 FUNCTION open_date( p_days  IN  NUMBER )
499 RETURN NUMBER
500 IS
501   l_date   NUMBER;
502 BEGIN
503   IF  p_days  IS NULL  THEN
504     l_date  := TO_NUMBER( TO_CHAR( ( SYSDATE + 1000 ), 'J' ) );
505     -- last day of a max bucket in the far future
506     l_date  := l_date - MOD( l_date, G_MAX_BUCKET_LENGTH )  - 1;
507 
508   ELSE
509     l_date  := TO_NUMBER( TO_CHAR( ( SYSDATE - p_days ), 'J' ) );
510   END IF;
511 
512   IF G_debug_flag = 'Y'
513   THEN
514      oe_debug_pub.add( 'Open Receivables Horizon Julian is:' || l_date, 2 );
515   END IF;
516 
517   RETURN l_date;
518 
519 END open_date;
520 
521 
522 PROCEDURE balance_types_om_and_ar
523 ( p_credit_check_rule_rec   IN    OE_CREDIT_CHECK_UTIL.oe_credit_rules_rec_type
524 )
525 IS
526 BEGIN
527   b1 := -1;
528   b2 := -1;
529   b3 := -1;
530   b4 := -1;
531   b5 := -1;
532   b6 := -1;
533   b7 := -1;
534   b8 := -1;
535   b9 := -1;
536   b10 := -1;
537   b11 := -1;
538   b12 := -1;
539   b13 := -1;
540   b14 := -1;
541   b15 := -1;
542   b16 := -1;
543   b17 := -1;
544   b18 := -1;
545   b21 := -1;
546   b22 := -1;
547 
548   ----added for the RETURNS
549   b23 := -1;
550   b24 := -1;
551   b25 := -1;
552   b26 := -1;
553   b27 := -1;
554   b28 := -1;
555   b29 := -1;
556   b30 := -1;
557   b31 := -1;
558   b32 := -1;
559   b33 := -1;
560   b34 := -1;
561   b35 := -1;
562   b36 := -1;
563   --TaxER start
564   b37 := -1;
565   b38 := -1;
566   b39 := -1;
567   b40 := -1;
568   b41 := -1;
569   b42 := -1;
570   b43 := -1;
571   b44 := -1;
572   b45 := -1;
573   b46 := -1;
574   b47 := -1;
575   b48 := -1;
576   --TaxER end
577 
578 
579 
580   -- Determine which balance types to select:
581   -- Chosing a balance type is indicated by setting the corresponding
582   -- variable to a balance type global constant
583   -- (e.g. b4 := G_ORDER_HOLDS)
584 
585   IF  p_credit_check_rule_rec.uninvoiced_orders_flag     =  'Y'
586   THEN
587     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
588     THEN
589       b3 := G_LINE_UNINVOICED_ORDERS;
590 
591       -----added for the Returns project
592       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
593       THEN
594         b24 := G_LINE_RETURN_UNINV_ORDERS;
595       END IF;
596 
597       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
598       THEN
599         b11 := G_LINE_HOLDS;
600 
601         -----added for the Returns project
602         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
603         THEN
604           b31 := G_LINE_RETURN_HOLDS;
605         END IF;
606 
607       END IF;
608     ELSE
609       b1 := G_HEADER_UNINVOICED_ORDERS;
610 
611       -----added for the Returns project
612       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
613       THEN
614         b23 := G_HEAD_RETURN_UNINV_ORDERS;
615       END IF;
616 
617       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
618       THEN
619         b10 := G_ORDER_HOLDS;
620 
621         -----added for the Returns project
622         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
623         THEN
624           b30 := G_ORDER_RETURN_HOLDS;
625         END IF;
626 
627       END IF;
628     END IF;
629 
630   END IF;
631 
632   IF  p_credit_check_rule_rec.include_tax_flag           =  'Y'
633   THEN
634     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
635     THEN
636       b4 := G_LINE_UNINVOICED_ORDERS_TAX;
637 
638       -----added for the Returns project
639       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
640       THEN
641         b26:= G_LINE_RETURN_UNINV_ORD_TAX;
642       END IF;
643 
644       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
645       THEN
646         b14 := G_LINE_TAX_HOLDS;
647 
648         -----added for the Returns project
649         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
650         THEN
651           b33:= G_LINE_RETURN_TAX_HOLDS;
652         END IF;
653 
654       END IF;
655     ELSE
656       b2 := G_HEADER_UNINVOICED_ORDERS_TAX;
657 
658       -----added for the Returns project
659       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
660       THEN
661         b25:= G_HEAD_RETURN_UNINV_ORD_TAX;
662       END IF;
663 
664       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
665       THEN
666         b13 := G_ORDER_TAX_HOLDS;
667 
668         -----added for the Returns project
669         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
670         THEN
671           b32:= G_ORDER_RETURN_TAX_HOLDS;
672         END IF;
673 
674       END IF;
675     END IF;
676   END IF;
677 
678   IF  p_credit_check_rule_rec.incl_freight_charges_flag  =  'Y'
679   THEN
680     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
681     THEN
682       b5 := G_LINE_UNINVOICED_FREIGHT;
683 
684       -----added for the Returns project
685       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
686       THEN
687         b28:= G_LINE_RETURN_UNINV_FREIGHT;
688       END IF;
689 
690       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
691       THEN
692         b16 := G_LINE_FREIGHT_HOLDS;
693 
694         -----added for the Returns project
695         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
696         THEN
697           b35:= G_LINE_RETURN_FREIGHT_HOLDS;
698         END IF;
699 
700       END IF;
701     ELSE
702       b6 := G_HEADER_UNINVOICED_FREIGHT;
703 
704       -----added for the Returns project
705       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
706       THEN
707         b27:= G_HEAD_RETURN_UNINV_FREIGHT;
708       END IF;
709 
710      IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
711      THEN
712         b15 := G_ORDER_FREIGHT_HOLDS;
713 
714         -----added for the Returns project
715         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
716         THEN
717           b34:= G_ORDER_RETURN_FREIGHT_HOLDS;
718         END IF;
719 
720       END IF;
721     END IF;
722 
723     b7 := G_HEADER_AND_LINE_FREIGHT;
724 
725     -----added for the Returns project
726     IF p_credit_check_rule_rec.include_returns_flag = 'Y'
727     THEN
728       b29:= G_HEAD_LINE_RETURN_FREIGHT;
729     END IF;
730 
731     IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
732     THEN
733       b17 := G_HEADER_LINE_FREIGHT_HOLDS;
734 
735       -----added for the Returns project
736       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
737       THEN
738         b36:= G_H_L_RETURN_FREIGHT_HOLDS;
739       END IF;
740 
741     END IF;
742 
743     --TaxER start
744 	  IF  p_credit_check_rule_rec.include_tax_flag  =  'Y'
745 	  THEN
746 	    IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
747 	    THEN
748 	      b38 := G_LINE_UNINVOICED_FREIGHT_T;
749 
750 	      -----added for the Returns project
751 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
752 	      THEN
753 	        b44:= G_LINE_RETURN_UNINV_FREIGHT_T;
754 	      END IF;
755 
756 	      IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
757 	      THEN
758 	        b41 := G_LINE_FREIGHT_HOLDS_T;
759 
760 	        -----added for the Returns project
761 	        IF p_credit_check_rule_rec.include_returns_flag = 'Y'
762 	        THEN
763 	          b47:= G_LINE_RETURN_FREIGHT_HOLDS_T;
764 	        END IF;
765 
766 	      END IF;
767 	    ELSE
768 	      b37 := G_HEADER_UNINVOICED_FREIGHT_T;
769 
770 	      -----added for the Returns project
771 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
772 	      THEN
773 	        b43:= G_HEAD_RETURN_UNINV_FREIGHT_T;
774 	      END IF;
775 
776 	     IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
777 	     THEN
778 	        b40 := G_ORDER_FREIGHT_HOLDS_T;
779 
780 	        -----added for the Returns project
781 	        IF p_credit_check_rule_rec.include_returns_flag = 'Y'
782 	        THEN
783 	          b46:= G_ORDER_RETURN_FREIGHT_HOLDS_T;
784 	        END IF;
785 
786 	      END IF;
787 	    END IF;
788 
789 	    b39 := G_HEADER_AND_LINE_FREIGHT_T;
790 
791 
792 	    -----added for the Returns project
793 	    IF p_credit_check_rule_rec.include_returns_flag = 'Y'
794 	    THEN
795 	      b45:= G_HEAD_LINE_RETURN_FREIGHT_T;
796 	    END IF;
797 
798 	    IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
799 	    THEN
800 	      b42 := G_HEADER_LINE_FREIGHT_HOLDS_T;
801 
802 	      -----added for the Returns project
803 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
804 	      THEN
805 	        b48:= G_H_L_RETURN_FREIGHT_HOLDS_T;
806 	      END IF;
807 
808 	    END IF;
809 	  END IF;
810 
811     --TaxER end
812   END IF;
813 
814   -- Set value for external exposure
815   IF  p_credit_check_rule_rec.include_external_exposure_flag  =  'Y'  THEN
816     b18 := G_EXTERNAL_EXPOSURE;
817   END IF;
818 
819   IF  p_credit_check_rule_rec.include_payments_at_risk_flag  =  'Y'  THEN
820     b9 := G_PAYMENTS_AT_RISK;
821 
822     IF p_credit_check_rule_rec.open_ar_days is NULL
823     THEN
824       b22 := G_BR_PAYMENTS_AT_RISK ;
825     END IF;
826 
827   END IF;
828   IF  p_credit_check_rule_rec.open_ar_balance_flag  =  'Y'  THEN
829     b8 := G_INVOICES;
830 
831     IF p_credit_check_rule_rec.open_ar_days is NULL
832     THEN
833       b21 := G_BR_INVOICES ;
834     END IF;
835   END IF;
836 
837 
838   IF G_debug_flag = 'Y'
839   THEN
840     oe_debug_pub.add
841   (b1 || ' ' || b2 || ' ' || b3 || ' ' || b4 || ' ' || b5 || ' ' || b6 || ' '
842    || b7 || ' ' || b8 || ' ' || b9 || ' ' || b10 || ' ' || b11 || ' ' || b12 ||
843 ' '
844    || b13 || ' ' || b14 || ' ' || b15 || ' ' || b16 || ' ' || b17 || ' ' || b18||
845    ' '|| b23 || ' ' || b24 || ' ' || b25 || ' ' || b26 || ' ' || b27 || ' ' || b28||
846    ' '|| b29 || ' ' || b30 || ' ' || b31 || ' ' || b32 || ' ' || b33 || ' ' || b34||
847    ' '|| b35 || ' ' || b36 || ' ' || b37 ||' ' || b38 ||' ' || b39 ||' ' || b40 ||' ' || b41 ||' ' || b42 ||' ' || b43 ||
848    ' ' || b44 ||' ' || b45 ||' ' || b46 ||' ' || b47 ||' ' || b48, 2 );
849 
850     oe_debug_pub.add( ' Out from balance_types_om_and_ar ');
851   END IF;
852 
853 END balance_types_om_and_ar ;
854 
855 -----------------------------------------------------------
856 
857 -----------------------------------------------------------
858 -- This procedure will set the balance types for the
859 -- OM exposure based on the credit check rules setup
860 --  This procedure will also set the external exposure
861 -- balance types
862 -----------------------------------------------------------
863 
864 PROCEDURE balance_types_om_nohold
865 (p_credit_check_rule_rec   IN    OE_CREDIT_CHECK_UTIL.oe_credit_rules_rec_type
866 )
867 IS
868 BEGIN
869   b1 := -1;
870   b2 := -1;
871   b3 := -1;
872   b4 := -1;
873   b5 := -1;
874   b6 := -1;
875   b7 := -1;
876   b8 := -1;
877   b9 := -1;
878   b10 := -1;
879   b11 := -1;
880   b12 := -1;
881   b13 := -1;
882   b14 := -1;
883   b15 := -1;
884   b16 := -1;
885   b17 := -1;
886   b18 := -1;
887   b21 := -1;
888   b22 := -1;
889 
890 ----added for the RETURNS
891   b23 := -1;
892   b24 := -1;
893   b25 := -1;
894   b26 := -1;
895   b27 := -1;
896   b28 := -1;
897   b29 := -1;
898   b30 := -1;
899   b31 := -1;
900   b32 := -1;
901   b33 := -1;
902   b34 := -1;
903   b35 := -1;
904   b36 := -1;
905   --TaxER start
906   b37 := -1;
907   b38 := -1;
908   b39 := -1;
909   b40 := -1;
910   b41 := -1;
911   b42 := -1;
912   b43 := -1;
913   b44 := -1;
914   b45 := -1;
915   b46 := -1;
916   b47 := -1;
917   b48 := -1;
918   --TaxER end
919 
920 
921   -- Determine which balance types to select:
922   -- Chosing a balance type is indicated by setting the corresponding
923   -- variable to a balance type global constant
924   -- (e.g. b4 := G_ORDER_HOLDS)
925 
926 
927   IF  p_credit_check_rule_rec.uninvoiced_orders_flag     =  'Y'  THEN
928     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE' THEN
929       b3 := G_LINE_UNINVOICED_ORDERS;
930 
931       -----added for the Returns project
932       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
933       THEN
934         b24 := G_LINE_RETURN_UNINV_ORDERS;
935       END IF;
936     ELSE
937       b1 := G_HEADER_UNINVOICED_ORDERS;
938 
939       -----added for the Returns project
940       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
941       THEN
942         b23 := G_HEAD_RETURN_UNINV_ORDERS;
943       END IF;
944     END IF;
945   END IF;
946 
947 
948   IF  p_credit_check_rule_rec.include_tax_flag           =  'Y'  THEN
949     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE' THEN
950       b4 := G_LINE_UNINVOICED_ORDERS_TAX;
951 
952       -----added for the Returns project
953       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
954       THEN
955         b26:= G_LINE_RETURN_UNINV_ORD_TAX;
956       END IF;
957     ELSE
958       b2 := G_HEADER_UNINVOICED_ORDERS_TAX;
959 
960       -----added for the Returns project
961       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
962       THEN
963         b25:= G_HEAD_RETURN_UNINV_ORD_TAX;
964       END IF;
965 
966     END IF;
967   END IF;
968 
969   IF  p_credit_check_rule_rec.incl_freight_charges_flag  =  'Y'  THEN
970     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE' THEN
971       b5 := G_LINE_UNINVOICED_FREIGHT;
972 
973       -----added for the Returns project
974       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
975       THEN
976         b28:= G_LINE_RETURN_UNINV_FREIGHT;
977       END IF;
978 
979     ELSE
980       b6 := G_HEADER_UNINVOICED_FREIGHT;
981 
982       -----added for the Returns project
983       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
984       THEN
985         b27:= G_HEAD_RETURN_UNINV_FREIGHT;
986       END IF;
987 
988     END IF;
989     b7 := G_HEADER_AND_LINE_FREIGHT;
990 
991     -----added for the Returns project
992     IF p_credit_check_rule_rec.include_returns_flag = 'Y'
993     THEN
994       b29:= G_HEAD_LINE_RETURN_FREIGHT;
995     END IF;
996    --TaxER start
997 	  IF  p_credit_check_rule_rec.include_tax_flag  =  'Y'
998 	  THEN
999 	    IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
1000 	    THEN
1001 	      b38 := G_LINE_UNINVOICED_FREIGHT_T;
1002 
1003 	      -----added for the Returns project
1004 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1005 	      THEN
1006 	        b44:= G_LINE_RETURN_UNINV_FREIGHT_T;
1007 	      END IF;
1008 
1009 	    ELSE
1010 	      b37 := G_HEADER_UNINVOICED_FREIGHT_T;
1011 
1012 	      -----added for the Returns project
1013 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1014 	      THEN
1015 	        b43:= G_HEAD_RETURN_UNINV_FREIGHT_T;
1016 	      END IF;
1017 
1018 	    END IF;
1019 
1020 	    b39 := G_HEADER_AND_LINE_FREIGHT_T;
1021 
1022 
1023 	    -----added for the Returns project
1024 	    IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1025 	    THEN
1026 	      b45:= G_HEAD_LINE_RETURN_FREIGHT_T;
1027 	    END IF;
1028 
1029 	  END IF;
1030    --TaxER end
1031 
1032   END IF;
1033 
1034   IF G_debug_flag = 'Y'
1035   THEN
1036     oe_debug_pub.add
1037     (b1 || ' ' || b2 || ' ' || b3 || ' ' || b4 || ' ' || b5 || ' ' || b6 || ' '
1038    || b7 || ' ' || b8 || ' ' || b9 || ' ' || b10 || ' ' || b11 || ' ' || b12 || ' '
1039    || b13 || ' ' || b14 || ' ' || b15 || ' ' || b16 || ' ' || b17 || ' ' || b18||' '
1040    || b23 || ' ' || b24 || ' ' || b25 || ' ' || b26 || ' ' || b27 || ' ' || b28||' '||b29
1041    || ' ' || b37 ||' ' || b38 ||' ' || b39 ||' ' || b44, 2 );
1042 
1043     oe_debug_pub.add( ' Out from balance_types_om_nohold ' );
1044   END IF;
1045 END balance_types_om_nohold;
1046 ---------------------------------------------------------------
1047 
1048 PROCEDURE balance_types_om_hold
1049 (p_credit_check_rule_rec   IN    OE_CREDIT_CHECK_UTIL.oe_credit_rules_rec_type
1050 )
1051 IS
1052 BEGIN
1053   b1 := -1;
1054   b2 := -1;
1055   b3 := -1;
1056   b4 := -1;
1057   b5 := -1;
1058   b6 := -1;
1059   b7 := -1;
1060   b8 := -1;
1061   b9 := -1;
1062   b10 := -1;
1063   b11 := -1;
1064   b12 := -1;
1065   b13 := -1;
1066   b14 := -1;
1067   b15 := -1;
1068   b16 := -1;
1069   b17 := -1;
1070   b18 := -1;
1071   b21 := -1;
1072   b22 := -1;
1073 ----added for the RETURNS
1074   b23 := -1;
1075   b24 := -1;
1076   b25 := -1;
1077   b26 := -1;
1078   b27 := -1;
1079   b28 := -1;
1080   b29 := -1;
1081   b30 := -1;
1082   b31 := -1;
1083   b32 := -1;
1084   b33 := -1;
1085   b34 := -1;
1086   b35 := -1;
1087   b36 := -1;
1088   --TaxER start
1089   b37 := -1;
1090   b38 := -1;
1091   b39 := -1;
1092   b40 := -1;
1093   b41 := -1;
1094   b42 := -1;
1095   b43 := -1;
1096   b44 := -1;
1097   b45 := -1;
1098   b46 := -1;
1099   b47 := -1;
1100   b48 := -1;
1101   --TaxER end
1102 
1103 
1104   -- Determine which balance types to select:
1105   -- Chosing a balance type is indicated by setting the corresponding
1106   -- variable to a balance type global constant
1107   -- (e.g. b4 := G_ORDER_HOLDS)
1108 
1109   IF  p_credit_check_rule_rec.uninvoiced_orders_flag     =  'Y'  THEN
1110     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE' THEN
1111       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1112         b11 := G_LINE_HOLDS;
1113 
1114         -----added for the Returns project
1115         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1116         THEN
1117           b31 := G_LINE_RETURN_HOLDS;
1118         END IF;
1119 
1120       END IF;
1121     ELSE
1122       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1123         b10 := G_ORDER_HOLDS;
1124 
1125         -----added for the Returns project
1126         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1127         THEN
1128           b30 := G_ORDER_RETURN_HOLDS;
1129         END IF;
1130 
1131       END IF;
1132     END IF;
1133   END IF;
1134 
1135   IF  p_credit_check_rule_rec.include_tax_flag           =  'Y'  THEN
1136     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE' THEN
1137       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1138         b14 := G_LINE_TAX_HOLDS;
1139 
1140         -----added for the Returns project
1141         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1142         THEN
1143           b33:= G_LINE_RETURN_TAX_HOLDS;
1144         END IF;
1145 
1146       END IF;
1147     ELSE
1148       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1149 	b13 := G_ORDER_TAX_HOLDS;
1150 
1151         -----added for the Returns project
1152         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1153         THEN
1154           b32:= G_ORDER_RETURN_TAX_HOLDS;
1155         END IF;
1156 
1157       END IF;
1158     END IF;
1159   END IF;
1160 
1161   IF  p_credit_check_rule_rec.incl_freight_charges_flag  =  'Y'  THEN
1162     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE' THEN
1163       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1164 	b16 := G_LINE_FREIGHT_HOLDS;
1165 
1166         -----added for the Returns project
1167         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1168         THEN
1169           b35:= G_LINE_RETURN_FREIGHT_HOLDS;
1170         END IF;
1171 
1172       END IF;
1173     ELSE
1174       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1175         b15 := G_ORDER_FREIGHT_HOLDS;
1176 
1177         -----added for the Returns project
1178         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1179         THEN
1180           b34:= G_ORDER_RETURN_FREIGHT_HOLDS;
1181         END IF;
1182 
1183       END IF;
1184     END IF;
1185 
1186     IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1187       b17 := G_HEADER_LINE_FREIGHT_HOLDS;
1188 
1189       -----added for the Returns project
1190       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1191       THEN
1192         b36:= G_H_L_RETURN_FREIGHT_HOLDS;
1193       END IF;
1194 
1195     END IF;
1196    --TaxER start
1197 	  IF  p_credit_check_rule_rec.include_tax_flag  =  'Y'
1198 	  THEN
1199 	    IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
1200 	    THEN
1201 
1202 	      IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1203 	      THEN
1204 	        b41 := G_LINE_FREIGHT_HOLDS_T;
1205 
1206 	        -----added for the Returns project
1207 	        IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1208 	        THEN
1209 	          b47:= G_LINE_RETURN_FREIGHT_HOLDS_T;
1210 	        END IF;
1211 
1212 	      END IF;
1213 	    ELSE
1214 
1215 	     IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1216 	     THEN
1217 	        b40 := G_ORDER_FREIGHT_HOLDS_T;
1218 
1219 	        -----added for the Returns project
1220 	        IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1221 	        THEN
1222 	          b46:= G_ORDER_RETURN_FREIGHT_HOLDS_T;
1223 	        END IF;
1224 
1225 	      END IF;
1226 	    END IF;
1227 
1228 
1229 	    IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1230 	    THEN
1231 	      b42 := G_HEADER_LINE_FREIGHT_HOLDS_T;
1232 
1233 	      -----added for the Returns project
1234 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1235 	      THEN
1236 	        b48:= G_H_L_RETURN_FREIGHT_HOLDS_T;
1237 	      END IF;
1238 
1239 	    END IF;
1240 	  END IF;
1241    --TaxER end
1242   END IF;
1243 
1244   IF G_debug_flag = 'Y'
1245   THEN
1246     oe_debug_pub.add
1247   (b1 || ' ' || b2 || ' ' || b3 || ' ' || b4 || ' ' || b5 || ' ' || b6 || ' '
1248    || b7 || ' ' || b8 || ' ' || b9 || ' ' || b10 || ' ' || b11 || ' ' || b12 || ' '
1249    || b13 || ' ' || b14 || ' ' || b15 || ' ' || b16 || ' ' || b17 || ' ' || b18|| ' '
1250    || b30 || ' ' || b31 || ' ' || b32 || ' ' || b33 || ' ' || b34 || ' ' || b35|| ' '
1251    || b36|| ' ' || b40 ||' ' || b41 ||' ' || b42 || b46 ||' ' || b47 ||' ' || b48, 2 );
1252 
1253     oe_debug_pub.add( ' Out from balance_types_om_hold ' );
1254   END IF;
1255 END balance_types_om_hold;
1256 
1257 PROCEDURE balance_types_om
1258 ( p_credit_check_rule_rec   IN    OE_CREDIT_CHECK_UTIL.oe_credit_rules_rec_type
1259 )
1260 IS
1261 BEGIN
1262   b1 := -1;
1263   b2 := -1;
1264   b3 := -1;
1265   b4 := -1;
1266   b5 := -1;
1267   b6 := -1;
1268   b7 := -1;
1269   b8 := -1;
1270   b9 := -1;
1271   b10 := -1;
1272   b11 := -1;
1273   b12 := -1;
1274   b13 := -1;
1275   b14 := -1;
1276   b15 := -1;
1277   b16 := -1;
1278   b17 := -1;
1279   b18 := -1;
1280   b21 := -1;
1281   b22 := -1;
1282 
1283 ----added for the RETURNS
1284   b23 := -1;
1285   b24 := -1;
1286   b25 := -1;
1287   b26 := -1;
1288   b27 := -1;
1289   b28 := -1;
1290   b29 := -1;
1291   b30 := -1;
1292   b31 := -1;
1293   b32 := -1;
1294   b33 := -1;
1295   b34 := -1;
1296   b35 := -1;
1297   b36 := -1;
1298   --TaxER start
1299   b37 := -1;
1300   b38 := -1;
1301   b39 := -1;
1302   b40 := -1;
1303   b41 := -1;
1304   b42 := -1;
1305   b43 := -1;
1306   b44 := -1;
1307   b45 := -1;
1308   b46 := -1;
1309   b47 := -1;
1310   b48 := -1;
1311   --TaxER end
1312 
1313 
1314   -- Determine which balance types to select:
1315   -- Chosing a balance type is indicated by setting the corresponding
1316   -- variable to a balance type global constant
1317   -- (e.g. b4 := G_ORDER_HOLDS)
1318 
1319   IF  p_credit_check_rule_rec.uninvoiced_orders_flag     =  'Y'  THEN
1320     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE' THEN
1321       b3 := G_LINE_UNINVOICED_ORDERS;
1322 
1323       -----added for the Returns project
1324       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1325       THEN
1326         b24 := G_LINE_RETURN_UNINV_ORDERS;
1327       END IF;
1328 
1329       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'  THEN
1330         b11 := G_LINE_HOLDS;
1331 
1332         -----added for the Returns project
1333         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1334         THEN
1335           b31 := G_LINE_RETURN_HOLDS;
1336         END IF;
1337 
1338       END IF;
1339     ELSE
1340       b1 := G_HEADER_UNINVOICED_ORDERS;
1341 
1342       -----added for the Returns project
1343       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1344       THEN
1345         b23 := G_HEAD_RETURN_UNINV_ORDERS;
1346       END IF;
1347 
1348       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1349       THEN
1350         b10 := G_ORDER_HOLDS;
1351 
1352         -----added for the Returns project
1353         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1354         THEN
1355           b30 := G_ORDER_RETURN_HOLDS;
1356         END IF;
1357 
1358       END IF;
1359     END IF;
1360   END IF;
1361   IF  p_credit_check_rule_rec.include_tax_flag           =  'Y'
1362   THEN
1363     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
1364     THEN
1365       b4 := G_LINE_UNINVOICED_ORDERS_TAX;
1366 
1367       -----added for the Returns project
1368       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1369       THEN
1370         b26:= G_LINE_RETURN_UNINV_ORD_TAX;
1371       END IF;
1372 
1373       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1374       THEN
1375         b14 := G_LINE_TAX_HOLDS;
1376 
1377         -----added for the Returns project
1378         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1379         THEN
1380           b33:= G_LINE_RETURN_TAX_HOLDS;
1381         END IF;
1382 
1383       END IF;
1384     ELSE
1385       b2 := G_HEADER_UNINVOICED_ORDERS_TAX;
1386 
1387       -----added for the Returns project
1388       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1389       THEN
1390         b25:= G_HEAD_RETURN_UNINV_ORD_TAX;
1391       END IF;
1392 
1393       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1394       THEN
1395 	b13 := G_ORDER_TAX_HOLDS;
1396 
1397         -----added for the Returns project
1398         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1399         THEN
1400           b32:= G_ORDER_RETURN_TAX_HOLDS;
1401         END IF;
1402 
1403       END IF;
1404     END IF;
1405   END IF;
1406   IF  p_credit_check_rule_rec.incl_freight_charges_flag  =  'Y'
1407   THEN
1408     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
1409     THEN
1410       b5 := G_LINE_UNINVOICED_FREIGHT;
1411 
1412       -----added for the Returns project
1413       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1414       THEN
1415         b28:= G_LINE_RETURN_UNINV_FREIGHT;
1416       END IF;
1417 
1418       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1419       THEN
1420 	b16 := G_LINE_FREIGHT_HOLDS;
1421 
1422         -----added for the Returns project
1423         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1424         THEN
1425           b35:= G_LINE_RETURN_FREIGHT_HOLDS;
1426         END IF;
1427 
1428       END IF;
1429     ELSE
1430       b6 := G_HEADER_UNINVOICED_FREIGHT;
1431 
1432       -----added for the Returns project
1433       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1434       THEN
1435         b27:= G_HEAD_RETURN_UNINV_FREIGHT;
1436       END IF;
1437 
1438       IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1439       THEN
1440         b15 := G_ORDER_FREIGHT_HOLDS;
1441 
1442         -----added for the Returns project
1443         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1444         THEN
1445           b34:= G_ORDER_RETURN_FREIGHT_HOLDS;
1446         END IF;
1447 
1448       END IF;
1449     END IF;
1450     b7 := G_HEADER_AND_LINE_FREIGHT;
1451 
1452     -----added for the Returns project
1453     IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1454     THEN
1455       b29:= G_HEAD_LINE_RETURN_FREIGHT;
1456     END IF;
1457 
1458     IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1459     THEN
1460       b17 := G_HEADER_LINE_FREIGHT_HOLDS;
1461 
1462       -----added for the Returns project
1463       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1464       THEN
1465         b36:= G_H_L_RETURN_FREIGHT_HOLDS;
1466       END IF;
1467 
1468     END IF;
1469 
1470     --TaxER start
1471 	  IF  p_credit_check_rule_rec.include_tax_flag  =  'Y'
1472 	  THEN
1473 	    IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
1474 	    THEN
1475 	      b38 := G_LINE_UNINVOICED_FREIGHT_T;
1476 
1477 	      -----added for the Returns project
1478 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1479 	      THEN
1480 	        b44:= G_LINE_RETURN_UNINV_FREIGHT_T;
1481 	      END IF;
1482 
1483 	      IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1484 	      THEN
1485 	        b41 := G_LINE_FREIGHT_HOLDS_T;
1486 
1487 	        -----added for the Returns project
1488 	        IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1489 	        THEN
1490 	          b47:= G_LINE_RETURN_FREIGHT_HOLDS_T;
1491 	        END IF;
1492 
1493 	      END IF;
1494 	    ELSE
1495 	      b37 := G_HEADER_UNINVOICED_FREIGHT_T;
1496 
1497 	      -----added for the Returns project
1498 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1499 	      THEN
1500 	        b43:= G_HEAD_RETURN_UNINV_FREIGHT_T;
1501 	      END IF;
1502 
1503 	     IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1504 	     THEN
1505 	        b40 := G_ORDER_FREIGHT_HOLDS_T;
1506 
1507 	        -----added for the Returns project
1508 	        IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1509 	        THEN
1510 	          b46:= G_ORDER_RETURN_FREIGHT_HOLDS_T;
1511 	        END IF;
1512 
1513 	      END IF;
1514 	    END IF;
1515 
1516 	    b39 := G_HEADER_AND_LINE_FREIGHT_T;
1517 
1518 
1519 	    -----added for the Returns project
1520 	    IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1521 	    THEN
1522 	      b45:= G_HEAD_LINE_RETURN_FREIGHT_T;
1523 	    END IF;
1524 
1525 	    IF p_credit_check_rule_rec.orders_on_hold_flag  =  'N'
1526 	    THEN
1527 	      b42 := G_HEADER_LINE_FREIGHT_HOLDS_T;
1528 
1529 	      -----added for the Returns project
1530 	      IF p_credit_check_rule_rec.include_returns_flag = 'Y'
1531 	      THEN
1532 	        b48:= G_H_L_RETURN_FREIGHT_HOLDS_T;
1533 	      END IF;
1534 
1535 	    END IF;
1536 	  END IF;
1537     --TaxER end
1538   END IF;
1539 
1540   -- Set value for external exposure
1541   IF  p_credit_check_rule_rec.include_external_exposure_flag  =  'Y'
1542   THEN
1543     b18 := G_EXTERNAL_EXPOSURE;
1544   END IF;
1545 
1546   IF G_debug_flag = 'Y'
1547   THEN
1548     oe_debug_pub.add
1549   (b1 || ' ' || b2 || ' ' || b3 || ' ' || b4 || ' ' || b5 || ' ' || b6 || ' '
1550    || b7 || ' ' || b8 || ' ' || b9 || ' ' || b10 || ' ' || b11 || ' ' || b12 || ' '
1551    || b13 || ' ' || b14 || ' ' || b15 || ' ' || b16 || ' ' || b17 || ' ' || b18 || ' '
1552    || b23 || ' ' || b24 || ' ' || b25 || ' ' || b26 || ' ' || b27 || ' ' || b28|| ' '
1553    || b29 || ' ' || b30 || ' ' || b31 || ' ' || b32 || ' ' || b33 || ' ' || b34|| ' '
1554    || b35 || ' ' || b36 || ' ' || b37 ||' ' || b38 ||' ' || b39 ||' ' || b40 ||' ' || b41 ||' ' || b42 ||' ' || b43 ||
1555    ' ' || b44 ||' ' || b45 ||' ' || b46 ||' ' || b47 ||' ' || b48, 2 );
1556 
1557     oe_debug_pub.add( ' Out from balance_types_om ' );
1558   END IF;
1559 END balance_types_om;
1560 
1561 -----------------------------------------------------------
1562 -- This procedure will set the balance types for the
1563 -- AR exposure based on the credit check rules setup
1564 ----------------------------------------------------------
1565 PROCEDURE balance_types_ar
1566 ( p_credit_check_rule_rec   IN    OE_CREDIT_CHECK_UTIL.oe_credit_rules_rec_type
1567 )
1568 IS
1569 BEGIN
1570   b1 := -1;
1571   b2 := -1;
1572   b3 := -1;
1573   b4 := -1;
1574   b5 := -1;
1575   b6 := -1;
1576   b7 := -1;
1577   b8 := -1;
1578   b9 := -1;
1579   b10 := -1;
1580   b11 := -1;
1581   b12 := -1;
1582   b13 := -1;
1583   b14 := -1;
1584   b15 := -1;
1585   b16 := -1;
1586   b17 := -1;
1587   b18 := -1;
1588   b21 := -1 ;
1589   b22 := -1;
1590 
1591 ----added for the RETURNS
1592   b23 := -1;
1593   b24 := -1;
1594   b25 := -1;
1595   b26 := -1;
1596   b27 := -1;
1597   b28 := -1;
1598   b29 := -1;
1599   b30 := -1;
1600   b31 := -1;
1601   b32 := -1;
1602   b33 := -1;
1603   b34 := -1;
1604   b35 := -1;
1605   b36 := -1;
1606 
1607   IF  p_credit_check_rule_rec.include_payments_at_risk_flag  =  'Y'  THEN
1608     b9 := G_PAYMENTS_AT_RISK;
1609 
1610     IF p_credit_check_rule_rec.open_ar_days is NULL
1611     THEN
1612       b22 := G_BR_PAYMENTS_AT_RISK ;
1613     END IF;
1614 
1615   END IF;
1616   IF  p_credit_check_rule_rec.open_ar_balance_flag  =  'Y'  THEN
1617     b8 := G_INVOICES;
1618 
1619     IF p_credit_check_rule_rec.open_ar_days is NULL
1620     THEN
1621       b21 := G_BR_INVOICES ;
1622     END IF;
1623   END IF;
1624 
1625 
1626   IF G_debug_flag = 'Y'
1627   THEN
1628     oe_debug_pub.add
1629     (b1 || ' ' || b2 || ' ' || b3 || ' ' || b4 || ' ' || b5 || ' ' || b6 || ' '
1630         || b7 || ' ' || b8 || ' ' || b9 || ' ' || b10 || ' ' || b11 || ' ' || b12 || ' '
1631         || b13 || ' ' || b14 || ' ' || b15 || ' ' || b16 || ' ' || b17 || ' ' || b18 || ' ' || b21 || ' ' ||b22,2 );
1632 
1633     oe_debug_pub.add( ' Out from balance_types_ar ');
1634   END IF;
1635 
1636 END balance_types_ar;
1637 
1638 
1639 ------------------------------------------------------------------
1640 -- COMMENTS: This procedure will calculate all the
1641 --           buckets that are required to be summed
1642 --           to arive at the exposure balance
1643 --           The driving date for the calculate buckets
1644 --           will be the Horizon date ( both OM and AR )
1645 --          as the Main starting Bucket will be the largest
1646 --          bucket that includes this Horizon date
1647 --          Once the Main Bucket is calculated, all the
1648 --          Buckets to the LEFT of the Main Bucket is
1649 --         SUMMED UP.
1650 --         Now inside the Main Bucket, the remaining Buckets
1651 --         constitute the Fractional Amount and this
1652 --         procedure wil identify those Buckets as well.
1653 
1654 --        p_interval parameter is used to identify the cases
1655 --        where the credit check rule was not setup to use
1656 --        horizon days.
1657 --        In such cases, the exposure can be recovered by
1658 --        SUMMING overal exposure for all the largest
1659 --        buckets , as we need to use all the data
1660 -----------------------------------------------------------------
1661 PROCEDURE calculate_buckets
1662 ( p_date         IN   NUMBER
1663 , p_interval     IN   NUMBER
1664 , x_main_bucket  OUT  NOCOPY NUMBER
1665 , x_binary_tbl   OUT  NOCOPY oe_credit_exposure_pvt.Binary_tbl_type
1666 )
1667 IS
1668   l_date                NUMBER;
1669   l_level               NUMBER;
1670   l_bucket_length       NUMBER;
1671   l_bucket              NUMBER;
1672   l_main_bucket_length  NUMBER;
1673   i                     BINARY_INTEGER;
1674 BEGIN
1675   l_date  := p_date;
1676 
1677   IF G_debug_flag = 'Y'
1678   THEN
1679     oe_debug_pub.add( 'Into calculate_buckets ');
1680     oe_debug_pub.add( 'p_date =>'|| p_date );
1681     oe_debug_pub.add( 'p_interval =>' || p_interval );
1682   END IF;
1683 
1684   -- the Main Bucket
1685   l_level             :=  G_MAX_BUCKET_LEVEL;
1686   l_bucket_length     := POWER( 2, l_level );
1687   l_bucket            := l_date  -  MOD( l_date, l_bucket_length );
1688 
1689   l_main_bucket_length := l_bucket_length;
1690   x_main_bucket        := l_bucket;
1691 
1692   IF G_debug_flag = 'Y'
1693   THEN
1694     oe_debug_pub.add( 'l_date ==> '|| l_date);
1695     oe_debug_pub.add( 'l_bucket_length ==> '|| l_bucket_length );
1696     oe_debug_pub.add( 'Main Bucket ==> '|| x_main_bucket ,1);
1697   END IF;
1698 
1699   IF p_interval is NOT NULL
1700   THEN
1701     -- The Buckets need to be identified as the Horizon interval
1702     -- is included.
1703     BEGIN
1704   -- the fractional amount of the Main Bucket
1705   -- Start from the Main Bucket and navigate to
1706   -- the right of the bucket
1707  --  by decreasing the level for each iteration and thereby
1708   -- reducing the bucket lengths as well as the bucket lengths as
1709   -- well. Include the buckets where the buckets comprise
1710   -- data for the dates <= than the horizon date and continue from
1711   -- there
1712 
1713      WHILE  l_bucket  - 1  <>  l_date
1714      LOOP
1715       IF l_bucket + l_bucket_length - 1  <=  l_date
1716       THEN
1717       --  include Bucket
1718 
1719           x_binary_tbl( l_level ).bucket        := l_bucket;
1720           x_binary_tbl( l_level ).bucket_length := l_bucket_length;
1721 
1722          l_bucket  := l_bucket + l_bucket_length;
1723 
1724       END IF;
1725 
1726       l_level  := l_level - 1;
1727       l_bucket_length  := l_bucket_length / 2;
1728 
1729      END LOOP;
1730 
1731      IF G_debug_flag = 'Y'
1732      THEN
1733        oe_debug_pub.add( 'Out of the Main LOOP');
1734        oe_debug_pub.add( '-------------------------------------- ');
1735        oe_debug_pub.add( 'selected buckets: ' );
1736      END IF;
1737 
1738       i  :=  x_binary_tbl.FIRST;
1739       WHILE i IS NOT NULL LOOP
1740 
1741      IF G_debug_flag = 'Y'
1742      THEN
1743       oe_debug_pub.add
1744       ( 'Bucket Number: ' || x_binary_tbl(i).bucket || ', '
1745           || 'Bucket Length:' || x_binary_tbl(i).bucket_length, 2 );
1746      END IF;
1747 
1748         i :=  x_binary_tbl.NEXT(i);
1749       END LOOP;
1750 
1751       oe_debug_pub.add( '-------------------------------------- ');
1752 
1753     END;
1754    ELSE
1755     oe_debug_pub.add( 'No need to calculate Buckets, no Horizon  ');
1756    END IF;
1757 
1758   IF G_debug_flag = 'Y'
1759   THEN
1760     oe_debug_pub.add( 'Out calculate_buckets ');
1761   END IF;
1762 
1763 
1764 END calculate_buckets;
1765 
1766 
1767 
1768 -----------------------------------------------------------------
1769 --- API to convert the amount using GL currency API
1770 -- with Traingulation
1771 ----------------------------------------------------------------
1772 FUNCTION convert_currency_amount
1773 ( p_amount                   IN   NUMBER
1774 , p_transactional_currency   IN   VARCHAR2
1775 , p_limit_currency           IN   VARCHAR2
1776 )
1777 RETURN NUMBER
1778 IS
1779   l_term     NUMBER;
1780 BEGIN
1781   BEGIN
1782     l_term :=
1783       OE_CREDIT_CHECK_UTIL.convert_currency_amount
1784       ( p_amount                  => p_amount
1785       , p_transactional_currency  => p_transactional_currency
1786       , p_limit_currency          => p_limit_currency
1787       , p_functional_currency     => g_functional_currency
1788       , p_conversion_date         => SYSDATE
1789       , p_conversion_type         => g_conversion_type
1790       );
1791   EXCEPTION
1792     WHEN  GL_CURRENCY_API.NO_RATE  OR
1793      GL_CURRENCY_API.INVALID_CURRENCY
1794     THEN
1795      oe_debug_pub.add( 'conversion exception for '
1796              || p_transactional_currency, 1 );
1797       add_error_currency( g_error_curr_tbl, p_transactional_currency );
1798   END;
1799 
1800   RETURN NVL( l_term, 0 );
1801 
1802 END convert_currency_amount;
1803 
1804 ----------------------------------------------------------
1805 ---- COMMENTS: Fucntion to select the overall exposure from the
1806 --             OE_CREDIT_SUMMARIES table for the balance types
1807 --             This function will be called from the main
1808 --              GET_EXPOSURE procedure both for AR and OM exposure
1809 --             as the exposure balance is governed by the
1810 --             balance types used
1811 --------------------------------------------------------------
1812 FUNCTION retrieve_exposure
1813 ( p_binary_tbl           IN  oe_credit_exposure_pvt.Binary_tbl_type
1814 , p_site_use_id          IN  NUMBER
1815 , p_customer_id          IN  NUMBER
1816 , p_party_id             IN  NUMBER
1817 , p_org_id               IN  NUMBER
1818 , p_include_all_flag     IN  VARCHAR2
1819 , p_usage_curr_tbl       IN  OE_CREDIT_CHECK_UTIL.curr_tbl_type
1820 , p_limit_curr_code      IN  HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1821 , p_main_bucket          IN  NUMBER
1822 , p_global_exposure_flag IN  VARCHAR2
1823 , p_credit_check_rule_rec IN
1824      OE_CREDIT_CHECK_UTIL.oe_credit_rules_rec_type
1825 , x_error_curr_tbl       IN  OUT NOCOPY  OE_CREDIT_CHECK_UTIL.curr_tbl_type
1826 )
1827 RETURN NUMBER
1828 IS
1829   i                  BINARY_INTEGER;
1830   l_site_use_id      NUMBER;
1831   l_br_site_use_id   NUMBER;
1832   l_currency_code HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE;
1833 
1834   l_balance          NUMBER := 0 ;
1835   l_br_balance       NUMBER := 0 ;
1836   l_term             NUMBER := 0 ;
1837   l_total            NUMBER := 0 ;
1838 
1839   l_bucket          NUMBER;
1840   l_bucket_length   NUMBER;
1841   j                 NUMBER;
1842 
1843   l_br_bucket          NUMBER;
1844   l_br_bucket_length   NUMBER;
1845 
1846   CURSOR site_balance_csr IS
1847   SELECT SUM( balance )
1848   FROM   oe_credit_summaries
1849   WHERE  balance_type  IN
1850  	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1851 	  b10, b11, b12, b13, b14, b15, b16, b17, b18,b37,b38,b39,b40,b41,b42)  --TaxER
1852   AND  site_use_id           =  l_site_use_id
1853   AND  currency_code         =  l_currency_code
1854   AND  bucket                =  l_bucket
1855   AND  bucket_duration       =  l_bucket_length
1856   ;
1857 
1858   ---added for the Returns project
1859   ---the same as above including Returns
1860   CURSOR site_balance_ret_csr IS
1861   SELECT NVL(SUM( balance ),0)
1862   FROM   oe_credit_summaries
1863   WHERE  balance_type  IN
1864  	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1865 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b23, b24,
1866         b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
1867   AND  site_use_id           =  l_site_use_id
1868   AND  currency_code         =  l_currency_code
1869   AND  bucket                =  l_bucket
1870   AND  bucket_duration       =  l_bucket_length;
1871 
1872 
1873   CURSOR site_balance_stub_csr IS
1874   SELECT SUM( balance )
1875   FROM   oe_credit_summaries
1876   WHERE  balance_type  IN
1877 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1878 	  b10, b11, b12, b13, b14, b15, b16, b17, b18,b37,b38,b39,b40,b41,b42)  --TaxER
1879   AND  site_use_id           =  l_site_use_id
1880   AND  currency_code         =  l_currency_code
1881   AND  bucket                <  l_bucket
1882   AND  bucket_duration       =  l_bucket_length
1883   ;
1884 
1885   ---added for the Returns project
1886   ---the same as above including Returns
1887   CURSOR site_balance_stub_ret_csr IS
1888   SELECT SUM( balance )
1889   FROM   oe_credit_summaries
1890   WHERE  balance_type  IN
1891 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1892 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b23, b24,
1893         b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
1894   AND  site_use_id           =  l_site_use_id
1895   AND  currency_code         =  l_currency_code
1896   AND  bucket                <  l_bucket
1897   AND  bucket_duration       =  l_bucket_length;
1898 
1899 
1900   CURSOR site_br_stub_csr IS
1901   SELECT SUM( balance )
1902   FROM   oe_credit_summaries
1903   WHERE  balance_type  IN
1904           (21,22)
1905   AND  site_use_id           =  l_br_site_use_id
1906   AND  currency_code         =  l_currency_code
1907   AND  bucket                <  l_br_bucket
1908   AND bucket_duration        =  l_br_bucket_length
1909   ;
1910 
1911 
1912   CURSOR customer_balance_csr IS
1913   SELECT SUM( balance )
1914   FROM   oe_credit_summaries
1915   WHERE  balance_type  IN
1916 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1917           b10, b11, b12, b13, b14, b15, b16, b17, b18, b21,b22,b37,b38,b39,b40,b41,b42)  --TaxER
1918   AND  cust_account_id       =  p_customer_id
1919   AND  ((org_id              =  p_org_id)
1920          OR
1921         (org_id IS NULL AND p_org_id IS NULL))
1922   AND  currency_code         =  l_currency_code
1923   AND  bucket                =  l_bucket
1924   AND bucket_duration        =  l_bucket_length
1925   ;
1926 
1927   ---added for the Returns project
1928   ---the same as above including Returns
1929   CURSOR customer_balance_ret_csr IS
1930   SELECT SUM( balance )
1931   FROM   oe_credit_summaries
1932   WHERE  balance_type  IN
1933 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1934           b10, b11, b12, b13, b14, b15, b16, b17, b18, b21,b22, b23, b24,
1935         b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
1936   AND  cust_account_id       =  p_customer_id
1937   AND  ((org_id              =  p_org_id)
1938          OR
1939         (org_id IS NULL AND p_org_id IS NULL))
1940   AND  currency_code         =  l_currency_code
1941   AND  bucket                =  l_bucket
1942   AND bucket_duration         =  l_bucket_length;
1943 
1944 
1945   CURSOR customer_balance_stub_csr IS
1946   SELECT SUM( balance )
1947   FROM   oe_credit_summaries
1948   WHERE  balance_type  IN
1949 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1950 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
1951   AND  cust_account_id       =  p_customer_id
1952   AND  ((org_id              =  p_org_id)
1953          OR
1954         (org_id IS NULL AND p_org_id IS NULL))
1955   AND  currency_code         =  l_currency_code
1956   AND  bucket                <  l_bucket
1957   AND bucket_duration         =  l_bucket_length
1958   ;
1959 
1960   ---added for the Returns project
1961   ---the same as above including Returns
1962   CURSOR customer_balance_stub_ret_csr IS
1963   SELECT SUM( balance )
1964   FROM   oe_credit_summaries
1965   WHERE  balance_type  IN
1966 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
1967 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b21, b22, b23, b24,
1968         b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
1969   AND  cust_account_id       =  p_customer_id
1970   AND  ((org_id              =  p_org_id)
1971          OR
1972         (org_id IS NULL AND p_org_id IS NULL))
1973   AND  currency_code         =  l_currency_code
1974   AND  bucket                <  l_bucket
1975   AND bucket_duration         =  l_bucket_length
1976   ;
1977 
1978 
1979   CURSOR customer_br_stub_csr IS
1980   SELECT SUM( balance )
1981   FROM   oe_credit_summaries
1982   WHERE  balance_type  IN
1983           (21,22)
1984   AND  cust_account_id       =  p_customer_id
1985   AND  ((org_id              =  p_org_id)
1986          OR
1987         (org_id IS NULL AND p_org_id IS NULL))
1988   AND  currency_code         =  l_currency_code
1989   AND  bucket                <  l_br_bucket
1990   AND bucket_duration         =  l_br_bucket_length
1991   ;
1992 
1993 
1994   CURSOR cust_balance_csr_global IS
1995   SELECT SUM( balance )
1996   FROM   oe_credit_summaries
1997   WHERE  balance_type  IN
1998          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
1999   	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2000   AND  cust_account_id       =  p_customer_id
2001   AND  currency_code         =  l_currency_code
2002   AND  bucket                =  l_bucket
2003   AND bucket_duration         =  l_bucket_length
2004   ;
2005 
2006   ---added for the Returns project
2007   ---the same as above including Returns
2008 
2009   CURSOR cust_balance_ret_csr_global IS
2010   SELECT SUM( balance )
2011   FROM   oe_credit_summaries
2012   WHERE  balance_type  IN
2013          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2014   	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2015           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2016           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2017   AND  cust_account_id       =  p_customer_id
2018   AND  currency_code         =  l_currency_code
2019   AND  bucket                =  l_bucket
2020   AND bucket_duration        =  l_bucket_length
2021   ;
2022 
2023   CURSOR cust_balance_stub_csr_global IS
2024   SELECT SUM( balance )
2025   FROM   oe_credit_summaries
2026   WHERE  balance_type  IN
2027          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2028 	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2029   AND  cust_account_id       =  p_customer_id
2030   AND  currency_code         =  l_currency_code
2031   AND  bucket                <  l_bucket
2032   AND bucket_duration         =  l_bucket_length
2033   ;
2034 
2035   ---added for the Returns project
2036   ---the same as above including Returns
2037   CURSOR cust_bal_stub_ret_csr_global IS
2038   SELECT SUM( balance )
2039   FROM   oe_credit_summaries
2040   WHERE  balance_type  IN
2041          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2042 	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2043           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2044           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2045   AND  cust_account_id       =  p_customer_id
2046   AND  currency_code         =  l_currency_code
2047   AND  bucket                <  l_bucket
2048   AND bucket_duration         =  l_bucket_length
2049   ;
2050 
2051   CURSOR cust_br_stub_csr_global IS
2052   SELECT SUM( balance )
2053   FROM   oe_credit_summaries
2054   WHERE  balance_type  IN
2055           (21,22)
2056   AND  cust_account_id       =  p_customer_id
2057   AND  currency_code         =  l_currency_code
2058   AND  bucket                <  l_br_bucket
2059   AND bucket_duration         =  l_br_bucket_length
2060   ;
2061 
2062 
2063 --------------------------------------------------------------
2064 
2065   CURSOR party_balance_csr_global IS
2066   SELECT SUM( balance )
2067   FROM   oe_credit_summaries
2068   WHERE  balance_type  IN
2069          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2070   	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2071   AND  party_id              =  p_party_id
2072   AND  currency_code         =  l_currency_code
2073   AND  bucket                =  l_bucket
2074   AND bucket_duration         =  l_bucket_length
2075   ;
2076 
2077   ---added for the Returns project
2078   ---the same as above including Returns
2079 
2080   CURSOR party_balance_ret_csr_global IS
2081   SELECT SUM( balance )
2082   FROM   oe_credit_summaries
2083   WHERE  balance_type  IN
2084          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2085   	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2086           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2087           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2088   AND  party_id              =  p_party_id
2089   AND  currency_code         =  l_currency_code
2090   AND  bucket                =  l_bucket
2091   AND bucket_duration         =  l_bucket_length
2092   ;
2093 
2094 
2095   CURSOR party_balance_stub_csr_global IS
2096   SELECT SUM( balance )
2097   FROM   oe_credit_summaries
2098   WHERE  balance_type  IN
2099          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2100 	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2101   AND  party_id              =  p_party_id
2102   AND  currency_code         =  l_currency_code
2103   AND  bucket                <  l_bucket
2104   AND bucket_duration         =  l_bucket_length
2105   ;
2106 
2107   ---added for the Returns project
2108   ---the same as above including Returns
2109   CURSOR party_bal_stub_ret_csr_global IS
2110   SELECT SUM( balance )
2111   FROM   oe_credit_summaries
2112   WHERE  balance_type  IN
2113          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2114 	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2115            b23, b24, b25, b26, b27, b28, b29, b30, b31,
2116           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2117   AND  party_id              =  p_party_id
2118   AND  currency_code         =  l_currency_code
2119   AND  bucket                <  l_bucket
2120   AND bucket_duration         =  l_bucket_length
2121   ;
2122 
2123   CURSOR party_br_stub_csr_global IS
2124   SELECT SUM( balance )
2125   FROM   oe_credit_summaries
2126   WHERE  balance_type  IN
2127           (21,22)
2128   AND  party_id              =  p_party_id
2129   AND  currency_code         =  l_currency_code
2130   AND  bucket                <  l_br_bucket
2131   AND bucket_duration         =  l_br_bucket_length
2132   ;
2133 
2134 
2135 -------------------------------------------------------------
2136   CURSOR party_h_balance_csr_global IS
2137   SELECT SUM( oes.balance )
2138   FROM   oe_credit_summaries oes
2139      ,   hz_hierarchy_nodes hn
2140   WHERE  oes.balance_type  IN
2141          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2142   	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2143   AND  hn.parent_id                    = p_party_id
2144   AND  hn.parent_object_type           = 'ORGANIZATION'
2145   and  hn.parent_table_name            = 'HZ_PARTIES'
2146   and  hn.child_object_type            = 'ORGANIZATION'
2147   and  hn.effective_start_date  <=  sysdate
2148   and  hn.effective_end_date    >= SYSDATE
2149   and  hn.hierarchy_type
2150                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2151   AND  oes.party_id                        =  hn.child_id
2152   AND  oes.currency_code                   =  l_currency_code
2153   AND  oes.bucket                          =  l_bucket
2154   AND  oes.bucket_duration                   =  l_bucket_length
2155   ;
2156 
2157 
2158   ---added for the Returns project
2159   ---the same as above including Returns
2160   CURSOR party_h_bal_ret_csr_global IS
2161   SELECT SUM( oes.balance )
2162   FROM   oe_credit_summaries oes
2163      ,   hz_hierarchy_nodes hn
2164   WHERE  oes.balance_type  IN
2165          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2166   	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2167           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2168           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2169   AND  hn.parent_id                    = p_party_id
2170   AND  hn.parent_object_type           = 'ORGANIZATION'
2171   and  hn.parent_table_name            = 'HZ_PARTIES'
2172   and  hn.child_object_type            = 'ORGANIZATION'
2173   and  hn.effective_start_date  <=  sysdate
2174   and  hn.effective_end_date    >= SYSDATE
2175   and  hn.hierarchy_type
2176                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2177   AND  oes.party_id                        =  hn.child_id
2178   AND  oes.currency_code                   =  l_currency_code
2179   AND  oes.bucket                          =  l_bucket
2180   AND  oes.bucket_duration                   =  l_bucket_length
2181   ;
2182 
2183 
2184   CURSOR party_h_bal_stub_csr_gl IS
2185   SELECT SUM( oes.balance )
2186   FROM   oe_credit_summaries oes
2187      ,   hz_hierarchy_nodes hn
2188   WHERE  oes.balance_type  IN
2189          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2190 	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2191   AND  hn.parent_id                  = p_party_id
2192   AND  hn.parent_object_type           = 'ORGANIZATION'
2193   and  hn.parent_table_name            = 'HZ_PARTIES'
2194   and  hn.child_object_type            = 'ORGANIZATION'
2195   and  hn.effective_start_date  <=  sysdate
2196   and  hn.effective_end_date    >= SYSDATE
2197   and  hn.hierarchy_type
2198                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2199   AND  oes.party_id              =  hn.child_id
2200   AND  oes.currency_code         =  l_currency_code
2201   AND  oes.bucket                <  l_bucket
2202   AND  oes.bucket_duration         =  l_bucket_length
2203   ;
2204 
2205   ---added for the Returns project
2206   ---the same as above including Returns
2207   CURSOR party_h_bal_ret_stub_csr_gl IS
2208   SELECT SUM( oes.balance )
2209   FROM   oe_credit_summaries oes
2210      ,   hz_hierarchy_nodes hn
2211   WHERE  oes.balance_type  IN
2212          (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
2213 	  b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2214           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2215           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2216   AND  hn.parent_id                  = p_party_id
2217   AND  hn.parent_object_type           = 'ORGANIZATION'
2218   and  hn.parent_table_name            = 'HZ_PARTIES'
2219   and  hn.child_object_type            = 'ORGANIZATION'
2220   and  hn.effective_start_date  <=  sysdate
2221   and  hn.effective_end_date    >= SYSDATE
2222   and  hn.hierarchy_type
2223                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2224   AND  oes.party_id              =  hn.child_id
2225   AND  oes.currency_code         =  l_currency_code
2226   AND  oes.bucket                <  l_bucket
2227   AND  oes.bucket_duration         =  l_bucket_length
2228   ;
2229 
2230 
2231   CURSOR party_br_h_stub_csr_gl IS
2232   SELECT SUM( oes.balance )
2233   FROM   oe_credit_summaries oes
2234      ,   hz_hierarchy_nodes hn
2235   WHERE  oes.balance_type  IN
2236           (21,22)
2237   AND  hn.parent_id                  = p_party_id
2238   AND  hn.parent_object_type           = 'ORGANIZATION'
2239   and  hn.parent_table_name            = 'HZ_PARTIES'
2240   and  hn.child_object_type            = 'ORGANIZATION'
2241   and  hn.effective_start_date  <=  sysdate
2242   and  hn.effective_end_date    >= SYSDATE
2243   and  hn.hierarchy_type
2244                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2245   AND  oes.party_id              =  hn.child_id
2246   AND  oes.currency_code         =  l_currency_code
2247   AND  oes.bucket                <  l_br_bucket
2248   AND  oes.bucket_duration         =  l_br_bucket_length
2249   ;
2250 
2251 -------------------------------------------------------------
2252 
2253 
2254   CURSOR site_balance_all_curr_csr IS
2255   SELECT SUM( balance )
2256        , currency_code
2257   FROM   oe_credit_summaries
2258   WHERE  balance_type  IN
2259 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2260 	  b10, b11, b12, b13, b14, b15, b16, b17, b18,b37,b38,b39,b40,b41,b42)  --TaxER
2261   AND  site_use_id      =  l_site_use_id
2262   AND  bucket                =  l_bucket
2263   AND bucket_duration         =  l_bucket_length
2264   GROUP BY  currency_code
2265   ;
2266 
2267   ---added for the Returns project
2268   ---the same as above including Returns
2269 
2270   CURSOR site_bal_all_curr_ret_csr IS
2271   SELECT SUM( balance )
2272     , currency_code
2273   FROM   oe_credit_summaries
2274   WHERE  balance_type  IN
2275  	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2276 	  b10, b11, b12, b13, b14, b15, b16, b17, b18,
2277           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2278           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2279   AND  site_use_id           =  l_site_use_id
2280   AND  bucket                =  l_bucket
2281   AND  bucket_duration       =  l_bucket_length
2282   GROUP BY  currency_code
2283   ;
2284 
2285 
2286   CURSOR site_balance_all_curr_stub_csr IS
2287   SELECT SUM( balance )
2288        , currency_code
2289   FROM   oe_credit_summaries
2290   WHERE  balance_type  IN
2291 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2292 	  b10, b11, b12, b13, b14, b15, b16, b17, b18,b37,b38,b39,b40,b41,b42)  --TaxER
2293   AND  site_use_id      =  l_site_use_id
2294   AND  bucket           <  l_bucket
2295   AND bucket_duration   =  l_bucket_length
2296   GROUP BY  currency_code
2297   ;
2298 
2299   ---added for the Returns project
2300   ---the same as above including Returns
2301   CURSOR site_bal_all_curr_stub_ret_csr IS
2302   SELECT SUM( balance )
2303        , currency_code
2304   FROM   oe_credit_summaries
2305   WHERE  balance_type  IN
2306 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2307 	  b10, b11, b12, b13, b14, b15, b16, b17, b18,
2308           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2309           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2310   AND  site_use_id      =  l_site_use_id
2311   AND  bucket           <  l_bucket
2312   AND bucket_duration   =  l_bucket_length
2313   GROUP BY  currency_code
2314   ;
2315 
2316   CURSOR site_br_all_curr_stub_csr IS
2317   SELECT SUM( balance )
2318        , currency_code
2319   FROM   oe_credit_summaries
2320   WHERE  balance_type  IN
2321           (21,22)
2322   AND  site_use_id      =  l_br_site_use_id
2323   AND  bucket           <  l_br_bucket
2324   AND bucket_duration   =  l_br_bucket_length
2325   GROUP BY  currency_code
2326   ;
2327 
2328 
2329   CURSOR customer_balance_all_curr_csr IS
2330   SELECT SUM( balance )
2331        , currency_code
2332   FROM   oe_credit_summaries
2333   WHERE  balance_type  IN
2334          (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2335 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b21, b22 ,b37,b38,b39,b40,b41,b42)  --TaxER
2336   AND  cust_account_id      =  p_customer_id
2337   AND  ((org_id             =  p_org_id)
2338          OR
2339         (org_id IS NULL AND p_org_id IS NULL))
2340   AND  bucket               =  l_bucket
2341   AND bucket_duration       =  l_bucket_length
2342   GROUP BY currency_code
2343   ;
2344 
2345   ---added for the Returns project
2346   ---the same as above including Returns
2347   CURSOR customer_bal_all_curr_ret_csr IS
2348   SELECT SUM( balance )
2349        , currency_code
2350   FROM   oe_credit_summaries
2351   WHERE  balance_type  IN
2352          (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2353 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2354           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2355           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2356   AND  cust_account_id      =  p_customer_id
2357   AND  ((org_id             =  p_org_id)
2358          OR
2359         (org_id IS NULL AND p_org_id IS NULL))
2360   AND  bucket               =  l_bucket
2361   AND bucket_duration       =  l_bucket_length
2362   GROUP BY currency_code
2363   ;
2364 
2365   CURSOR customer_all_curr_stub_csr IS
2366   SELECT SUM( balance )
2367        , currency_code
2368   FROM   oe_credit_summaries
2369   WHERE  balance_type  IN
2370 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2371 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2372   AND  cust_account_id      =  p_customer_id
2373   AND  ((org_id             =  p_org_id)
2374          OR
2375         (org_id IS NULL AND p_org_id IS NULL))
2376   AND  bucket               <  l_bucket
2377   AND bucket_duration       =  l_bucket_length
2378   GROUP BY currency_code
2379   ;
2380 
2381   ---added for the Returns project
2382   ---the same as above including Returns
2383   CURSOR customer_all_curr_stub_ret_csr IS
2384   SELECT SUM( balance )
2385        , currency_code
2386   FROM   oe_credit_summaries
2387   WHERE  balance_type  IN
2388 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2389 	  b10, b11, b12, b13, b14, b15, b16, b17, b18, b21, b22,
2390           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2391           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2392   AND  cust_account_id      =  p_customer_id
2393   AND  ((org_id             =  p_org_id)
2394          OR
2395         (org_id IS NULL AND p_org_id IS NULL))
2396   AND  bucket               <  l_bucket
2397   AND bucket_duration       =  l_bucket_length
2398   GROUP BY currency_code
2399   ;
2400 
2401   CURSOR customer_br_all_curr_stub_csr IS
2402   SELECT SUM( balance )
2403        , currency_code
2404   FROM   oe_credit_summaries
2405   WHERE  balance_type  IN
2406           (21,22)
2407   AND  cust_account_id      =  p_customer_id
2408   AND  ((org_id             =  p_org_id)
2409          OR
2410         (org_id IS NULL AND p_org_id IS NULL))
2411   AND  bucket               <  l_br_bucket
2412   AND bucket_duration       =  l_br_bucket_length
2413   GROUP BY currency_code
2414   ;
2415 
2416 
2417   CURSOR cust_all_curr_csr_global IS
2418   SELECT SUM( balance )
2419        , currency_code
2420   FROM   oe_credit_summaries
2421   WHERE  balance_type  IN
2422 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2423 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2424   AND    cust_account_id     =  p_customer_id
2425   AND  bucket                =  l_bucket
2426   AND bucket_duration        =  l_bucket_length
2427   GROUP BY currency_code
2428   ;
2429 
2430   ---added for the Returns project
2431   ---the same as above including Returns
2432   CURSOR cust_all_curr_ret_csr_global IS
2433   SELECT SUM( balance )
2434        , currency_code
2435   FROM   oe_credit_summaries
2436   WHERE  balance_type  IN
2437 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2438 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,
2439           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2440           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2441   AND    cust_account_id      =  p_customer_id
2442   AND  bucket                 =  l_bucket
2443   AND bucket_duration         =  l_bucket_length
2444   GROUP BY currency_code
2445   ;
2446 
2447 
2448   CURSOR cust_all_curr_stub_csr_global IS
2449   SELECT SUM( balance )
2450        , currency_code
2451   FROM   oe_credit_summaries
2452   WHERE  balance_type  IN
2453 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2454 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2455   AND    cust_account_id      =  p_customer_id
2456   AND  bucket                 <  l_bucket
2457   AND bucket_duration         =  l_bucket_length
2458   GROUP BY currency_code
2459   ;
2460 
2461   ---added for the Returns project
2462   ---the same as above including Returns
2463   CURSOR cust_all_curr_stub_ret_csr_gl IS
2464   SELECT SUM( balance )
2465        , currency_code
2466   FROM   oe_credit_summaries
2467   WHERE  balance_type  IN
2468 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2469 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,
2470           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2471           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2472   AND    cust_account_id      =  p_customer_id
2473   AND  bucket                 <  l_bucket
2474   AND bucket_duration         =  l_bucket_length
2475   GROUP BY currency_code
2476   ;
2477 
2478   CURSOR cust_br_all_curr_stub_csr_gl IS
2479   SELECT SUM( balance )
2480        , currency_code
2481   FROM   oe_credit_summaries
2482   WHERE  balance_type  IN
2483           (21,22)
2484   AND    cust_account_id      =  p_customer_id
2485   AND  bucket                 <  l_br_bucket
2486   AND bucket_duration         =  l_br_bucket_length
2487   GROUP BY currency_code
2488   ;
2489 
2490 
2491 ----------------------------------------------------------
2492 
2493   CURSOR party_all_curr_csr_global IS
2494   SELECT SUM( balance )
2495        , currency_code
2496   FROM   oe_credit_summaries
2497   WHERE  balance_type  IN
2498 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2499 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2500   AND  party_id              = p_party_id
2501   AND  bucket                =  l_bucket
2502   AND bucket_duration        =  l_bucket_length
2503   GROUP BY currency_code
2504   ;
2505 
2506   ---added for the Returns project
2507   ---the same as above including Returns
2508   CURSOR party_all_curr_ret_csr_gl IS
2509   SELECT SUM( balance )
2510        , currency_code
2511   FROM   oe_credit_summaries
2512   WHERE  balance_type  IN
2513 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2514 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,
2515           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2516           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2517   AND  party_id              = p_party_id
2518   AND  bucket                =  l_bucket
2519   AND bucket_duration        =  l_bucket_length
2520   GROUP BY currency_code
2521   ;
2522 
2523   CURSOR party_all_curr_stub_csr_global IS
2524   SELECT SUM( balance )
2525        , currency_code
2526   FROM   oe_credit_summaries
2527   WHERE  balance_type  IN
2528 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2529 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2530   AND  party_id              = p_party_id
2531   AND  bucket                <  l_bucket
2532   AND bucket_duration        =  l_bucket_length
2533   GROUP BY currency_code
2534   ;
2535 
2536   ---added for the Returns project
2537   ---the same as above including Returns
2538   CURSOR party_all_curr_stub_ret_csr_gl IS
2539   SELECT SUM( balance )
2540        , currency_code
2541   FROM   oe_credit_summaries
2542   WHERE  balance_type  IN
2543 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2544 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,
2545           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2546           b32, b33, b34, b35, b36)
2547   AND  party_id              = p_party_id
2548   AND  bucket                <  l_bucket
2549   AND bucket_duration        =  l_bucket_length
2550   GROUP BY currency_code
2551   ;
2552 
2553   CURSOR party_br_all_curr_stub_csr_gl IS
2554   SELECT SUM( balance )
2555        , currency_code
2556   FROM   oe_credit_summaries
2557   WHERE  balance_type  IN
2558           (21,22)
2559   AND  party_id              = p_party_id
2560   AND  bucket                <  l_br_bucket
2561   AND bucket_duration        =  l_br_bucket_length
2562   GROUP BY currency_code
2563   ;
2564 
2565 
2566 ---------------------------------------------------
2567 
2568   CURSOR party_h_all_curr_csr_global IS
2569   SELECT SUM( oes.balance )
2570        , oes.currency_code
2571   FROM   oe_credit_summaries oes
2572      ,   hz_hierarchy_nodes hn
2573   WHERE  oes.balance_type  IN
2574 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2575 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2576   AND  hn.parent_id                  = p_party_id
2577   AND  hn.parent_object_type           = 'ORGANIZATION'
2578   and  hn.parent_table_name            = 'HZ_PARTIES'
2579   and  hn.child_object_type            = 'ORGANIZATION'
2580   and  hn.effective_start_date  <=  sysdate
2581   and  hn.effective_end_date    >= SYSDATE
2582   and  hn.hierarchy_type
2583                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2584   AND  oes.party_id              =  hn.child_id
2585   AND  oes.bucket                =  l_bucket
2586   AND  oes.bucket_duration         =  l_bucket_length
2587   GROUP BY oes.currency_code
2588   ;
2589 
2590   ---added for the Returns project
2591   ---the same as above including Returns
2592   CURSOR party_h_all_curr_ret_csr_gl IS
2593   SELECT SUM( oes.balance )
2594        , oes.currency_code
2595   FROM   oe_credit_summaries oes
2596      ,   hz_hierarchy_nodes hn
2597   WHERE  oes.balance_type  IN
2598 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2599 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,
2600           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2601           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2602   AND  hn.parent_id                  = p_party_id
2603   AND  hn.parent_object_type           = 'ORGANIZATION'
2604   and  hn.parent_table_name            = 'HZ_PARTIES'
2605   and  hn.child_object_type            = 'ORGANIZATION'
2606   and  hn.effective_start_date  <=  sysdate
2607   and  hn.effective_end_date    >= SYSDATE
2608   and  hn.hierarchy_type
2609                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2610   AND  oes.party_id              =  hn.child_id
2611   AND  oes.bucket                =  l_bucket
2612   AND  oes.bucket_duration         =  l_bucket_length
2613   GROUP BY oes.currency_code
2614   ;
2615 
2616   CURSOR party_h_all_curr_stub_csr_gl IS
2617   SELECT SUM( oes.balance )
2618        , oes.currency_code
2619     FROM   oe_credit_summaries oes
2620      ,   hz_hierarchy_nodes hn
2621   WHERE  oes.balance_type  IN
2622 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2623 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,b37,b38,b39,b40,b41,b42)  --TaxER
2624   AND  hn.parent_id                  = p_party_id
2625   AND  hn.parent_object_type           = 'ORGANIZATION'
2626   and  hn.parent_table_name            = 'HZ_PARTIES'
2627   and  hn.child_object_type            = 'ORGANIZATION'
2628   and  hn.effective_start_date  <=  sysdate
2629   and  hn.effective_end_date    >= SYSDATE
2630   and  hn.hierarchy_type
2631                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2632   AND  oes.party_id              = hn.child_id
2633   AND  oes.bucket                <  l_bucket
2634   AND  oes.bucket_duration         =  l_bucket_length
2635   GROUP BY oes.currency_code
2636   ;
2637 
2638   ---added for the Returns project
2639   ---the same as above including Returns
2640   CURSOR p_h_all_curr_stub_ret_csr_gl IS
2641   SELECT SUM( oes.balance )
2642        , oes.currency_code
2643     FROM   oe_credit_summaries oes
2644      ,   hz_hierarchy_nodes hn
2645   WHERE  oes.balance_type  IN
2646 	 (b1, b2, b3, b4, b5, b6, b7, b8, b9,
2647 	  b10, b11, b12, b13, b14, b15, b16, b17, b18 , b21, b22,
2648           b23, b24, b25, b26, b27, b28, b29, b30, b31,
2649           b32, b33, b34, b35, b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48)  --TaxER
2650   AND  hn.parent_id                  = p_party_id
2651   AND  hn.parent_object_type           = 'ORGANIZATION'
2652   and  hn.parent_table_name            = 'HZ_PARTIES'
2653   and  hn.child_object_type            = 'ORGANIZATION'
2654   and  hn.effective_start_date  <=  sysdate
2655   and  hn.effective_end_date    >= SYSDATE
2656   and  hn.hierarchy_type
2657                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2658   AND  oes.party_id              = hn.child_id
2659   AND  oes.bucket                <  l_bucket
2660   AND  oes.bucket_duration         =  l_bucket_length
2661   GROUP BY oes.currency_code
2662   ;
2663 
2664   CURSOR party_br_h_all_curr_stub_gl IS
2665   SELECT SUM( oes.balance )
2666        , oes.currency_code
2667     FROM   oe_credit_summaries oes
2668      ,   hz_hierarchy_nodes hn
2669   WHERE  oes.balance_type  IN
2670           (21,22)
2671   AND  hn.parent_id                  = p_party_id
2672   AND  hn.parent_object_type           = 'ORGANIZATION'
2673   and  hn.parent_table_name            = 'HZ_PARTIES'
2674   and  hn.child_object_type            = 'ORGANIZATION'
2675   and  hn.effective_start_date  <=  sysdate
2676   and  hn.effective_end_date    >= SYSDATE
2677   and  hn.hierarchy_type
2678                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
2679   AND  oes.party_id              = hn.child_id
2680   AND  oes.bucket                <  l_br_bucket
2681   AND  oes.bucket_duration         =  l_br_bucket_length
2682   GROUP BY oes.currency_code
2683   ;
2684 
2685 BEGIN
2686   --  We are determining now which summary cursor to open depending on
2687   -- whether the exposure is a site or customer level, and
2688   -- whether it is for all currencies or a list of currencies.
2689   --  The choice between order or line bill-to-site has already been
2690   -- made above by selecting the right balance types.
2691 
2692   -- for each of the for cases, there are nested loops.
2693   -- The only difference between the two site and customer level cases
2694   -- are the cursor names.
2695 
2696   IF G_debug_flag = 'Y'
2697   THEN
2698     oe_debug_pub.add( 'Into retrieve_exposure ');
2699     oe_debug_pub.add( '+++++++++++++++++++++++++++++++++++');
2700     oe_debug_pub.add( 'p_site_use_id          ==> '|| p_site_use_id );
2701     oe_debug_pub.add( 'p_customer_id          ==> '|| p_customer_id );
2702     oe_debug_pub.add( 'p_party_id             ==> ' || p_party_id );
2703     oe_debug_pub.add( 'p_org_id               ==> '|| p_org_id);
2704     oe_debug_pub.add( 'p_include_all_flag     ==> '|| p_include_all_flag );
2705     oe_debug_pub.add( 'p_main_bucket          ==> '|| p_main_bucket );
2706     oe_debug_pub.add( 'p_global_exposure_flag ==> '|| p_global_exposure_flag );
2707     oe_debug_pub.add( 'p_limit_curr_code      ==> '|| p_limit_curr_code );
2708     oe_debug_pub.add( 'include_returns_flag   ==> '|| p_credit_check_rule_rec.include_returns_flag);
2709     oe_debug_pub.add( '+++++++++++++++++++++++++++++++++++');
2710   END IF;
2711 
2712   l_total := 0;
2713   l_br_site_use_id := NULL ;
2714 
2715   IF  p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
2716   THEN
2717    l_br_bucket_length  := POWER( 2, G_MAX_BUCKET_LEVEL );
2718    l_br_bucket         := open_date( p_days  => NULL);
2719 
2720   END IF;
2721 
2722   IF  p_site_use_id  IS NOT NULL
2723   THEN
2724    ----------------------------------------------------------------
2725    ---------------------- Site Level Exposure ----------------------
2726 
2727     IF G_debug_flag = 'Y'
2728     THEN
2729       oe_debug_pub.add( 'exposure at site level ',1);
2730     END IF;
2731 
2732     l_site_use_id := p_site_use_id;
2733 
2734     IF G_debug_flag = 'Y'
2735     THEN
2736       oe_debug_pub.add( 'l_site_use_id => '|| l_site_use_id );
2737     END IF;
2738 
2739     IF  NVL(p_include_all_flag,'N')  =  'N'
2740     THEN
2741      IF G_debug_flag = 'Y'
2742      THEN
2743        oe_debug_pub.add('site - NOT all currencies');
2744      END IF;
2745       -- exposure is at site level and for a list of currencies
2746 
2747       -- for each currency in the list, loop
2748       i  := p_usage_curr_tbl.FIRST;
2749 
2750       WHILE  i  IS NOT NULL
2751       LOOP
2752 
2753         l_currency_code  := p_usage_curr_tbl(i).usage_curr_code;
2754 
2755 	l_bucket         :=  p_main_bucket;
2756 	l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
2757 
2758 
2759         ----change for the Return project
2760         ---- if Returns are included, the cursor site_balance_stub_ret_csr
2761         ---- is used, if Returns are not included, then the old logic and
2762         ---- site_balance_stub_csr is used.
2763 
2764         IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
2765         THEN
2766           OPEN site_balance_stub_csr;
2767  	  FETCH site_balance_stub_csr
2768           INTO l_balance;
2769         ELSE
2770           IF G_debug_flag = 'Y'
2771           THEN
2772             oe_debug_pub.add('OPEN site_balance_stub_ret_csr');
2773           END IF;
2774 
2775           OPEN site_balance_stub_ret_csr;
2776  	  FETCH site_balance_stub_ret_csr
2777           INTO l_balance;
2778 
2779           IF G_debug_flag = 'Y'
2780           THEN
2781             oe_debug_pub.add('l_balance='||TO_CHAR(l_balance));
2782           END IF;
2783         END IF;
2784 
2785         IF p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
2786         THEN
2787            l_br_site_use_id :=
2788            oe_credit_check_util.get_drawee_site_use_id ( p_site_use_id);
2789         END IF;
2790 
2791         IF b8 = G_INVOICES
2792         THEN
2793           IF l_br_site_use_id IS NOT NULL
2794           THEN
2795             OPEN   site_br_stub_csr;
2796             FETCH  site_br_stub_csr
2797             INTO   l_br_balance;
2798             CLOSE site_br_stub_csr ;
2799           END IF;
2800         END IF;
2801 
2802         IF G_debug_flag = 'Y'
2803         THEN
2804 	  oe_debug_pub.add
2805 	    ( 'stub cursor at ' || l_currency_code || ' currency with balance '
2806 	      || l_balance || ' and bucket/length ' || l_bucket
2807               || '/' || l_bucket_length, 2 );
2808 
2809 	  oe_debug_pub.add
2810 	    ( 'stub cursor at ' || l_currency_code
2811                  || ' currency with BR balance '
2812 	      || l_br_balance || ' and bucket/length ' || l_bucket
2813               || '/' || l_bucket_length, 2 );
2814 
2815          END IF;
2816 
2817 	  l_total  := l_total +  convert_currency_amount
2818 	  	      ( p_amount                  =>
2819                               l_balance + NVL(l_br_balance,0)
2820 		      , p_transactional_currency  => l_currency_code
2821 		      , p_limit_currency          => p_limit_curr_code
2822 		      );
2823 
2824         ----change for the Return project
2825         ---- closing appropriate cursor: if Returns are included,
2826         ---- the cursor site_balance_stub_ret_csr, if Returns are not included,
2827         ---- then the cursor site_balance_stub_csr is used.
2828 
2829         IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
2830         THEN
2831           CLOSE site_balance_stub_csr;
2832         ELSE
2833           CLOSE site_balance_stub_ret_csr;
2834         END IF;
2835 
2836         -----------------------------
2837         -- for fraction of Main Bucket
2838 
2839         j  :=  p_binary_tbl.FIRST;
2840 	WHILE j IS NOT NULL LOOP
2841  	  l_bucket         :=  p_binary_tbl(j).bucket;
2842 	  l_bucket_length  :=  p_binary_tbl(j).bucket_length;
2843 
2844           ----change for the Return project
2845           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
2846           THEN
2847    	    OPEN  site_balance_csr;
2848 	    FETCH  site_balance_csr
2849             INTO  l_balance;
2850           ELSE
2851             IF G_debug_flag = 'Y'
2852             THEN
2853               oe_debug_pub.add('OPEN site_balance_ret_csr');
2854             END IF;
2855 
2856             OPEN  site_balance_ret_csr;
2857 	    FETCH  site_balance_ret_csr
2858             INTO  l_balance;
2859           END IF;
2860 
2861 
2862           IF G_debug_flag = 'Y'
2863           THEN
2864 	    oe_debug_pub.add
2865 	    ( 'cursor at ' || l_currency_code || ' currency with balance '
2866 	      || l_balance || ' and bucket/length ' || l_bucket || '/'
2867               || l_bucket_length, 2 );
2868           END IF;
2869 
2870 	  BEGIN
2871 	    l_term :=
2872 	      OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
2873 	      ( p_amount                  => l_balance
2874 	      , p_transactional_currency  => l_currency_code
2875 	      , p_limit_currency          => p_limit_curr_code
2876               , p_functional_currency     => g_functional_currency
2877 	      , p_conversion_date         => SYSDATE
2878 	      , p_conversion_type         => g_conversion_type
2879 	      );
2880 	    l_total := l_total + NVL( l_term, 0 );
2881 
2882 	  EXCEPTION
2883 	    WHEN  GL_CURRENCY_API.NO_RATE  OR
2884                   GL_CURRENCY_API.INVALID_CURRENCY THEN
2885  	      add_error_currency( x_error_curr_tbl, l_currency_code );
2886 
2887               IF G_debug_flag = 'Y'
2888               THEN
2889 	        oe_debug_pub.add( 'conversion exception for '
2890                 || l_currency_code, 1 );
2891               END IF;
2892 	  END;
2893           ----change for the Return project
2894           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
2895           THEN
2896 	    CLOSE site_balance_csr;
2897           ELSE
2898             CLOSE site_balance_ret_csr;
2899           END IF;
2900 
2901 	  j  :=  p_binary_tbl.NEXT(j);
2902         END LOOP;
2903         i := p_usage_curr_tbl.NEXT(i);
2904       END LOOP;
2905 
2906     ELSE
2907       -- exposure is at site level and for all currencies
2908      IF G_debug_flag = 'Y'
2909      THEN
2910       oe_debug_pub.add( 'SITE, ALL currencies ');
2911      END IF;
2912       i := 0;
2913 
2914       --------------------------
2915       -- for left of Main Bucket
2916       l_bucket         :=  p_main_bucket;
2917       l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
2918 
2919       ----change for the Return project
2920       IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
2921       THEN
2922         OPEN site_balance_all_curr_stub_csr;
2923         FETCH site_balance_all_curr_stub_csr
2924         INTO l_balance, l_currency_code;
2925 
2926         -- For each currency in the cursor
2927       WHILE NOT site_balance_all_curr_stub_csr%NOTFOUND
2928       LOOP
2929         IF G_debug_flag = 'Y'
2930         THEN
2931 	  oe_debug_pub.add
2932    ( '(all) stub cursor at ' || l_currency_code || ' currency with balance '
2933 	      || l_balance || ' and bucket/length '
2934             || l_bucket || '/' || l_bucket_length, 2 );
2935         END IF;
2936 
2937 
2938           IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
2939                      l_currency_code ,1,1),0) = 0 )
2940 	    OR
2941 	     ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
2942                      l_currency_code ,1,1),0) > 0 )
2943 	      AND ( l_currency_code = p_limit_curr_code )
2944 	     )
2945 	  THEN
2946 	    BEGIN
2947  	      l_term :=
2948 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
2949 	        ( p_amount                  => l_balance
2950                 , p_transactional_currency  => l_currency_code
2951 	        , p_limit_currency          => p_limit_curr_code
2952 	        , p_functional_currency     => g_functional_currency
2953 	        , p_conversion_date         => SYSDATE
2954 	        , p_conversion_type         => g_conversion_type
2955 	        );
2956 	      l_total  := l_total  +  NVL( l_term, 0 );
2957 
2958 	    EXCEPTION
2959 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
2960                     GL_CURRENCY_API.INVALID_CURRENCY THEN
2961 	        oe_debug_pub.add( 'conversion exception for '
2962                    || l_currency_code, 1 );
2963 	        add_error_currency( x_error_curr_tbl, l_currency_code );
2964 	    END;
2965           ELSE
2966 	    oe_debug_pub.add( 'Currency excluded from usages '
2967               || l_currency_code);
2968 	  END IF;  -- exclude curr list
2969 
2970 	  FETCH  site_balance_all_curr_stub_csr
2971           INTO  l_balance, l_currency_code;
2972 
2973 	  i := i + 1;
2974 
2975       END LOOP;
2976 
2977      CLOSE site_balance_all_curr_stub_csr;
2978 
2979 
2980      ----change for the Return project
2981      --- the code is the same as above but using cursor
2982      --- site_bal_all_curr_stub_ret_csr instead site_balance_all_curr_stub_csr
2983 
2984      ELSE
2985        IF G_debug_flag = 'Y'
2986        THEN
2987          oe_debug_pub.add('OPEN site_bal_all_curr_stub_ret_csr');
2988        END IF;
2989 
2990        OPEN site_bal_all_curr_stub_ret_csr;
2991        FETCH site_bal_all_curr_stub_ret_csr
2992        INTO l_balance, l_currency_code;
2993 
2994        -- For each currency in the cursor
2995       WHILE NOT site_bal_all_curr_stub_ret_csr%NOTFOUND
2996       LOOP
2997         IF G_debug_flag = 'Y'
2998         THEN
2999 	  oe_debug_pub.add
3000    ( '(all) stub cursor at ' || l_currency_code || ' currency with balance '
3001 	      || l_balance || ' and bucket/length '
3002             || l_bucket || '/' || l_bucket_length, 2 );
3003         END IF;
3004 
3005 
3006           IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3007                      l_currency_code ,1,1),0) = 0 )
3008 	    OR
3009 	     ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3010                      l_currency_code ,1,1),0) > 0 )
3011 	      AND ( l_currency_code = p_limit_curr_code )
3012 	     )
3013 	  THEN
3014 	    BEGIN
3015  	      l_term :=
3016 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3017 	        ( p_amount                  => l_balance
3018                 , p_transactional_currency  => l_currency_code
3019 	        , p_limit_currency          => p_limit_curr_code
3020 	        , p_functional_currency     => g_functional_currency
3021 	        , p_conversion_date         => SYSDATE
3022 	        , p_conversion_type         => g_conversion_type
3023 	        );
3024 	      l_total  := l_total  +  NVL( l_term, 0 );
3025 
3026 	    EXCEPTION
3027 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
3028                     GL_CURRENCY_API.INVALID_CURRENCY THEN
3029 	        oe_debug_pub.add( 'conversion exception for '
3030                    || l_currency_code, 1 );
3031 	        add_error_currency( x_error_curr_tbl, l_currency_code );
3032 	    END;
3033           ELSE
3034 	    oe_debug_pub.add( 'Currency excluded from usages '
3035               || l_currency_code);
3036 	  END IF;  -- exclude curr list
3037 
3038 	  FETCH  site_bal_all_curr_stub_ret_csr
3039           INTO  l_balance, l_currency_code;
3040 
3041 	  i := i + 1;
3042 
3043         END LOOP;
3044 
3045        CLOSE site_bal_all_curr_stub_ret_csr;
3046 
3047      END IF; ----end of checking for include returns
3048 
3049       ---------------------start BR -------------------
3050      IF p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
3051      THEN
3052         l_br_site_use_id :=
3053            oe_credit_check_util.get_drawee_site_use_id ( p_site_use_id);
3054      END IF;
3055 
3056      IF l_br_site_use_id IS NOT NULL
3057      AND b8 = G_INVOICES
3058      THEN
3059          i := 0;
3060 
3061       --------------------------
3062       -- for left of Main Bucket
3063          l_bucket         :=  p_main_bucket;
3064          l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
3065 
3066          OPEN  site_br_all_curr_stub_csr;
3067          FETCH site_br_all_curr_stub_csr
3068          INTO l_br_balance, l_currency_code;
3069 
3070         -- For each currency in the cursor
3071         WHILE NOT site_br_all_curr_stub_csr%NOTFOUND
3072         LOOP
3073           IF G_debug_flag = 'Y'
3074           THEN
3075 	    oe_debug_pub.add
3076               ( '(all) stub cursor at ' || l_currency_code
3077                 || ' currency with BR  balance '
3078 	      || l_br_balance || ' and bucket/length '
3079             || l_bucket || '/' || l_bucket_length, 2 );
3080           END IF;
3081 
3082             IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3083                      l_currency_code ,1,1),0) = 0 )
3084 	    OR
3085 	     ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3086                      l_currency_code ,1,1),0) > 0 )
3087 	      AND ( l_currency_code = p_limit_curr_code )
3088 	     )
3089 	    THEN
3090 	      BEGIN
3091  	      l_term :=
3092 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3093 	        ( p_amount                  => l_br_balance
3094                 , p_transactional_currency  => l_currency_code
3095 	        , p_limit_currency          => p_limit_curr_code
3096 	        , p_functional_currency     => g_functional_currency
3097 	        , p_conversion_date         => SYSDATE
3098 	        , p_conversion_type         => g_conversion_type
3099 	        );
3100 	        l_total  := l_total  +  NVL( l_term, 0 );
3101 
3102 	      EXCEPTION
3103 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
3104                     GL_CURRENCY_API.INVALID_CURRENCY THEN
3105 	        oe_debug_pub.add( 'conversion exception for '
3106                    || l_currency_code, 1 );
3107 	        add_error_currency( x_error_curr_tbl, l_currency_code );
3108 	    END;
3109           ELSE
3110 	    oe_debug_pub.add( 'Currency excluded from usages '
3111               || l_currency_code);
3112 	  END IF;  -- exclude curr list
3113 
3114 	  FETCH  site_br_all_curr_stub_csr
3115           INTO  l_balance, l_currency_code;
3116 
3117 	  i := i + 1;
3118         END LOOP;
3119 
3120        CLOSE site_br_all_curr_stub_csr ;
3121      END IF;
3122 ---------------------------- end BR ------------------
3123       -- for fraction of Main Bucket
3124 
3125       j  :=  p_binary_tbl.FIRST;
3126       WHILE j IS NOT NULL LOOP
3127         l_bucket         :=  p_binary_tbl(j).bucket;
3128         l_bucket_length  :=  p_binary_tbl(j).bucket_length;
3129 
3130         ----change for the Return project
3131         IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3132         THEN
3133 
3134           -- this cursor deals with one site and all currencies
3135           OPEN site_balance_all_curr_csr;
3136           FETCH site_balance_all_curr_csr
3137           INTO l_balance, l_currency_code;
3138 
3139           -- For each currency that exists, the cursor returns a row.
3140           -- Convert the balance and sum up to total exposure
3141 
3142           WHILE NOT site_balance_all_curr_csr%NOTFOUND
3143           LOOP
3144            IF G_debug_flag = 'Y'
3145            THEN
3146             oe_debug_pub.add
3147               ( 'cursor at ' || l_currency_code || ' currency with balance '
3148 	        || l_balance || ' and bucket/length ' || l_bucket
3149                    || '/' || l_bucket_length, 2 );
3150             END IF;
3151 
3152             IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3153                      l_currency_code ,1,1),0) = 0 )
3154         	    OR
3155 	       ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3156                     l_currency_code ,1,1),0) > 0 )
3157 	        AND ( l_currency_code = p_limit_curr_code )
3158         	     )
3159 	    THEN
3160               BEGIN
3161 	        l_term :=
3162 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3163 	          ( p_amount                  => l_balance
3164                   , p_transactional_currency  => l_currency_code
3165 	          , p_limit_currency          => p_limit_curr_code
3166 	          , p_functional_currency     => g_functional_currency
3167 	          , p_conversion_date         => SYSDATE
3168 	          , p_conversion_type         => g_conversion_type
3169 	          );
3170 	        l_total := l_total + NVL( l_term, 0 );
3171 
3172               EXCEPTION
3173                 WHEN  GL_CURRENCY_API.NO_RATE  OR
3174                       GL_CURRENCY_API.INVALID_CURRENCY THEN
3175                 oe_debug_pub.add( 'conversion exception for '
3176                   || l_currency_code, 1 );
3177                 add_error_currency( x_error_curr_tbl, l_currency_code );
3178 	      END;
3179             ELSE
3180               oe_debug_pub.add( 'Currency excluded from usages ');
3181 	    END IF;  -- exclude curr list
3182 
3183             FETCH  site_balance_all_curr_csr
3184             INTO  l_balance, l_currency_code;
3185             i := i + 1;
3186           END LOOP;
3187           CLOSE site_balance_all_curr_csr;
3188 
3189         -----if returns are included use appropriate cursor
3190         ----- the rest code is the same as above
3191         ELSE
3192           -- this cursor deals with one site and all currencies
3193           OPEN site_bal_all_curr_ret_csr;
3194           FETCH site_bal_all_curr_ret_csr
3195           INTO l_balance, l_currency_code;
3196 
3197           -- For each currency that exists, the cursor returns a row.
3198           -- Convert the balance and sum up to total exposure
3199 
3200           WHILE NOT site_bal_all_curr_ret_csr%NOTFOUND
3201           LOOP
3202            IF G_debug_flag = 'Y'
3203            THEN
3204             oe_debug_pub.add
3205               ( 'cursor at ' || l_currency_code || ' currency with balance '
3206 	        || l_balance || ' and bucket/length ' || l_bucket
3207                    || '/' || l_bucket_length, 2 );
3208             END IF;
3209 
3210             IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3211                      l_currency_code ,1,1),0) = 0 )
3212         	    OR
3213 	       ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3214                     l_currency_code ,1,1),0) > 0 )
3215 	        AND ( l_currency_code = p_limit_curr_code )
3216         	     )
3217 	    THEN
3218               BEGIN
3219 	        l_term :=
3220 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3221 	          ( p_amount                  => l_balance
3222                   , p_transactional_currency  => l_currency_code
3223 	          , p_limit_currency          => p_limit_curr_code
3224 	          , p_functional_currency     => g_functional_currency
3225 	          , p_conversion_date         => SYSDATE
3226 	          , p_conversion_type         => g_conversion_type
3227 	          );
3228 	        l_total := l_total + NVL( l_term, 0 );
3229 
3230               EXCEPTION
3231                 WHEN  GL_CURRENCY_API.NO_RATE  OR
3232                       GL_CURRENCY_API.INVALID_CURRENCY THEN
3233                 oe_debug_pub.add( 'conversion exception for '
3234                   || l_currency_code, 1 );
3235                 add_error_currency( x_error_curr_tbl, l_currency_code );
3236 	      END;
3237             ELSE
3238               oe_debug_pub.add( 'Currency excluded from usages ');
3239 	    END IF;  -- exclude curr list
3240 
3241             FETCH  site_bal_all_curr_ret_csr
3242             INTO  l_balance, l_currency_code;
3243             i := i + 1;
3244           END LOOP;
3245           CLOSE site_bal_all_curr_ret_csr;
3246 
3247         END IF; ---end of checking for include returns
3248         j  :=  p_binary_tbl.NEXT(j);
3249       END LOOP;
3250     END IF;  -- site level currency - all/single
3251 
3252 ----------------- End site level -----------------------------------
3253 --------------------------------------------------------------------------
3254 
3255 ------------------------- Start customer level --------------------
3256   ELSIF p_customer_id IS NOT NULL
3257   THEN
3258    IF G_debug_flag = 'Y'
3259    THEN
3260      oe_debug_pub.add( 'exposure at customer level', 1 );
3261    END IF;
3262 
3263     IF  NVL(p_include_all_flag,'N')  =  'N'
3264     THEN
3265       -- exposure is at customer level and for a list of currencies
3266       -- for each currency in the list
3267 
3268       IF G_debug_flag = 'Y'
3269       THEN
3270         oe_debug_pub.add( 'NOT ALL currencies ');
3271       END IF;
3272 
3273       i  := p_usage_curr_tbl.FIRST;
3274       WHILE  i  IS NOT NULL
3275       LOOP
3276         l_currency_code := p_usage_curr_tbl(i).usage_curr_code;
3277         --------------------------
3278         -- for left of Main Bucket
3279 	l_bucket         :=  p_main_bucket;
3280 	l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
3281 
3282         IF p_global_exposure_flag = 'Y'
3283         THEN
3284           IF G_debug_flag = 'Y'
3285           THEN
3286             oe_debug_pub.add( ' Into CUST global ');
3287           END IF;
3288 
3289           ----change for the Return project
3290           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3291           THEN
3292 	    OPEN cust_balance_stub_csr_global;
3293 	    FETCH cust_balance_stub_csr_global
3294             INTO l_balance;
3295           ELSE
3296             OPEN cust_bal_stub_ret_csr_global;
3297 	    FETCH cust_bal_stub_ret_csr_global
3298             INTO l_balance;
3299           END IF;
3300 
3301           IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
3302              AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
3303              AND b8 = G_INVOICES
3304           THEN
3305            OPEN  cust_br_stub_csr_global ;
3306            FETCH cust_br_stub_csr_global
3307            INTO  l_br_balance ;
3308            CLOSE cust_br_stub_csr_global ;
3309           END IF;
3310 
3311            IF G_debug_flag = 'Y'
3312            THEN
3313 	    oe_debug_pub.add
3314 	      ( 'global stub cursor at ' || l_currency_code
3315 	        || ' currency with balance ' || l_balance, 2 );
3316 	    oe_debug_pub.add
3317 	      ( 'global stub cursor at ' || l_currency_code
3318 	        || ' currency with BR balance ' || l_br_balance, 2 );
3319           END IF;
3320             BEGIN
3321 	      l_term :=
3322 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3323 	        ( p_amount                  => l_balance +
3324                              NVL(l_br_balance,0)
3325 	        , p_transactional_currency  => l_currency_code
3326 	        , p_limit_currency          => p_limit_curr_code
3327 	        , p_functional_currency     => g_functional_currency
3328 	        , p_conversion_date         => SYSDATE
3329 	        , p_conversion_type         => g_conversion_type
3330 	        );
3331   	      l_total := l_total + NVL( l_term, 0 );
3332 
3333        	    EXCEPTION
3334 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
3335                     GL_CURRENCY_API.INVALID_CURRENCY THEN
3336 	        oe_debug_pub.add( 'conversion exception for '
3337                  || l_currency_code, 1 );
3338 	        add_error_currency( x_error_curr_tbl, l_currency_code );
3339              END;
3340              ----change for the Return project
3341              IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3342              THEN
3343 	       CLOSE cust_balance_stub_csr_global;
3344              ELSE
3345                CLOSE cust_bal_stub_ret_csr_global;
3346              END IF;
3347 
3348 	    -----------------------------
3349 	    -- for fraction of Main Bucket
3350 
3351 	   j  :=  p_binary_tbl.FIRST;
3352 	  WHILE  j  IS NOT NULL
3353           LOOP
3354 	    l_bucket         :=  p_binary_tbl(j).bucket;
3355 	    l_bucket_length  :=  p_binary_tbl(j).bucket_length;
3356 
3357             ----change for the Return project
3358             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3359             THEN
3360 	      OPEN cust_balance_csr_global;
3361 	      FETCH cust_balance_csr_global
3362               INTO l_balance;
3363             ELSE
3364               OPEN cust_balance_ret_csr_global;
3365 	      FETCH cust_balance_ret_csr_global
3366               INTO l_balance;
3367             END IF;
3368 
3369             IF G_debug_flag = 'Y'
3370             THEN
3371 	      oe_debug_pub.add
3372 	      ( 'cust global cursor at ' || l_currency_code
3373 	       || ' currency with balance ' || l_balance, 2 );
3374             END IF;
3375 	    BEGIN
3376 	      l_term :=
3377 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3378 	        ( p_amount                  => l_balance
3379 	        , p_transactional_currency  => l_currency_code
3380 	        , p_limit_currency          => p_limit_curr_code
3381 		, p_functional_currency     => g_functional_currency
3382 		, p_conversion_date         => SYSDATE
3383 		, p_conversion_type         => g_conversion_type
3384 		);
3385 	      l_total := l_total + NVL( l_term, 0 );
3386 
3387 	     EXCEPTION
3388 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
3389                     GL_CURRENCY_API.INVALID_CURRENCY THEN
3390 	        oe_debug_pub.add( 'conversion exception for '
3391                     || l_currency_code, 1 );
3392 	        add_error_currency( x_error_curr_tbl, l_currency_code );
3393 	      END;
3394 
3395             ----change for the Return project
3396             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3397             THEN
3398               CLOSE cust_balance_csr_global;
3399             ELSE
3400               CLOSE cust_balance_ret_csr_global;
3401             END IF;
3402 
3403             j  :=  p_binary_tbl.NEXT(j);
3404 	   END LOOP;
3405 
3406          ELSE  -- not global cck
3407           IF G_debug_flag = 'Y'
3408           THEN
3409             oe_debug_pub.add( 'Into cust NOT global ');
3410           END IF;
3411 
3412           ----change for the Return project
3413           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3414           THEN
3415 
3416             OPEN customer_balance_stub_csr;
3417 	    FETCH customer_balance_stub_csr
3418             INTO l_balance;
3419           ELSE
3420             OPEN customer_balance_stub_ret_csr;
3421 	    FETCH customer_balance_stub_ret_csr
3422             INTO l_balance;
3423           END IF;
3424 
3425           IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
3426             AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
3427             AND b8 = G_INVOICES
3428           THEN
3429            OPEN customer_br_stub_csr ;
3430            FETCH customer_br_stub_csr
3431            INTO l_br_balance ;
3432            CLOSE customer_br_stub_csr ;
3433           END IF;
3434 
3435           IF G_debug_flag = 'Y'
3436           THEN
3437 	    oe_debug_pub.add
3438 	      ( 'cust stub cursor at ' || l_currency_code
3439 	       || ' currency with balance ' || l_balance, 2 );
3440 	    oe_debug_pub.add
3441 	      ( 'cust stub cursor at ' || l_currency_code
3442 	       || ' currency with BR balance ' || l_br_balance, 2 );
3443           END IF;
3444 
3445 	    BEGIN
3446 	      l_term :=
3447 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3448 	        ( p_amount                  => l_balance +
3449                              NVL(l_br_balance,0)
3450 	        , p_transactional_currency  => l_currency_code
3451 	        , p_limit_currency          => p_limit_curr_code
3452 	        , p_functional_currency     => g_functional_currency
3453 	        , p_conversion_date         => SYSDATE
3454 	        , p_conversion_type         => g_conversion_type
3455 	        );
3456 	      l_total := l_total + NVL( l_term, 0 );
3457 	      EXCEPTION
3458 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
3459                      GL_CURRENCY_API.INVALID_CURRENCY THEN
3460 	        oe_debug_pub.add( 'conversion exception for '
3461                   || l_currency_code, 1 );
3462 		add_error_currency( x_error_curr_tbl, l_currency_code );
3463 	     END;
3464 
3465              ----change for the Return project
3466              IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3467              THEN
3468                CLOSE customer_balance_stub_csr ;
3469              ELSE
3470                CLOSE customer_balance_stub_ret_csr;
3471              END IF;
3472 
3473 	  -----------------------------
3474 	  -- for fraction of Main Bucket
3475 
3476 	    j  :=  p_binary_tbl.FIRST;
3477 	    WHILE  j  IS NOT NULL
3478             LOOP
3479 	     l_bucket         :=  p_binary_tbl(j).bucket;
3480 	     l_bucket_length  :=  p_binary_tbl(j).bucket_length;
3481 
3482               ----change for the Return project
3483               IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3484               THEN
3485 	        OPEN customer_balance_csr;
3486 	        FETCH customer_balance_csr
3487                 INTO l_balance;
3488               ELSE
3489                 OPEN customer_balance_ret_csr;
3490 	        FETCH customer_balance_ret_csr
3491                 INTO l_balance;
3492               END IF;
3493 
3494               IF G_debug_flag = 'Y'
3495               THEN
3496 	        oe_debug_pub.add
3497 	        ( 'cust cursor at ' || l_currency_code
3498 	       || ' currency with balance ' || l_balance, 2 );
3499               END IF;
3500 
3501 	      BEGIN
3502               l_term :=
3503 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3504 	        ( p_amount                  => l_balance
3505 	        , p_transactional_currency  => l_currency_code
3506 	        , p_limit_currency          => p_limit_curr_code
3507                 , p_functional_currency     => g_functional_currency
3508 	        , p_conversion_date         => SYSDATE
3509 	        , p_conversion_type         => g_conversion_type
3510 	        );
3511 	      l_total := l_total + NVL( l_term, 0 );
3512 
3513 	      EXCEPTION
3514 	        WHEN  GL_CURRENCY_API.NO_RATE  OR
3515                      GL_CURRENCY_API.INVALID_CURRENCY THEN
3516 	        oe_debug_pub.add( 'conversion exception for '
3517                 || l_currency_code, 1 );
3518 	        add_error_currency( x_error_curr_tbl, l_currency_code );
3519 	      END;
3520 
3521               ----change for the Return project
3522               IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3523               THEN
3524 	        CLOSE customer_balance_csr;
3525               ELSE
3526                 CLOSE customer_balance_ret_csr;
3527               END IF;
3528 
3529               j  :=  p_binary_tbl.NEXT(j);
3530 	    END LOOP;
3531           END IF; -- global
3532           i := p_usage_curr_tbl.NEXT(i);
3533         END LOOP;  -- i loop
3534 
3535     ELSE -- customer level all currencies
3536       -- exposure is at customer level and for all currencies
3537       -- for each currency in the list
3538 
3539       IF G_debug_flag = 'Y'
3540       THEN
3541         oe_debug_pub.add(' Into ALL currencies ');
3542       END IF;
3543 
3544 
3545       i  := 0;
3546       --------------------------
3547       -- for left of Main Bucket
3548       l_bucket         :=  p_main_bucket;
3549       l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
3550 
3551       IF p_global_exposure_flag = 'Y'
3552       THEN
3553         IF G_debug_flag = 'Y'
3554         THEN
3555           oe_debug_pub.add( ' Into cust GLOBAL');
3556         END IF;
3557 
3558        ----change for the Return project
3559        IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3560        THEN
3561          -----returns are not included
3562          OPEN cust_all_curr_stub_csr_global;
3563          FETCH cust_all_curr_stub_csr_global
3564          INTO l_balance, l_currency_code;
3565             -- For each currency in the cursor
3566 
3567             WHILE NOT cust_all_curr_stub_csr_global%NOTFOUND
3568             LOOP
3569               IF G_debug_flag = 'Y'
3570               THEN
3571                 oe_debug_pub.add
3572 	        ( '(all) stub global cursor at ' || l_currency_code
3573                    || ' currency with balance '
3574 	        || l_balance || ' and bucket/length '
3575                 || l_bucket || '/' || l_bucket_length, 2 );
3576               END IF;
3577 
3578 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3579                       l_currency_code ,1,1),0) = 0 )
3580 	        OR
3581 	        ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3582                     l_currency_code ,1,1),0) > 0 )
3583 	          AND ( l_currency_code = p_limit_curr_code )
3584 	        )
3585               THEN
3586                 BEGIN
3587 	          l_term :=
3588 	            OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3589 	            ( p_amount                  => l_balance
3590 	            , p_transactional_currency  => l_currency_code
3591 	            , p_limit_currency          => p_limit_curr_code
3592 	            , p_functional_currency     => g_functional_currency
3593 		    , p_conversion_date         => SYSDATE
3594 		    , p_conversion_type         => g_conversion_type
3595 		    );
3596 	          l_total := l_total + NVL( l_term, 0 );
3597 
3598 	        EXCEPTION
3599 	          WHEN  GL_CURRENCY_API.NO_RATE
3600                        OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
3601 	            oe_debug_pub.add( 'conversion exception for '
3602                        || l_currency_code, 1 );
3603 	            add_error_currency( x_error_curr_tbl, l_currency_code );
3604 	        END;
3605               ELSE
3606 	        oe_debug_pub.add( 'Currency excluded from usages ');
3607               END IF; -- exclude curr list
3608               FETCH cust_all_curr_stub_csr_global
3609               INTO l_balance, l_currency_code;
3610               i := i + 1;
3611             END LOOP;
3612 
3613             CLOSE cust_all_curr_stub_csr_global;
3614 
3615           -----returns are included
3616           ELSE
3617             OPEN cust_all_curr_stub_ret_csr_gl;
3618             FETCH cust_all_curr_stub_ret_csr_gl
3619             INTO l_balance, l_currency_code;
3620               -- For each currency in the cursor
3621 
3622               WHILE NOT cust_all_curr_stub_ret_csr_gl%NOTFOUND
3623               LOOP
3624                 IF G_debug_flag = 'Y'
3625                 THEN
3626                   oe_debug_pub.add
3627 	          ( '(all) stub global cursor at ' || l_currency_code
3628                      || ' currency with balance '
3629 	          || l_balance || ' and bucket/length '
3630                   || l_bucket || '/' || l_bucket_length, 2 );
3631                 END IF;
3632 
3633 	        IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3634                         l_currency_code ,1,1),0) = 0 )
3635 	          OR
3636 	          ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3637                       l_currency_code ,1,1),0) > 0 )
3638 	            AND ( l_currency_code = p_limit_curr_code )
3639 	          )
3640                 THEN
3641                   BEGIN
3642 	            l_term :=
3643 	              OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3644 	              ( p_amount                  => l_balance
3645 	              , p_transactional_currency  => l_currency_code
3646 	              , p_limit_currency          => p_limit_curr_code
3647 	              , p_functional_currency     => g_functional_currency
3648 		      , p_conversion_date         => SYSDATE
3649 		      , p_conversion_type         => g_conversion_type
3650 		      );
3651 	            l_total := l_total + NVL( l_term, 0 );
3652 
3653 	          EXCEPTION
3654 	            WHEN  GL_CURRENCY_API.NO_RATE
3655                          OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
3656 	              oe_debug_pub.add( 'conversion exception for '
3657                          || l_currency_code, 1 );
3658 	              add_error_currency( x_error_curr_tbl, l_currency_code );
3659 	          END;
3660                 ELSE
3661 	          oe_debug_pub.add( 'Currency excluded from usages ');
3662                 END IF; -- exclude curr list
3663 
3664                 FETCH cust_all_curr_stub_ret_csr_gl
3665                 INTO l_balance, l_currency_code;
3666                 i := i + 1;
3667               END LOOP;
3668 
3669               CLOSE cust_all_curr_stub_ret_csr_gl;
3670 
3671           END IF;-----end of checking if returns are included
3672 
3673 ------------------------start  BR --------------------
3674           IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
3675              AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
3676              AND b8 = G_INVOICES
3677           THEN
3678 
3679            i  := 0;
3680                --------------------------
3681             -- for left of Main Bucket
3682             l_bucket         :=  p_main_bucket;
3683             l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
3684 
3685            IF G_debug_flag = 'Y'
3686            THEN
3687              oe_debug_pub.add( ' Into cust GLOBAL');
3688            END IF;
3689 
3690             OPEN cust_br_all_curr_stub_csr_gl;
3691             FETCH cust_br_all_curr_stub_csr_gl
3692             INTO l_br_balance, l_currency_code;
3693 
3694           -- For each currency in the cursor
3695 
3696               WHILE NOT cust_br_all_curr_stub_csr_gl%NOTFOUND
3697               LOOP
3698               IF G_debug_flag = 'Y'
3699               THEN
3700                 oe_debug_pub.add
3701 	      ( '(all) stub global cursor at ' || l_currency_code
3702                  || ' currency with BR balance '
3703 	      || l_br_balance || ' and bucket/length '
3704               || l_bucket || '/' || l_bucket_length, 2 );
3705               END IF;
3706 
3707 
3708 	       IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3709                     l_currency_code ,1,1),0) = 0 )
3710 	      OR
3711 	      ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3712                   l_currency_code ,1,1),0) > 0 )
3713 	        AND ( l_currency_code = p_limit_curr_code )
3714 	      )
3715               THEN
3716                 BEGIN
3717 	        l_term :=
3718 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3719 	          ( p_amount                  => l_br_balance
3720 	          , p_transactional_currency  => l_currency_code
3721 	          , p_limit_currency          => p_limit_curr_code
3722 	          , p_functional_currency     => g_functional_currency
3723 		  , p_conversion_date         => SYSDATE
3724 		  , p_conversion_type         => g_conversion_type
3725 		  );
3726 	        l_total := l_total + NVL( l_term, 0 );
3727 
3728 	        EXCEPTION
3729 	          WHEN  GL_CURRENCY_API.NO_RATE
3730                      OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
3731 	          oe_debug_pub.add( 'conversion exception for '
3732                      || l_currency_code, 1 );
3733 	          add_error_currency( x_error_curr_tbl, l_currency_code );
3734 	        END;
3735               ELSE
3736 	        oe_debug_pub.add( 'Currency excluded from usages ');
3737               END IF; -- exclude curr list
3738               FETCH cust_br_all_curr_stub_csr_gl
3739                INTO l_br_balance, l_currency_code;
3740                  i := i + 1;
3741             END LOOP;
3742 
3743           CLOSE cust_br_all_curr_stub_csr_gl ;
3744        END IF;
3745 ---------------------------- end  BR ------------------------
3746 
3747         -----------------------------
3748 	-- for fraction of Main Bucket
3749 
3750         j  :=  p_binary_tbl.FIRST;
3751         WHILE  j  IS NOT NULL LOOP
3752 	  l_bucket         :=  p_binary_tbl(j).bucket;
3753 	  l_bucket_length  :=  p_binary_tbl(j).bucket_length;
3754 
3755           ----change for the Return project
3756           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3757           THEN
3758             -----returns are not included
3759 	    OPEN cust_all_curr_csr_global;
3760   	    FETCH cust_all_curr_csr_global
3761             INTO l_balance, l_currency_code;
3762 
3763 	    -- For each currency that exists, the cursor returns a row.
3764 	    -- Convert the balance and sum up to total exposure
3765 
3766 	    WHILE NOT cust_all_curr_csr_global%NOTFOUND
3767             LOOP
3768               IF G_debug_flag = 'Y'
3769               THEN
3770 	       oe_debug_pub.add
3771 	        ( 'cust all global cursor at ' || l_currency_code
3772                    || ' currency with balance '
3773 	          || l_balance || ' and bucket/length '
3774                   || l_bucket || '/' || l_bucket_length, 2 );
3775 
3776               END IF;
3777 
3778 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3779                   l_currency_code ,1,1),0) = 0 )
3780                 OR
3781 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3782                   l_currency_code ,1,1),0) > 0 )
3783 	           AND ( l_currency_code = p_limit_curr_code )
3784 	         )
3785 	      THEN
3786 	        BEGIN
3787 	          l_term :=
3788                     OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3789 	            ( p_amount                  => l_balance
3790 	            , p_transactional_currency  => l_currency_code
3791 	            , p_limit_currency          => p_limit_curr_code
3792  	            , p_functional_currency     => g_functional_currency
3793 	            , p_conversion_date         => SYSDATE
3794 	            , p_conversion_type         => g_conversion_type
3795 	            );
3796 	          l_total := l_total + NVL( l_term, 0 );
3797 
3798 	        EXCEPTION
3799 	          WHEN  GL_CURRENCY_API.NO_RATE  OR
3800                          GL_CURRENCY_API.INVALID_CURRENCY THEN
3801 	            oe_debug_pub.add( 'conversion exception for ' ||
3802                       l_currency_code, 1 );
3803 	            add_error_currency( x_error_curr_tbl, l_currency_code );
3804 	        END;
3805               ELSE
3806 	        oe_debug_pub.add( 'Currency excluded from usages ');
3807 	      END IF;  -- exclude curr list
3808               FETCH cust_all_curr_csr_global INTO l_balance, l_currency_code;
3809               i := i + 1;
3810             END LOOP;
3811 	    CLOSE cust_all_curr_csr_global;
3812 
3813           -----returns are included
3814           ELSE
3815             OPEN cust_all_curr_ret_csr_global;
3816   	    FETCH cust_all_curr_ret_csr_global
3817             INTO l_balance, l_currency_code;
3818 
3819 	    -- For each currency that exists, the cursor returns a row.
3820 	    -- Convert the balance and sum up to total exposure
3821 
3822 	    WHILE NOT cust_all_curr_ret_csr_global%NOTFOUND
3823             LOOP
3824               IF G_debug_flag = 'Y'
3825               THEN
3826 	       oe_debug_pub.add
3827 	        ( 'cust all global cursor at ' || l_currency_code
3828                    || ' currency with balance '
3829 	          || l_balance || ' and bucket/length '
3830                   || l_bucket || '/' || l_bucket_length, 2 );
3831 
3832               END IF;
3833 
3834 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3835                   l_currency_code ,1,1),0) = 0 )
3836                 OR
3837 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3838                   l_currency_code ,1,1),0) > 0 )
3839 	           AND ( l_currency_code = p_limit_curr_code )
3840 	         )
3841 	      THEN
3842 	        BEGIN
3843 	          l_term :=
3844                     OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3845 	            ( p_amount                  => l_balance
3846 	            , p_transactional_currency  => l_currency_code
3847 	            , p_limit_currency          => p_limit_curr_code
3848  	            , p_functional_currency     => g_functional_currency
3849 	            , p_conversion_date         => SYSDATE
3850 	            , p_conversion_type         => g_conversion_type
3851 	            );
3852 	          l_total := l_total + NVL( l_term, 0 );
3853 
3854 	        EXCEPTION
3855 	          WHEN  GL_CURRENCY_API.NO_RATE  OR
3856                          GL_CURRENCY_API.INVALID_CURRENCY THEN
3857 	            oe_debug_pub.add( 'conversion exception for ' ||
3858                       l_currency_code, 1 );
3859 	            add_error_currency( x_error_curr_tbl, l_currency_code );
3860 	        END;
3861               ELSE
3862 	        oe_debug_pub.add( 'Currency excluded from usages ');
3863 	      END IF;  -- exclude curr list
3864 
3865               FETCH cust_all_curr_ret_csr_global
3866               INTO l_balance, l_currency_code;
3867               i := i + 1;
3868             END LOOP;
3869 
3870 	    CLOSE cust_all_curr_ret_csr_global;
3871           END IF; ----end of checking if returns are included
3872 
3873           j  :=  p_binary_tbl.NEXT(j);
3874         END LOOP;  -- J
3875 
3876 
3877       ELSE  -- not global cck
3878         IF G_debug_flag = 'Y'
3879         THEN
3880          oe_debug_pub.add(' Into cust NOT  global ');
3881         END IF;
3882 
3883         ----change for the Return project
3884         IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
3885         THEN
3886           ----returns are not included, old code
3887           OPEN customer_all_curr_stub_csr;
3888 	  FETCH customer_all_curr_stub_csr
3889           INTO l_balance, l_currency_code;
3890             -- For each currency in the cursor
3891 
3892    	    WHILE NOT customer_all_curr_stub_csr%NOTFOUND
3893              LOOP
3894               IF G_debug_flag = 'Y'
3895               THEN
3896 	        oe_debug_pub.add
3897 	        ( '(all) stub cursor at ' || l_currency_code
3898                        || ' currency with balance '
3899 	          || l_balance || ' and bucket/length '
3900                     || l_bucket || '/' || l_bucket_length, 2 );
3901               END IF;
3902 
3903 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3904                     l_currency_code ,1,1),0) = 0 )
3905 	          OR
3906 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3907                        l_currency_code ,1,1),0) > 0 )
3908 		  AND ( l_currency_code = p_limit_curr_code )
3909 	         )
3910 	      THEN
3911 	        BEGIN
3912 	          l_term :=
3913 	            OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3914 	            ( p_amount                  => l_balance
3915 	            , p_transactional_currency  => l_currency_code
3916 	            , p_limit_currency          => p_limit_curr_code
3917 	            , p_functional_currency     => g_functional_currency
3918 	            , p_conversion_date         => SYSDATE
3919 	            , p_conversion_type         => g_conversion_type
3920 	            );
3921 	          l_total := l_total + NVL( l_term, 0 );
3922 
3923 	       EXCEPTION
3924 	          WHEN  GL_CURRENCY_API.NO_RATE
3925                        OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
3926 	            oe_debug_pub.add( 'conversion exception for '
3927                       || l_currency_code, 1 );
3928 	            add_error_currency( x_error_curr_tbl, l_currency_code );
3929   	        END;
3930 	      ELSE
3931 	        oe_debug_pub.add(' Currency excluded from usages list ');
3932 	      END IF;
3933 
3934                 FETCH customer_all_curr_stub_csr
3935                 INTO l_balance, l_currency_code;
3936                 i := i + 1;
3937               END LOOP;
3938 
3939               CLOSE customer_all_curr_stub_csr;
3940 
3941             ------returns are included, the same code as above but
3942             ------ using different cursors
3943             ELSE
3944               OPEN customer_all_curr_stub_ret_csr;
3945 	      FETCH customer_all_curr_stub_ret_csr
3946               INTO l_balance, l_currency_code;
3947 
3948               -- For each currency in the cursor
3949 
3950    	      WHILE NOT customer_all_curr_stub_ret_csr%NOTFOUND
3951                LOOP
3952                 IF G_debug_flag = 'Y'
3953                 THEN
3954 	          oe_debug_pub.add
3955 	          ( '(all) stub cursor at ' || l_currency_code
3956                          || ' currency with balance '
3957 	            || l_balance || ' and bucket/length '
3958                       || l_bucket || '/' || l_bucket_length, 2 );
3959                 END IF;
3960 
3961 	        IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3962                       l_currency_code ,1,1),0) = 0 )
3963 	            OR
3964 	           ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
3965                          l_currency_code ,1,1),0) > 0 )
3966 		    AND ( l_currency_code = p_limit_curr_code )
3967 	           )
3968 	        THEN
3969 	          BEGIN
3970 	            l_term :=
3971 	              OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
3972 	              ( p_amount                  => l_balance
3973 	              , p_transactional_currency  => l_currency_code
3974 	              , p_limit_currency          => p_limit_curr_code
3975 	              , p_functional_currency     => g_functional_currency
3976 	              , p_conversion_date         => SYSDATE
3977 	              , p_conversion_type         => g_conversion_type
3978 	              );
3979 	            l_total := l_total + NVL( l_term, 0 );
3980 
3981 	         EXCEPTION
3982 	            WHEN  GL_CURRENCY_API.NO_RATE
3983                          OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
3984 	              oe_debug_pub.add( 'conversion exception for '
3985                         || l_currency_code, 1 );
3986 	              add_error_currency( x_error_curr_tbl, l_currency_code );
3987   	          END;
3988 	        ELSE
3989 	          oe_debug_pub.add(' Currency excluded from usages list ');
3990 	        END IF;
3991 
3992                 FETCH customer_all_curr_stub_ret_csr
3993                 INTO l_balance, l_currency_code;
3994                 i := i + 1;
3995               END LOOP;
3996 
3997               CLOSE customer_all_curr_stub_ret_csr;
3998 
3999             END IF;  ---end of checking if returns are include
4000 
4001 ----------------------- start BR ------------------
4002 
4003         IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
4004          AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
4005          AND b8 = G_INVOICES
4006         THEN
4007           OPEN customer_br_all_curr_stub_csr;
4008           FETCH customer_br_all_curr_stub_csr
4009           INTO l_br_balance, l_currency_code;
4010 
4011           -- For each currency in the cursor
4012 
4013 	  WHILE NOT customer_br_all_curr_stub_csr%NOTFOUND
4014           LOOP
4015             IF G_debug_flag = 'Y'
4016             THEN
4017 	     oe_debug_pub.add
4018 	      ( '(all) stub cursor at ' || l_currency_code
4019                      || ' currency with BR balance '
4020 	        || l_br_balance || ' and bucket/length '
4021                   || l_bucket || '/' || l_bucket_length, 2 );
4022             END IF;
4023 
4024 	       IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4025                   l_currency_code ,1,1),0) = 0 )
4026 	        OR
4027 	       ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4028                      l_currency_code ,1,1),0) > 0 )
4029 		AND ( l_currency_code = p_limit_curr_code )
4030 	       )
4031 	      THEN
4032 	        BEGIN
4033 	        l_term :=
4034 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4035 	          ( p_amount                  => l_br_balance
4036 	          , p_transactional_currency  => l_currency_code
4037 	          , p_limit_currency          => p_limit_curr_code
4038 	          , p_functional_currency     => g_functional_currency
4039 	          , p_conversion_date         => SYSDATE
4040 	          , p_conversion_type         => g_conversion_type
4041 	          );
4042 	        l_total := l_total + NVL( l_term, 0 );
4043 
4044 	      EXCEPTION
4045 	        WHEN  GL_CURRENCY_API.NO_RATE
4046                      OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
4047 	          oe_debug_pub.add( 'conversion exception for '
4048                     || l_currency_code, 1 );
4049 	          add_error_currency( x_error_curr_tbl, l_currency_code );
4050   	      END;
4051 	    ELSE
4052 	      oe_debug_pub.add(' Currency excluded from usages list ');
4053 	    END IF;
4054 
4055             FETCH customer_br_all_curr_stub_csr
4056             INTO l_br_balance, l_currency_code;
4057             i := i + 1;
4058           END LOOP;
4059           CLOSE customer_br_all_curr_stub_csr ;
4060         END IF;
4061 
4062 -------------------------- end BR --------------------------
4063 
4064         -----------------------------
4065         -- for fraction of Main Bucket
4066 
4067         j  :=  p_binary_tbl.FIRST;
4068 	WHILE  j  IS NOT NULL
4069         LOOP
4070  	  l_bucket         :=  p_binary_tbl(j).bucket;
4071 	  l_bucket_length  :=  p_binary_tbl(j).bucket_length;
4072 
4073           ----change for the Return project
4074           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4075           THEN
4076             ----returns are not included, old code
4077 	    OPEN customer_balance_all_curr_csr;
4078 	    FETCH customer_balance_all_curr_csr
4079             INTO l_balance, l_currency_code;
4080 
4081 	    -- For each currency in the cursor
4082 	    WHILE NOT customer_balance_all_curr_csr%NOTFOUND
4083             LOOP
4084               IF G_debug_flag = 'Y'
4085               THEN
4086 	        oe_debug_pub.add
4087 	        ( '(all) cursor at ' || l_currency_code
4088                     || ' currency with balance '
4089 	          || l_balance || ' and bucket/length '
4090                   || l_bucket || '/' || l_bucket_length, 2 );
4091               END IF;
4092 
4093 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4094                     l_currency_code ,1,1),0) = 0 )
4095 	        OR
4096 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4097                      l_currency_code ,1,1),0) > 0 )
4098 	          AND ( l_currency_code = p_limit_curr_code )
4099 	         )
4100 	      THEN
4101 	        BEGIN
4102 	          l_term :=
4103 	            OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4104 	            ( p_amount                  => l_balance
4105 	            , p_transactional_currency  => l_currency_code
4106 	            , p_limit_currency          => p_limit_curr_code
4107 	            , p_functional_currency     => g_functional_currency
4108 	            , p_conversion_date         => SYSDATE
4109 	            , p_conversion_type         => g_conversion_type
4110 	            );
4111                   l_total := l_total + NVL( l_term, 0 );
4112 
4113 	        EXCEPTION
4114 	          WHEN  GL_CURRENCY_API.NO_RATE  OR
4115                         GL_CURRENCY_API.INVALID_CURRENCY THEN
4116 
4117 	            oe_debug_pub.add( 'conversion exception for '
4118                     || l_currency_code, 1 );
4119 	            add_error_currency( x_error_curr_tbl, l_currency_code );
4120  	        END;
4121               ELSE
4122 	        oe_debug_pub.add(' Currency excluded from usages list ');
4123 	      END IF;
4124 
4125               FETCH customer_balance_all_curr_csr
4126               INTO l_balance, l_currency_code;
4127 
4128               i := i + 1;
4129             END LOOP;
4130             CLOSE customer_balance_all_curr_csr;
4131 
4132             ------returns are included
4133             ELSE
4134               OPEN customer_bal_all_curr_ret_csr;
4135 	      FETCH customer_bal_all_curr_ret_csr
4136               INTO l_balance, l_currency_code;
4137 
4138 	      -- For each currency in the cursor
4139 	      WHILE NOT customer_bal_all_curr_ret_csr%NOTFOUND
4140               LOOP
4141                 IF G_debug_flag = 'Y'
4142                 THEN
4143 	          oe_debug_pub.add
4144 	          ( '(all) cursor at ' || l_currency_code
4145                       || ' currency with balance '
4146 	            || l_balance || ' and bucket/length '
4147                     || l_bucket || '/' || l_bucket_length, 2 );
4148                 END IF;
4149 
4150 	        IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4151                       l_currency_code ,1,1),0) = 0 )
4152 	          OR
4153 	           ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4154                        l_currency_code ,1,1),0) > 0 )
4155 	            AND ( l_currency_code = p_limit_curr_code )
4156 	           )
4157 	        THEN
4158 	          BEGIN
4159 	            l_term :=
4160 	              OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4161 	              ( p_amount                  => l_balance
4162 	              , p_transactional_currency  => l_currency_code
4163 	              , p_limit_currency          => p_limit_curr_code
4164 	              , p_functional_currency     => g_functional_currency
4165 	              , p_conversion_date         => SYSDATE
4166 	              , p_conversion_type         => g_conversion_type
4167 	              );
4168                     l_total := l_total + NVL( l_term, 0 );
4169 
4170 	          EXCEPTION
4171 	            WHEN  GL_CURRENCY_API.NO_RATE  OR
4172                           GL_CURRENCY_API.INVALID_CURRENCY THEN
4173 
4174 	              oe_debug_pub.add( 'conversion exception for '
4175                       || l_currency_code, 1 );
4176 	              add_error_currency( x_error_curr_tbl, l_currency_code );
4177  	          END;
4178                 ELSE
4179 	          oe_debug_pub.add(' Currency excluded from usages list ');
4180 	        END IF;
4181 
4182                 FETCH customer_bal_all_curr_ret_csr
4183                 INTO l_balance, l_currency_code;
4184 
4185                 i := i + 1;
4186               END LOOP;
4187 
4188               CLOSE customer_bal_all_curr_ret_csr;
4189 
4190             END IF; ------end of checking if returns are included
4191 
4192 	    j  :=  p_binary_tbl.NEXT(j);
4193           END LOOP; -- J
4194 
4195       END IF; -- global/not global
4196     END IF; -- all currency
4197 
4198 ----------------------- END customer -----------------------------
4199 ------------------------------------------------------------------
4200 --------------------------Party-----------------------------------
4201 -------------------------------------------------------------------
4202   ELSIF p_party_id is NOT NULL
4203   THEN
4204 
4205     IF G_debug_flag = 'Y'
4206     THEN
4207       oe_debug_pub.add( 'exposure at Party level ',1);
4208       oe_debug_pub.add( 'g_use_party_hierarchy => '|| g_use_party_hierarchy );
4209     END IF;
4210 
4211     IF  NVL(p_include_all_flag,'N')  =  'N'
4212     THEN
4213       IF G_debug_flag = 'Y'
4214       THEN
4215         oe_debug_pub.add( 'NOT ALL currencies ');
4216       END IF;
4217 
4218       IF g_use_party_hierarchy = 'N'
4219       THEN
4220         i  := p_usage_curr_tbl.FIRST;
4221         WHILE  i  IS NOT NULL
4222         LOOP
4223           l_currency_code := p_usage_curr_tbl(i).usage_curr_code;
4224         --------------------------
4225         -- for left of Main Bucket
4226 	  l_bucket         :=  p_main_bucket;
4227 	  l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
4228 
4229           ----change for the Return project
4230           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4231           THEN
4232             -----returns are not included
4233 	    OPEN party_balance_stub_csr_global ;
4234 	    FETCH party_balance_stub_csr_global
4235             INTO l_balance;
4236 
4237           -----returns are included
4238           ELSE
4239             OPEN party_bal_stub_ret_csr_global ;
4240 	    FETCH party_bal_stub_ret_csr_global
4241             INTO l_balance;
4242           END IF;
4243 
4244            IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
4245                AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
4246                AND b8 = G_INVOICES
4247            THEN
4248              OPEN party_br_stub_csr_global ;
4249              FETCH party_br_stub_csr_global
4250              INTO l_br_balance ;
4251 
4252              CLOSE party_br_stub_csr_global ;
4253            END IF;
4254 
4255           IF G_debug_flag = 'Y'
4256           THEN
4257 	    oe_debug_pub.add
4258            ( 'global stub cursor at ' || l_currency_code
4259 	        || ' currency with balance ' || l_balance, 2 );
4260 	    oe_debug_pub.add
4261            ( 'global stub cursor at ' || l_currency_code
4262 	        || ' currency with  BR balance ' || l_br_balance, 2 );
4263            END IF;
4264             BEGIN
4265 	      l_term :=
4266 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4267 	        ( p_amount                  => l_balance +
4268                                NVL(l_br_balance,0)
4269 	        , p_transactional_currency  => l_currency_code
4270 	        , p_limit_currency          => p_limit_curr_code
4271 	        , p_functional_currency     => g_functional_currency
4272 	        , p_conversion_date         => SYSDATE
4273 	        , p_conversion_type         => g_conversion_type
4274 	        );
4275   	      l_total := l_total + NVL( l_term, 0 );
4276 
4277 	    EXCEPTION
4278 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
4279                     GL_CURRENCY_API.INVALID_CURRENCY THEN
4280 	        oe_debug_pub.add( 'conversion exception for '
4281                  || l_currency_code, 1 );
4282 	        add_error_currency( x_error_curr_tbl, l_currency_code );
4283             END;
4284 
4285             ----change for the Return project
4286             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4287             THEN
4288               CLOSE party_balance_stub_csr_global;
4289             ELSE
4290               CLOSE party_bal_stub_ret_csr_global;
4291             END IF;
4292 
4293 	  -----------------------------
4294 	  -- for fraction of Main Bucket
4295 
4296 	  j  :=  p_binary_tbl.FIRST;
4297 	  WHILE  j  IS NOT NULL
4298           LOOP
4299 	    l_bucket         :=  p_binary_tbl(j).bucket;
4300 	    l_bucket_length  :=  p_binary_tbl(j).bucket_length;
4301 
4302 
4303             ----change for the Return project
4304             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4305             THEN
4306 	      OPEN party_balance_csr_global ;
4307 
4308 	      FETCH party_balance_csr_global
4309               INTO l_balance;
4310 
4311             ---include returns
4312             ELSE
4313               OPEN party_balance_ret_csr_global ;
4314 
4315 	      FETCH party_balance_ret_csr_global
4316               INTO l_balance;
4317             END IF;
4318 
4319             IF G_debug_flag = 'Y'
4320             THEN
4321         	    oe_debug_pub.add
4322 	      ( 'global cursor at ' || l_currency_code
4323 	       || ' currency with balance ' || l_balance, 2 );
4324             END IF;
4325 	    BEGIN
4326 	      l_term :=
4327 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4328 	        ( p_amount                  => l_balance
4329 	        , p_transactional_currency  => l_currency_code
4330 	        , p_limit_currency          => p_limit_curr_code
4331 		, p_functional_currency     => g_functional_currency
4332 		, p_conversion_date         => SYSDATE
4333 		, p_conversion_type         => g_conversion_type
4334 		);
4335 	      l_total := l_total + NVL( l_term, 0 );
4336 
4337 	    EXCEPTION
4338 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
4339                     GL_CURRENCY_API.INVALID_CURRENCY THEN
4340 	        oe_debug_pub.add( 'conversion exception for '
4341                     || l_currency_code, 1 );
4342 	        add_error_currency( x_error_curr_tbl, l_currency_code );
4343 	    END;
4344 
4345             ----change for the Return project
4346             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4347             THEN
4348 
4349 	      CLOSE party_balance_csr_global ;
4350             ELSE
4351               CLOSE party_balance_ret_csr_global ;
4352             END IF;
4353 
4354             j  :=  p_binary_tbl.NEXT(j);
4355 
4356 	  END LOOP;
4357 
4358         i := p_usage_curr_tbl.NEXT(i);
4359       END LOOP;  -- i loop
4360 
4361      ELSE --- Hierarchy usages
4362        IF G_debug_flag = 'Y'
4363        THEN
4364          oe_debug_pub.add(' Hierarchy Usages ',1);
4365          oe_debug_pub.add(' OE_CREDIT_CHECK_UTIL.G_hierarchy_type => '||
4366           OE_CREDIT_CHECK_UTIL.G_hierarchy_type );
4367          oe_debug_pub.add(' G_MAX_BUCKET_LENGTH => '||
4368             G_MAX_BUCKET_LENGTH);
4369         END IF;
4370 
4371         i  := p_usage_curr_tbl.FIRST;
4372         WHILE  i  IS NOT NULL
4373         LOOP
4374           l_currency_code := p_usage_curr_tbl(i).usage_curr_code;
4375         --------------------------
4376         -- for left of Main Bucket
4377 	  l_bucket         :=  p_main_bucket;
4378 	  l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
4379 
4380           ---change for the Return project
4381           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4382           THEN
4383 	    OPEN party_h_bal_stub_csr_gl ;
4384 	    FETCH party_h_bal_stub_csr_gl
4385             INTO l_balance;
4386           ELSE
4387             OPEN party_h_bal_ret_stub_csr_gl ;
4388 	    FETCH party_h_bal_ret_stub_csr_gl
4389             INTO l_balance;
4390           END IF;
4391 
4392           IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
4393             AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
4394             AND b8 = G_INVOICES
4395           THEN
4396             OPEN party_br_h_stub_csr_gl ;
4397             FETCH party_br_h_stub_csr_gl
4398             INTO l_br_balance ;
4399             CLOSE party_br_h_stub_csr_gl ;
4400           END IF;
4401 
4402           IF G_debug_flag = 'Y'
4403           THEN
4404 	   oe_debug_pub.add
4405            ( 'global stub cursor at ' || l_currency_code
4406 	        || ' currency with balance ' || l_balance, 2 );
4407           END IF;
4408 
4409             BEGIN
4410 	      l_term :=
4411 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4412 	        ( p_amount                  => l_balance
4413                                  + nvl(l_br_balance ,0)
4414 	        , p_transactional_currency  => l_currency_code
4415 	        , p_limit_currency          => p_limit_curr_code
4416 	        , p_functional_currency     => g_functional_currency
4417 	        , p_conversion_date         => SYSDATE
4418 	        , p_conversion_type         => g_conversion_type
4419 	        );
4420   	      l_total := l_total + NVL( l_term, 0 );
4421 
4422 	    EXCEPTION
4423 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
4424                     GL_CURRENCY_API.INVALID_CURRENCY THEN
4425 	        oe_debug_pub.add( 'conversion exception for '
4426                  || l_currency_code, 1 );
4427 	        add_error_currency( x_error_curr_tbl, l_currency_code );
4428             END;
4429 
4430             ---change for the Return project
4431             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4432             THEN
4433 	      CLOSE party_h_bal_stub_csr_gl ;
4434             ELSE
4435               CLOSE party_h_bal_ret_stub_csr_gl ;
4436             END IF;
4437 
4438 	  -----------------------------
4439 	  -- for fraction of Main Bucket
4440 
4441 	  j  :=  p_binary_tbl.FIRST;
4442 	  WHILE  j  IS NOT NULL
4443           LOOP
4444 	    l_bucket         :=  p_binary_tbl(j).bucket;
4445 	    l_bucket_length  :=  p_binary_tbl(j).bucket_length;
4446 
4447             ---change for the Return project
4448             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4449             THEN
4450 
4451   	      OPEN party_h_balance_csr_global ;
4452 	      FETCH party_h_balance_csr_global
4453               INTO l_balance;
4454             ELSE
4455               OPEN party_h_bal_ret_csr_global ;
4456 	      FETCH party_h_bal_ret_csr_global
4457               INTO l_balance;
4458             END IF;
4459 
4460             IF G_debug_flag = 'Y'
4461             THEN
4462          	    oe_debug_pub.add
4463 	      ( 'global cursor at ' || l_currency_code
4464 	       || ' currency with balance ' || l_balance, 2 );
4465             END IF;
4466 
4467 	    BEGIN
4468 	      l_term :=
4469 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4470 	        ( p_amount                  => l_balance
4471 	        , p_transactional_currency  => l_currency_code
4472 	        , p_limit_currency          => p_limit_curr_code
4473 		, p_functional_currency     => g_functional_currency
4474 		, p_conversion_date         => SYSDATE
4475 		, p_conversion_type         => g_conversion_type
4476 		);
4477 	      l_total := l_total + NVL( l_term, 0 );
4478 
4479 	    EXCEPTION
4480 	      WHEN  GL_CURRENCY_API.NO_RATE  OR
4481                     GL_CURRENCY_API.INVALID_CURRENCY THEN
4482 	        oe_debug_pub.add( 'conversion exception for '
4483                     || l_currency_code, 1 );
4484 	        add_error_currency( x_error_curr_tbl, l_currency_code );
4485 	    END;
4486 
4487             ---change for the Return project
4488             IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4489             THEN
4490 	      CLOSE party_h_balance_csr_global ;
4491             ELSE
4492               CLOSE party_h_bal_ret_csr_global ;
4493             END IF;
4494 
4495             j  :=  p_binary_tbl.NEXT(j);
4496 
4497 	  END LOOP;
4498 
4499         i := p_usage_curr_tbl.NEXT(i);
4500       END LOOP;  -- i loop
4501 
4502 
4503      END IF; -- hierarchy check
4504 
4505     ELSE --  level all currencies
4506       IF G_debug_flag = 'Y'
4507       THEN
4508         oe_debug_pub.add(' Into ALL currencies  party ');
4509       END IF;
4510 
4511 
4512       i  := 0;
4513       --------------------------
4514       -- for left of Main Bucket
4515       l_bucket         :=  p_main_bucket;
4516       l_bucket_length  :=  G_MAX_BUCKET_LENGTH;
4517 
4518       IF g_use_party_hierarchy = 'N'
4519       THEN
4520        IF G_debug_flag = 'Y'
4521        THEN
4522          oe_debug_pub.add( ' Into party all curr ');
4523        END IF;
4524 
4525        ---change for the Return project
4526        IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4527        THEN
4528          ---returns are not included
4529          OPEN party_all_curr_stub_csr_global ;
4530          FETCH party_all_curr_stub_csr_global
4531          INTO l_balance, l_currency_code;
4532             -- For each currency in the cursor
4533 
4534           WHILE NOT party_all_curr_stub_csr_global%NOTFOUND
4535           LOOP
4536             IF G_debug_flag = 'Y'
4537             THEN
4538               oe_debug_pub.add
4539 	        ( '(all) stub global cursor at ' || l_currency_code
4540                    || ' currency with balance '
4541 	        || l_balance || ' and bucket/length '
4542                 || l_bucket || '/' || l_bucket_length, 2 );
4543             END IF;
4544 
4545 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4546                       l_currency_code ,1,1),0) = 0 )
4547 	        OR
4548 	        ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4549                     l_currency_code ,1,1),0) > 0 )
4550 	          AND ( l_currency_code = p_limit_curr_code )
4551 	        )
4552               THEN
4553                 BEGIN
4554 	          l_term :=
4555 	            OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4556 	            ( p_amount                  => l_balance
4557 	            , p_transactional_currency  => l_currency_code
4558 	            , p_limit_currency          => p_limit_curr_code
4559 	            , p_functional_currency     => g_functional_currency
4560 		    , p_conversion_date         => SYSDATE
4561 		    , p_conversion_type         => g_conversion_type
4562 		    );
4563 	          l_total := l_total + NVL( l_term, 0 );
4564 
4565 	        EXCEPTION
4566 	          WHEN  GL_CURRENCY_API.NO_RATE
4567                        OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
4568 	            oe_debug_pub.add( 'conversion exception for '
4569                        || l_currency_code, 1 );
4570 	            add_error_currency( x_error_curr_tbl, l_currency_code );
4571 	        END;
4572               ELSE
4573 	        oe_debug_pub.add( 'Currency excluded from usages ');
4574               END IF; -- exclude curr list
4575 
4576               FETCH party_all_curr_stub_csr_global
4577               INTO l_balance, l_currency_code;
4578 
4579               i := i + 1;
4580           END LOOP;
4581 
4582           CLOSE party_all_curr_stub_csr_global ;
4583 
4584         -----returns are included
4585         ELSE
4586           OPEN party_all_curr_stub_ret_csr_gl ;
4587           FETCH party_all_curr_stub_ret_csr_gl
4588           INTO l_balance, l_currency_code;
4589             -- For each currency in the cursor
4590 
4591           WHILE NOT party_all_curr_stub_ret_csr_gl%NOTFOUND
4592           LOOP
4593             IF G_debug_flag = 'Y'
4594             THEN
4595               oe_debug_pub.add
4596 	        ( '(all) stub global cursor at ' || l_currency_code
4597                    || ' currency with balance '
4598 	        || l_balance || ' and bucket/length '
4599                 || l_bucket || '/' || l_bucket_length, 2 );
4600             END IF;
4601 
4602 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4603                       l_currency_code ,1,1),0) = 0 )
4604 	        OR
4605 	        ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4606                     l_currency_code ,1,1),0) > 0 )
4607 	          AND ( l_currency_code = p_limit_curr_code )
4608 	        )
4609               THEN
4610                 BEGIN
4611 	          l_term :=
4612 	            OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4613 	            ( p_amount                  => l_balance
4614 	            , p_transactional_currency  => l_currency_code
4615 	            , p_limit_currency          => p_limit_curr_code
4616 	            , p_functional_currency     => g_functional_currency
4617 		    , p_conversion_date         => SYSDATE
4618 		    , p_conversion_type         => g_conversion_type
4619 		    );
4620 	          l_total := l_total + NVL( l_term, 0 );
4621 
4622 	        EXCEPTION
4623 	          WHEN  GL_CURRENCY_API.NO_RATE
4624                        OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
4625 	            oe_debug_pub.add( 'conversion exception for '
4626                        || l_currency_code, 1 );
4627 	            add_error_currency( x_error_curr_tbl, l_currency_code );
4628 	        END;
4629               ELSE
4630 	        oe_debug_pub.add( 'Currency excluded from usages ');
4631               END IF; -- exclude curr list
4632 
4633               FETCH party_all_curr_stub_ret_csr_gl
4634               INTO l_balance, l_currency_code;
4635 
4636               i := i + 1;
4637           END LOOP;
4638 
4639           CLOSE party_all_curr_stub_ret_csr_gl ;
4640 
4641         END IF; ---end of checking if returns are included
4642 
4643     --------------------- start  BR ---------------
4644        IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
4645          AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
4646         AND b8 = G_INVOICES
4647        THEN
4648 
4649           OPEN party_br_all_curr_stub_csr_gl ;
4650           FETCH party_br_all_curr_stub_csr_gl
4651           INTO l_br_balance, l_currency_code;
4652           -- For each currency in the cursor
4653 
4654           WHILE NOT party_br_all_curr_stub_csr_gl%NOTFOUND
4655           LOOP
4656 
4657             IF G_debug_flag = 'Y'
4658             THEN
4659              oe_debug_pub.add
4660 	      ( '(all) stub global cursor at ' || l_currency_code
4661                  || ' currency with BR balance '
4662 	      || l_br_balance || ' and bucket/length '
4663               || l_bucket || '/' || l_bucket_length, 2 );
4664             END IF;
4665 
4666 	     IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4667                     l_currency_code ,1,1),0) = 0 )
4668 	      OR
4669 	      ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4670                   l_currency_code ,1,1),0) > 0 )
4671 	        AND ( l_currency_code = p_limit_curr_code )
4672 	      )
4673             THEN
4674               BEGIN
4675 	        l_term :=
4676 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4677 	          ( p_amount                  => l_br_balance
4678 	          , p_transactional_currency  => l_currency_code
4679 	          , p_limit_currency          => p_limit_curr_code
4680 	          , p_functional_currency     => g_functional_currency
4681 		  , p_conversion_date         => SYSDATE
4682 		  , p_conversion_type         => g_conversion_type
4683 		  );
4684 	        l_total := l_total + NVL( l_term, 0 );
4685 
4686 	      EXCEPTION
4687 	        WHEN  GL_CURRENCY_API.NO_RATE
4688                      OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
4689 	          oe_debug_pub.add( 'conversion exception for '
4690                      || l_currency_code, 1 );
4691 	          add_error_currency( x_error_curr_tbl, l_currency_code );
4692 	      END;
4693             ELSE
4694 	      oe_debug_pub.add( 'Currency excluded from usages ');
4695             END IF; -- exclude curr list
4696 
4697             FETCH party_br_all_curr_stub_csr_gl
4698             INTO l_br_balance, l_currency_code;
4699 
4700             i := i + 1;
4701         END LOOP;
4702 
4703         CLOSE party_br_all_curr_stub_csr_gl ;
4704 
4705       END IF;
4706 
4707  -----------------------------end BR ------------
4708 	-- for fraction of Main Bucket
4709 
4710         j  :=  p_binary_tbl.FIRST;
4711         WHILE  j  IS NOT NULL LOOP
4712 	  l_bucket         :=  p_binary_tbl(j).bucket;
4713 	  l_bucket_length  :=  p_binary_tbl(j).bucket_length;
4714 
4715           ---change for the Return project
4716           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4717           THEN
4718             ---returns are not included
4719 	    OPEN party_all_curr_csr_global ;
4720   	    FETCH party_all_curr_csr_global
4721             INTO l_balance, l_currency_code;
4722 
4723 	    -- For each currency that exists, the cursor returns a row.
4724 	    -- Convert the balance and sum up to total exposure
4725 
4726 	    WHILE NOT party_all_curr_csr_global%NOTFOUND
4727             LOOP
4728 
4729               IF G_debug_flag = 'Y'
4730               THEN
4731 	        oe_debug_pub.add
4732 	        ( 'party all global cursor at ' || l_currency_code
4733                    || ' currency with balance '
4734 	          || l_balance || ' and bucket/length '
4735                   || l_bucket || '/' || l_bucket_length, 2 );
4736               END IF;
4737 
4738 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4739                   l_currency_code ,1,1),0) = 0 )
4740                 OR
4741 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4742                   l_currency_code ,1,1),0) > 0 )
4743 	           AND ( l_currency_code = p_limit_curr_code )
4744 	         )
4745 	      THEN
4746 	        BEGIN
4747 	          l_term :=
4748                     OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4749 	            ( p_amount                  => l_balance
4750 	            , p_transactional_currency  => l_currency_code
4751 	            , p_limit_currency          => p_limit_curr_code
4752  	            , p_functional_currency     => g_functional_currency
4753 	            , p_conversion_date         => SYSDATE
4754 	            , p_conversion_type         => g_conversion_type
4755 	            );
4756 	          l_total := l_total + NVL( l_term, 0 );
4757 
4758 	        EXCEPTION
4759 	          WHEN  GL_CURRENCY_API.NO_RATE  OR
4760                          GL_CURRENCY_API.INVALID_CURRENCY THEN
4761 	            oe_debug_pub.add( 'conversion exception for ' ||
4762                       l_currency_code, 1 );
4763 	            add_error_currency( x_error_curr_tbl, l_currency_code );
4764 	        END;
4765               ELSE
4766 	        oe_debug_pub.add( 'Currency excluded from usages ');
4767 	      END IF;  -- exclude curr list
4768 
4769               FETCH party_all_curr_csr_global INTO l_balance, l_currency_code;
4770 
4771               i := i + 1;
4772             END LOOP;
4773 	    CLOSE party_all_curr_csr_global;
4774 
4775           ----returns are included
4776           ELSE
4777 
4778 	    OPEN party_all_curr_ret_csr_gl ;
4779   	    FETCH party_all_curr_ret_csr_gl
4780             INTO l_balance, l_currency_code;
4781 
4782 	    -- For each currency that exists, the cursor returns a row.
4783 	    -- Convert the balance and sum up to total exposure
4784 
4785 	    WHILE NOT party_all_curr_ret_csr_gl%NOTFOUND
4786             LOOP
4787 
4788               IF G_debug_flag = 'Y'
4789               THEN
4790 	        oe_debug_pub.add
4791 	        ( 'party all global cursor at ' || l_currency_code
4792                    || ' currency with balance '
4793 	          || l_balance || ' and bucket/length '
4794                   || l_bucket || '/' || l_bucket_length, 2 );
4795               END IF;
4796 
4797 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4798                   l_currency_code ,1,1),0) = 0 )
4799                 OR
4800 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4801                   l_currency_code ,1,1),0) > 0 )
4802 	           AND ( l_currency_code = p_limit_curr_code )
4803 	         )
4804 	      THEN
4805 	        BEGIN
4806 	          l_term :=
4807                     OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4808 	            ( p_amount                  => l_balance
4809 	            , p_transactional_currency  => l_currency_code
4810 	            , p_limit_currency          => p_limit_curr_code
4811  	            , p_functional_currency     => g_functional_currency
4812 	            , p_conversion_date         => SYSDATE
4813 	            , p_conversion_type         => g_conversion_type
4814 	            );
4815 	          l_total := l_total + NVL( l_term, 0 );
4816 
4817 	        EXCEPTION
4818 	          WHEN  GL_CURRENCY_API.NO_RATE  OR
4819                          GL_CURRENCY_API.INVALID_CURRENCY THEN
4820 	            oe_debug_pub.add( 'conversion exception for ' ||
4821                       l_currency_code, 1 );
4822 	            add_error_currency( x_error_curr_tbl, l_currency_code );
4823 	        END;
4824               ELSE
4825 	        oe_debug_pub.add( 'Currency excluded from usages ');
4826 	      END IF;  -- exclude curr list
4827 
4828               FETCH party_all_curr_ret_csr_gl
4829               INTO l_balance, l_currency_code;
4830 
4831               i := i + 1;
4832             END LOOP;
4833 
4834 	    CLOSE party_all_curr_ret_csr_gl;
4835 
4836           END IF;  ---end of checking if returns are included
4837 
4838           j  :=  p_binary_tbl.NEXT(j);
4839         END LOOP;  -- J
4840 
4841       ELSE  -- Hierarchy
4842 
4843         IF G_debug_flag = 'Y'
4844         THEN
4845           oe_debug_pub.add(' Into party Hierarchy ',1);
4846         END IF;
4847 
4848         ---change for the Return project
4849         IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
4850         THEN
4851           ---returns are not included
4852           OPEN party_h_all_curr_stub_csr_gl ;
4853 
4854           FETCH party_h_all_curr_stub_csr_gl
4855           INTO l_balance, l_currency_code;
4856 
4857           -- For each currency in the cursor
4858 
4859           WHILE NOT party_h_all_curr_stub_csr_gl%NOTFOUND
4860           LOOP
4861             IF G_debug_flag = 'Y'
4862             THEN
4863               oe_debug_pub.add
4864 	      ( '(all) stub cursor at ' || l_currency_code
4865                       || ' currency with balance '
4866 	      || l_balance || ' and bucket/length '
4867                      || l_bucket || '/' || l_bucket_length, 2 );
4868             END IF;
4869 
4870 	    IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4871                l_currency_code ,1,1),0) = 0 )
4872 	       OR
4873 	       ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4874                   l_currency_code ,1,1),0) > 0 )
4875 	       AND ( l_currency_code = p_limit_curr_code )
4876 	        )
4877 	    THEN
4878 	      BEGIN
4879 	        l_term :=
4880 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4881 	        ( p_amount                  => l_balance
4882 	        , p_transactional_currency  => l_currency_code
4883 	        , p_limit_currency          => p_limit_curr_code
4884 	        , p_functional_currency     => g_functional_currency
4885 	        , p_conversion_date         => SYSDATE
4886 	        , p_conversion_type         => g_conversion_type
4887 	        );
4888 	        l_total := l_total + NVL( l_term, 0 );
4889 
4890 	      EXCEPTION
4891 	        WHEN  GL_CURRENCY_API.NO_RATE
4892                   OR  GL_CURRENCY_API.INVALID_CURRENCY
4893                 THEN
4894 	          oe_debug_pub.add( 'conversion exception for '
4895                   || l_currency_code, 1 );
4896 	          add_error_currency( x_error_curr_tbl, l_currency_code );
4897   	      END;
4898 	    ELSE
4899 	      oe_debug_pub.add(' Currency excluded from usages list ');
4900 	    END IF;
4901 
4902             FETCH party_h_all_curr_stub_csr_gl
4903             INTO l_balance, l_currency_code;
4904             i := i + 1;
4905           END LOOP;
4906 
4907           CLOSE party_h_all_curr_stub_csr_gl ;
4908 
4909         -----returns are included
4910         ELSE
4911           OPEN p_h_all_curr_stub_ret_csr_gl ;
4912 
4913           FETCH p_h_all_curr_stub_ret_csr_gl
4914           INTO l_balance, l_currency_code;
4915 
4916           -- For each currency in the cursor
4917 
4918           WHILE NOT p_h_all_curr_stub_ret_csr_gl%NOTFOUND
4919           LOOP
4920             IF G_debug_flag = 'Y'
4921             THEN
4922               oe_debug_pub.add
4923               ( '(all) stub cursor at ' || l_currency_code
4924                  || ' currency with balance '
4925                  || l_balance || ' and bucket/length '
4926                  || l_bucket || '/' || l_bucket_length, 2 );
4927             END IF;
4928 
4929 	    IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4930                l_currency_code ,1,1),0) = 0 )
4931 	       OR
4932 	       ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4933                 l_currency_code ,1,1),0) > 0 )
4934 	       AND ( l_currency_code = p_limit_curr_code )
4935 	        )
4936 	    THEN
4937 	      BEGIN
4938 	        l_term :=
4939 	        OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
4940 	        ( p_amount                  => l_balance
4941 	        , p_transactional_currency  => l_currency_code
4942 	        , p_limit_currency          => p_limit_curr_code
4943 	        , p_functional_currency     => g_functional_currency
4944 	        , p_conversion_date         => SYSDATE
4945 	        , p_conversion_type         => g_conversion_type
4946 	        );
4947 	        l_total := l_total + NVL( l_term, 0 );
4948 
4949 	      EXCEPTION
4950 	        WHEN  GL_CURRENCY_API.NO_RATE
4951                   OR  GL_CURRENCY_API.INVALID_CURRENCY
4952                 THEN
4953 	          oe_debug_pub.add( 'conversion exception for '
4954                   || l_currency_code, 1 );
4955 	           add_error_currency( x_error_curr_tbl, l_currency_code );
4956   	      END;
4957 	    ELSE
4958               oe_debug_pub.add(' Currency excluded from usages list ');
4959             END IF;
4960 
4961             FETCH p_h_all_curr_stub_ret_csr_gl
4962             INTO l_balance, l_currency_code;
4963             i := i + 1;
4964           END LOOP;
4965 
4966           CLOSE p_h_all_curr_stub_ret_csr_gl ;
4967 
4968         END IF; ----end of checking if retruns are included
4969 
4970 ------------------------ BR -------------
4971          IF p_credit_check_rule_rec.open_ar_days IS NOT NULL
4972           AND p_credit_check_rule_rec.open_ar_balance_flag = 'Y'
4973           AND b8 = G_INVOICES
4974          THEN
4975            OPEN party_br_h_all_curr_stub_gl ;
4976 	   FETCH party_br_h_all_curr_stub_gl
4977            INTO l_br_balance, l_currency_code;
4978           -- For each currency in the cursor
4979 
4980 	   WHILE NOT party_br_h_all_curr_stub_gl%NOTFOUND
4981            LOOP
4982              IF G_debug_flag = 'Y'
4983              THEN
4984 	       oe_debug_pub.add
4985 	       ( '(all) stub cursor at ' || l_currency_code
4986                      || ' currency with BR balance '
4987 	        || l_BR_balance || ' and bucket/length '
4988                   || l_bucket || '/' || l_bucket_length, 2 );
4989               END IF;
4990 
4991 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4992                   l_currency_code ,1,1),0) = 0 )
4993 	        OR
4994 	       ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
4995                      l_currency_code ,1,1),0) > 0 )
4996 		AND ( l_currency_code = p_limit_curr_code )
4997 	       )
4998 	      THEN
4999 	        BEGIN
5000 	        l_term :=
5001 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
5002 	          ( p_amount                  => l_br_balance
5003 	          , p_transactional_currency  => l_currency_code
5004 	          , p_limit_currency          => p_limit_curr_code
5005 	          , p_functional_currency     => g_functional_currency
5006 	          , p_conversion_date         => SYSDATE
5007 	          , p_conversion_type         => g_conversion_type
5008 	          );
5009 	        l_total := l_total + NVL( l_term, 0 );
5010 
5011 	      EXCEPTION
5012 	        WHEN  GL_CURRENCY_API.NO_RATE
5013                      OR  GL_CURRENCY_API.INVALID_CURRENCY THEN
5014 	          oe_debug_pub.add( 'conversion exception for '
5015                     || l_currency_code, 1 );
5016 	          add_error_currency( x_error_curr_tbl, l_currency_code );
5017   	      END;
5018 	    ELSE
5019 	      oe_debug_pub.add(' Currency excluded from usages list ');
5020 	    END IF;
5021 
5022             FETCH party_br_h_all_curr_stub_gl
5023             INTO l_br_balance, l_currency_code;
5024             i := i + 1;
5025           END LOOP;
5026 
5027           CLOSE party_br_h_all_curr_stub_gl ;
5028        END IF;
5029 --------------------- end BR ------------
5030         -- for fraction of Main Bucket
5031 
5032         j  :=  p_binary_tbl.FIRST;
5033 	WHILE  j  IS NOT NULL
5034         LOOP
5035  	  l_bucket         :=  p_binary_tbl(j).bucket;
5036 	  l_bucket_length  :=  p_binary_tbl(j).bucket_length;
5037 
5038           IF NVL(p_credit_check_rule_rec.include_returns_flag,'N') = 'N'
5039           THEN
5040             ---returns are not included
5041 	    OPEN party_h_all_curr_csr_global ;
5042 
5043 	    FETCH party_h_all_curr_csr_global
5044             INTO l_balance, l_currency_code;
5045 
5046 	    -- For each currency in the cursor
5047 	    WHILE NOT party_h_all_curr_csr_global%NOTFOUND
5048             LOOP
5049               IF G_debug_flag = 'Y'
5050               THEN
5051 	        oe_debug_pub.add
5052 	        ( '(all) cursor at ' || l_currency_code
5053                   || ' currency with balance '
5054 	          || l_balance || ' and bucket/length '
5055                   || l_bucket || '/' || l_bucket_length, 2 );
5056               END IF;
5057 
5058 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
5059                   l_currency_code ,1,1),0) = 0 )
5060 	         OR
5061 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
5062                   l_currency_code ,1,1),0) > 0 )
5063 	         AND ( l_currency_code = p_limit_curr_code )
5064 	         )
5065 	      THEN
5066 	        BEGIN
5067 	          l_term :=
5068 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
5069 	          ( p_amount                  => l_balance
5070 	          , p_transactional_currency  => l_currency_code
5071 	          , p_limit_currency          => p_limit_curr_code
5072 	          , p_functional_currency     => g_functional_currency
5073 	          , p_conversion_date         => SYSDATE
5074 	          , p_conversion_type         => g_conversion_type
5075 	          );
5076                   l_total := l_total + NVL( l_term, 0 );
5077 
5078 	        EXCEPTION
5079 	          WHEN  GL_CURRENCY_API.NO_RATE  OR
5080                         GL_CURRENCY_API.INVALID_CURRENCY
5081                   THEN
5082 
5083    	            oe_debug_pub.add( 'conversion exception for '
5084                     || l_currency_code, 1 );
5085 	            add_error_currency( x_error_curr_tbl, l_currency_code );
5086  	        END;
5087               ELSE
5088 	        oe_debug_pub.add(' Currency excluded from usages list ');
5089 	      END IF;
5090 
5091               FETCH party_h_all_curr_csr_global
5092               INTO l_balance, l_currency_code;
5093 
5094               i := i + 1;
5095             END LOOP;
5096             CLOSE party_h_all_curr_csr_global ;
5097 
5098           ---returns are included
5099           ELSE
5100             OPEN party_h_all_curr_ret_csr_gl ;
5101 
5102 	    FETCH party_h_all_curr_ret_csr_gl
5103             INTO l_balance, l_currency_code;
5104 
5105 	    -- For each currency in the cursor
5106 	    --WHILE NOT party_h_all_curr_csr_global%NOTFOUND -- bug 9213846
5107 	    WHILE NOT party_h_all_curr_ret_csr_gl%NOTFOUND
5108             LOOP
5109               IF G_debug_flag = 'Y'
5110               THEN
5111 	        oe_debug_pub.add
5112 	        ( '(all) cursor at ' || l_currency_code
5113                   || ' currency with balance '
5114 	          || l_balance || ' and bucket/length '
5115                   || l_bucket || '/' || l_bucket_length, 2 );
5116               END IF;
5117 
5118 	      IF ( NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
5119                   l_currency_code ,1,1),0) = 0 )
5120 	         OR
5121 	         ((NVL(INSTRB(OE_CREDIT_CHECK_UTIL.G_excl_curr_list,
5122                   l_currency_code ,1,1),0) > 0 )
5123 	         AND ( l_currency_code = p_limit_curr_code )
5124 	         )
5125 	      THEN
5126 	        BEGIN
5127 	          l_term :=
5128 	          OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
5129 	          ( p_amount                  => l_balance
5130 	          , p_transactional_currency  => l_currency_code
5131 	          , p_limit_currency          => p_limit_curr_code
5132 	          , p_functional_currency     => g_functional_currency
5133 	          , p_conversion_date         => SYSDATE
5134 	          , p_conversion_type         => g_conversion_type
5135 	          );
5136                   l_total := l_total + NVL( l_term, 0 );
5137 
5138 	        EXCEPTION
5139 	          WHEN  GL_CURRENCY_API.NO_RATE  OR
5140                         GL_CURRENCY_API.INVALID_CURRENCY
5141                   THEN
5142 
5143    	            oe_debug_pub.add( 'conversion exception for '
5144                     || l_currency_code, 1 );
5145 	            add_error_currency( x_error_curr_tbl, l_currency_code );
5146  	        END;
5147               ELSE
5148 	        oe_debug_pub.add(' Currency excluded from usages list ');
5149 	      END IF;
5150 
5151               FETCH party_h_all_curr_ret_csr_gl
5152               INTO l_balance, l_currency_code;
5153 
5154               i := i + 1;
5155             END LOOP;
5156             CLOSE party_h_all_curr_ret_csr_gl ;
5157 
5158           END IF; ---end of checking if returns are included
5159 
5160 	  j  :=  p_binary_tbl.NEXT(j);
5161         END LOOP; -- J
5162       END IF; -- global/not global
5163     END IF;
5164 ------------------------- end party ---------------------
5165 --------------------------------------------------------
5166 
5167   END IF; -- top IF level
5168 
5169 
5170   IF G_debug_flag = 'Y'
5171   THEN
5172     oe_debug_pub.add( ' -------------------------------------');
5173     oe_debug_pub.add( ' Final l_total ===> ' || l_total,1 );
5174     oe_debug_pub.add( ' Return out from  retrieve_exposure ');
5175   END IF;
5176 
5177   return NVL(l_total,0) ;
5178 
5179 EXCEPTION
5180 
5181   WHEN OTHERS THEN
5182     oe_debug_pub.add(SQLERRM );
5183 
5184     IF
5185       FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
5186     THEN
5187       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'retrieve_exposure');
5188     END IF;
5189 
5190 END retrieve_exposure;
5191 
5192 --TaxER start
5193 FUNCTION Is_Equal(p_param1 varchar2,p_param2  number)
5194 RETURN varchar2
5195 IS
5196 BEGIN
5197 
5198     IF p_param1 IS NOT NULL and p_param2 IS NOT NULL THEN
5199        IF to_number(p_param1)  = p_param2 THEN
5200          RETURN 'Y';
5201        END IF;
5202     END IF;
5203 
5204    RETURN 'N';
5205 EXCEPTION
5206 WHEN OTHERS THEN
5207    RETURN 'N';
5208 END Is_Equal;
5209 --TaxER end
5210 
5211 --========================================================================
5212 -- PROCEDURE : Init_Summary_Table     PUBLIC
5213 -- PARAMETERS: x_retcode              0 success, 1 warning, 2 error
5214 --             x_errbuf               error buffer
5215 --             p_lock_tables          'Y' or 'N' for all transaction tables
5216 ---
5217 -- COMMENT   : This is the concurrent program body for
5218 --             Initialize Credit Summaries Table
5219 --             which will repopulate oe_credit_summaries table with summarized
5220 --             credit exposure information.
5221 --             The p_lock_tables flag specifies if
5222 --             the oe_order_lines_all, oe_order_headers_all,
5223 --             oe_cash_adjustments, ar_payment_schedules_all,
5224 --           ar_cash_receipts_all tables should all be locked in exclusive mode
5225 --             until all of the summary data is obtained.
5226 --             If the flag is not set to 'Y', none of the tables is locked.
5227 -- 08-22-03    Modified to only select lines with payment type cc flag = Y
5228 --=======================================================================--
5229 PROCEDURE  Init_Summary_Table
5230 ( x_retcode        OUT NOCOPY VARCHAR2
5231 , x_errbuf         OUT NOCOPY VARCHAR2
5232 , p_lock_tables    IN  VARCHAR2
5233 )
5234 IS
5235 
5236 l_return_status          VARCHAR2(1);
5237 l_msg_count              NUMBER;
5238 l_msg_data               VARCHAR2(100);
5239 
5240 l_created_by             NUMBER;
5241 l_last_updated_by        NUMBER;
5242 l_last_update_login      NUMBER;
5243 l_request_id             NUMBER;
5244 l_program_application_id NUMBER;
5245 l_program_id             NUMBER;
5246 
5247 l_level                  NUMBER;
5248 l_bucket_length          NUMBER;
5249 
5250 l_ret                    BOOLEAN; --4219133
5251 l_status                 VARCHAR2(30);
5252 l_ont_schema             VARCHAR2(30);
5253 l_industry               VARCHAR2(30);
5254 l_sql_stmnt              VARCHAR2(200);
5255 l_past_due_bal           VARCHAR2(1);
5256 l_order_hold_bal         VARCHAR2(1);
5257 l_freight_bal            VARCHAR2(1);
5258 l_sql_stmnt_hwm		 VARCHAR2(500);  --8567481
5259 l_cc_level_flag          VARCHAR2(1):='Y';
5260 --14689044 start
5261 l_header_uninvoiced_orders     char(1)  := 'N';
5262 l_line_uninvoiced_orders       char(1)  := 'N';
5263 l_header_uninvoiced_orders_tax 	     char(1)  := 'N';
5264 l_line_uninvoiced_orders_tax   	 char(1)  := 'N';
5265 l_header_uninvoiced_freight    char(1)  := 'N';
5266 l_line_uninvoiced_freight    char(1)  := 'N';
5267 l_header_and_line_freight   char(1)  := 'N';
5268 l_invoices                 char(1)  := 'N';
5269 l_payments_at_risk         char(1)  := 'N';
5270 l_order_holds              char(1)  := 'N';
5271 l_line_holds               char(1)  := 'N';
5272 l_order_tax_holds         char(1)  := 'N';
5273 l_line_tax_holds          char(1)  := 'N';
5274 l_order_freight_holds     char(1)  := 'N';
5275 l_line_freight_holds      char(1)  := 'N';
5276 l_header_line_freight_holds char(1)  := 'N';
5277 l_external_exposure        char(1)  := 'N';
5278 l_past_due_invoices        char(1)  := 'N';
5279 l_br_invoices              char(1)  := 'N';
5280 l_br_payments_at_risk     char(1)  := 'N';
5281 l_head_return_uninv_orders     char(1)  := 'N';
5282 l_line_return_uninv_orders     char(1)  := 'N';
5283 l_head_return_uninv_ord_tax    char(1)  := 'N';
5284 l_line_return_uninv_ord_tax    char(1)  := 'N';
5285 l_head_return_uninv_freight    char(1)  := 'N';
5286 l_line_return_uninv_freight    char(1)  := 'N';
5287 l_head_line_return_freight    char(1)  := 'N';
5288 l_order_return_holds          char(1)  := 'N';
5289 l_line_return_holds          char(1)  := 'N';
5290 l_order_return_tax_holds     char(1)  := 'N';
5291 l_line_return_tax_holds     char(1)  := 'N';
5292 l_order_return_freight_holds   	  char(1)  := 'N';
5293 l_line_return_freight_holds    	 char(1)  := 'N';
5294 l_h_l_return_freight_holds 	 char(1)  := 'N';
5295 l_tax			 	 char(1)  := 'N';  --14689044
5296 --14689044 end
5297 
5298 /*14689044 start
5299 CURSOR cc_precalc_rules
5300 IS
5301 SELECT
5302   orders_on_hold_flag
5303 , maximum_days_past_due
5304 , nvl(incl_freight_charges_flag, 'N') incl_freight_charges_flag
5305 FROM oe_credit_check_rules
5306 WHERE nvl(quick_cr_check_flag, 'N') = 'Y'
5307 AND   sysdate between nvl(start_date_active, sysdate)
5308                   and nvl(end_date_active, sysdate);
5309 14689044 end*/
5310 --14689044 start
5311 CURSOR credit_check_rules
5312 IS
5313 SELECT *
5314 FROM oe_credit_check_rules
5315 WHERE NVL(quick_cr_check_flag, 'N') = 'Y'
5316 AND   sysdate between nvl(start_date_active, sysdate)
5317                  and nvl(end_date_active, sysdate);
5318 --14689044 end
5319 
5320 BEGIN
5321 
5322   IF G_debug_flag = 'Y'
5323   THEN
5324     oe_debug_pub.add( 'In OEXVCRXB.Init_Summary_Table ', 1 );
5325   END IF;
5326 
5327 -----------
5328 -- Locks needed for periodic operation (no triggers/table handlers):
5329 --
5330 -- Goal: Read-consistent view accross transaction tables
5331 -- Means: set transaction level read consistency, and only commit after all
5332 --   changes.
5333 --   This can result in ORA-1555: snapshot too old (rollback segment too small)
5334 --   because the rollback segments of all transactions occurring
5335 --   while initialization
5336 --   is in progress are used to reconstruct old (read-consistent) data.
5337 --   See "Multiversion Concurrency Control" in Oracle Concepts manual
5338 --
5339 -- (Note: When periodic initialization occurs
5340 --  while many transactions take place,
5341 -- the rollback segment for the initialization transaction will be hot
5342 -- because it is accessed to reconstruct old data in the summary table.)
5343 -- (Note: Due to the full delete, the rollback segment needs to be at least
5344 --  twice the size of the summary table. The summary table is small however.)
5345 --
5346 -- Compromise: Read-consistent view per transaction tables seperately
5347 -- Tradeoffs:  +rollback segment +(potentially) contention
5348 --             -inconsistencies e.g. for payrisk vs. invoices atomic booking
5349 -- Means: Nothing required
5350 --
5351 -- Goal: consistent state of summary table
5352 -- Means: no commit until all balance types have been updated
5353 
5354 
5355 
5356 -----------
5357 -- Locks needed for init only operation:
5358 -- Goal: No updates to transaction tables so that triggers don't interfere with
5359 --       initialization
5360 -- Means: Exclusive Locks on all transaction tables
5361 -- Compromise 1: Read-consistency or compromise as for periodic operation, while
5362 --             Triggers are switched off
5363 -- Tradeoffs:  Turning triggers on is not guaranteed to
5364 --    coincide with new update,
5365 --             but quite likely
5366 -- Compromise 2: No considerations
5367 -- Tradeoffs:  Triggers fire during the initialization: double counting
5368 
5369 
5370 
5371 
5372 --  TODO: Periodic operation only. Change this once we have triggers/handlers.
5373 
5374 IF p_lock_tables  =  'Y'  THEN
5375 --  SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
5376 
5377 
5378   IF G_debug_flag = 'Y'
5379   THEN
5380     oe_debug_pub.add( 'starting to lock tables', 2 );
5381   END IF;
5382 
5383   LOCK TABLE oe_order_lines_all          IN EXCLUSIVE MODE;
5384   LOCK TABLE oe_order_headers_all        IN EXCLUSIVE MODE;
5385   LOCK TABLE oe_price_adjustments        IN EXCLUSIVE MODE;
5386   LOCK TABLE ar_payment_schedules_all    IN EXCLUSIVE MODE;
5387   LOCK TABLE ar_cash_receipts_all        IN EXCLUSIVE MODE;
5388   LOCK TABLE ar_cash_receipt_history_all IN EXCLUSIVE MODE;
5389 
5390   IF G_debug_flag = 'Y'
5391   THEN
5392     oe_debug_pub.add( 'locked tables', 2 );
5393   END IF;
5394 END IF;
5395 
5396 
5397 
5398 l_created_by                := fnd_global.USER_ID;
5399 l_last_updated_by           := fnd_global.USER_ID;
5400 l_last_update_login         := fnd_global.LOGIN_ID;
5401 
5402 l_request_id                := fnd_global.CONC_REQUEST_ID;
5403 l_program_application_id    := fnd_global.PROG_APPL_ID;
5404 l_program_id                := fnd_global.CONC_PROGRAM_ID;
5405 
5406 
5407 --Bug 4219133:
5408 --If the Profile 'OM: Preserve External Credit Balances' is set to
5409 --Yes,application will use 'delete' and preserve external credit exposure.
5410 --When this profile is set to 'No', application will truncate the table
5411 --before populating the credit exposure.
5412 
5413   IF G_debug_flag = 'Y'
5414   THEN
5415     oe_debug_pub.add( 'Value of the profile OM: Preserve External Credit Balances is  :' || NVL(FND_PROFILE.VALUE('ONT_PRESERVE_EXT_CR_BAL'),'Y'),2);
5416   END IF;
5417 
5418   --8567481 start
5419   l_ret := FND_INSTALLATION.get_app_info('ONT',l_status,l_industry,l_ont_schema);
5420   l_sql_stmnt_hwm := 'ANALYZE TABLE '|| l_ont_schema||'.oe_credit_summaries  ESTIMATE STATISTICS';
5421   EXECUTE IMMEDIATE l_sql_stmnt_hwm;
5422   --8567481 end
5423 
5424   IF NVL(FND_PROFILE.VALUE('ONT_PRESERVE_EXT_CR_BAL'),'Y') = 'Y' THEN
5425      /*14689044 start
5426      DELETE FROM oe_credit_summaries
5427      WHERE       balance_type <> 18;
5428      14689044 end*/
5429      --14689044 start
5430     DELETE  FROM oe_credit_summaries
5431     WHERE       balance_type IN(1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,30,31,32
5432                                  ,33,34,35,36);
5433     --14689044 end
5434   ELSE
5435      l_ret := FND_INSTALLATION.get_app_info('ONT',l_status,l_industry,l_ont_schema); --This API is used to get schema name
5436      l_sql_stmnt := 'truncate table '||l_ont_schema ||'.oe_credit_summaries';
5437      EXECUTE IMMEDIATE l_sql_stmnt;
5438   END IF;
5439 
5440 /* comment out the following code for bug 4219133
5441 -- Do not delete external exposure data
5442 DELETE FROM oe_credit_summaries
5443 WHERE       balance_type <> 18;
5444 */
5445 
5446 
5447   IF G_debug_flag = 'Y'
5448   THEN
5449     oe_debug_pub.add( 'purged summary table at ' || DO_TIME, 2 );
5450   END IF;
5451 
5452   -- Bug 3960616 : Scan all PreCalc CC Rules to find required Balances.
5453 /*14689044 start
5454   l_past_due_bal := 'N';
5455   l_order_hold_bal := 'N';
5456   l_freight_bal := 'N';
5457 
5458   FOR cc_rules_rec in cc_precalc_rules LOOP
5459 
5460     --If Max Days Past Due set on any Rule, store Past Due Invoice Balance.
5461 
5462     IF cc_rules_rec.maximum_days_past_due is NOT NULL THEN
5463       l_past_due_bal := 'Y';
5464     END IF;
5465 
5466     -- If Orders on Hold set to be excluded on any Rule, store Hold Balances.
5467 
5468     IF cc_rules_rec.orders_on_hold_flag = 'Y' THEN
5469       l_order_hold_bal := 'Y';
5470     END IF;
5471 
5472     -- If Freight Charges set to be included on any Rule, store Freight Balances.
5473 
5474     IF cc_rules_rec.incl_freight_charges_flag = 'Y' THEN
5475       l_freight_bal := 'Y';
5476     END IF;
5477 
5478   END LOOP;
5479 
5480  begin
5481    select 'N'
5482      into l_cc_level_flag
5483      from dual
5484       where not exists ( select 1 from oe_credit_check_rules where credit_check_level_code = 'ORDER' and quick_cr_check_flag= 'Y');
5485    exception
5486     when others then
5487       l_cc_level_flag:='Y';
5488   end;
5489 
5490   oe_debug_pub.add( 'Create Past Due Invoice Balance : '||l_past_due_bal);
5491   oe_debug_pub.add( 'Create Orders on Hold Balance : '||l_order_hold_bal);
5492   oe_debug_pub.add( 'Create Freight Charges Balance : '||l_freight_bal);
5493   oe_debug_pub.add( 'Credit Check Level Flag : '||l_cc_level_flag);
5494 14689044 end*/
5495 
5496 --14689044 start
5497 FOR  p_credit_check_rule_rec in credit_check_rules
5498 LOOP
5499 
5500   IF  p_credit_check_rule_rec.uninvoiced_orders_flag     =  'Y'
5501   THEN
5502     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
5503     THEN
5504       l_line_uninvoiced_orders := 'Y';
5505 
5506       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5507       THEN
5508         l_line_return_uninv_orders := 'Y';
5509       END IF;
5510 
5511       IF NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N')  =  'N'
5512       THEN
5513          l_line_holds := 'Y';
5514 
5515         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5516         THEN
5517           l_line_return_holds := 'Y';
5518         END IF;
5519 
5520       END IF;
5521     ELSE
5522 
5523       l_header_uninvoiced_orders := 'Y';
5524 
5525       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5526       THEN
5527          l_head_return_uninv_orders := 'Y';
5528       END IF;
5529 
5530       IF NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N')  =  'N'
5531       THEN
5532           l_order_holds := 'Y';
5533 
5534         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5535         THEN
5536           l_order_return_holds := 'Y';
5537         END IF;
5538 
5539       END IF;
5540     END IF;
5541 
5542   END IF;
5543 
5544   IF  p_credit_check_rule_rec.include_tax_flag           =  'Y'
5545   THEN
5546     l_tax   := 'Y';  --14689044
5547     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
5548     THEN
5549       l_line_uninvoiced_orders_tax := 'Y';
5550 
5551       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5552       THEN
5553         l_line_return_uninv_ord_tax := 'Y';
5554       END IF;
5555 
5556       IF NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N')  =  'N'
5557       THEN
5558         l_line_tax_holds := 'Y';
5559 
5560         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5561         THEN
5562           l_line_return_tax_holds := 'Y';
5563         END IF;
5564 
5565       END IF;
5566     ELSE
5567       l_header_uninvoiced_orders_tax := 'Y';
5568 
5569       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5570       THEN
5571         l_head_return_uninv_ord_tax := 'Y';
5572       END IF;
5573 
5574       IF NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N')  =  'N'
5575       THEN
5576         l_order_tax_holds := 'Y';
5577 
5578         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5579         THEN
5580           l_order_return_tax_holds := 'Y';
5581         END IF;
5582 
5583       END IF;
5584     END IF;
5585   END IF;
5586 
5587   IF  p_credit_check_rule_rec.incl_freight_charges_flag  =  'Y'
5588   THEN
5589     IF p_credit_check_rule_rec.credit_check_level_code  = 'LINE'
5590     THEN
5591       l_line_uninvoiced_freight := 'Y';
5592 
5593       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5594       THEN
5595         l_line_return_uninv_freight := 'Y';
5596       END IF;
5597 
5598       IF NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N')  =  'N'
5599       THEN
5600         l_line_freight_holds := 'Y';
5601 
5602         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5603         THEN
5604           l_line_return_freight_holds := 'Y';
5605         END IF;
5606 
5607       END IF;
5608     ELSE
5609       l_header_uninvoiced_freight := 'Y';
5610 
5611       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5612       THEN
5613         l_head_return_uninv_freight := 'Y';
5614       END IF;
5615 
5616      IF NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N')  =  'N'
5617      THEN
5618         l_order_freight_holds := 'Y';
5619 
5620         IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5621         THEN
5622           l_order_return_freight_holds := 'Y';
5623         END IF;
5624 
5625       END IF;
5626     END IF;
5627 
5628     l_header_and_line_freight := 'Y';
5629 
5630     IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5631     THEN
5632       l_head_line_return_freight := 'Y';
5633     END IF;
5634 
5635     IF NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N')  =  'N'
5636     THEN
5637       l_header_line_freight_holds := 'Y';
5638 
5639       IF p_credit_check_rule_rec.include_returns_flag = 'Y'
5640       THEN
5641         l_h_l_return_freight_holds := 'Y';
5642       END IF;
5643 
5644     END IF;
5645   END IF;
5646 
5647   IF  p_credit_check_rule_rec.include_external_exposure_flag  =  'Y'  THEN
5648     l_external_exposure := 'Y';
5649   END IF;
5650 
5651     IF  p_credit_check_rule_rec.open_ar_balance_flag  =  'Y'
5652       AND NVL(p_credit_check_rule_rec.include_payments_at_risk_flag,'N')  =  'N'  THEN
5653     l_payments_at_risk := 'Y';
5654 
5655     IF p_credit_check_rule_rec.open_ar_days is NULL
5656     THEN
5657       l_br_payments_at_risk:= 'Y';
5658     END IF;
5659 
5660   END IF;
5661   IF  p_credit_check_rule_rec.open_ar_balance_flag  =  'Y'  THEN
5662     l_invoices := 'Y';
5663 
5664     IF p_credit_check_rule_rec.open_ar_days is NULL
5665     THEN
5666       l_br_invoices := 'Y';
5667     END IF;
5668   END IF;
5669 
5670 
5671     IF p_credit_check_rule_rec.maximum_days_past_due is NOT NULL THEN
5672       l_past_due_invoices := 'Y';
5673     END IF;
5674 
5675 END LOOP;
5676 
5677   IF G_debug_flag = 'Y'
5678   THEN
5679 	oe_debug_pub.add('header_uninvoiced_orders:'||l_header_uninvoiced_orders);
5680 	oe_debug_pub.add('line_uninvoiced_orders:'||l_line_uninvoiced_orders);
5681 	oe_debug_pub.add('header_uninvoiced_orders_tax:'||l_header_uninvoiced_orders_tax);
5682 	oe_debug_pub.add('line_uninvoiced_orders_tax:'||l_line_uninvoiced_orders_tax );
5683 	oe_debug_pub.add('header_uninvoiced_freight:'||l_header_uninvoiced_freight);
5684 	oe_debug_pub.add('line_uninvoiced_freight:'||l_line_uninvoiced_freight);
5685 	oe_debug_pub.add('header_and_line_freight:'||l_header_and_line_freight );
5686 	oe_debug_pub.add('invoices:'||l_invoices);
5687 	oe_debug_pub.add('payments_at_risk:'||l_payments_at_risk);
5688 	oe_debug_pub.add('order_holds:'||l_order_holds);
5689 	oe_debug_pub.add('line_holds:'||l_line_holds);
5690 	oe_debug_pub.add('order_tax_holds:'||l_order_tax_holds);
5691 	oe_debug_pub.add('line_tax_holds:'||l_line_tax_holds);
5692 	oe_debug_pub.add('order_freight_holds:'||l_order_freight_holds);
5693 	oe_debug_pub.add('line_freight_holds :'||l_line_freight_holds );
5694 	oe_debug_pub.add('header_line_freight_holds :'||l_header_line_freight_holds );
5695 	oe_debug_pub.add('external_exposure :'||l_external_exposure );
5696 	oe_debug_pub.add('past_due_invoices :'||l_past_due_invoices );
5697 	oe_debug_pub.add('br_invoices:'||l_br_invoices);
5698 	oe_debug_pub.add('br_payments_at_risk:'||l_br_payments_at_risk);
5699 	oe_debug_pub.add('head_return_uninv_orders:'||l_head_return_uninv_orders);
5700 	oe_debug_pub.add('line_return_uninv_orders:'||l_line_return_uninv_orders);
5701 	oe_debug_pub.add('head_return_uninv_ord_tax:'||l_head_return_uninv_ord_tax);
5702 	oe_debug_pub.add('line_return_uninv_ord_tax:'||l_line_return_uninv_ord_tax);
5703 	oe_debug_pub.add('head_return_uninv_freight:'||l_head_return_uninv_freight);
5704 	oe_debug_pub.add('line_return_uninv_freight:'||l_line_return_uninv_freight);
5705 	oe_debug_pub.add('head_line_return_freight :'||l_head_line_return_freight);
5706 	oe_debug_pub.add('order_return_holds :'||l_order_return_holds);
5707 	oe_debug_pub.add('line_return_holds:'||l_line_return_holds);
5708 	oe_debug_pub.add('order_return_tax_holds:'||l_order_return_tax_holds);
5709 	oe_debug_pub.add('line_return_tax_holds :'||l_line_return_tax_holds);
5710 	oe_debug_pub.add('order_return_freight_holds:'||l_order_return_freight_holds);
5711 	oe_debug_pub.add('line_return_freight_holds:'||l_line_return_freight_holds);
5712 	oe_debug_pub.add('h_l_return_freight_holds :'||l_h_l_return_freight_holds );
5713     END IF;
5714 --14689044 end
5715 
5716 
5717 INSERT INTO OE_INIT_CREDIT_SUMM_GTT
5718 (line_ordered_quantity  ,
5719 line_unit_selling_price,
5720 order_invoice_to_org_id,
5721 rl_amount,
5722 rl_quantity_ordered,
5723 order_org_id ,
5724 order_transactional_curr_code,
5725 line_schedule_ship_date ,
5726 line_request_date  ,
5727 order_request_date,
5728 order_creation_date,
5729 line_tax_value    ,
5730 line_invoice_to_org_id,
5731 line_line_category_code ,
5732 line_invoiced_quantity  ,
5733 line_payment_type_code ,
5734 order_payment_type_code,
5735 order_order_number    ,
5736 line_line_id  ,
5737 order_header_id,
5738 line_header_id ,
5739 order_cust_account_id,
5740 order_party_id,
5741 line_cust_account_id,
5742 line_party_id,
5743 interface_line_attribute6)  --TaxER
5744 select /*+ leading(L) use_nl(H SU S CA CA_L SU_L S_L) */   --14689044
5745 l.ordered_quantity line_ordered_quantity,
5746 l.unit_selling_price line_unit_selling_price,
5747 h.invoice_to_org_id   order_invoice_to_org_id,
5748 0  rl_amount,
5749 0  rl_quantity_ordered,
5750 h.org_id  order_org_id,
5751 h.transactional_curr_code order_transactional_curr_code,
5752 l.schedule_ship_date  line_schedule_ship_date,
5753 l.request_date  line_request_date,
5754 h.request_date  order_request_date,
5755 h.creation_date  order_creation_date,
5756 --TaxER l.tax_value  line_tax_value,
5757 NVL(l.tax_line_value,l.tax_value)  line_tax_value,  --TaxER
5758 l.invoice_to_org_id  line_invoice_to_org_id,
5759 l.line_category_code  line_line_category_code,
5760 l.invoiced_quantity  line_invoiced_quantity,
5761 l.payment_type_code  line_payment_type_code,
5762 h.payment_type_code  order_payment_type_code,
5763 h.order_number  order_order_number,
5764 l.line_id  line_line_id,
5765 h.header_id  order_header_id,
5766 l.header_id  line_header_id,
5767 s.cust_account_id  order_cust_account_id,
5768 ca.party_id   order_party_id,
5769 s_l.cust_account_id  line_cust_account_id,
5770 ca_l.party_id   line_party_id,
5771 -999 interface_line_attribute6   --TaxER
5772 from  oe_order_lines_all       l
5773     , oe_order_headers_all     h
5774     , hz_cust_site_uses_all          su
5775     , hz_cust_acct_sites_all         s
5776     , hz_cust_accounts               ca
5777     , hz_cust_site_uses_all          su_l
5778     , hz_cust_acct_sites_all         s_l
5779     , hz_cust_accounts               ca_l
5780 where  h.header_id                    =  l.header_id
5781     AND    h.booked_flag                  =  'Y'
5782     AND    h.open_flag                    =  'Y'
5783     AND    l.open_flag                    =  'Y'
5784     AND    NVL( l.invoiced_quantity, 0 )  =  0
5785     AND    su.site_use_id                 =  h.invoice_to_org_id
5786     AND    su.cust_acct_site_id           =  s.cust_acct_site_id
5787     AND    ca.cust_account_id             =  s.cust_account_id
5788     AND    su_l.site_use_id                 =  l.invoice_to_org_id
5789     AND    su_l.cust_acct_site_id           =  s_l.cust_acct_site_id
5790     AND    ca_l.cust_account_id             =  s_l.cust_account_id
5791     /*14689044 start
5792     AND    EXISTS
5793            ( SELECT  NULL
5794              FROM  oe_payment_types_all t
5795              WHERE t.credit_check_flag = 'Y'
5796              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
5797              AND   l.header_id = h.header_id
5798              AND   t.payment_type_code =
5799                    DECODE(l.payment_type_code, NULL,
5800                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
5801                             h.payment_type_code),
5802                           l.payment_type_code)
5803            )
5804     14689044 end*/
5805     --14689044 start
5806     AND EXISTS ( SELECT /*+ no_unnest */ NULL
5807                FROM  OE_PAYMENT_TYPES_ALL T
5808                WHERE T.CREDIT_CHECK_FLAG = 'Y'
5809                AND NVL(T.ORG_ID,-99)   = NVL(H.ORG_ID, -99)
5810                AND  L.PAYMENT_TYPE_CODE IS NOT NULL
5811                AND  T.PAYMENT_TYPE_CODE  =  L.PAYMENT_TYPE_CODE
5812                UNION ALL
5813                SELECT  /*+ no_unnest */ NULL
5814                FROM  OE_PAYMENT_TYPES_ALL T
5815                WHERE T.CREDIT_CHECK_FLAG = 'Y'
5816                AND   NVL(T.ORG_ID,-99)   = NVL(H.ORG_ID, -99)
5817                AND   L.PAYMENT_TYPE_CODE IS NULL AND  H.PAYMENT_TYPE_CODE IS NOT NULL
5818                AND   T.PAYMENT_TYPE_CODE = H.PAYMENT_TYPE_CODE
5819                UNION ALL
5820                SELECT  /*+ no_unnest */  NULL
5821                FROM  OE_PAYMENT_TYPES_ALL T
5822                WHERE T.CREDIT_CHECK_FLAG = 'Y'
5823                AND   NVL(T.ORG_ID,-99)   = NVL(H.ORG_ID, -99)
5824                AND   L.PAYMENT_TYPE_CODE IS NULL AND  H.PAYMENT_TYPE_CODE IS NULL
5825                )
5826     --14689044 end
5827 --14689044 UNION ALL
5828 UNION --14689044
5829 select
5830 /*+ cardinality ( rl 10 ) leading(rl h l)  */ 0 line_ordered_quantity,
5831 0 line_unit_selling_price,
5832 h.invoice_to_org_id   order_invoice_to_org_id,
5833 rl.amount  rl_amount,
5834 rl.quantity_ordered rl_quantity_ordered,
5835 h.org_id  order_org_id,
5836 h.transactional_curr_code order_transactional_curr_code,
5837 l.schedule_ship_date  line_schedule_ship_date,
5838 l.request_date  line_request_date,
5839 h.request_date  order_request_date,
5840 h.creation_date  order_creation_date,
5841 --TaxER l.tax_value  line_tax_value,
5842 Decode(NVL(rl.interface_line_attribute11,0),0,NVL(l.tax_line_value,l.tax_value),0) line_tax_value, --TaxER
5843 l.invoice_to_org_id  line_invoice_to_org_id,
5844 l.line_category_code  line_line_category_code,
5845 l.invoiced_quantity  line_invoiced_quantity,
5846 l.payment_type_code  line_payment_type_code,
5847 h.payment_type_code  order_payment_type_code,
5848 h.order_number  order_order_number,
5849 l.line_id  line_line_id,
5850 h.header_id  order_header_id,
5851 l.header_id  line_header_id,
5852 s.cust_account_id  order_cust_account_id,
5853 ca.party_id   order_party_id,
5854 s_l.cust_account_id  line_cust_account_id,
5855 ca_l.party_id   line_party_id,
5856 DECODE(OE_CREDIT_EXPOSURE_PVT.Is_Equal(rl.interface_line_attribute6,l.line_id),'Y',-999,to_number(rl.interface_line_attribute6))   interface_line_attribute6   --TaxER
5857 from  oe_order_lines_all       l
5858     , oe_order_headers_all     h
5859     , hz_cust_site_uses_all          su
5860     , hz_cust_acct_sites_all         s
5861     , hz_cust_accounts               ca
5862     , hz_cust_site_uses_all          su_l
5863     , hz_cust_acct_sites_all         s_l
5864     , hz_cust_accounts               ca_l
5865     , ra_interface_lines_all         rl
5866 where      h.header_id                    =  l.header_id
5867     AND    h.booked_flag                  =  'Y'
5868     AND    rl.orig_system_bill_customer_id = ca.cust_account_id
5869     AND    nvl(rl.interface_status, '~')  <> 'P'
5870     AND    rl.interface_line_context      = 'ORDER ENTRY'
5871     AND    rl.interface_line_attribute1   = h.order_number
5872     --TaxER AND    rl.interface_line_attribute6   = l.line_id
5873     AND    NVL( l.invoiced_quantity, 0 )  <>  0
5874     AND    su.site_use_id                 =  h.invoice_to_org_id
5875     AND    su.cust_acct_site_id           =  s.cust_acct_site_id
5876     AND    ca.cust_account_id             =  s.cust_account_id
5877     AND    su_l.site_use_id                 =  l.invoice_to_org_id
5878     AND    su_l.cust_acct_site_id           =  s_l.cust_acct_site_id
5879     AND    ca_l.cust_account_id             =  s_l.cust_account_id
5880     /*14689044 start
5881     AND    EXISTS
5882            ( SELECT  NULL
5883              FROM  oe_payment_types_all t
5884              WHERE t.credit_check_flag = 'Y'
5885              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
5886              AND   l.header_id = h.header_id
5887              AND   t.payment_type_code =
5888                    DECODE(l.payment_type_code, NULL,
5889                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
5890                             h.payment_type_code),
5891                           l.payment_type_code)
5892            );
5893     14689044 end*/
5894     --14689044 start
5895     AND EXISTS ( SELECT /*+ no_unnest */ NULL
5896                FROM  OE_PAYMENT_TYPES_ALL T
5897                WHERE T.CREDIT_CHECK_FLAG = 'Y'
5898                AND NVL(T.ORG_ID,-99)   = NVL(H.ORG_ID, -99)
5899                AND  L.PAYMENT_TYPE_CODE IS NOT NULL
5900                AND  T.PAYMENT_TYPE_CODE  =  L.PAYMENT_TYPE_CODE
5901                UNION ALL
5902                SELECT  /*+ no_unnest */ NULL
5903                FROM  OE_PAYMENT_TYPES_ALL T
5904                WHERE T.CREDIT_CHECK_FLAG = 'Y'
5905                AND   NVL(T.ORG_ID,-99)   = NVL(H.ORG_ID, -99)
5906                AND   L.PAYMENT_TYPE_CODE IS NULL AND  H.PAYMENT_TYPE_CODE IS NOT NULL
5907                AND   T.PAYMENT_TYPE_CODE = H.PAYMENT_TYPE_CODE
5908                UNION ALL
5909                SELECT  /*+ no_unnest */  NULL
5910                FROM  OE_PAYMENT_TYPES_ALL T
5911                WHERE T.CREDIT_CHECK_FLAG = 'Y'
5912                AND   NVL(T.ORG_ID,-99)   = NVL(H.ORG_ID, -99)
5913                AND   L.PAYMENT_TYPE_CODE IS NULL AND  H.PAYMENT_TYPE_CODE IS NULL
5914                );
5915     --14689044 end
5916 
5917 
5918 --  For each balance type, a distinct insert statement
5919 --  is run against the relevant OM/AR transaction tables
5920 --  The summary table is populated with precalculated summaries
5921 --  (the SELECT subquery of each INSERT statent) which are
5922 --  then used in the Get_Exposure procedure to quickly
5923 --  determine the total exposure depending on the credit
5924 --  check rule and other parameters.
5925 
5926 
5927 --------------------------------------------------------
5928 --  Insert Tax Summaries into oe_credit_summaries
5929 --  for uninvoiced orders and tax balance types at
5930 --  header bill-to-site level
5931 
5932   IF G_debug_flag = 'Y'
5933   THEN
5934     oe_debug_pub.add( 'Start Inserting into summary tables ',1);
5935   END IF;
5936  --14689044 IF l_cc_level_flag='Y' THEN
5937  IF l_header_uninvoiced_orders ='Y' THEN  --14689044
5938 -- balance type 1
5939   INSERT INTO oe_credit_summaries
5940   ( balance
5941   , balance_type
5942   , site_use_id
5943   , cust_account_id
5944   , party_id
5945   , org_id
5946   , currency_code
5947   , bucket
5948   , creation_date
5949   , created_by
5950   , last_update_date
5951   , last_updated_by
5952   , last_update_login
5953   , program_application_id
5954   , program_id
5955   , program_update_date
5956   , request_id
5957   , bucket_duration
5958   )
5959 
5960 
5961   SELECT
5962       SUM( NVL( m.line_ordered_quantity, 0 )
5963          * NVL( m.line_unit_selling_price, 0 ) )
5964     - SUM( NVL( p.commitment_applied_amount, 0 ) )
5965     + SUM( NVL( m.rl_amount, 0 ))
5966     , G_HEADER_UNINVOICED_ORDERS
5967     , m.order_invoice_to_org_id
5968     , order_cust_account_id
5969     , order_party_id
5970     , m.order_org_id
5971     , m.order_transactional_curr_code
5972     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
5973                           NVL( m.line_request_date,
5974                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
5975     , SYSDATE
5976     , l_created_by
5977     , SYSDATE
5978     , l_last_updated_by
5979     , l_last_update_login
5980     , l_program_application_id
5981     , l_program_id
5982     , SYSDATE
5983     , l_request_id
5984     , 1
5985 
5986   FROM
5987       OE_INIT_CREDIT_SUMM_GTT  m
5988     , oe_payments                    p
5989   WHERE
5990          m.line_line_category_code           =  'ORDER'
5991     AND    p.header_id  (+)               =  m.line_header_id
5992     AND    p.line_id    (+)               =  m.line_line_id
5993     AND  m.interface_line_attribute6   = -999  --TaxER
5994   GROUP BY
5995     m.order_invoice_to_org_id
5996   , m.order_transactional_curr_code
5997   , order_cust_account_id
5998   , order_party_id
5999   , m.order_org_id
6000   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6001                         NVL( m.line_request_date,
6002                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6003 
6004 
6005   IF G_debug_flag = 'Y'
6006   THEN
6007     oe_debug_pub.add( 'G_HEADER_UNINVOICED_ORDERS done at ' || DO_TIME, 2);
6008   END IF;
6009 END IF; -- l_cc_level_flag
6010 
6011 --14689044 IF l_cc_level_flag='Y' THEN
6012 IF l_header_uninvoiced_orders_tax='Y' THEN  --14689044
6013 -- balance type 3
6014   INSERT INTO OE_CREDIT_SUMMARIES
6015   ( balance
6016   , balance_type
6017   , site_use_id
6018   , cust_account_id
6019   , party_id
6020   , org_id
6021   , currency_code
6022   , bucket
6023   , creation_date
6024   , created_by
6025   , last_update_date
6026   , last_updated_by
6027   , last_update_login
6028   , program_application_id
6029   , program_id
6030   , program_update_date
6031   , request_id
6032   , bucket_duration
6033   )
6034 
6035 
6036   SELECT
6037       SUM( NVL( m.line_tax_value, 0 ) )
6038     , G_HEADER_UNINVOICED_ORDERS_TAX
6039     , m.order_invoice_to_org_id
6040     , order_cust_account_id
6041     , order_party_id
6042     , m.order_org_id
6043     , m.order_transactional_curr_code
6044     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6045                           NVL( m.line_request_date,
6046                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
6047     , SYSDATE
6048     , l_created_by
6049     , SYSDATE
6050     , l_last_updated_by
6051     , l_last_update_login
6052     , l_program_application_id
6053     , l_program_id
6054     , SYSDATE
6055     , l_request_id
6056     , 1
6057 
6058   FROM
6059           OE_INIT_CREDIT_SUMM_GTT  m
6060   WHERE
6061            m.line_line_category_code          =  'ORDER'
6062     AND  m.interface_line_attribute6   = -999  --TaxER
6063   GROUP BY
6064     m.order_invoice_to_org_id
6065   , m.order_transactional_curr_code
6066   , order_cust_account_id
6067   , order_party_id
6068   , m.order_org_id
6069   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6070                         NVL( m.line_request_date,
6071                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6072 
6073 
6074   IF G_debug_flag = 'Y'
6075   THEN
6076     oe_debug_pub.add( 'G_HEADER_UNINVOICED_ORDERS_TAX done at ' || DO_TIME, 2);
6077   END IF;
6078  END IF; -- l_cc_level_flag
6079 ----------------------------------------------
6080 ---------- RETURNS ---------------------------
6081 --- For uninvoiced orders and tax returns
6082 --- balance types at header bill-to-site level
6083 ----------------------------------------------
6084 --14689044 IF l_cc_level_flag='Y' THEN
6085 IF l_head_return_uninv_orders ='Y' THEN  --14689044
6086 -- balance type 23
6087   INSERT INTO oe_credit_summaries
6088   ( balance
6089   , balance_type
6090   , site_use_id
6091   , cust_account_id
6092   , party_id
6093   , org_id
6094   , currency_code
6095   , bucket
6096   , bucket_duration
6097   , creation_date
6098   , created_by
6099   , last_update_date
6100   , last_updated_by
6101   , last_update_login
6102   , program_application_id
6103   , program_id
6104   , program_update_date
6105   , request_id
6106   )
6107 
6108 
6109   SELECT
6110     - SUM( NVL( m.line_ordered_quantity, 0 )
6111          * NVL( m.line_unit_selling_price, 0 ) )
6112     + SUM( NVL( p.commitment_applied_amount, 0 ) )
6113     + SUM( DECODE( SIGN (NVL( m.rl_quantity_ordered, 0 )), -1, (+1), (-1) ) * NVL( m.rl_amount, 0 ) )
6114     , G_HEAD_RETURN_UNINV_ORDERS
6115     , m.order_invoice_to_org_id
6116     , order_cust_account_id
6117     , order_party_id
6118     , m.order_org_id
6119     , m.order_transactional_curr_code
6120     , -2
6121     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
6122     , sysdate
6123     , l_created_by
6124     , SYSDATE
6125     , l_last_updated_by
6126     , l_last_update_login
6127     , l_program_application_id
6128     , l_program_id
6129     , SYSDATE
6130     , l_request_id
6131 
6132   FROM
6133       OE_INIT_CREDIT_SUMM_GTT   m
6134     , oe_payments                    p
6135   WHERE
6136            m.line_line_category_code           =  'RETURN'
6137     AND    p.header_id  (+)               =  m.line_header_id
6138     AND    p.line_id    (+)               =  m.line_line_id
6139     AND  m.interface_line_attribute6   = -999  --TaxER
6140   GROUP BY
6141     m.order_invoice_to_org_id
6142   , m.order_transactional_curr_code
6143   , order_cust_account_id
6144   , order_party_id
6145   , m.order_org_id;
6146 
6147 
6148   IF G_debug_flag = 'Y'
6149   THEN
6150     oe_debug_pub.add( 'G_HEAD_RETURN_UNINV_ORDERS done at ' || DO_TIME, 2);
6151   END IF;
6152 END IF; -- l_cc_level_flag
6153 
6154 --14689044 IF l_cc_level_flag='Y' THEN
6155 IF l_head_return_uninv_ord_tax ='Y' THEN  --14689044
6156 -- balance type 25
6157   INSERT INTO OE_CREDIT_SUMMARIES
6158   ( balance
6159   , balance_type
6160   , site_use_id
6161   , cust_account_id
6162   , party_id
6163   , org_id
6164   , currency_code
6165   , bucket
6166   , bucket_duration
6167   , creation_date
6168   , created_by
6169   , last_update_date
6170   , last_updated_by
6171   , last_update_login
6172   , program_application_id
6173   , program_id
6174   , program_update_date
6175   , request_id
6176   )
6177 
6178 
6179   SELECT
6180      - SUM( NVL( m.line_tax_value, 0 ) )
6181     , G_HEAD_RETURN_UNINV_ORD_TAX
6182     , m.order_invoice_to_org_id
6183     , order_cust_account_id
6184     , order_party_id
6185     , m.order_org_id
6186     , m.order_transactional_curr_code
6187     , -2
6188     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
6189     , sysdate
6190     , l_created_by
6191     , sysdate
6192     , l_last_updated_by
6193     , l_last_update_login
6194     , l_program_application_id
6195     , l_program_id
6196     , SYSDATE
6197     , l_request_id
6198 
6199   FROM
6200          OE_INIT_CREDIT_SUMM_GTT   m
6201   WHERE
6202            m.line_line_category_code          =  'RETURN'
6203     AND  m.interface_line_attribute6   = -999  --TaxER
6204   GROUP BY
6205     m.order_invoice_to_org_id
6206   , m.order_transactional_curr_code
6207   , order_cust_account_id
6208   , order_party_id
6209   , m.order_org_id;
6210 
6211   IF G_debug_flag = 'Y'
6212   THEN
6213     oe_debug_pub.add( 'G_HEAD_RETURN_UNINV_ORD_TAX done at ' || DO_TIME, 2);
6214   END IF;
6215 END IF; -- l_cc_level_flag
6216 
6217 --------------------------
6218 --  Line Uninvoiced Orders
6219 --------------------------
6220 --  Note this is identical code except that
6221 --  h.invoice_to_org_id is replaced with l.invoice_to_org_id
6222 
6223 -- balance type 2
6224 IF l_line_uninvoiced_orders ='Y' THEN  --14689044
6225   INSERT INTO OE_CREDIT_SUMMARIES
6226   ( balance
6227   , balance_type
6228   , site_use_id
6229   , cust_account_id
6230   , party_id
6231   , org_id
6232   , currency_code
6233   , bucket
6234   , creation_date
6235   , created_by
6236   , last_update_date
6237   , last_updated_by
6238   , last_update_login
6239   , program_application_id
6240   , program_id
6241   , program_update_date
6242   , request_id
6243   , bucket_duration
6244   )
6245 
6246   SELECT
6247     SUM( NVL( m.line_ordered_quantity, 0 )
6248        * NVL( m.line_unit_selling_price, 0 )
6249        )
6250     - SUM( NVL( p.commitment_applied_amount, 0 ) )
6251     + SUM( NVL( m.rl_amount, 0 ))
6252     , G_LINE_UNINVOICED_ORDERS
6253     , m.line_invoice_to_org_id
6254     , line_cust_account_id
6255     , line_party_id
6256     , m.order_org_id
6257     , m.order_transactional_curr_code
6258     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6259                           NVL( m.line_request_date,
6260                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
6261     , SYSDATE
6262     , l_created_by
6263     , SYSDATE
6264     , l_last_updated_by
6265     , l_last_update_login
6266     , l_program_application_id
6267     , l_program_id
6268     , SYSDATE
6269     , l_request_id
6270     , 1
6271 
6272   FROM
6273          OE_INIT_CREDIT_SUMM_GTT   m
6274        , oe_payments                    p
6275   WHERE
6276           m.line_line_category_code           =  'ORDER'
6277     AND    p.header_id  (+)               =  m.line_header_id
6278     AND    p.line_id    (+)               =  m.line_line_id
6279     AND  m.interface_line_attribute6   = -999  --TaxER
6280   GROUP BY
6281      m.line_invoice_to_org_id
6282    , m.order_transactional_curr_code
6283    , line_cust_account_id
6284    , line_party_id
6285    , m.order_org_id
6286    , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6287                          NVL( m.line_request_date,
6288                          NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6289 
6290 
6291   IF G_debug_flag = 'Y'
6292   THEN
6293    oe_debug_pub.add( 'G_LINE_UNINVOICED_ORDERS done at ' || DO_TIME, 2);
6294   END IF;
6295 END IF;  --14689044
6296 -- balance type 4
6297 IF l_line_uninvoiced_orders_tax ='Y' THEN  --14689044
6298   INSERT INTO OE_CREDIT_SUMMARIES
6299   ( balance
6300   , balance_type
6301   , site_use_id
6302   , cust_account_id
6303   , party_id
6304   , org_id
6305   , currency_code
6306   , bucket
6307   , creation_date
6308   , created_by
6309   , last_update_date
6310   , last_updated_by
6311   , last_update_login
6312   , program_application_id
6313   , program_id
6314   , program_update_date
6315   , request_id
6316   , bucket_duration
6317   )
6318 
6319 
6320   SELECT
6321     SUM( NVL( m.line_tax_value, 0 ) )
6322     , G_LINE_UNINVOICED_ORDERS_TAX
6323     , m.line_invoice_to_org_id
6324     , line_cust_account_id
6325     , line_party_id
6326     , m.order_org_id
6327     , m.order_transactional_curr_code
6328     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6329                           NVL( m.line_request_date,
6330                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
6331     , SYSDATE
6332     , l_created_by
6333     , SYSDATE
6334     , l_last_updated_by
6335     , l_last_update_login
6336     , l_program_application_id
6337     , l_program_id
6338     , SYSDATE
6339     , l_request_id
6340     , 1
6341 
6342   FROM
6343       OE_INIT_CREDIT_SUMM_GTT   m
6344   WHERE
6345            m.line_line_category_code           =  'ORDER'
6346     AND  m.interface_line_attribute6   = -999  --TaxER
6347   GROUP BY
6348      m.line_invoice_to_org_id
6349    , m.order_transactional_curr_code
6350    , line_cust_account_id
6351    , line_party_id
6352    , m.order_org_id
6353    , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6354                          NVL( m.line_request_date,
6355                          NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6356 
6357 
6358   IF G_debug_flag = 'Y'
6359   THEN
6360     oe_debug_pub.add( 'G_LINE_UNINVOICED_ORDERS_TAX done at ' || DO_TIME, 2);
6361   END IF;
6362 END IF; --14689044
6363 
6364 ----------------------------------
6365 ------ RETURNS--------------------
6366 --  Line Uninvoiced Orders returns
6367 ----------------------------------
6368 --  Note this is identical code except that
6369 --  h.invoice_to_org_id is replaced with l.invoice_to_org_id
6370 
6371 -- balance type 24
6372 IF l_line_return_uninv_orders ='Y' THEN  --14689044
6373 
6374   INSERT INTO OE_CREDIT_SUMMARIES
6375   ( balance
6376   , balance_type
6377   , site_use_id
6378   , cust_account_id
6379   , party_id
6380   , org_id
6381   , currency_code
6382   , bucket
6383   , bucket_duration
6384   , creation_date
6385   , created_by
6386   , last_update_date
6387   , last_updated_by
6388   , last_update_login
6389   , program_application_id
6390   , program_id
6391   , program_update_date
6392   , request_id
6393   )
6394 
6395 
6396   SELECT
6397     - SUM( NVL(m.line_ordered_quantity, 0 )
6398          * NVL( m.line_unit_selling_price, 0 )
6399          )
6400     + SUM( NVL( p.commitment_applied_amount, 0 ) )
6401     + SUM( DECODE( SIGN (NVL( m.rl_quantity_ordered, 0 )), -1, (+1), (-1) ) * NVL( m.rl_amount, 0 ) )
6402     , G_LINE_RETURN_UNINV_ORDERS
6403     , m.line_invoice_to_org_id
6404     , line_cust_account_id
6405     , line_party_id
6406     , m.order_org_id
6407     , m.order_transactional_curr_code
6408     , -2
6409     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
6410     , sysdate
6411     , l_created_by
6412     , sysdate
6413     , l_last_updated_by
6414     , l_last_update_login
6415     , l_program_application_id
6416     , l_program_id
6417     , SYSDATE
6418     , l_request_id
6419 
6420   FROM
6421          OE_INIT_CREDIT_SUMM_GTT   m
6422        , oe_payments                    p
6423   WHERE
6424            m.line_line_category_code           =  'RETURN'
6425     AND    p.header_id  (+)               =  m.line_header_id
6426     AND    p.line_id    (+)               =  m.line_line_id
6427     AND  m.interface_line_attribute6   = -999  --TaxER
6428   GROUP BY
6429      m.line_invoice_to_org_id
6430    , m.order_transactional_curr_code
6431    , line_cust_account_id
6432    , line_party_id
6433    , m.order_org_id;
6434 
6435 
6436   IF G_debug_flag = 'Y'
6437   THEN
6438    oe_debug_pub.add( 'G_LINE_RETURN_UNINV_ORDERS done at ' || DO_TIME, 2);
6439   END IF;
6440 
6441 END IF;  --14689044
6442 -- balance type 26
6443 IF l_line_return_uninv_ord_tax ='Y' THEN  --14689044
6444 
6445   INSERT INTO OE_CREDIT_SUMMARIES
6446   ( balance
6447   , balance_type
6448   , site_use_id
6449   , cust_account_id
6450   , party_id
6451   , org_id
6452   , currency_code
6453   , bucket
6454   , bucket_duration
6455   , creation_date
6456   , created_by
6457   , last_update_date
6458   , last_updated_by
6459   , last_update_login
6460   , program_application_id
6461   , program_id
6462   , program_update_date
6463   , request_id
6464   )
6465 
6466 
6467   SELECT
6468     - SUM( NVL(m.line_tax_value, 0 ) )
6469     , G_LINE_RETURN_UNINV_ORD_TAX
6470     , m.line_invoice_to_org_id
6471     , line_cust_account_id
6472     , line_party_id
6473     , m.order_org_id
6474     , m.order_transactional_curr_code
6475     , -2
6476     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
6477     , sysdate
6478     , l_created_by
6479     , sysdate
6480     , l_last_updated_by
6481     , l_last_update_login
6482     , l_program_application_id
6483     , l_program_id
6484     , SYSDATE
6485     , l_request_id
6486 
6487   FROM
6488 	OE_INIT_CREDIT_SUMM_GTT   m
6489   WHERE
6490            m.line_line_category_code           =  'RETURN'
6491     AND  m.interface_line_attribute6   = -999  --TaxER
6492   GROUP BY
6493      m.line_invoice_to_org_id
6494    , m.order_transactional_curr_code
6495    , line_cust_account_id
6496    , line_party_id
6497    , m.order_org_id;
6498 
6499 
6500 
6501   IF G_debug_flag = 'Y'
6502   THEN
6503     oe_debug_pub.add( 'G_LINE_RETURN_UNINV_ORD_TAX done at ' || DO_TIME, 2);
6504   END IF;
6505 
6506 END IF; --14689044
6507 -- Bug 4219133 : Insert Freight Balances only if Freight Charges to be Included
6508 --14689044 IF l_freight_bal = 'Y' THEN
6509 IF l_line_uninvoiced_freight ='Y' THEN  --14689044
6510 --------------------------
6511 --  Line Freight
6512 --------------------------
6513 
6514 -- balance type 6
6515   INSERT INTO OE_CREDIT_SUMMARIES
6516   ( balance
6517   , balance_type
6518   , site_use_id
6519   , cust_account_id
6520   , party_id
6521   , org_id
6522   , currency_code
6523   , bucket
6524   , creation_date
6525   , created_by
6526   , last_update_date
6527   , last_updated_by
6528   , last_update_login
6529   , program_application_id
6530   , program_id
6531   , program_update_date
6532   , request_id
6533   , bucket_duration
6534   )
6535 
6536   SELECT
6537       SUM
6538       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
6539       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
6540                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
6541       )
6542       --  + SUM( NVL( m.rl_amount, 0 ))
6543     , G_LINE_UNINVOICED_FREIGHT
6544     , m.line_invoice_to_org_id
6545     , line_cust_account_id
6546     , line_party_id
6547     , m.order_org_id
6548     , m.order_transactional_curr_code
6549     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6550                           NVL( m.line_request_date,
6551                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
6552     , SYSDATE
6553     , l_created_by
6554     , SYSDATE
6555     , l_last_updated_by
6556     , l_last_update_login
6557     , l_program_application_id
6558     , l_program_id
6559     , SYSDATE
6560     , l_request_id
6561     , 1
6562 
6563   FROM
6564       OE_INIT_CREDIT_SUMM_GTT  m,
6565       oe_price_adjustments     p
6566   WHERE
6567          p.line_id             =  m.line_line_id
6568     AND  p.header_id           =  m.line_header_id
6569     AND  p.header_id           =  m.order_header_id
6570     AND  m.line_line_category_code           =  'ORDER'
6571     AND  p.applied_flag        =  'Y'
6572     AND  p.list_line_type_code =  'FREIGHT_CHARGE'
6573     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
6574     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
6575   GROUP BY
6576       m.line_invoice_to_org_id
6577     , m.order_transactional_curr_code
6578     , line_cust_account_id
6579     , line_party_id
6580     , m.order_org_id
6581     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6582                           NVL( m.line_request_date,
6583                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6584 
6585 
6586   IF G_debug_flag = 'Y'
6587   THEN
6588     oe_debug_pub.add( 'G_LINE_UNINVOICED_FREIGHT done at ' || DO_TIME, 2);
6589   END IF;
6590 
6591 --TaxER Start
6592 IF l_tax  = 'Y' THEN  --14689044
6593   INSERT INTO OE_CREDIT_SUMMARIES
6594   ( balance
6595   , balance_type
6596   , site_use_id
6597   , cust_account_id
6598   , party_id
6599   , org_id
6600   , currency_code
6601   , bucket
6602   , creation_date
6603   , created_by
6604   , last_update_date
6605   , last_updated_by
6606   , last_update_login
6607   , program_application_id
6608   , program_id
6609   , program_update_date
6610   , request_id
6611   , bucket_duration
6612   )
6613 
6614   SELECT
6615       SUM( p1.adjusted_amount)
6616     , G_LINE_UNINVOICED_FREIGHT_T
6617     , m.line_invoice_to_org_id
6618     , line_cust_account_id
6619     , line_party_id
6620     , m.order_org_id
6621     , m.order_transactional_curr_code
6622     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6623                           NVL( m.line_request_date,
6624                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
6625     , SYSDATE
6626     , l_created_by
6627     , SYSDATE
6628     , l_last_updated_by
6629     , l_last_update_login
6630     , l_program_application_id
6631     , l_program_id
6632     , SYSDATE
6633     , l_request_id
6634     , 1
6635 
6636   FROM
6637       OE_INIT_CREDIT_SUMM_GTT  m,
6638       oe_price_adjustments     p,
6639       oe_price_adjustments     p1  --TaxER
6640   WHERE
6641          p.line_id             =  m.line_line_id
6642     AND  p.header_id           =  m.line_header_id
6643     AND  p.header_id           =  m.order_header_id
6644     AND  m.line_line_category_code           =  'ORDER'
6645     AND  p.applied_flag        =  'Y'
6646     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
6647     AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
6648     AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
6649     AND  p1.applied_flag        =  'N'  --12895421
6650     AND  p.price_adjustment_id = p1.parent_adjustment_id
6651     AND  p.line_id                        = p1.line_id
6652     AND  p.header_id                      = p1.header_id
6653     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
6654   GROUP BY
6655       m.line_invoice_to_org_id
6656     , m.order_transactional_curr_code
6657     , line_cust_account_id
6658     , line_party_id
6659     , m.order_org_id
6660     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6661                           NVL( m.line_request_date,
6662                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6663 
6664 
6665   IF G_debug_flag = 'Y'
6666   THEN
6667     oe_debug_pub.add( 'G_LINE_UNINVOICED_FREIGHT_T done at ' || DO_TIME, 2);
6668   END IF;
6669 END IF;  --14689044
6670 --TaxER End
6671 END IF; -- l_freight_bal
6672 
6673 --------------------------
6674 ------- RETURNS-----------
6675 --------------------------
6676 --  Line Freight
6677 --------------------------
6678 
6679 -- balance type 28
6680 IF l_line_return_uninv_freight ='Y' THEN  --14689044
6681   INSERT INTO OE_CREDIT_SUMMARIES
6682   ( balance
6683   , balance_type
6684   , site_use_id
6685   , cust_account_id
6686   , party_id
6687   , org_id
6688   , currency_code
6689   , bucket
6690   , bucket_duration
6691   , creation_date
6692   , created_by
6693   , last_update_date
6694   , last_updated_by
6695   , last_update_login
6696   , program_application_id
6697   , program_id
6698   , program_update_date
6699   , request_id
6700   )
6701 
6702   SELECT
6703      SUM
6704       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
6705       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
6706                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
6707       )
6708       + SUM( NVL( m.rl_amount, 0 ))
6709     , G_LINE_RETURN_UNINV_FREIGHT
6710     , m.line_invoice_to_org_id
6711     , line_cust_account_id
6712     , line_party_id
6713     , m.order_org_id
6714     , m.order_transactional_curr_code
6715     , -2
6716     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
6717     , sysdate
6718     , l_created_by
6719     , sysdate
6720     , l_last_updated_by
6721     , l_last_update_login
6722     , l_program_application_id
6723     , l_program_id
6724     , SYSDATE
6725     , l_request_id
6726 
6727   FROM
6728       oe_price_adjustments     p,
6729       OE_INIT_CREDIT_SUMM_GTT    m
6730   WHERE
6731          p.line_id             =  m.line_line_id
6732     AND  p.header_id           =  m.line_header_id
6733     AND  p.header_id           =  m.order_header_id
6734     AND  m.line_line_category_code           =  'RETURN'
6735     AND  p.applied_flag        =  'Y'
6736     AND  p.list_line_type_code =  'FREIGHT_CHARGE'
6737     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
6738     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
6739   GROUP BY
6740       m.line_invoice_to_org_id
6741     , m.order_transactional_curr_code
6742     , line_cust_account_id
6743     , line_party_id
6744     , m.order_org_id;
6745 
6746 
6747 
6748   IF G_debug_flag = 'Y'
6749   THEN
6750     oe_debug_pub.add( 'G_LINE_RETURN_UNINV_FREIGHT done at ' || DO_TIME, 2);
6751   END IF;
6752 
6753 
6754 --TaxER Start
6755 IF l_tax  = 'Y' THEN  --14689044
6756   INSERT INTO OE_CREDIT_SUMMARIES
6757   ( balance
6758   , balance_type
6759   , site_use_id
6760   , cust_account_id
6761   , party_id
6762   , org_id
6763   , currency_code
6764   , bucket
6765   , bucket_duration
6766   , creation_date
6767   , created_by
6768   , last_update_date
6769   , last_updated_by
6770   , last_update_login
6771   , program_application_id
6772   , program_id
6773   , program_update_date
6774   , request_id
6775   )
6776 
6777   SELECT
6778      SUM ( p1.adjusted_amount)
6779     , G_LINE_RETURN_UNINV_FREIGHT_T
6780     , m.line_invoice_to_org_id
6781     , line_cust_account_id
6782     , line_party_id
6783     , m.order_org_id
6784     , m.order_transactional_curr_code
6785     , -2
6786     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
6787     , sysdate
6788     , l_created_by
6789     , sysdate
6790     , l_last_updated_by
6791     , l_last_update_login
6792     , l_program_application_id
6793     , l_program_id
6794     , SYSDATE
6795     , l_request_id
6796 
6797   FROM
6798       OE_INIT_CREDIT_SUMM_GTT    m,
6799       oe_price_adjustments     p,
6800       oe_price_adjustments     p1  --TaxER
6801   WHERE
6802          p.line_id             =  m.line_line_id
6803     AND  p.header_id           =  m.line_header_id
6804     AND  p.header_id           =  m.order_header_id
6805     AND  m.line_line_category_code           =  'RETURN'
6806     AND  p.applied_flag        =  'Y'
6807     AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
6808     AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
6809     AND  p1.applied_flag        =  'N'  --12895421
6810     AND  p.price_adjustment_id = p1.parent_adjustment_id
6811     AND  p.line_id                        = p1.line_id
6812     AND  p.header_id                      = p1.header_id
6813     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
6814     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
6815   GROUP BY
6816       m.line_invoice_to_org_id
6817     , m.order_transactional_curr_code
6818     , line_cust_account_id
6819     , line_party_id
6820     , m.order_org_id;
6821 
6822 END IF;  --14689044
6823 
6824   IF G_debug_flag = 'Y'
6825   THEN
6826     oe_debug_pub.add( 'G_LINE_RETURN_UNINV_FREIGHT_T done at ' || DO_TIME, 2);
6827   END IF;
6828 --TaxER End
6829 END IF;  --14689044
6830 -- Bug 4219133 : Insert Freight Balances only if Freight Charges to be Included.
6831 
6832 --14689044 IF l_freight_bal = 'Y' THEN
6833 IF l_header_uninvoiced_freight ='Y' THEN  --14689044
6834 
6835 --------------------------
6836 --  Header Freight
6837 --------------------------
6838 --14689044 IF l_cc_level_flag='Y' THEN
6839 -- balance type 5
6840 
6841   INSERT INTO OE_CREDIT_SUMMARIES
6842   ( balance
6843   , balance_type
6844   , site_use_id
6845   , cust_account_id
6846   , party_id
6847   , org_id
6848   , currency_code
6849   , bucket
6850   , creation_date
6851   , created_by
6852   , last_update_date
6853   , last_updated_by
6854   , last_update_login
6855   , program_application_id
6856   , program_id
6857   , program_update_date
6858   , request_id
6859   , bucket_duration
6860   )
6861 
6862 SELECT
6863       SUM
6864       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
6865       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
6866                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
6867       )
6868       --+ SUM( NVL( m.rl_amount, 0 ))
6869     , G_HEADER_UNINVOICED_FREIGHT
6870     , m.order_invoice_to_org_id
6871     , order_cust_account_id
6872     , order_party_id
6873     , m.order_org_id
6874     , m.order_transactional_curr_code
6875     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6876                           NVL( m.line_request_date,
6877                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
6878     , SYSDATE
6879     , l_created_by
6880     , SYSDATE
6881     , l_last_updated_by
6882     , l_last_update_login
6883     , l_program_application_id
6884     , l_program_id
6885     , SYSDATE
6886     , l_request_id
6887     , 1
6888 
6889 FROM   oe_price_adjustments     p,
6890       OE_INIT_CREDIT_SUMM_GTT    m
6891 WHERE
6892        p.line_id             =  m.line_line_id
6893   AND  p.header_id           =  m.line_header_id
6894   AND  p.header_id           =  m.order_header_id
6895   AND  m.line_line_category_code           =  'ORDER'
6896   AND  p.applied_flag                 =  'Y'
6897   AND  p.list_line_type_code          =  'FREIGHT_CHARGE'
6898   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
6899   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
6900 GROUP BY
6901     m.order_invoice_to_org_id
6902   , m.order_transactional_curr_code
6903   , order_cust_account_id
6904   , order_party_id
6905   , m.order_org_id
6906   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6907                         NVL( m.line_request_date,
6908                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6909 
6910   IF G_debug_flag = 'Y'
6911   THEN
6912     oe_debug_pub.add( 'G_HEADER_UNINVOICED_FREIGHT done at ' || DO_TIME, 2 );
6913   END IF;
6914 
6915 
6916 --TaxER start
6917 IF l_tax  = 'Y' THEN  --14689044
6918   INSERT INTO OE_CREDIT_SUMMARIES
6919   ( balance
6920   , balance_type
6921   , site_use_id
6922   , cust_account_id
6923   , party_id
6924   , org_id
6925   , currency_code
6926   , bucket
6927   , creation_date
6928   , created_by
6929   , last_update_date
6930   , last_updated_by
6931   , last_update_login
6932   , program_application_id
6933   , program_id
6934   , program_update_date
6935   , request_id
6936   , bucket_duration
6937   )
6938 
6939 SELECT
6940       SUM
6941       ( p1.adjusted_amount)
6942     , G_HEADER_UNINVOICED_FREIGHT_T
6943     , m.order_invoice_to_org_id
6944     , order_cust_account_id
6945     , order_party_id
6946     , m.order_org_id
6947     , m.order_transactional_curr_code
6948     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6949                           NVL( m.line_request_date,
6950                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
6951     , SYSDATE
6952     , l_created_by
6953     , SYSDATE
6954     , l_last_updated_by
6955     , l_last_update_login
6956     , l_program_application_id
6957     , l_program_id
6958     , SYSDATE
6959     , l_request_id
6960     , 1
6961 
6962 FROM   oe_price_adjustments     p,
6963       oe_price_adjustments     p1,  --TaxER
6964       OE_INIT_CREDIT_SUMM_GTT    m
6965 WHERE
6966        p.line_id             =  m.line_line_id
6967   AND  p.header_id           =  m.line_header_id
6968   AND  p.header_id           =  m.order_header_id
6969   AND  m.line_line_category_code           =  'ORDER'
6970   AND  p.applied_flag                 =  'Y'
6971   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
6972   AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
6973   AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
6974   AND  p1.applied_flag        =  'N'  --12895421
6975   AND  p.price_adjustment_id = p1.parent_adjustment_id
6976   AND  p.line_id                        = p1.line_id
6977   AND  p.header_id                      = p1.header_id
6978   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
6979 GROUP BY
6980     m.order_invoice_to_org_id
6981   , m.order_transactional_curr_code
6982   , order_cust_account_id
6983   , order_party_id
6984   , m.order_org_id
6985   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
6986                         NVL( m.line_request_date,
6987                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) );
6988 --TaxER End
6989 END IF;  --14689044
6990 
6991   IF G_debug_flag = 'Y'
6992   THEN
6993     oe_debug_pub.add( 'G_HEADER_UNINVOICED_FREIGHT_T done at ' || DO_TIME, 2 );
6994   END IF;
6995 --14689044 END IF; -- l_cc_level_flag
6996 END IF;  -- l_freight_bal
6997 
6998 --------------------------------
6999 --------- RETURNS --------------
7000 --  Header Freight
7001 --------------------------------
7002 --14689044 IF l_cc_level_flag='Y' THEN
7003 IF l_head_return_uninv_freight ='Y' THEN  --14689044
7004 -- balance type 27
7005 
7006   INSERT INTO OE_CREDIT_SUMMARIES
7007   ( balance
7008   , balance_type
7009   , site_use_id
7010   , cust_account_id
7011   , party_id
7012   , org_id
7013   , currency_code
7014   , bucket
7015   , bucket_duration
7016   , creation_date
7017   , created_by
7018   , last_update_date
7019   , last_updated_by
7020   , last_update_login
7021   , program_application_id
7022   , program_id
7023   , program_update_date
7024   , request_id
7025   )
7026 
7027 
7028 SELECT
7029       SUM
7030       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
7031       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
7032                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
7033       )
7034       + SUM( NVL( m.rl_amount, 0 ))
7035     , G_HEAD_RETURN_UNINV_FREIGHT
7036     , m.order_invoice_to_org_id
7037     , order_cust_account_id
7038     , order_party_id
7039     , m.order_org_id
7040     , m.order_transactional_curr_code
7041     , -2
7042     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
7043     , sysdate
7044     , l_created_by
7045     , sysdate
7046     , l_last_updated_by
7047     , l_last_update_login
7048     , l_program_application_id
7049     , l_program_id
7050     , SYSDATE
7051     , l_request_id
7052 
7053 FROM   oe_price_adjustments     p,
7054       OE_INIT_CREDIT_SUMM_GTT    m
7055 WHERE
7056        p.line_id             =  m.line_line_id
7057   AND  p.header_id           =  m.line_header_id
7058   AND  p.header_id           =  m.order_header_id
7059   AND  m.line_line_category_code           =  'RETURN'
7060   AND  p.applied_flag                 =  'Y'
7061   AND  p.list_line_type_code          =  'FREIGHT_CHARGE'
7062   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
7063   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
7064 GROUP BY
7065     m.order_invoice_to_org_id
7066   , m.order_transactional_curr_code
7067   , order_cust_account_id
7068   , order_party_id
7069   , m.order_org_id;
7070 
7071 
7072   IF G_debug_flag = 'Y'
7073   THEN
7074     oe_debug_pub.add( 'G_HEAD_RETURN_UNINV_FREIGHT done at ' || DO_TIME, 2 );
7075   END IF;
7076 
7077 --TaxER Start
7078 IF l_tax  = 'Y' THEN  --14689044
7079   INSERT INTO OE_CREDIT_SUMMARIES
7080   ( balance
7081   , balance_type
7082   , site_use_id
7083   , cust_account_id
7084   , party_id
7085   , org_id
7086   , currency_code
7087   , bucket
7088   , bucket_duration
7089   , creation_date
7090   , created_by
7091   , last_update_date
7092   , last_updated_by
7093   , last_update_login
7094   , program_application_id
7095   , program_id
7096   , program_update_date
7097   , request_id
7098   )
7099 
7100 
7101 SELECT
7102       SUM ( p1.adjusted_amount)
7103     , G_HEAD_RETURN_UNINV_FREIGHT_T
7104     , m.order_invoice_to_org_id
7105     , order_cust_account_id
7106     , order_party_id
7107     , m.order_org_id
7108     , m.order_transactional_curr_code
7109     , -2
7110     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
7111     , sysdate
7112     , l_created_by
7113     , sysdate
7114     , l_last_updated_by
7115     , l_last_update_login
7116     , l_program_application_id
7117     , l_program_id
7118     , SYSDATE
7119     , l_request_id
7120 
7121 FROM   oe_price_adjustments     p,
7122       oe_price_adjustments     p1,  --TaxER
7123       OE_INIT_CREDIT_SUMM_GTT    m
7124 WHERE
7125        p.line_id             =  m.line_line_id
7126   AND  p.header_id           =  m.line_header_id
7127   AND  p.header_id           =  m.order_header_id
7128   AND  m.line_line_category_code           =  'RETURN'
7129   AND  p.applied_flag                 =  'Y'
7130   AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
7131   AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
7132   AND  p1.applied_flag        =  'N'  --12895421
7133   AND  p.price_adjustment_id = p1.parent_adjustment_id
7134   AND  p.line_id                        = p1.line_id
7135   AND  p.header_id                      = p1.header_id
7136   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
7137   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
7138 GROUP BY
7139     m.order_invoice_to_org_id
7140   , m.order_transactional_curr_code
7141   , order_cust_account_id
7142   , order_party_id
7143   , m.order_org_id;
7144 
7145 
7146   IF G_debug_flag = 'Y'
7147   THEN
7148     oe_debug_pub.add( 'G_HEAD_RETURN_UNINV_FREIGHT_T done at ' || DO_TIME, 2 );
7149   END IF;
7150 END IF;  --14689044
7151 --TaxER End
7152 
7153 END IF; -- l_cc_level_flag
7154 -- Bug 4219133 : Insert Freight Balances only if Freight Charges to be Included.
7155 
7156 --14689044 IF l_freight_bal = 'Y' THEN
7157 IF l_header_and_line_freight ='Y' THEN  --14689044
7158 --------------------------
7159 --  Header + Line Fright Part 2
7160 --------------------------
7161 --  This cost is specified at the order header and thus
7162 --  the bill-to site to be used is always the header bill-to site.
7163 --  Therefore for both line and header bill-to site level exposures,
7164 --  this same balance type summary is added
7165 
7166 -- balance type 7
7167 
7168   INSERT INTO OE_CREDIT_SUMMARIES
7169   ( balance
7170   , balance_type
7171   , site_use_id
7172   , cust_account_id
7173   , party_id
7174   , org_id
7175   , currency_code
7176   , bucket
7177   , creation_date
7178   , created_by
7179   , last_update_date
7180   , last_updated_by
7181   , last_update_login
7182   , program_application_id
7183   , program_id
7184   , program_update_date
7185   , request_id
7186   , bucket_duration
7187   )
7188 
7189 
7190 SELECT
7191       SUM( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) ) * p.operand )
7192     , G_HEADER_AND_LINE_FREIGHT
7193     , h.invoice_to_org_id
7194     , s.cust_account_id
7195     , ca.party_id
7196     , h.org_id
7197     , h.transactional_curr_code
7198     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7199     , SYSDATE
7200     , l_created_by
7201     , SYSDATE
7202     , l_last_updated_by
7203     , l_last_update_login
7204     , l_program_application_id
7205     , l_program_id
7206     , SYSDATE
7207     , l_request_id
7208     , 1
7209 
7210 FROM
7211     oe_price_adjustments      p
7212   , oe_order_headers_all      h
7213   , hz_cust_site_uses_all     su
7214   , hz_cust_acct_sites_all    s
7215   , hz_cust_accounts          ca
7216 WHERE
7217        p.line_id IS NULL
7218   AND  p.header_id           =  h.header_id
7219   AND  h.order_category_code IN ('ORDER','MIXED')
7220   AND  h.open_flag           =  'Y'
7221   AND  h.booked_flag         =  'Y'
7222   AND  p.applied_flag        =  'Y'
7223   AND  p.list_line_type_code = 'FREIGHT_CHARGE'
7224   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
7225   AND  su.site_use_id        =  h.invoice_to_org_id
7226   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7227   AND  ca.cust_account_id  =  s.cust_account_id
7228   AND  EXISTS
7229          ( SELECT  NULL
7230              FROM  oe_payment_types_all t,
7231                    oe_order_lines_all l
7232              WHERE t.credit_check_flag = 'Y'
7233              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7234              AND   l.header_id = h.header_id
7235              AND   t.payment_type_code =
7236                    DECODE(l.payment_type_code, NULL,
7237                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7238                             h.payment_type_code),
7239                           l.payment_type_code)
7240          )
7241 GROUP BY
7242       h.invoice_to_org_id
7243     , h.transactional_curr_code
7244     , s.cust_account_id
7245     , ca.party_id
7246     , h.org_id
7247     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7248 UNION ALL  --bug# 2714553
7249 SELECT
7250       SUM( NVL( rl.amount, 0 ))
7251     , G_HEADER_AND_LINE_FREIGHT
7252     , h.invoice_to_org_id
7253     , s.cust_account_id
7254     , ca.party_id
7255     , h.org_id
7256     , h.transactional_curr_code
7257     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7258     , SYSDATE
7259     , l_created_by
7260     , SYSDATE
7261     , l_last_updated_by
7262     , l_last_update_login
7263     , l_program_application_id
7264     , l_program_id
7265     , SYSDATE
7266     , l_request_id
7267     , 1
7268 
7269 FROM
7270     oe_price_adjustments      p
7271   , oe_order_headers_all      h
7272   , hz_cust_site_uses_all     su
7273   , hz_cust_acct_sites_all    s
7274   , hz_cust_accounts          ca
7275   , ra_interface_lines_all    rl
7276 WHERE
7277        p.line_id IS NULL
7278   AND  p.header_id           =  h.header_id
7279   AND  h.order_category_code IN ('ORDER','MIXED')
7280   AND  h.booked_flag         =  'Y'
7281   AND  p.applied_flag        =  'Y'
7282   AND  p.list_line_type_code = 'FREIGHT_CHARGE'
7283   AND  NVL( p.invoiced_flag, 'N' )  =  'Y'
7284   AND  su.site_use_id        =  h.invoice_to_org_id
7285   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7286   AND  ca.cust_account_id  =  s.cust_account_id
7287   AND  rl.orig_system_bill_customer_id = ca.cust_account_id
7288   AND  nvl(rl.interface_status, '~')  <> 'P'
7289   AND  rl.interface_line_context      = 'ORDER ENTRY'
7290   AND  rl.interface_line_attribute1   = h.order_number
7291   AND  rl.interface_line_attribute6   = p.price_adjustment_id
7292   AND  EXISTS
7293          ( SELECT  NULL
7294              FROM  oe_payment_types_all t,
7295                    oe_order_lines_all l
7296              WHERE t.credit_check_flag = 'Y'
7297              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7298              AND   l.header_id = h.header_id
7299              AND   t.payment_type_code =
7300                    DECODE(l.payment_type_code, NULL,
7301                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7302                             h.payment_type_code),
7303                           l.payment_type_code)
7304          )
7305 GROUP BY
7306       h.invoice_to_org_id
7307     , h.transactional_curr_code
7308     , s.cust_account_id
7309     , ca.party_id
7310     , h.org_id
7311     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7312 ;
7313 
7314 
7315 
7316   IF G_debug_flag = 'Y'
7317   THEN
7318     oe_debug_pub.add( 'G_HEADER_AND_LINE_FREIGHT done at ' || DO_TIME, 2 );
7319   END IF;
7320 
7321 --TaxER Start
7322 IF l_tax  = 'Y' THEN  --14689044
7323   INSERT INTO OE_CREDIT_SUMMARIES
7324   ( balance
7325   , balance_type
7326   , site_use_id
7327   , cust_account_id
7328   , party_id
7329   , org_id
7330   , currency_code
7331   , bucket
7332   , creation_date
7333   , created_by
7334   , last_update_date
7335   , last_updated_by
7336   , last_update_login
7337   , program_application_id
7338   , program_id
7339   , program_update_date
7340   , request_id
7341   , bucket_duration
7342   )
7343 
7344 
7345 SELECT
7346       SUM ( p.adjusted_amount)
7347     , G_HEADER_AND_LINE_FREIGHT_T
7348     , h.invoice_to_org_id
7349     , s.cust_account_id
7350     , ca.party_id
7351     , h.org_id
7352     , h.transactional_curr_code
7353     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7354     , SYSDATE
7355     , l_created_by
7356     , SYSDATE
7357     , l_last_updated_by
7358     , l_last_update_login
7359     , l_program_application_id
7360     , l_program_id
7361     , SYSDATE
7362     , l_request_id
7363     , 1
7364 
7365 FROM
7366     oe_price_adjustments      p
7367   , oe_order_headers_all      h
7368   , hz_cust_site_uses_all     su
7369   , hz_cust_acct_sites_all    s
7370   , hz_cust_accounts          ca
7371 WHERE
7372        p.line_id IS NULL
7373   AND  p.header_id           =  h.header_id
7374   AND  h.order_category_code IN ('ORDER','MIXED')
7375   AND  h.open_flag           =  'Y'
7376   AND  h.booked_flag         =  'Y'
7377 --12597952  AND  p.applied_flag        =  'Y'
7378   AND  p.list_line_type_code =  'TAX'
7379   AND  p.parent_adjustment_id IS NOT NULL
7380   AND  p.applied_flag        =  'N'  --12895421
7381   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
7382   AND  su.site_use_id        =  h.invoice_to_org_id
7383   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7384   AND  ca.cust_account_id  =  s.cust_account_id
7385   AND  EXISTS
7386          ( SELECT  NULL
7387              FROM  oe_payment_types_all t,
7388                    oe_order_lines_all l
7389              WHERE t.credit_check_flag = 'Y'
7390              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7391              AND   l.header_id = h.header_id
7392              AND   t.payment_type_code =
7393                    DECODE(l.payment_type_code, NULL,
7394                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7395                             h.payment_type_code),
7396                           l.payment_type_code)
7397          )
7398 GROUP BY
7399       h.invoice_to_org_id
7400     , h.transactional_curr_code
7401     , s.cust_account_id
7402     , ca.party_id
7403     , h.org_id
7404     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7405 UNION ALL  --bug# 2714553
7406 SELECT
7407       SUM( NVL( rl.amount, 0 ))
7408     , G_HEADER_AND_LINE_FREIGHT_T
7409     , h.invoice_to_org_id
7410     , s.cust_account_id
7411     , ca.party_id
7412     , h.org_id
7413     , h.transactional_curr_code
7414     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7415     , SYSDATE
7416     , l_created_by
7417     , SYSDATE
7418     , l_last_updated_by
7419     , l_last_update_login
7420     , l_program_application_id
7421     , l_program_id
7422     , SYSDATE
7423     , l_request_id
7424     , 1
7425 
7426 FROM
7427     oe_price_adjustments      p
7428   , oe_order_headers_all      h
7429   , hz_cust_site_uses_all     su
7430   , hz_cust_acct_sites_all    s
7431   , hz_cust_accounts          ca
7432   , ra_interface_lines_all    rl
7433 WHERE
7434        p.line_id IS NULL
7435   AND  p.header_id           =  h.header_id
7436   AND  h.order_category_code IN ('ORDER','MIXED')
7437   AND  h.booked_flag         =  'Y'
7438 --12597952  AND  p.applied_flag        =  'Y'
7439   AND  p.list_line_type_code =  'TAX'
7440   AND  p.parent_adjustment_id IS NOT NULL
7441   AND  p.applied_flag        =  'N'  --12895421
7442   AND  NVL( p.invoiced_flag, 'N' )  =  'Y'
7443   AND  su.site_use_id        =  h.invoice_to_org_id
7444   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7445   AND  ca.cust_account_id  =  s.cust_account_id
7446   AND  rl.orig_system_bill_customer_id = ca.cust_account_id
7447   AND  nvl(rl.interface_status, '~')  <> 'P'
7448   AND  rl.interface_line_context      = 'ORDER ENTRY'
7449   AND  rl.interface_line_attribute1   = h.order_number
7450   AND  rl.interface_line_attribute6   = p.price_adjustment_id
7451   AND  EXISTS
7452          ( SELECT  NULL
7453              FROM  oe_payment_types_all t,
7454                    oe_order_lines_all l
7455              WHERE t.credit_check_flag = 'Y'
7456              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7457              AND   l.header_id = h.header_id
7458              AND   t.payment_type_code =
7459                    DECODE(l.payment_type_code, NULL,
7460                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7461                             h.payment_type_code),
7462                           l.payment_type_code)
7463          )
7464 GROUP BY
7465       h.invoice_to_org_id
7466     , h.transactional_curr_code
7467     , s.cust_account_id
7468     , ca.party_id
7469     , h.org_id
7470     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
7471 ;
7472 
7473 
7474 
7475   IF G_debug_flag = 'Y'
7476   THEN
7477     oe_debug_pub.add( 'G_HEADER_AND_LINE_FREIGHT_T done at ' || DO_TIME, 2 );
7478   END IF;
7479 END IF;  --14689044
7480 --TaxER End
7481 
7482 END IF;  -- l_freight_bal
7483 
7484 -------------------------------
7485 ----- RETURNS -----------------
7486 --  Header + Line Freight Part 2
7487 -------------------------------
7488 --  This cost is specified at the order header and thus
7489 --  the bill-to site to be used is always the header bill-to site.
7490 --  Therefore for both line and header bill-to site level exposures,
7491 --  this same balance type summary is added
7492 
7493 -- balance type 29
7494 IF l_head_line_return_freight ='Y' THEN  --14689044
7495 
7496   INSERT INTO OE_CREDIT_SUMMARIES
7497   ( balance
7498   , balance_type
7499   , site_use_id
7500   , cust_account_id
7501   , party_id
7502   , org_id
7503   , currency_code
7504   , bucket
7505   , bucket_duration
7506   , creation_date
7507   , created_by
7508   , last_update_date
7509   , last_updated_by
7510   , last_update_login
7511   , program_application_id
7512   , program_id
7513   , program_update_date
7514   , request_id
7515   )
7516 
7517 
7518 SELECT
7519       SUM( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) ) * p.operand )
7520     , G_HEAD_LINE_RETURN_FREIGHT
7521     , h.invoice_to_org_id
7522     , s.cust_account_id
7523     , ca.party_id
7524     , h.org_id
7525     , h.transactional_curr_code
7526     , -2
7527     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
7528     , sysdate
7529     , l_created_by
7530     , sysdate
7531     , l_last_updated_by
7532     , l_last_update_login
7533     , l_program_application_id
7534     , l_program_id
7535     , SYSDATE
7536     , l_request_id
7537 
7538 FROM
7539     oe_price_adjustments      p
7540   , oe_order_headers_all      h
7541   , hz_cust_site_uses_all     su
7542   , hz_cust_acct_sites_all    s
7543   , hz_cust_accounts          ca
7544 WHERE
7545        p.line_id IS NULL
7546   AND  p.header_id           =  h.header_id
7547   AND  h.order_category_code ='RETURN'
7548   AND  h.open_flag           =  'Y'
7549   AND  h.booked_flag         =  'Y'
7550   AND  p.applied_flag        =  'Y'
7551   AND  p.list_line_type_code = 'FREIGHT_CHARGE'
7552   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
7553   AND  su.site_use_id        =  h.invoice_to_org_id
7554   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7555   AND  ca.cust_account_id    =  s.cust_account_id
7556   AND  EXISTS
7557          ( SELECT  NULL
7558              FROM  oe_payment_types_all t,
7559                    oe_order_lines_all l
7560              WHERE t.credit_check_flag = 'Y'
7561              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7562              AND   l.header_id = h.header_id
7563              AND   t.payment_type_code =
7564                    DECODE(l.payment_type_code, NULL,
7565                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7566                             h.payment_type_code),
7567                           l.payment_type_code)
7568          )
7569 GROUP BY
7570       h.invoice_to_org_id
7571     , h.transactional_curr_code
7572     , s.cust_account_id
7573     , ca.party_id
7574     , h.org_id
7575 UNION ALL  --bug# 2714553
7576 SELECT
7577       SUM( NVL( rl.amount, 0 ))
7578     , G_HEAD_LINE_RETURN_FREIGHT
7579     , h.invoice_to_org_id
7580     , s.cust_account_id
7581     , ca.party_id
7582     , h.org_id
7583     , h.transactional_curr_code
7584     , -2
7585     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
7586     , sysdate
7587     , l_created_by
7588     , sysdate
7589     , l_last_updated_by
7590     , l_last_update_login
7591     , l_program_application_id
7592     , l_program_id
7593     , SYSDATE
7594     , l_request_id
7595 
7596 FROM
7597     oe_price_adjustments      p
7598   , oe_order_headers_all      h
7599   , hz_cust_site_uses_all     su
7600   , hz_cust_acct_sites_all    s
7601   , hz_cust_accounts          ca
7602   , ra_interface_lines_all    rl
7603 WHERE
7604        p.line_id IS NULL
7605   AND  p.header_id           =  h.header_id
7606   AND  h.order_category_code ='RETURN'
7607   AND  h.booked_flag         =  'Y'
7608   AND  p.applied_flag        =  'Y'
7609   AND  p.list_line_type_code = 'FREIGHT_CHARGE'
7610   AND  NVL( p.invoiced_flag, 'N' )  =  'Y'
7611   AND  su.site_use_id        =  h.invoice_to_org_id
7612   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7613   AND  ca.cust_account_id    =  s.cust_account_id
7614   AND  rl.orig_system_bill_customer_id = ca.cust_account_id
7615   AND  nvl(rl.interface_status, '~')  <> 'P'
7616   AND  rl.interface_line_context      = 'ORDER ENTRY'
7617   AND  rl.interface_line_attribute1   = h.order_number
7618   AND  rl.interface_line_attribute6   = p.price_adjustment_id
7619   AND  EXISTS
7620          ( SELECT  NULL
7621              FROM  oe_payment_types_all t,
7622                    oe_order_lines_all l
7623              WHERE t.credit_check_flag = 'Y'
7624              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7625              AND   l.header_id = h.header_id
7626              AND   t.payment_type_code =
7627                    DECODE(l.payment_type_code, NULL,
7628                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7629                             h.payment_type_code),
7630                           l.payment_type_code)
7631          )
7632 GROUP BY
7633       h.invoice_to_org_id
7634     , h.transactional_curr_code
7635     , s.cust_account_id
7636     , ca.party_id
7637     , h.org_id
7638 ;
7639 
7640   IF G_debug_flag = 'Y'
7641   THEN
7642     oe_debug_pub.add( 'G_HEAD_LINE_RETURN_FREIGHT done at ' || DO_TIME, 2 );
7643   END IF;
7644 
7645 --TaxER Start
7646 IF l_tax  = 'Y' THEN  --14689044
7647   INSERT INTO OE_CREDIT_SUMMARIES
7648   ( balance
7649   , balance_type
7650   , site_use_id
7651   , cust_account_id
7652   , party_id
7653   , org_id
7654   , currency_code
7655   , bucket
7656   , bucket_duration
7657   , creation_date
7658   , created_by
7659   , last_update_date
7660   , last_updated_by
7661   , last_update_login
7662   , program_application_id
7663   , program_id
7664   , program_update_date
7665   , request_id
7666   )
7667 
7668 
7669 SELECT
7670       SUM ( p.adjusted_amount)
7671     , G_HEAD_LINE_RETURN_FREIGHT_T
7672     , h.invoice_to_org_id
7673     , s.cust_account_id
7674     , ca.party_id
7675     , h.org_id
7676     , h.transactional_curr_code
7677     , -2
7678     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
7679     , sysdate
7680     , l_created_by
7681     , sysdate
7682     , l_last_updated_by
7683     , l_last_update_login
7684     , l_program_application_id
7685     , l_program_id
7686     , SYSDATE
7687     , l_request_id
7688 
7689 FROM
7690     oe_price_adjustments      p
7691   , oe_order_headers_all      h
7692   , hz_cust_site_uses_all     su
7693   , hz_cust_acct_sites_all    s
7694   , hz_cust_accounts          ca
7695 WHERE
7696        p.line_id IS NULL
7697   AND  p.header_id           =  h.header_id
7698   AND  h.order_category_code ='RETURN'
7699   AND  h.open_flag           =  'Y'
7700   AND  h.booked_flag         =  'Y'
7701 --12597952  AND  p.applied_flag        =  'Y'
7702   AND  p.list_line_type_code =  'TAX'
7703   AND  p.parent_adjustment_id IS NOT NULL
7704   AND  p.applied_flag        =  'N'  --12895421
7705   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
7706   AND  su.site_use_id        =  h.invoice_to_org_id
7707   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7708   AND  ca.cust_account_id    =  s.cust_account_id
7709   AND  EXISTS
7710          ( SELECT  NULL
7711              FROM  oe_payment_types_all t,
7712                    oe_order_lines_all l
7713              WHERE t.credit_check_flag = 'Y'
7714              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7715              AND   l.header_id = h.header_id
7716              AND   t.payment_type_code =
7717                    DECODE(l.payment_type_code, NULL,
7718                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7719                             h.payment_type_code),
7720                           l.payment_type_code)
7721          )
7722 GROUP BY
7723       h.invoice_to_org_id
7724     , h.transactional_curr_code
7725     , s.cust_account_id
7726     , ca.party_id
7727     , h.org_id
7728 UNION ALL  --bug# 2714553
7729 SELECT
7730       SUM( NVL( rl.amount, 0 ))
7731     , G_HEAD_LINE_RETURN_FREIGHT_T
7732     , h.invoice_to_org_id
7733     , s.cust_account_id
7734     , ca.party_id
7735     , h.org_id
7736     , h.transactional_curr_code
7737     , -2
7738     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
7739     , sysdate
7740     , l_created_by
7741     , sysdate
7742     , l_last_updated_by
7743     , l_last_update_login
7744     , l_program_application_id
7745     , l_program_id
7746     , SYSDATE
7747     , l_request_id
7748 
7749 FROM
7750     oe_price_adjustments      p
7751   , oe_order_headers_all      h
7752   , hz_cust_site_uses_all     su
7753   , hz_cust_acct_sites_all    s
7754   , hz_cust_accounts          ca
7755   , ra_interface_lines_all    rl
7756 WHERE
7757        p.line_id IS NULL
7758   AND  p.header_id           =  h.header_id
7759   AND  h.order_category_code ='RETURN'
7760   AND  h.booked_flag         =  'Y'
7761 --12597952  AND  p.applied_flag        =  'Y'
7762   AND  p.list_line_type_code =  'TAX'
7763   AND  p.parent_adjustment_id IS NOT NULL
7764   AND  p.applied_flag        =  'N'  --12895421
7765   AND  NVL( p.invoiced_flag, 'N' )  =  'Y'
7766   AND  su.site_use_id        =  h.invoice_to_org_id
7767   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
7768   AND  ca.cust_account_id    =  s.cust_account_id
7769   AND  rl.orig_system_bill_customer_id = ca.cust_account_id
7770   AND  nvl(rl.interface_status, '~')  <> 'P'
7771   AND  rl.interface_line_context      = 'ORDER ENTRY'
7772   AND  rl.interface_line_attribute1   = h.order_number
7773   AND  rl.interface_line_attribute6   = p.price_adjustment_id
7774   AND  EXISTS
7775          ( SELECT  NULL
7776              FROM  oe_payment_types_all t,
7777                    oe_order_lines_all l
7778              WHERE t.credit_check_flag = 'Y'
7779              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
7780              AND   l.header_id = h.header_id
7781              AND   t.payment_type_code =
7782                    DECODE(l.payment_type_code, NULL,
7783                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
7784                             h.payment_type_code),
7785                           l.payment_type_code)
7786          )
7787 GROUP BY
7788       h.invoice_to_org_id
7789     , h.transactional_curr_code
7790     , s.cust_account_id
7791     , ca.party_id
7792     , h.org_id
7793 ;
7794 END IF;  --14689044
7795 --TaxER End
7796 
7797   IF G_debug_flag = 'Y'
7798   THEN
7799     oe_debug_pub.add( 'G_HEAD_LINE_RETURN_FREIGHT_T done at ' || DO_TIME, 2 );
7800   END IF;
7801 END IF;  --14689044
7802 --------------------------
7803 --  Holds
7804 --------------------------
7805 --  This is a repeat of all the order balance types, but this
7806 --  time qualified by existing holds.
7807 --  In the Get_Exposure procedure, this negative balance
7808 --  is added if the Include Orders on Hold box is checked in the credit
7809 --  check rule
7810 
7811 -- Bug 4219133:Insert Hold Balances only if Orders on Hold Need to be Excluded.
7812 
7813 --14689044 IF l_order_hold_bal = 'Y' THEN
7814 
7815 --14689044 IF l_cc_level_flag='Y' THEN
7816 -- balance type 10
7817 IF l_order_holds ='Y' THEN  --14689044
7818 
7819   INSERT INTO OE_CREDIT_SUMMARIES
7820   ( balance
7821   , balance_type
7822   , site_use_id
7823   , cust_account_id
7824   , party_id
7825   , org_id
7826   , currency_code
7827   , bucket
7828   , creation_date
7829   , created_by
7830   , last_update_date
7831   , last_updated_by
7832   , last_update_login
7833   , program_application_id
7834   , program_id
7835   , program_update_date
7836   , request_id
7837   , bucket_duration
7838   )
7839 
7840 
7841   SELECT
7842     - SUM( NVL( m.line_ordered_quantity, 0 )
7843          * NVL( m.line_unit_selling_price, 0 ) )
7844     + SUM( NVL( p.commitment_applied_amount, 0 ) )
7845     , G_ORDER_HOLDS
7846     , m.order_invoice_to_org_id
7847     , order_cust_account_id
7848     , order_party_id
7849     , m.order_org_id
7850     , m.order_transactional_curr_code
7851     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
7852                           NVL( m.line_request_date,
7853                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
7854     , SYSDATE
7855     , l_created_by
7856     , SYSDATE
7857     , l_last_updated_by
7858     , l_last_update_login
7859     , l_program_application_id
7860     , l_program_id
7861     , SYSDATE
7862     , l_request_id
7863     , 1
7864 
7865   FROM
7866       OE_INIT_CREDIT_SUMM_GTT    m,
7867       oe_payments                    p
7868   WHERE
7869            m.line_line_category_code           =  'ORDER'
7870     AND    p.header_id  (+)               =  m.line_header_id
7871     AND    p.line_id    (+)               =  m.line_line_id
7872     AND  m.interface_line_attribute6   = -999  --TaxER
7873     AND    EXISTS
7874            ( SELECT  1
7875              FROM
7876                      oe_order_holds_all  oh
7877              WHERE
7878                      oh.header_id         =  m.order_header_id
7879              AND   ( oh.line_id           =  m.line_line_id
7880                      OR  oh.line_id IS NULL
7881                    )
7882              AND     oh.hold_release_id  IS NULL
7883            )
7884   GROUP BY
7885     m.order_invoice_to_org_id
7886   , m.order_transactional_curr_code
7887   , order_cust_account_id
7888   , order_party_id
7889   , m.order_org_id
7890   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
7891                         NVL( m.line_request_date,
7892                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
7893   ;
7894 
7895 
7896 
7897   IF G_debug_flag = 'Y'
7898   THEN
7899     oe_debug_pub.add( 'G_ORDER_HOLDS done at ' || DO_TIME, 2 );
7900   END IF;
7901 END IF; -- l_cc_level_flag
7902 
7903 --14689044 IF l_cc_level_flag='Y' THEN
7904 IF l_order_tax_holds ='Y' THEN  --14689044
7905 -- balance type 13
7906   INSERT INTO OE_CREDIT_SUMMARIES
7907   ( balance
7908   , balance_type
7909   , site_use_id
7910   , cust_account_id
7911   , party_id
7912   , org_id
7913   , currency_code
7914   , bucket
7915   , creation_date
7916   , created_by
7917   , last_update_date
7918   , last_updated_by
7919   , last_update_login
7920   , program_application_id
7921   , program_id
7922   , program_update_date
7923   , request_id
7924   , bucket_duration
7925   )
7926 
7927 
7928   SELECT
7929     - SUM( NVL( m.line_tax_value, 0 ) )
7930     , G_ORDER_TAX_HOLDS
7931     , m.order_invoice_to_org_id
7932     , order_cust_account_id
7933     , order_party_id
7934     , m.order_org_id
7935     , m.order_transactional_curr_code
7936     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
7937                           NVL( m.line_request_date,
7938                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
7939     , SYSDATE
7940     , l_created_by
7941     , SYSDATE
7942     , l_last_updated_by
7943     , l_last_update_login
7944     , l_program_application_id
7945     , l_program_id
7946     , SYSDATE
7947     , l_request_id
7948     , 1
7949 
7950   FROM
7951       OE_INIT_CREDIT_SUMM_GTT    m
7952   WHERE
7953   	   m.line_line_category_code           =  'ORDER'
7954     AND  m.interface_line_attribute6   = -999  --TaxER
7955   AND    EXISTS
7956             ( SELECT  1
7957               FROM    oe_order_holds_all  oh
7958               WHERE   oh.header_id          =  m.order_header_id
7959               AND    (  oh.line_id        =  m.line_line_id
7960                       OR  oh.line_id IS NULL
7961                      )
7962               AND     oh.hold_release_id  IS NULL
7963             )
7964   GROUP BY
7965     m.order_invoice_to_org_id
7966   , m.order_transactional_curr_code
7967   , order_cust_account_id
7968   , order_party_id
7969   , m.order_org_id
7970   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
7971                         NVL( m.line_request_date,
7972                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
7973   ;
7974 
7975 
7976   IF G_debug_flag = 'Y'
7977   THEN
7978     oe_debug_pub.add( 'G_ORDER_TAX_HOLDS done at ' || DO_TIME, 2 );
7979   END IF;
7980 END IF; -- l_cc_level_flag
7981 --14689044 END IF; -- IF l_order_hold_bal
7982 
7983 -------------------------------
7984 ---------- RETURNS-------------
7985 --  Return Holds --------------
7986 -------------------------------
7987 --  This is a repeat of all the order balance types, but this
7988 --  time qualified by existing holds.
7989 --  In the Get_Exposure procedure, this negative balance
7990 --  is added if the Include Orders on Hold box is checked in the credit
7991 --  check rule
7992 
7993 --14689044 IF l_cc_level_flag='Y' THEN
7994 IF l_order_return_holds ='Y' THEN  --14689044
7995 -- balance type 30
7996   INSERT INTO OE_CREDIT_SUMMARIES
7997   ( balance
7998   , balance_type
7999   , site_use_id
8000   , cust_account_id
8001   , party_id
8002   , org_id
8003   , currency_code
8004   , bucket
8005   , bucket_duration
8006   , creation_date
8007   , created_by
8008   , last_update_date
8009   , last_updated_by
8010   , last_update_login
8011   , program_application_id
8012   , program_id
8013   , program_update_date
8014   , request_id
8015   )
8016 
8017 
8018   SELECT
8019     SUM( NVL( l.ordered_quantity, 0 )
8020          * NVL( l.unit_selling_price, 0 ) )
8021     - SUM( NVL( p.commitment_applied_amount, 0 ) )
8022     , G_ORDER_RETURN_HOLDS
8023     , h.invoice_to_org_id
8024     , s.cust_account_id
8025     , ca.party_id
8026     , h.org_id
8027     , h.transactional_curr_code
8028     , -2
8029     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
8030     , sysdate
8031     , l_created_by
8032     , sysdate
8033     , l_last_updated_by
8034     , l_last_update_login
8035     , l_program_application_id
8036     , l_program_id
8037     , SYSDATE
8038     , l_request_id
8039 
8040   FROM
8041          oe_order_lines_all             l
8042        , oe_order_headers_all           h
8043        , oe_payments                    p
8044        , hz_cust_site_uses_all          su
8045        , hz_cust_acct_sites_all         s
8046        , hz_cust_accounts               ca
8047   WHERE
8048            h.header_id                    =  l.header_id
8049 
8050     AND    h.booked_flag                  =  'Y'
8051     AND    h.open_flag                    =  'Y'
8052     AND    l.open_flag                    =  'Y'
8053     AND    l.line_category_code           =  'RETURN'
8054     AND    NVL( l.invoiced_quantity, 0 )  =  0
8055 
8056     AND    p.header_id  (+)               =  l.header_id
8057     AND    p.line_id    (+)               =  l.line_id
8058 
8059     AND    su.site_use_id                 =  h.invoice_to_org_id
8060     AND    su.cust_acct_site_id           =  s.cust_acct_site_id
8061     AND    ca.cust_account_id             =  s.cust_account_id
8062     AND    EXISTS
8063             ( SELECT  1
8064               FROM    oe_order_holds_all  oh
8065               WHERE   oh.header_id          =  h.header_id
8066               AND    (  oh.line_id        =  l.line_id
8067                       OR  oh.line_id IS NULL
8068                      )
8069               AND     oh.hold_release_id  IS NULL
8070             )
8071     AND    EXISTS
8072            ( SELECT  NULL
8073              FROM  oe_payment_types_all t
8074              WHERE t.credit_check_flag = 'Y'
8075              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
8076              AND   l.header_id = h.header_id
8077              AND   t.payment_type_code =
8078                    DECODE(l.payment_type_code, NULL,
8079                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
8080                             h.payment_type_code),
8081                           l.payment_type_code)
8082            )
8083 
8084 
8085 
8086   GROUP BY
8087     h.invoice_to_org_id
8088   , h.transactional_curr_code
8089   , s.cust_account_id
8090   , ca.party_id
8091   , h.org_id
8092   ;
8093 
8094 
8095   IF G_debug_flag = 'Y'
8096   THEN
8097     oe_debug_pub.add( 'G_ORDER_RETURN_HOLDS done at ' || DO_TIME, 2 );
8098   END IF;
8099 END IF; -- l_cc_level_flag
8100 
8101 --14689044 IF l_cc_level_flag='Y' THEN
8102 IF l_order_return_tax_holds ='Y' THEN  --14689044
8103 -- balance type 32
8104 
8105   INSERT INTO OE_CREDIT_SUMMARIES
8106   ( balance
8107   , balance_type
8108   , site_use_id
8109   , cust_account_id
8110   , party_id
8111   , org_id
8112   , currency_code
8113   , bucket
8114   , bucket_duration
8115   , creation_date
8116   , created_by
8117   , last_update_date
8118   , last_updated_by
8119   , last_update_login
8120   , program_application_id
8121   , program_id
8122   , program_update_date
8123   , request_id
8124   )
8125 
8126 
8127   SELECT
8128     SUM( NVL( m.line_tax_value, 0 ) )
8129     , G_ORDER_RETURN_TAX_HOLDS
8130     , m.order_invoice_to_org_id
8131     , order_cust_account_id
8132     , order_party_id
8133     , m.order_org_id
8134     , m.order_transactional_curr_code
8135     , -2
8136     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
8137     , sysdate
8138     , l_created_by
8139     , sysdate
8140     , l_last_updated_by
8141     , l_last_update_login
8142     , l_program_application_id
8143     , l_program_id
8144     , SYSDATE
8145     , l_request_id
8146 
8147   FROM
8148 	OE_INIT_CREDIT_SUMM_GTT		m
8149   WHERE
8150 	   m.line_line_category_code           =  'RETURN'
8151     AND  m.interface_line_attribute6   = -999  --TaxER
8152     AND    EXISTS
8153             ( SELECT  1
8154               FROM    oe_order_holds_all  oh
8155               WHERE   oh.header_id          =  m.order_header_id
8156               AND    (  oh.line_id        =  m.line_line_id
8157                       OR  oh.line_id IS NULL
8158                      )
8159               AND     oh.hold_release_id  IS NULL
8160             )
8161   GROUP BY
8162     m.order_invoice_to_org_id
8163   , m.order_transactional_curr_code
8164   , order_cust_account_id
8165   , order_party_id
8166   , m.order_org_id
8167   ;
8168 
8169 
8170   IF G_debug_flag = 'Y'
8171   THEN
8172     oe_debug_pub.add( 'G_ORDER_RETURN_TAX_HOLDS  done at ' || DO_TIME, 2 );
8173   END IF;
8174 END IF; -- l_cc_level_flag
8175 
8176 --14689044 IF l_order_hold_bal = 'Y' THEN
8177 --------------------------
8178 --  Line Uninvoiced Orders Holds
8179 --------------------------
8180 --  Note this is identical code except that
8181 --  h.invoice_to_org_id is replaced with l.invoice_to_org_id
8182 
8183 -- balance type 11
8184 IF l_line_holds ='Y' THEN  --14689044
8185 
8186   INSERT INTO OE_CREDIT_SUMMARIES
8187   ( balance
8188   , balance_type
8189   , site_use_id
8190   , cust_account_id
8191   , party_id
8192   , org_id
8193   , currency_code
8194   , bucket
8195   , creation_date
8196   , created_by
8197   , last_update_date
8198   , last_updated_by
8199   , last_update_login
8200   , program_application_id
8201   , program_id
8202   , program_update_date
8203   , request_id
8204   , bucket_duration
8205   )
8206 
8207 
8208   SELECT
8209     - SUM( NVL( m.line_ordered_quantity, 0 )
8210          * NVL( m.line_unit_selling_price, 0 ) )
8211     + SUM( NVL( p.commitment_applied_amount, 0 ) )
8212     , G_LINE_HOLDS
8213     , m.line_invoice_to_org_id
8214     , line_cust_account_id
8215     , line_party_id
8216     , m.order_org_id
8217     , m.order_transactional_curr_code
8218     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8219                           NVL( m.line_request_date,
8220                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8221     , SYSDATE
8222     , l_created_by
8223     , SYSDATE
8224     , l_last_updated_by
8225     , l_last_update_login
8226     , l_program_application_id
8227     , l_program_id
8228     , SYSDATE
8229     , l_request_id
8230     , 1
8231 
8232   FROM
8233          OE_INIT_CREDIT_SUMM_GTT        m
8234        , oe_payments                    p
8235   WHERE
8236            m.line_line_category_code           =  'ORDER'
8237     AND    p.header_id  (+)               =  m.line_header_id
8238     AND    p.line_id    (+)               =  m.line_line_id
8239     AND  m.interface_line_attribute6   = -999  --TaxER
8240     AND    EXISTS
8241             ( SELECT  1
8242               FROM    oe_order_holds_all  oh
8243               WHERE   oh.header_id          =  m.order_header_id
8244               AND    (  oh.line_id        =  m.line_line_id
8245                       OR  oh.line_id IS NULL
8246                      )
8247               AND     oh.hold_release_id  IS NULL
8248             )
8249   GROUP BY
8250      m.line_invoice_to_org_id
8251    , m.order_transactional_curr_code
8252    , line_cust_account_id
8253    , line_party_id
8254    , m.order_org_id
8255    , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8256                          NVL( m.line_request_date,
8257                          NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8258   ;
8259 
8260 
8261   IF G_debug_flag = 'Y'
8262   THEN
8263     oe_debug_pub.add( 'G_LINE_HOLDS done at ' || DO_TIME, 2 );
8264   END IF;
8265 
8266 END IF;  --14689044
8267 -- balance type 14
8268 IF l_line_tax_holds ='Y' THEN  --14689044
8269 
8270   INSERT INTO OE_CREDIT_SUMMARIES
8271   ( balance
8272   , balance_type
8273   , site_use_id
8274   , cust_account_id
8275   , party_id
8276   , org_id
8277   , currency_code
8278   , bucket
8279   , creation_date
8280   , created_by
8281   , last_update_date
8282   , last_updated_by
8283   , last_update_login
8284   , program_application_id
8285   , program_id
8286   , program_update_date
8287   , request_id
8288   , bucket_duration
8289   )
8290 
8291 
8292   SELECT
8293     - SUM( NVL( m.line_tax_value, 0 ) )
8294     , G_LINE_TAX_HOLDS
8295     , m.line_invoice_to_org_id
8296     , line_cust_account_id
8297     , line_party_id
8298     , m.order_org_id
8299     , m.order_transactional_curr_code
8300     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8301                           NVL( m.line_request_date,
8302                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8303     , SYSDATE
8304     , l_created_by
8305     , SYSDATE
8306     , l_last_updated_by
8307     , l_last_update_login
8308     , l_program_application_id
8309     , l_program_id
8310     , SYSDATE
8311     , l_request_id
8312     , 1
8313 
8314   FROM
8315          OE_INIT_CREDIT_SUMM_GTT	m
8316   WHERE
8317            m.line_line_category_code           =  'ORDER'
8318     AND  m.interface_line_attribute6   = -999  --TaxER
8319     AND    EXISTS
8320             ( SELECT  1
8321               FROM    oe_order_holds_all  oh
8322               WHERE   oh.header_id          =  m.order_header_id
8323               AND    (  oh.line_id        =  m.line_line_id
8324                       OR  oh.line_id IS NULL
8325                      )
8326               AND     oh.hold_release_id  IS NULL
8327             )
8328   GROUP BY
8329      m.line_invoice_to_org_id
8330    , m.order_transactional_curr_code
8331    , line_cust_account_id
8332    , line_party_id
8333    , m.order_org_id
8334    , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8335                          NVL( m.line_request_date,
8336                          NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8337   ;
8338 
8339 
8340   IF G_debug_flag = 'Y'
8341   THEN
8342     oe_debug_pub.add( 'G_LINE_TAX_HOLDS done at ' || DO_TIME, 2 );
8343   END IF;
8344 END IF; -- IF l_order_hold_bal
8345 
8346 --------------------------------
8347 ----- RETURNS ------------------
8348 --  Line Uninvoiced Orders Holds
8349 --------------------------------
8350 --  Note this is identical code except that
8351 --  h.invoice_to_org_id is replaced with l.invoice_to_org_id
8352 
8353 -- balance type 31
8354 IF l_line_return_holds ='Y' THEN  --14689044
8355 
8356   INSERT INTO OE_CREDIT_SUMMARIES
8357   ( balance
8358   , balance_type
8359   , site_use_id
8360   , cust_account_id
8361   , party_id
8362   , org_id
8363   , currency_code
8364   , bucket
8365   , bucket_duration
8366   , creation_date
8367   , created_by
8368   , last_update_date
8369   , last_updated_by
8370   , last_update_login
8371   , program_application_id
8372   , program_id
8373   , program_update_date
8374   , request_id
8375   )
8376 
8377 
8378   SELECT
8379     SUM( NVL( m.line_ordered_quantity, 0 )
8380          * NVL( m.line_unit_selling_price, 0 ) )
8381     - SUM( NVL( p.commitment_applied_amount, 0 ) )
8382     , G_LINE_RETURN_HOLDS
8383     , m.line_invoice_to_org_id
8384     , line_cust_account_id
8385     , line_party_id
8386     , m.order_org_id
8387     , m.order_transactional_curr_code
8388     , -2
8389     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
8390     , sysdate
8391     , l_created_by
8392     , sysdate
8393     , l_last_updated_by
8394     , l_last_update_login
8395     , l_program_application_id
8396     , l_program_id
8397     , SYSDATE
8398     , l_request_id
8399 
8400   FROM
8401   	 OE_INIT_CREDIT_SUMM_GTT	m
8402        , oe_payments                    p
8403   WHERE
8404            m.line_line_category_code           =  'RETURN'
8405     AND    p.header_id  (+)               =  m.line_header_id
8406     AND    p.line_id    (+)               =  m.line_line_id
8407     AND  m.interface_line_attribute6   = -999  --TaxER
8408     AND    EXISTS
8409              ( SELECT  1
8410               FROM    oe_order_holds_all  oh
8411               WHERE   oh.header_id          =  m.order_header_id
8412               AND    (  oh.line_id        =  m.line_line_id
8413                       OR  oh.line_id IS NULL
8414                      )
8415               AND     oh.hold_release_id  IS NULL
8416             )
8417   GROUP BY
8418      m.line_invoice_to_org_id
8419    , m.order_transactional_curr_code
8420    , line_cust_account_id
8421    , line_party_id
8422    , m.order_org_id
8423   ;
8424 
8425 
8426   IF G_debug_flag = 'Y'
8427   THEN
8428     oe_debug_pub.add( 'G_LINE_RETURN_HOLDS done at ' || DO_TIME, 2 );
8429   END IF;
8430 
8431 END IF;  --14689044
8432 -- balance type 33
8433 
8434 IF l_line_return_tax_holds ='Y' THEN  --14689044
8435 
8436   INSERT INTO OE_CREDIT_SUMMARIES
8437   ( balance
8438   , balance_type
8439   , site_use_id
8440   , cust_account_id
8441   , party_id
8442   , org_id
8443   , currency_code
8444   , bucket
8445   , bucket_duration
8446   , creation_date
8447   , created_by
8448   , last_update_date
8449   , last_updated_by
8450   , last_update_login
8451   , program_application_id
8452   , program_id
8453   , program_update_date
8454   , request_id
8455   )
8456 
8457 
8458   SELECT
8459     SUM( NVL( m.line_tax_value, 0 ) )
8460     , G_LINE_RETURN_TAX_HOLDS
8461     , m.line_invoice_to_org_id
8462     , line_cust_account_id
8463     , line_party_id
8464     , m.order_org_id
8465     , m.order_transactional_curr_code
8466     , -2
8467     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
8468     , sysdate
8469     , l_created_by
8470     , sysdate
8471     , l_last_updated_by
8472     , l_last_update_login
8473     , l_program_application_id
8474     , l_program_id
8475     , SYSDATE
8476     , l_request_id
8477 
8478   FROM
8479 	OE_INIT_CREDIT_SUMM_GTT		m
8480   WHERE
8481            m.line_line_category_code           =  'RETURN'
8482     AND  m.interface_line_attribute6   = -999  --TaxER
8483     AND    EXISTS
8484             ( SELECT  1
8485               FROM    oe_order_holds_all  oh
8486               WHERE   oh.header_id          =  m.order_header_id
8487               AND    (  oh.line_id        =  m.line_line_id
8488                       OR  oh.line_id IS NULL
8489                      )
8490               AND     oh.hold_release_id  IS NULL
8491             )
8492   GROUP BY
8493      m.line_invoice_to_org_id
8494    , m.order_transactional_curr_code
8495    , line_cust_account_id
8496    , line_party_id
8497    , m.order_org_id
8498   ;
8499 
8500   IF G_debug_flag = 'Y'
8501   THEN
8502     oe_debug_pub.add( 'G_LINE_RETURN_TAX_HOLDS done at ' || DO_TIME, 2 );
8503   END IF;
8504 
8505 END IF;  --14689044
8506 
8507 --14689044  IF l_order_hold_bal = 'Y' THEN
8508 --------------------------
8509 --  Line Freight Holds
8510 --------------------------
8511 
8512 -- balance type 16
8513 
8514 IF l_line_freight_holds ='Y' THEN  --14689044
8515 
8516   INSERT INTO OE_CREDIT_SUMMARIES
8517   ( balance
8518   , balance_type
8519   , site_use_id
8520   , cust_account_id
8521   , party_id
8522   , org_id
8523   , currency_code
8524   , bucket
8525   , creation_date
8526   , created_by
8527   , last_update_date
8528   , last_updated_by
8529   , last_update_login
8530   , program_application_id
8531   , program_id
8532   , program_update_date
8533   , request_id
8534   , bucket_duration
8535   )
8536 
8537   SELECT
8538     - SUM
8539       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
8540       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
8541                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
8542       )
8543     , G_LINE_FREIGHT_HOLDS
8544     , m.line_invoice_to_org_id
8545     , line_cust_account_id
8546     , line_party_id
8547     , m.order_org_id
8548     , m.order_transactional_curr_code
8549     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8550                           NVL( m.line_request_date,
8551                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8552     , SYSDATE
8553     , l_created_by
8554     , SYSDATE
8555     , l_last_updated_by
8556     , l_last_update_login
8557     , l_program_application_id
8558     , l_program_id
8559     , SYSDATE
8560     , l_request_id
8561     , 1
8562 
8563   FROM
8564       oe_price_adjustments     p,
8565       OE_INIT_CREDIT_SUMM_GTT	m
8566   WHERE
8567          p.line_id             =  m.line_line_id
8568     AND  p.header_id           =  m.line_header_id
8569     AND  p.header_id           =  m.order_header_id
8570     AND  m.line_line_category_code           =  'ORDER'
8571     AND  p.applied_flag        =  'Y'
8572     AND  p.list_line_type_code =  'FREIGHT_CHARGE'
8573     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
8574     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
8575     AND    EXISTS
8576             ( SELECT  1
8577               FROM    oe_order_holds_all  oh
8578               WHERE   oh.header_id          =  m.order_header_id
8579               AND    (  oh.line_id        =  m.line_line_id
8580                       OR  oh.line_id IS NULL
8581                      )
8582               AND     oh.hold_release_id  IS NULL
8583             )
8584   GROUP BY
8585       m.line_invoice_to_org_id
8586     , m.order_transactional_curr_code
8587     , line_cust_account_id
8588     , line_party_id
8589     , m.order_org_id
8590     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8591                           NVL( m.line_request_date,
8592                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8593   ;
8594 
8595 
8596   IF G_debug_flag = 'Y'
8597   THEN
8598     oe_debug_pub.add( 'G_LINE_FREIGHT_HOLDS done at ' || DO_TIME, 2 );
8599   END IF;
8600 
8601 --TaxER Start
8602 IF l_tax  = 'Y' THEN  --14689044
8603   INSERT INTO OE_CREDIT_SUMMARIES
8604   ( balance
8605   , balance_type
8606   , site_use_id
8607   , cust_account_id
8608   , party_id
8609   , org_id
8610   , currency_code
8611   , bucket
8612   , creation_date
8613   , created_by
8614   , last_update_date
8615   , last_updated_by
8616   , last_update_login
8617   , program_application_id
8618   , program_id
8619   , program_update_date
8620   , request_id
8621   , bucket_duration
8622   )
8623 
8624   SELECT
8625     - SUM ( p1.adjusted_amount)
8626     , G_LINE_FREIGHT_HOLDS_T
8627     , m.line_invoice_to_org_id
8628     , line_cust_account_id
8629     , line_party_id
8630     , m.order_org_id
8631     , m.order_transactional_curr_code
8632     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8633                           NVL( m.line_request_date,
8634                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8635     , SYSDATE
8636     , l_created_by
8637     , SYSDATE
8638     , l_last_updated_by
8639     , l_last_update_login
8640     , l_program_application_id
8641     , l_program_id
8642     , SYSDATE
8643     , l_request_id
8644     , 1
8645 
8646   FROM
8647       oe_price_adjustments     p,
8648       oe_price_adjustments     p1,  --TaxER
8649       OE_INIT_CREDIT_SUMM_GTT	m
8650   WHERE
8651          p.line_id             =  m.line_line_id
8652     AND  p.header_id           =  m.line_header_id
8653     AND  p.header_id           =  m.order_header_id
8654     AND  m.line_line_category_code           =  'ORDER'
8655     AND  p.applied_flag        =  'Y'
8656     AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
8657     AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
8658     AND  p1.applied_flag        =  'N'  --12895421
8659     AND  p.price_adjustment_id = p1.parent_adjustment_id
8660     AND  p.line_id                        = p1.line_id
8661     AND  p.header_id                      = p1.header_id
8662     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
8663     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
8664     AND    EXISTS
8665             ( SELECT  1
8666               FROM    oe_order_holds_all  oh
8667               WHERE   oh.header_id          =  m.order_header_id
8668               AND    (  oh.line_id        =  m.line_line_id
8669                       OR  oh.line_id IS NULL
8670                      )
8671               AND     oh.hold_release_id  IS NULL
8672             )
8673   GROUP BY
8674       m.line_invoice_to_org_id
8675     , m.order_transactional_curr_code
8676     , line_cust_account_id
8677     , line_party_id
8678     , m.order_org_id
8679     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8680                           NVL( m.line_request_date,
8681                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8682   ;
8683 
8684 
8685   IF G_debug_flag = 'Y'
8686   THEN
8687     oe_debug_pub.add( 'G_LINE_FREIGHT_HOLDS_T done at ' || DO_TIME, 2 );
8688   END IF;
8689 END IF;  --14689044
8690 --TaxER End
8691 END IF; -- IF l_order_hold_bal
8692 
8693 ---------------------------------
8694 --------- RETURNS ---------------
8695 --  Line Freight Holds ----------
8696 ---------------------------------
8697 
8698 -- balance type 35
8699 
8700 IF l_line_return_freight_holds ='Y' THEN  --14689044
8701 
8702   INSERT INTO OE_CREDIT_SUMMARIES
8703   ( balance
8704   , balance_type
8705   , site_use_id
8706   , cust_account_id
8707   , party_id
8708   , org_id
8709   , currency_code
8710   , bucket
8711   , bucket_duration
8712   , creation_date
8713   , created_by
8714   , last_update_date
8715   , last_updated_by
8716   , last_update_login
8717   , program_application_id
8718   , program_id
8719   , program_update_date
8720   , request_id
8721   )
8722 
8723   SELECT
8724     - SUM
8725       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
8726       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
8727                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
8728       )
8729     , G_LINE_RETURN_FREIGHT_HOLDS
8730     , m.line_invoice_to_org_id
8731     , line_cust_account_id
8732     , line_party_id
8733     , m.order_org_id
8734     , m.order_transactional_curr_code
8735     , -2
8736     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
8737     , sysdate
8738     , l_created_by
8739     , sysdate
8740     , l_last_updated_by
8741     , l_last_update_login
8742     , l_program_application_id
8743     , l_program_id
8744     , SYSDATE
8745     , l_request_id
8746 
8747   FROM
8748       oe_price_adjustments     p,
8749       OE_INIT_CREDIT_SUMM_GTT  m
8750   WHERE
8751          p.line_id             =  m.line_line_id
8752     AND  p.header_id           =  m.line_header_id
8753     AND  p.header_id           =  m.order_header_id
8754     AND  m.line_line_category_code           =  'RETURN'
8755     AND  p.applied_flag        =  'Y'
8756     AND  p.list_line_type_code =  'FREIGHT_CHARGE'
8757     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
8758     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
8759     AND    EXISTS
8760             ( SELECT  1
8761               FROM    oe_order_holds_all  oh
8762               WHERE   oh.header_id          =  m.order_header_id
8763               AND    (  oh.line_id        =  m.line_line_id
8764                       OR  oh.line_id IS NULL
8765                      )
8766               AND     oh.hold_release_id  IS NULL
8767             )
8768   GROUP BY
8769       m.line_invoice_to_org_id
8770     , m.order_transactional_curr_code
8771     , line_cust_account_id
8772     , line_party_id
8773     , m.order_org_id
8774   ;
8775 
8776 
8777   IF G_debug_flag = 'Y'
8778   THEN
8779     oe_debug_pub.add( 'G_LINE_RETURN_FREIGHT_HOLDS done at ' || DO_TIME, 2 );
8780   END IF;
8781 
8782 --TaxER Start
8783 IF l_tax  = 'Y' THEN  --14689044
8784   INSERT INTO OE_CREDIT_SUMMARIES
8785   ( balance
8786   , balance_type
8787   , site_use_id
8788   , cust_account_id
8789   , party_id
8790   , org_id
8791   , currency_code
8792   , bucket
8793   , bucket_duration
8794   , creation_date
8795   , created_by
8796   , last_update_date
8797   , last_updated_by
8798   , last_update_login
8799   , program_application_id
8800   , program_id
8801   , program_update_date
8802   , request_id
8803   )
8804 
8805   SELECT
8806     - SUM ( p1.adjusted_amount)
8807     , G_LINE_RETURN_FREIGHT_HOLDS_T
8808     , m.line_invoice_to_org_id
8809     , line_cust_account_id
8810     , line_party_id
8811     , m.order_org_id
8812     , m.order_transactional_curr_code
8813     , -2
8814     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
8815     , sysdate
8816     , l_created_by
8817     , sysdate
8818     , l_last_updated_by
8819     , l_last_update_login
8820     , l_program_application_id
8821     , l_program_id
8822     , SYSDATE
8823     , l_request_id
8824 
8825   FROM
8826       oe_price_adjustments     p,
8827       oe_price_adjustments     p1,  --TaxER
8828       OE_INIT_CREDIT_SUMM_GTT  m
8829   WHERE
8830          p.line_id             =  m.line_line_id
8831     AND  p.header_id           =  m.line_header_id
8832     AND  p.header_id           =  m.order_header_id
8833     AND  m.line_line_category_code           =  'RETURN'
8834     AND  p.applied_flag        =  'Y'
8835     AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
8836     AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
8837     AND  p1.applied_flag        =  'N'  --12895421
8838     AND  p.price_adjustment_id = p1.parent_adjustment_id
8839     AND  p.line_id                        = p1.line_id
8840     AND  p.header_id                      = p1.header_id
8841     AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
8842     --TaxER AND  NVL( p.invoiced_flag, 'N' )  =  'N'
8843     AND    EXISTS
8844             ( SELECT  1
8845               FROM    oe_order_holds_all  oh
8846               WHERE   oh.header_id          =  m.order_header_id
8847               AND    (  oh.line_id        =  m.line_line_id
8848                       OR  oh.line_id IS NULL
8849                      )
8850               AND     oh.hold_release_id  IS NULL
8851             )
8852   GROUP BY
8853       m.line_invoice_to_org_id
8854     , m.order_transactional_curr_code
8855     , line_cust_account_id
8856     , line_party_id
8857     , m.order_org_id
8858   ;
8859 
8860 
8861   IF G_debug_flag = 'Y'
8862   THEN
8863     oe_debug_pub.add( 'G_LINE_RETURN_FREIGHT_HOLDS_T done at ' || DO_TIME, 2 );
8864   END IF;
8865 END IF;  --14689044
8866 --TaxER End
8867 
8868 END IF; --14689044
8869 
8870 --14689044 IF l_order_hold_bal = 'Y' THEN
8871 --------------------------
8872 --  Header Freight Holds
8873 --------------------------
8874 --14689044 IF l_cc_level_flag='Y' THEN
8875 IF l_order_freight_holds ='Y' THEN  --14689044
8876 -- balance type 15
8877 
8878   INSERT INTO OE_CREDIT_SUMMARIES
8879   ( balance
8880   , balance_type
8881   , site_use_id
8882   , cust_account_id
8883   , party_id
8884   , org_id
8885   , currency_code
8886   , bucket
8887   , creation_date
8888   , created_by
8889   , last_update_date
8890   , last_updated_by
8891   , last_update_login
8892   , program_application_id
8893   , program_id
8894   , program_update_date
8895   , request_id
8896   , bucket_duration
8897   )
8898 
8899 
8900 SELECT
8901     - SUM
8902       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
8903       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
8904                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
8905       )
8906     , G_ORDER_FREIGHT_HOLDS
8907     , m.order_invoice_to_org_id
8908     , order_cust_account_id
8909     , order_party_id
8910     , m.order_org_id
8911     , m.order_transactional_curr_code
8912     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8913                           NVL( m.line_request_date,
8914                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8915     , SYSDATE
8916     , l_created_by
8917     , SYSDATE
8918     , l_last_updated_by
8919     , l_last_update_login
8920     , l_program_application_id
8921     , l_program_id
8922     , SYSDATE
8923     , l_request_id
8924     , 1
8925 
8926 FROM   oe_price_adjustments     p,
8927 	OE_INIT_CREDIT_SUMM_GTT  m
8928 WHERE
8929        p.line_id             =  m.line_line_id
8930   AND  p.header_id           =  m.line_header_id
8931   AND  p.header_id           =  m.order_header_id
8932   AND  m.line_line_category_code           =  'ORDER'
8933   AND  p.applied_flag                 =  'Y'
8934   AND  p.list_line_type_code          =  'FREIGHT_CHARGE'
8935   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
8936   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
8937   AND  EXISTS
8938         ( SELECT  1
8939           FROM    oe_order_holds_all  oh
8940           WHERE   oh.header_id          =  m.order_header_id
8941           AND    (  oh.line_id        =  m.line_line_id
8942                   OR  oh.line_id IS NULL
8943                  )
8944           AND     oh.hold_release_id  IS NULL
8945         )
8946 GROUP BY
8947     m.order_invoice_to_org_id
8948   , m.order_transactional_curr_code
8949   , order_cust_account_id
8950   , order_party_id
8951   , m.order_org_id
8952   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8953                         NVL( m.line_request_date,
8954                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8955 ;
8956 
8957 
8958   IF G_debug_flag = 'Y'
8959   THEN
8960     oe_debug_pub.add( 'G_ORDER_FREIGHT_HOLDS done at ' || DO_TIME, 2 );
8961   END IF;
8962 
8963 --TaxER Start
8964 IF l_tax  = 'Y' THEN  --14689044
8965   INSERT INTO OE_CREDIT_SUMMARIES
8966   ( balance
8967   , balance_type
8968   , site_use_id
8969   , cust_account_id
8970   , party_id
8971   , org_id
8972   , currency_code
8973   , bucket
8974   , creation_date
8975   , created_by
8976   , last_update_date
8977   , last_updated_by
8978   , last_update_login
8979   , program_application_id
8980   , program_id
8981   , program_update_date
8982   , request_id
8983   , bucket_duration
8984   )
8985 
8986 
8987 SELECT
8988     - SUM ( p1.adjusted_amount)
8989     , G_ORDER_FREIGHT_HOLDS_T
8990     , m.order_invoice_to_org_id
8991     , order_cust_account_id
8992     , order_party_id
8993     , m.order_org_id
8994     , m.order_transactional_curr_code
8995     , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
8996                           NVL( m.line_request_date,
8997                           NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
8998     , SYSDATE
8999     , l_created_by
9000     , SYSDATE
9001     , l_last_updated_by
9002     , l_last_update_login
9003     , l_program_application_id
9004     , l_program_id
9005     , SYSDATE
9006     , l_request_id
9007     , 1
9008 
9009 FROM   oe_price_adjustments     p,
9010        oe_price_adjustments     p1,  --TaxER
9011 	OE_INIT_CREDIT_SUMM_GTT  m
9012 WHERE
9013        p.line_id             =  m.line_line_id
9014   AND  p.header_id           =  m.line_header_id
9015   AND  p.header_id           =  m.order_header_id
9016   AND  m.line_line_category_code           =  'ORDER'
9017   AND  p.applied_flag                 =  'Y'
9018   AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
9019   AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
9020   AND  p1.applied_flag        =  'N'  --12895421
9021   AND  p.price_adjustment_id = p1.parent_adjustment_id
9022   AND  p.line_id                        = p1.line_id
9023   AND  p.header_id                      = p1.header_id
9024   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
9025   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
9026   AND  EXISTS
9027         ( SELECT  1
9028           FROM    oe_order_holds_all  oh
9029           WHERE   oh.header_id          =  m.order_header_id
9030           AND    (  oh.line_id        =  m.line_line_id
9031                   OR  oh.line_id IS NULL
9032                  )
9033           AND     oh.hold_release_id  IS NULL
9034         )
9035 GROUP BY
9036     m.order_invoice_to_org_id
9037   , m.order_transactional_curr_code
9038   , order_cust_account_id
9039   , order_party_id
9040   , m.order_org_id
9041   , TO_NUMBER( TO_CHAR( NVL( m.line_schedule_ship_date,
9042                         NVL( m.line_request_date,
9043                         NVL( m.order_request_date, m.order_creation_date) ) ), 'J' ) )
9044 ;
9045 
9046 
9047   IF G_debug_flag = 'Y'
9048   THEN
9049     oe_debug_pub.add( 'G_ORDER_FREIGHT_HOLDS_T done at ' || DO_TIME, 2 );
9050   END IF;
9051 END IF;  --14689044
9052 --TaxER End
9053 
9054 END IF; -- l_cc_level_flag
9055 --14689044 END IF; -- IF l_order_hold_bal
9056 
9057 --------------------------------------
9058 -------- RETURNS ---------------------
9059 --  Header Freight Holds -------------
9060 --------------------------------------
9061 --14689044 IF l_cc_level_flag='Y' THEN
9062 IF l_order_return_freight_holds ='Y' THEN  --14689044
9063 -- balance type 34
9064 
9065   INSERT INTO OE_CREDIT_SUMMARIES
9066   ( balance
9067   , balance_type
9068   , site_use_id
9069   , cust_account_id
9070   , party_id
9071   , org_id
9072   , currency_code
9073   , bucket
9074   , bucket_duration
9075   , creation_date
9076   , created_by
9077   , last_update_date
9078   , last_updated_by
9079   , last_update_login
9080   , program_application_id
9081   , program_id
9082   , program_update_date
9083   , request_id
9084   )
9085 
9086 
9087 SELECT
9088     - SUM
9089       ( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
9090       * DECODE( p.arithmetic_operator, 'LUMPSUM',			--bug 4295298
9091                 p.operand, (m.line_ordered_quantity * p.adjusted_amount))
9092       )
9093     , G_ORDER_RETURN_FREIGHT_HOLDS
9094     , m.order_invoice_to_org_id
9095     , order_cust_account_id
9096     , order_party_id
9097     , m.order_org_id
9098     , m.order_transactional_curr_code
9099     , -2
9100     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
9101     , sysdate
9102     , l_created_by
9103     , sysdate
9104     , l_last_updated_by
9105     , l_last_update_login
9106     , l_program_application_id
9107     , l_program_id
9108     , SYSDATE
9109     , l_request_id
9110 
9111 FROM   oe_price_adjustments     p,
9112 	OE_INIT_CREDIT_SUMM_GTT	m
9113 WHERE
9114        p.line_id             =  m.line_line_id
9115   AND  p.header_id           =  m.line_header_id
9116   AND  p.header_id           =  m.order_header_id
9117   AND  m.line_line_category_code           =  'RETURN'
9118   AND  p.applied_flag                 =  'Y'
9119   AND  p.list_line_type_code          =  'FREIGHT_CHARGE'
9120   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
9121   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
9122   AND  EXISTS
9123         ( SELECT  1
9124           FROM    oe_order_holds_all  oh
9125           WHERE   oh.header_id          =  m.order_header_id
9126           AND    (  oh.line_id        =  m.line_line_id
9127                   OR  oh.line_id IS NULL
9128                  )
9129           AND     oh.hold_release_id  IS NULL
9130         )
9131 GROUP BY
9132     m.order_invoice_to_org_id
9133   , m.order_transactional_curr_code
9134   , order_cust_account_id
9135   , order_party_id
9136   , m.order_org_id
9137 ;
9138 
9139   IF G_debug_flag = 'Y'
9140   THEN
9141     oe_debug_pub.add( 'G_ORDER_RETURN_FREIGHT_HOLDS done at ' || DO_TIME, 2 );
9142   END IF;
9143 
9144 --TaxER Start
9145 IF l_tax  = 'Y' THEN  --14689044
9146   INSERT INTO OE_CREDIT_SUMMARIES
9147   ( balance
9148   , balance_type
9149   , site_use_id
9150   , cust_account_id
9151   , party_id
9152   , org_id
9153   , currency_code
9154   , bucket
9155   , bucket_duration
9156   , creation_date
9157   , created_by
9158   , last_update_date
9159   , last_updated_by
9160   , last_update_login
9161   , program_application_id
9162   , program_id
9163   , program_update_date
9164   , request_id
9165   )
9166 
9167 
9168 SELECT
9169     - SUM ( p1.adjusted_amount)
9170     , G_ORDER_RETURN_FREIGHT_HOLDS_T
9171     , m.order_invoice_to_org_id
9172     , order_cust_account_id
9173     , order_party_id
9174     , m.order_org_id
9175     , m.order_transactional_curr_code
9176     , -2
9177     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
9178     , sysdate
9179     , l_created_by
9180     , sysdate
9181     , l_last_updated_by
9182     , l_last_update_login
9183     , l_program_application_id
9184     , l_program_id
9185     , SYSDATE
9186     , l_request_id
9187 
9188 FROM   oe_price_adjustments     p,
9189        oe_price_adjustments     p1,  --TaxER
9190 	OE_INIT_CREDIT_SUMM_GTT	m
9191 WHERE
9192        p.line_id             =  m.line_line_id
9193   AND  p.header_id           =  m.line_header_id
9194   AND  p.header_id           =  m.order_header_id
9195   AND  m.line_line_category_code           =  'RETURN'
9196   AND  p.applied_flag                 =  'Y'
9197   AND  p.list_line_type_code            = 'FREIGHT_CHARGE'
9198   AND  p1.list_line_type_code = 'TAX' and p1.parent_adjustment_id IS NOT NULL
9199   AND  p1.applied_flag        =  'N'  --12895421
9200   AND  p.price_adjustment_id = p1.parent_adjustment_id
9201   AND  p.line_id                        = p1.line_id
9202   AND  p.header_id                      = p1.header_id
9203   AND  m.interface_line_attribute6   = decode(m.rl_amount,0,-999,p.price_adjustment_id)  --TaxER
9204   --TaxER AND  NVL( p.invoiced_flag, 'N' )    =  'N'
9205   AND  EXISTS
9206         ( SELECT  1
9207           FROM    oe_order_holds_all  oh
9208           WHERE   oh.header_id          =  m.order_header_id
9209           AND    (  oh.line_id        =  m.line_line_id
9210                   OR  oh.line_id IS NULL
9211                  )
9212           AND     oh.hold_release_id  IS NULL
9213         )
9214 GROUP BY
9215     m.order_invoice_to_org_id
9216   , m.order_transactional_curr_code
9217   , order_cust_account_id
9218   , order_party_id
9219   , m.order_org_id
9220 ;
9221 END IF;  --14689044
9222 --TaxER End
9223 
9224   IF G_debug_flag = 'Y'
9225   THEN
9226     oe_debug_pub.add( 'G_ORDER_RETURN_FREIGHT_HOLDS_T done at ' || DO_TIME, 2 );
9227   END IF;
9228 END IF; -- l_cc_level_flag
9229 
9230 --14689044 IF l_order_hold_bal = 'Y' THEN
9231 --------------------------
9232 --  Header + Line Freight Part 2 Holds
9233 --------------------------
9234 
9235 IF l_header_line_freight_holds ='Y' THEN  --14689044
9236 
9237 -- balance type 17
9238 
9239   INSERT INTO OE_CREDIT_SUMMARIES
9240   ( balance
9241   , balance_type
9242   , site_use_id
9243   , cust_account_id
9244   , party_id
9245   , org_id
9246   , currency_code
9247   , bucket
9248   , creation_date
9249   , created_by
9250   , last_update_date
9251   , last_updated_by
9252   , last_update_login
9253   , program_application_id
9254   , program_id
9255   , program_update_date
9256   , request_id
9257   , bucket_duration
9258   )
9259 
9260 
9261 SELECT
9262     - SUM( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) ) * p.operand )
9263     , G_HEADER_LINE_FREIGHT_HOLDS
9264     , h.invoice_to_org_id
9265     , s.cust_account_id
9266     , ca.party_id
9267     , h.org_id
9268     , h.transactional_curr_code
9269     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
9270     , SYSDATE
9271     , l_created_by
9272     , SYSDATE
9273     , l_last_updated_by
9274     , l_last_update_login
9275     , l_program_application_id
9276     , l_program_id
9277     , SYSDATE
9278     , l_request_id
9279     , 1
9280 
9281 FROM
9282     oe_price_adjustments      p
9283   , oe_order_headers_all      h
9284   , hz_cust_site_uses_all     su
9285   , hz_cust_acct_sites_all    s
9286   , hz_cust_accounts          ca
9287 WHERE
9288        p.line_id IS NULL
9289   AND  p.header_id           =  h.header_id
9290   AND  h.order_category_code IN ('ORDER','MIXED')
9291   AND  h.open_flag           =  'Y'
9292   AND  h.booked_flag         =  'Y'
9293   AND  p.applied_flag        =  'Y'
9294   AND  p.list_line_type_code = 'FREIGHT_CHARGE'
9295   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
9296   AND  su.site_use_id        =  h.invoice_to_org_id
9297   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
9298   AND  ca.cust_account_id    =  s.cust_account_id
9299   AND  EXISTS
9300         ( SELECT  1
9301           FROM    oe_order_holds_all  oh
9302           WHERE   oh.header_id            =  h.header_id
9303           AND     oh.hold_release_id  IS NULL
9304         )
9305   AND  EXISTS
9306          ( SELECT  NULL
9307              FROM  oe_payment_types_all t,
9308                    oe_order_lines_all l
9309              WHERE t.credit_check_flag = 'Y'
9310              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
9311              AND   l.header_id = h.header_id
9312              AND   t.payment_type_code =
9313                    DECODE(l.payment_type_code, NULL,
9314                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
9315                             h.payment_type_code),
9316                           l.payment_type_code)
9317          )
9318 GROUP BY
9319       h.invoice_to_org_id
9320     , h.transactional_curr_code
9321     , s.cust_account_id
9322     , ca.party_id
9323     , h.org_id
9324     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
9325 ;
9326 
9327   IF G_debug_flag = 'Y'
9328   THEN
9329     oe_debug_pub.add( 'G_HEADER_LINE_FREIGHT_HOLDS done at ' || DO_TIME, 2 );
9330   END IF;
9331 
9332 --TaxER Start
9333 IF l_tax  = 'Y' THEN  --14689044
9334   INSERT INTO OE_CREDIT_SUMMARIES
9335   ( balance
9336   , balance_type
9337   , site_use_id
9338   , cust_account_id
9339   , party_id
9340   , org_id
9341   , currency_code
9342   , bucket
9343   , creation_date
9344   , created_by
9345   , last_update_date
9346   , last_updated_by
9347   , last_update_login
9348   , program_application_id
9349   , program_id
9350   , program_update_date
9351   , request_id
9352   , bucket_duration
9353   )
9354 
9355 
9356 SELECT
9357     - SUM ( p.adjusted_amount)
9358     , G_HEADER_LINE_FREIGHT_HOLDS_T
9359     , h.invoice_to_org_id
9360     , s.cust_account_id
9361     , ca.party_id
9362     , h.org_id
9363     , h.transactional_curr_code
9364     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
9365     , SYSDATE
9366     , l_created_by
9367     , SYSDATE
9368     , l_last_updated_by
9369     , l_last_update_login
9370     , l_program_application_id
9371     , l_program_id
9372     , SYSDATE
9373     , l_request_id
9374     , 1
9375 
9376 FROM
9377     oe_price_adjustments      p
9378   , oe_order_headers_all      h
9379   , hz_cust_site_uses_all     su
9380   , hz_cust_acct_sites_all    s
9381   , hz_cust_accounts          ca
9382 WHERE
9383        p.line_id IS NULL
9384   AND  p.header_id           =  h.header_id
9385   AND  h.order_category_code IN ('ORDER','MIXED')
9386   AND  h.open_flag           =  'Y'
9387   AND  h.booked_flag         =  'Y'
9388   AND  p.applied_flag        =  'Y'
9389   AND  p.list_line_type_code =  'TAX'
9390   AND  p.parent_adjustment_id IS NOT NULL
9391   AND  p.applied_flag        =  'N'  --12895421
9392   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
9393   AND  su.site_use_id        =  h.invoice_to_org_id
9394   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
9395   AND  ca.cust_account_id    =  s.cust_account_id
9396   AND  EXISTS
9397         ( SELECT  1
9398           FROM    oe_order_holds_all  oh
9399           WHERE   oh.header_id            =  h.header_id
9400           AND     oh.hold_release_id  IS NULL
9401         )
9402   AND  EXISTS
9403          ( SELECT  NULL
9404              FROM  oe_payment_types_all t,
9405                    oe_order_lines_all l
9406              WHERE t.credit_check_flag = 'Y'
9407              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
9408              AND   l.header_id = h.header_id
9409              AND   t.payment_type_code =
9410                    DECODE(l.payment_type_code, NULL,
9411                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
9412                             h.payment_type_code),
9413                           l.payment_type_code)
9414          )
9415 GROUP BY
9416       h.invoice_to_org_id
9417     , h.transactional_curr_code
9418     , s.cust_account_id
9419     , ca.party_id
9420     , h.org_id
9421     , TO_NUMBER( TO_CHAR( NVL( h.request_date, h.creation_date ), 'J' ) )
9422 ;
9423 
9424   IF G_debug_flag = 'Y'
9425   THEN
9426     oe_debug_pub.add( 'G_HEADER_LINE_FREIGHT_HOLDS_T done at ' || DO_TIME, 2 );
9427   END IF;
9428 END IF;  --14689044
9429 --TaxER End
9430 
9431 END IF; -- IF l_order_hold_bal
9432 
9433 --------------------------------------
9434 ------------- RETURNS ----------------
9435 --  Header + Line Fright Part 2 Holds
9436 --------------------------------------
9437 
9438 IF l_h_l_return_freight_holds ='Y' THEN  --14689044
9439 
9440 -- balance type 36
9441 
9442   INSERT INTO OE_CREDIT_SUMMARIES
9443   ( balance
9444   , balance_type
9445   , site_use_id
9446   , cust_account_id
9447   , party_id
9448   , org_id
9449   , currency_code
9450   , bucket
9451   , bucket_duration
9452   , creation_date
9453   , created_by
9454   , last_update_date
9455   , last_updated_by
9456   , last_update_login
9457   , program_application_id
9458   , program_id
9459   , program_update_date
9460   , request_id
9461   )
9462 
9463 
9464 SELECT
9465     - SUM( DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) ) * p.operand )
9466     , G_H_L_RETURN_FREIGHT_HOLDS
9467     , h.invoice_to_org_id
9468     , s.cust_account_id
9469     , ca.party_id
9470     , h.org_id
9471     , h.transactional_curr_code
9472     , -2
9473     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
9474     , sysdate
9475     , l_created_by
9476     , sysdate
9477     , l_last_updated_by
9478     , l_last_update_login
9479     , l_program_application_id
9480     , l_program_id
9481     , SYSDATE
9482     , l_request_id
9483 
9484 FROM
9485     oe_price_adjustments      p
9486   , oe_order_headers_all      h
9487   , hz_cust_site_uses_all     su
9488   , hz_cust_acct_sites_all    s
9489   , hz_cust_accounts          ca
9490 WHERE
9491        p.line_id IS NULL
9492   AND  p.header_id           =  h.header_id
9493   AND  h.order_category_code = 'RETURN'
9494   AND  h.open_flag           =  'Y'
9495   AND  h.booked_flag         =  'Y'
9496   AND  p.applied_flag        =  'Y'
9497   AND  p.list_line_type_code = 'FREIGHT_CHARGE'
9498   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
9499   AND  su.site_use_id        =  h.invoice_to_org_id
9500   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
9501   AND  ca.cust_account_id    =  s.cust_account_id
9502   AND  EXISTS
9503         ( SELECT  1
9504           FROM    oe_order_holds_all  oh
9505           WHERE   oh.header_id     =  h.header_id
9506           AND     oh.hold_release_id  IS NULL
9507         )
9508   AND  EXISTS
9509          ( SELECT  NULL
9510              FROM  oe_payment_types_all t,
9511                    oe_order_lines_all l
9512              WHERE t.credit_check_flag = 'Y'
9513              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
9514              AND   l.header_id = h.header_id
9515              AND   t.payment_type_code =
9516                    DECODE(l.payment_type_code, NULL,
9517                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
9518                             h.payment_type_code),
9519                           l.payment_type_code)
9520          )
9521 GROUP BY
9522       h.invoice_to_org_id
9523     , h.transactional_curr_code
9524     , s.cust_account_id
9525     , ca.party_id
9526     , h.org_id
9527 ;
9528 
9529   IF G_debug_flag = 'Y'
9530   THEN
9531     oe_debug_pub.add( 'G_H_L_RETURN_FREIGHT_HOLDS done at ' || DO_TIME, 2 );
9532   END IF;
9533 
9534 --TaxER Start
9535 IF l_tax  = 'Y' THEN  --14689044
9536   INSERT INTO OE_CREDIT_SUMMARIES
9537   ( balance
9538   , balance_type
9539   , site_use_id
9540   , cust_account_id
9541   , party_id
9542   , org_id
9543   , currency_code
9544   , bucket
9545   , bucket_duration
9546   , creation_date
9547   , created_by
9548   , last_update_date
9549   , last_updated_by
9550   , last_update_login
9551   , program_application_id
9552   , program_id
9553   , program_update_date
9554   , request_id
9555   )
9556 
9557 
9558 SELECT
9559     - SUM ( p.adjusted_amount)
9560     , G_H_L_RETURN_FREIGHT_HOLDS_T
9561     , h.invoice_to_org_id
9562     , s.cust_account_id
9563     , ca.party_id
9564     , h.org_id
9565     , h.transactional_curr_code
9566     , -2
9567     , OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH
9568     , sysdate
9569     , l_created_by
9570     , sysdate
9571     , l_last_updated_by
9572     , l_last_update_login
9573     , l_program_application_id
9574     , l_program_id
9575     , SYSDATE
9576     , l_request_id
9577 
9578 FROM
9579     oe_price_adjustments      p
9580   , oe_order_headers_all      h
9581   , hz_cust_site_uses_all     su
9582   , hz_cust_acct_sites_all    s
9583   , hz_cust_accounts          ca
9584 WHERE
9585        p.line_id IS NULL
9586   AND  p.header_id           =  h.header_id
9587   AND  h.order_category_code = 'RETURN'
9588   AND  h.open_flag           =  'Y'
9589   AND  h.booked_flag         =  'Y'
9590   AND  p.applied_flag        =  'Y'
9591   AND  p.list_line_type_code =  'TAX'
9592   AND  p.parent_adjustment_id IS NOT NULL
9593   AND  p.applied_flag        =  'N'  --12895421
9594   AND  NVL( p.invoiced_flag, 'N' )  =  'N'
9595   AND  su.site_use_id        =  h.invoice_to_org_id
9596   AND  su.cust_acct_site_id  =  s.cust_acct_site_id
9597   AND  ca.cust_account_id    =  s.cust_account_id
9598   AND  EXISTS
9599         ( SELECT  1
9600           FROM    oe_order_holds_all  oh
9601           WHERE   oh.header_id     =  h.header_id
9602           AND     oh.hold_release_id  IS NULL
9603         )
9604   AND  EXISTS
9605          ( SELECT  NULL
9606              FROM  oe_payment_types_all t,
9607                    oe_order_lines_all l
9608              WHERE t.credit_check_flag = 'Y'
9609              AND   NVL(t.org_id,-99) = NVL(h.org_id, -99)
9610              AND   l.header_id = h.header_id
9611              AND   t.payment_type_code =
9612                    DECODE(l.payment_type_code, NULL,
9613                      DECODE(h.payment_type_code, NULL, t.payment_type_code,
9614                             h.payment_type_code),
9615                           l.payment_type_code)
9616          )
9617 GROUP BY
9618       h.invoice_to_org_id
9619     , h.transactional_curr_code
9620     , s.cust_account_id
9621     , ca.party_id
9622     , h.org_id
9623 ;
9624 
9625   IF G_debug_flag = 'Y'
9626   THEN
9627     oe_debug_pub.add( 'G_H_L_RETURN_FREIGHT_HOLDS_T done at ' || DO_TIME, 2 );
9628   END IF;
9629 END IF;  --14689044
9630 --TaxER End
9631 
9632 END IF;  --14689044
9633 
9634 --------------------------
9635 --  Invoices
9636 --------------------------
9637 -- The term in ther where clause containing the hard-coded
9638 -- GL date was recommended for performance reasons
9639 -- by AR
9640 
9641 -- balance type 8
9642 
9643 IF l_invoices ='Y' THEN  --14689044
9644 
9645   INSERT INTO OE_CREDIT_SUMMARIES
9646   ( balance
9647   , balance_type
9648   , site_use_id
9649   , cust_account_id
9650   , party_id
9651   , org_id
9652   , currency_code
9653   , bucket
9654   , creation_date
9655   , created_by
9656   , last_update_date
9657   , last_updated_by
9658   , last_update_login
9659   , program_application_id
9660   , program_id
9661   , program_update_date
9662   , request_id
9663   , bucket_duration
9664   )
9665 
9666   SELECT
9667     SUM( sch.amount_due_remaining )
9668     , G_INVOICES
9669     , sch.customer_site_use_id
9670     , sch.customer_id
9671     , ca.party_id
9672     , sch.org_id
9673     , sch.invoice_currency_code
9674     , TO_NUMBER( TO_CHAR( sch.trx_date, 'J' ) )
9675     , sysdate
9676     , l_created_by
9677     , sysdate
9678     , l_last_updated_by
9679     , l_last_update_login
9680     , l_program_application_id
9681     , l_program_id
9682     , SYSDATE
9683     , l_request_id
9684     , 1
9685 
9686   FROM
9687     ar_payment_schedules_all     sch ,
9688     hz_cust_accounts             ca
9689     , hz_cust_site_uses_all      su
9690   WHERE
9691          NVL( receipt_confirmed_flag, 'Y' )  =  'Y'
9692     AND  gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
9693     AND  ca.cust_account_id             =  sch.customer_id
9694     AND  su.site_use_id                 = sch.customer_site_use_id
9695     AND  su.site_use_code               <> 'DRAWEE'
9696   GROUP BY
9697       sch.customer_site_use_id
9698     , sch.invoice_currency_code
9699     , sch.customer_id
9700     , ca.party_id
9701     , sch.org_id
9702     , TO_NUMBER( TO_CHAR( sch.trx_date, 'J' ) )
9703   ;
9704 
9705 
9706   IF G_debug_flag = 'Y'
9707   THEN
9708     oe_debug_pub.add( 'G_INVOICES done at ' || DO_TIME, 2 );
9709   END IF;
9710 
9711 END IF;  --14689044
9712 
9713 -----------------------------------------
9714 --  Pay Risk
9715 -----------------------------------------
9716 
9717 -- balance type 9
9718 
9719 IF l_payments_at_risk ='Y' THEN  --14689044
9720 
9721   INSERT INTO OE_CREDIT_SUMMARIES
9722   ( balance
9723   , balance_type
9724   , site_use_id
9725   , cust_account_id
9726   , party_id
9727   , org_id
9728   , currency_code
9729   , bucket
9730   , creation_date
9731   , created_by
9732   , last_update_date
9733   , last_updated_by
9734   , last_update_login
9735 
9736   , program_application_id
9737   , program_id
9738   , program_update_date
9739   , request_id
9740   , bucket_duration
9741   )
9742 
9743 
9744   SELECT
9745     SUM( crh.amount )  pay_risk
9746     , G_PAYMENTS_AT_RISK
9747     , cr.customer_site_use_id
9748     , cr.pay_from_customer
9749     , ca.party_id
9750     , cr.org_id
9751     , cr.currency_code
9752     , TO_NUMBER( TO_CHAR( cr.receipt_date, 'J' ) )
9753     , sysdate
9754     , l_created_by
9755     , sysdate
9756     , l_last_updated_by
9757     , l_last_update_login
9758 
9759     , l_program_application_id
9760     , l_program_id
9761     , SYSDATE
9762     , l_request_id
9763     , 1
9764 
9765   FROM
9766     ar_cash_receipts_all          cr
9767   , ar_cash_receipt_history_all   crh
9768   , hz_cust_accounts              ca
9769   , hz_cust_site_uses_all         su
9770   WHERE
9771          cr.cash_receipt_id             =  crh.cash_receipt_id
9772     AND  crh.current_record_flag        =  'Y'
9773     AND  NVL( cr.confirmed_flag, 'Y' )  =  'Y'
9774     AND  NVL( cr.reversal_category, cr.status || 'X' )  <>  cr.status
9775     AND  crh.status NOT IN
9776          (
9777            DECODE( crh.factor_flag
9778                  , 'Y', 'RISK_ELIMINATED'
9779                  , 'N', 'CLEARED'
9780                  )
9781          , 'REVERSED'
9782          )
9783     AND  NOT EXISTS
9784          (
9785            SELECT
9786              'X'
9787            FROM
9788              ar_receivable_applications_all        rap
9789            WHERE
9790                   rap.cash_receipt_id              =  cr.cash_receipt_id
9791              AND  rap.applied_payment_schedule_id  =  -2
9792              AND  rap.display                      =  'Y'
9793          )
9794   AND  ca.cust_account_id             =  cr.pay_from_customer
9795   AND  su.site_use_id                 = cr.customer_site_use_id
9796   AND  su.site_use_code               <> 'DRAWEE'
9797   GROUP BY
9798     cr.customer_site_use_id
9799   , cr.currency_code
9800   , cr.pay_from_customer
9801   , ca.party_id
9802   , cr.org_id
9803   , TO_NUMBER( TO_CHAR( cr.receipt_date, 'J' ) )
9804   ;
9805 
9806   IF G_debug_flag = 'Y'
9807   THEN
9808    oe_debug_pub.add( 'G_PAYMENTS_AT_RISK done at ' || DO_TIME, 2 );
9809   END IF;
9810 
9811 END IF;  --14689044
9812 ---------------------- BR ------------------
9813 
9814 -- balance type 21
9815 
9816 IF l_br_invoices ='Y' THEN  --14689044
9817 
9818   INSERT INTO OE_CREDIT_SUMMARIES
9819   ( balance
9820   , balance_type
9821   , site_use_id
9822   , cust_account_id
9823   , party_id
9824   , org_id
9825   , currency_code
9826   , bucket
9827   , creation_date
9828   , created_by
9829   , last_update_date
9830   , last_updated_by
9831   , last_update_login
9832 
9833   , program_application_id
9834   , program_id
9835   , program_update_date
9836   , request_id
9837   , bucket_duration
9838   )
9839 
9840   SELECT
9841     SUM( sch.amount_due_remaining )
9842     , G_BR_INVOICES
9843     , sch.customer_site_use_id
9844     , sch.customer_id
9845     , ca.party_id
9846     , sch.org_id
9847     , sch.invoice_currency_code
9848     , TO_NUMBER( TO_CHAR( sch.trx_date, 'J' ) )
9849     , sysdate
9850     , l_created_by
9851     , sysdate
9852     , l_last_updated_by
9853     , l_last_update_login
9854 
9855     , l_program_application_id
9856     , l_program_id
9857     , SYSDATE
9858     , l_request_id
9859     , 1
9860 
9861   FROM
9862     ar_payment_schedules_all     sch ,
9863     hz_cust_accounts             ca
9864     , hz_cust_site_uses_all      su
9865   WHERE
9866          NVL( receipt_confirmed_flag, 'Y' )  =  'Y'
9867     AND  gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
9868     AND  ca.cust_account_id             =  sch.customer_id
9869     AND  su.site_use_id                 = sch.customer_site_use_id
9870     AND  su.site_use_code               = 'DRAWEE'
9871   GROUP BY
9872       sch.customer_site_use_id
9873     , sch.invoice_currency_code
9874     , sch.customer_id
9875     , ca.party_id
9876     , sch.org_id
9877     , TO_NUMBER( TO_CHAR( sch.trx_date, 'J' ) )
9878   ;
9879 
9880 
9881   IF G_debug_flag = 'Y'
9882   THEN
9883     oe_debug_pub.add( 'G_BR_INVOICES done at ' || DO_TIME, 2 );
9884   END IF;
9885 
9886 END IF;  --14689044
9887 -----------------------------------------
9888 --  Pay Risk
9889 -----------------------------------------
9890 
9891 -- balance type 22
9892 
9893 IF l_br_payments_at_risk ='Y' THEN  --14689044
9894 
9895   INSERT INTO OE_CREDIT_SUMMARIES
9896   ( balance
9897   , balance_type
9898   , site_use_id
9899   , cust_account_id
9900   , party_id
9901   , org_id
9902   , currency_code
9903   , bucket
9904   , creation_date
9905   , created_by
9906   , last_update_date
9907   , last_updated_by
9908   , last_update_login
9909 
9910   , program_application_id
9911   , program_id
9912   , program_update_date
9913   , request_id
9914   , bucket_duration
9915   )
9916 
9917 
9918   SELECT
9919     SUM( crh.amount )  pay_risk
9920     , G_BR_PAYMENTS_AT_RISK
9921     , cr.customer_site_use_id
9922     , cr.pay_from_customer
9923     , ca.party_id
9924     , cr.org_id
9925     , cr.currency_code
9926     , TO_NUMBER( TO_CHAR( cr.receipt_date, 'J' ) )
9927     , sysdate
9928     , l_created_by
9929     , sysdate
9930     , l_last_updated_by
9931     , l_last_update_login
9932 
9933     , l_program_application_id
9934     , l_program_id
9935     , SYSDATE
9936     , l_request_id
9937     , 1
9938 
9939   FROM
9940     ar_cash_receipts_all          cr
9941   , ar_cash_receipt_history_all   crh
9942   , hz_cust_accounts              ca
9943   , hz_cust_site_uses_all         su
9944   WHERE
9945          cr.cash_receipt_id             =  crh.cash_receipt_id
9946     AND  crh.current_record_flag        =  'Y'
9947     AND  NVL( cr.confirmed_flag, 'Y' )  =  'Y'
9948     AND  NVL( cr.reversal_category, cr.status || 'X' )  <>  cr.status
9949     AND  crh.status NOT IN
9950          (
9951            DECODE( crh.factor_flag
9952                  , 'Y', 'RISK_ELIMINATED'
9953                  , 'N', 'CLEARED'
9954                  )
9955          , 'REVERSED'
9956          )
9957     AND  NOT EXISTS
9958          (
9959            SELECT
9960              'X'
9961            FROM
9962              ar_receivable_applications_all        rap
9963            WHERE
9964                   rap.cash_receipt_id              =  cr.cash_receipt_id
9965              AND  rap.applied_payment_schedule_id  =  -2
9966              AND  rap.display                      =  'Y'
9967          )
9968   AND  ca.cust_account_id             =  cr.pay_from_customer
9969   AND  su.site_use_id                 = cr.customer_site_use_id
9970   AND  su.site_use_code               = 'DRAWEE'
9971   GROUP BY
9972     cr.customer_site_use_id
9973   , cr.currency_code
9974   , cr.pay_from_customer
9975   , ca.party_id
9976   , cr.org_id
9977   , TO_NUMBER( TO_CHAR( cr.receipt_date, 'J' ) )
9978   ;
9979 
9980   IF G_debug_flag = 'Y'
9981   THEN
9982     oe_debug_pub.add( 'G_PAYMENTS_AT_RISK done at ' || DO_TIME, 2 );
9983   END IF;
9984 
9985 END IF;  --14689044
9986 
9987 -- Bug 4219133 : Insert Past Due Inv Balance only if needed.
9988 
9989 --14689044 IF l_past_due_bal = 'Y' THEN
9990 
9991 ----------------------- past due inv -------------
9992 
9993  -- balance type 20
9994 
9995  IF l_past_due_invoices ='Y' THEN  --14689044
9996 
9997  INSERT INTO OE_CREDIT_SUMMARIES
9998   ( balance
9999   , balance_type
10000   , site_use_id
10001   , cust_account_id
10002   , party_id
10003   , org_id
10004   , currency_code
10005   , bucket
10006   , creation_date
10007   , created_by
10008   , last_update_date
10009   , last_updated_by
10010   , last_update_login
10011   , program_application_id
10012   , program_id
10013   , program_update_date
10014   , request_id
10015   , bucket_duration
10016   )
10017 
10018   SELECT
10019     COUNT(payment_schedule_id)
10020     , G_past_due_invoices
10021     , sch.customer_site_use_id
10022     , sch.customer_id
10023     , ca.party_id
10024     , sch.org_id
10025     , sch.invoice_currency_code
10026     , TO_NUMBER( TO_CHAR( sch.due_date, 'J' ) )
10027     , sysdate
10028     , l_created_by
10029     , sysdate
10030     , l_last_updated_by
10031     , l_last_update_login
10032     , l_program_application_id
10033     , l_program_id
10034     , SYSDATE
10035     , l_request_id
10036     , 1
10037 
10038   FROM
10039     ar_payment_schedules_all     sch ,
10040     hz_cust_accounts             ca
10041   WHERE
10042          NVL( receipt_confirmed_flag, 'Y' )  =  'Y'
10043     AND  gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
10044     AND  ca.cust_account_id             =  sch.customer_id
10045     AND  amount_due_remaining > 0
10046   GROUP BY
10047       sch.customer_site_use_id
10048     , sch.invoice_currency_code
10049     , sch.customer_id
10050     , ca.party_id
10051     , sch.org_id
10052     , TO_NUMBER( TO_CHAR( sch.due_date, 'J' ) )
10053   ;
10054 
10055   IF G_debug_flag = 'Y'
10056   THEN
10057     oe_debug_pub.add( 'past due invt ' || DO_TIME, 2 );
10058   END IF;
10059 
10060 END IF; -- IF l_past_due_bal
10061 
10062   IF G_debug_flag = 'Y'
10063   THEN
10064     oe_debug_pub.add( ' End of first phase ');
10065   END IF;
10066 
10067 
10068   ----------------------
10069   --- second phase -----
10070   ----------------------
10071   l_level          := 0;
10072   l_bucket_length  := POWER( 2, l_level );
10073 
10074   -- Commented for thr bug 7688615 to improve the performance.
10075   /*UPDATE
10076     oe_credit_summaries
10077   SET
10078     bucket_duration  = l_bucket_length
10079     WHERE balance_type NOT IN (18,23,24,25,26,27,28,29,30,31,32,33,34,35,36); ---change for Returns
10080 
10081   */
10082   IF NVL(FND_PROFILE.VALUE('ONT_PRESERVE_EXT_CR_BAL'),'Y') = 'N' THEN
10083        UPDATE
10084          oe_credit_summaries
10085        SET
10086         bucket_duration  = l_bucket_length
10087        WHERE balance_type =18;
10088   END IF;
10089 
10090   IF G_debug_flag = 'Y'
10091   THEN
10092     oe_debug_pub.add( 'level 0 records updated at ' || DO_TIME, 2 );
10093   END IF;
10094 
10095   l_level          := 1;
10096   l_bucket_length  := POWER( 2, l_level );
10097 
10098   --8567481 start
10099      --- Modification for the Bucket Logic -------
10100   /*14689044 start
10101       INSERT
10102       (balance,
10103        balance_type,
10104        site_use_id,
10105        cust_account_id,
10106        party_id,
10107        org_id,
10108        currency_code,
10109        bucket,
10110        bucket_duration)
10111        SELECT
10112              balance
10113            , balance_type
10114            , site_use_id
10115            , cust_account_id
10116            , party_id
10117            , org_id
10118            , currency_code
10119            , bucket
10120            , bucket_duration
10121            FROM
10122              oe_credit_summaries
10123            WHERE
10124             balance_type NOT IN (18,23,24,25,26,27,28,29,30,31,32,33,34,35,36); ---change for Returns
10125 
10126     WHILE  l_level  <=  G_MAX_BUCKET_LEVEL  LOOP
10127 
10128 
10129       INSERT
10130       ( balance
10131       , balance_type
10132       , site_use_id
10133       , cust_account_id
10134       , party_id
10135       , org_id
10136       , currency_code
10137       , bucket
10138       ,bucket_duration
10139       , creation_date
10140       , created_by
10141       , last_update_date
10142       , last_updated_by
10143       , last_update_login
10144        , program_application_id
10145       , program_id
10146       , program_update_date
10147       , request_id
10148       )
10149 
10150       SELECT
10151         SUM( balance )
10152       , balance_type
10153       , site_use_id
10154       , cust_account_id
10155       , party_id
10156       , org_id
10157       , currency_code
10158       , bucket - MOD( bucket, l_bucket_length )
10159       , l_bucket_length
10160       , SYSDATE
10161       , l_created_by
10162       , SYSDATE
10163       , l_last_updated_by
10164       , l_last_update_login
10165       , l_program_application_id
10166       , l_program_id
10167       , SYSDATE
10168       , l_request_id
10169 
10170       FROM
10171         OE_INIT_SUMM_TMP
10172      -- WHERE
10173      --  bucket_duration  =  l_bucket_length / 2
10174       GROUP BY
10175         balance_type
10176       , site_use_id
10177       , cust_account_id
10178       , party_id
10179       , org_id
10180       , currency_code
10181       , bucket - MOD( bucket, l_bucket_length )
10182       ;
10183 
10184     IF G_debug_flag = 'Y'
10185     THEN
10186       oe_debug_pub.add( 'level ' || l_level || ' records done at '||DO_TIME, 2 );
10187     END IF;
10188 
10189       l_level          := l_level + 1;
10190       l_bucket_length  := POWER( 2, l_level );
10191     END LOOP;
10192     14689044 end*/
10193   --8567481 end
10194 
10195 --14689044 /*8567481 start
10196   WHILE  l_level  <=  G_MAX_BUCKET_LEVEL  LOOP
10197 
10198     -- hints are introduced as part of the performance bug 7688615
10199 
10200     INSERT INTO /*+ parallel */ OE_CREDIT_SUMMARIES
10201     ( balance
10202     , balance_type
10203     , site_use_id
10204     , cust_account_id
10205     , party_id
10206     , org_id
10207     , currency_code
10208     , bucket
10209     ,bucket_duration
10210     , creation_date
10211     , created_by
10212     , last_update_date
10213     , last_updated_by
10214     , last_update_login
10215      , program_application_id
10216     , program_id
10217     , program_update_date
10218     , request_id
10219     )
10220 
10221     SELECT
10222       SUM( balance )
10223     , balance_type
10224     , site_use_id
10225     , cust_account_id
10226     , party_id
10227     , org_id
10228     , currency_code
10229     , bucket - MOD( bucket, l_bucket_length )
10230     , l_bucket_length
10231     , SYSDATE
10232     , l_created_by
10233     , SYSDATE
10234     , l_last_updated_by
10235     , l_last_update_login
10236     , l_program_application_id
10237     , l_program_id
10238     , SYSDATE
10239     , l_request_id
10240 
10241     FROM
10242       oe_credit_summaries
10243     WHERE
10244      bucket_duration  =  l_bucket_length / 2
10245     AND balance_type NOT IN (18,23,24,25,26,27,28,29,30,31,32,33,34,35,36) ---change for Returns
10246     GROUP BY
10247       balance_type
10248     , site_use_id
10249     , cust_account_id
10250     , party_id
10251     , org_id
10252     , currency_code
10253     , bucket - MOD( bucket, l_bucket_length )
10254     ;
10255 
10256   IF G_debug_flag = 'Y'
10257   THEN
10258     oe_debug_pub.add( 'level ' || l_level || ' records done at '||DO_TIME, 2 );
10259   END IF;
10260 
10261     l_level          := l_level + 1;
10262     l_bucket_length  := POWER( 2, l_level );
10263   END LOOP;
10264 --14689044    8567481 end */
10265 
10266   IF G_debug_flag = 'Y'
10267   THEN
10268    oe_debug_pub.add( ' Done Inserting into summary table, about to COMMIT');
10269   END IF;
10270 
10271   COMMIT;
10272 
10273   x_retcode  := 0;
10274 
10275   IF G_debug_flag = 'Y'
10276   THEN
10277    oe_debug_pub.add( ' after COMMIT  command');
10278    oe_debug_pub.add( 'Exiting OE_CREDIT_EXPOSURE_PVT.Init_Summary_Table ', 1 );
10279   END IF;
10280 
10281 EXCEPTION
10282 
10283   WHEN OTHERS THEN
10284 
10285     IF
10286       FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
10287     THEN
10288       FND_MSG_PUB.Add_Exc_Msg
10289       ( G_PKG_NAME , 'Init_Summary_Table' );
10290     END IF;
10291 
10292    x_errbuf   := FND_MSG_PUB.Get( p_encoded  =>  FND_API.G_FALSE );
10293    x_retcode  := 2;
10294 
10295 
10296 END Init_Summary_Table;
10297 
10298 --========================================================================
10299 -- PROCEDURE : Get_Exposure            PUBLIC
10300 -- PARAMETERS: x_retcode               0 success, 1 warning, 2 error
10301 --             x_errbuf                error buffer
10302 --             p_customer_id           not null  (tca: cust_account_id)
10303 --             p_site_use_id           can be null
10304 --             p_header_id             order header
10305 --             p_credit_check_rule_rec
10306 --             p_system_parameters_rec for org id
10307 --             p_limit_curr_code       currency in which to show the exposure
10308 --             p_usage_curr_tbl        only include tran in these currencies
10309 --             p_include_all_flag      include transactions in any currency
10310 --             x_total_exposure
10311 --             x_return_status
10312 --             x_error_curr_tbl        contains currencies with no rates
10313 
10314 ---
10315 -- COMMENT   : This returns the total exposure for a customer or customer site
10316 --             using precalculated data.
10317 --  rajkrish Jan-23-2002 included the logic for p_global_exposure_flag
10318 --=======================================================================--
10319 
10320 PROCEDURE  Get_Exposure
10321 ( p_customer_id             IN    NUMBER
10322 , p_site_use_id             IN    NUMBER
10323 , p_party_id                IN    NUMBER := NULL
10324 , p_header_id               IN    NUMBER
10325 , p_credit_check_rule_rec IN
10326           OE_CREDIT_CHECK_UTIL.oe_credit_rules_rec_type
10327 , p_system_parameters_rec IN
10328           OE_CREDIT_CHECK_UTIL.oe_systems_param_rec_type
10329 , p_limit_curr_code         IN
10330            HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
10331 , p_usage_curr_tbl          IN  OE_CREDIT_CHECK_UTIL.curr_tbl_type
10332 , p_include_all_flag        IN    VARCHAR2
10333 , p_global_exposure_flag    IN    VARCHAR2 := 'N'
10334 , p_need_exposure_details   IN    VARCHAR2 := 'N'
10335 , x_total_exposure          OUT   NOCOPY NUMBER
10336 , x_order_amount            OUT   NOCOPY NUMBER
10337 , x_order_hold_amount       OUT   NOCOPY NUMBER
10338 , x_ar_amount               OUT   NOCOPY NUMBER
10339 , x_return_status           OUT   NOCOPY VARCHAR2
10340 , x_error_curr_tbl          OUT   NOCOPY OE_CREDIT_CHECK_UTIL.curr_tbl_type
10341 )
10342 IS
10343 
10344   i                        BINARY_INTEGER;
10345   l_site_use_id            NUMBER;
10346   l_org_id                 NUMBER;
10347   l_currency_code          HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE;
10348   l_balance                NUMBER;
10349   l_term                   NUMBER;
10350   l_total                  NUMBER;
10351 
10352   l_bucket                 NUMBER;
10353   l_bucket_length          NUMBER;
10354   l_main_bucket            NUMBER;
10355   l_main_bucket_length     NUMBER;
10356   l_level                  NUMBER;
10357   l_binary_tbl             oe_credit_exposure_pvt.Binary_tbl_type;
10358   j                        NUMBER;
10359   l_ship                   NUMBER;
10360   l_both_exposure          VARCHAR2(1) ;
10361 
10362   CURSOR C_g_use_party_hierarchy IS
10363   SELECT
10364     'Y'
10365    FROM
10366     hz_hierarchy_nodes hn
10367    WHERE  hn.parent_id                     = p_party_id
10368   AND     hn.parent_object_type           = 'ORGANIZATION'
10369   and     hn.parent_table_name            = 'HZ_PARTIES'
10370   and     hn.child_object_type            = 'ORGANIZATION'
10371   and     hn.effective_start_date  <=  sysdate
10372   and     hn.effective_end_date    >= SYSDATE
10373   and     hn.hierarchy_type
10374                 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type ;
10375 
10376 BEGIN
10377   g_use_party_hierarchy := 'N' ;
10378 
10379 
10380   IF G_debug_flag = 'Y'
10381   THEN
10382     oe_debug_pub.add( 'IN OEXVCRXB.OE_CREDIT_EXPOSURE_PVT.Get_Exposure', 1 );
10383     oe_debug_pub.add( '+++++++++++++++++++++++++++++++++++++++++++');
10384     oe_debug_pub.add( 'p_customer_id : ' || p_customer_id, 2 );
10385     oe_debug_pub.add( 'p_site_use_id : ' || p_site_use_id, 2 );
10386     oe_debug_pub.add( 'p_party_id    : '|| p_party_id ,2);
10387     oe_debug_pub.add( 'p_header_id : '   || p_header_id, 2 );
10388     oe_debug_pub.add( 'g_use_party_hierarchy : '|| g_use_party_hierarchy );
10389     oe_debug_pub.add( ' p_include_all_flag   => '||
10390            p_include_all_flag );
10391     oe_debug_pub.add('  p_global_exposure_flag    => '||
10392            p_global_exposure_flag );
10393     oe_debug_pub.add('  p_need_exposure_details   => '||
10394            p_need_exposure_details );
10395     oe_debug_pub.add
10396        ( 'p_credit_check_rule_rec.credit_check_rule_id: '
10397        || p_credit_check_rule_rec.credit_check_rule_id, 2 );
10398     oe_debug_pub.add
10399      ( 'p_credit_check_rule_rec.name: '
10400      ||  p_credit_check_rule_rec.name, 2 );
10401     oe_debug_pub.add
10402     (  'p_credit_check_rule_rec.failure_result_code: '
10403     ||  p_credit_check_rule_rec.failure_result_code, 2 );
10404     oe_debug_pub.add
10405     (  'p_credit_check_rule_rec.open_ar_balance_flag : '
10406     ||  p_credit_check_rule_rec.open_ar_balance_flag, 2 );
10407     oe_debug_pub.add
10408     ( 'p_credit_check_rule_rec.uninvoiced_orders_flag : '
10409      || p_credit_check_rule_rec.uninvoiced_orders_flag, 2 );
10410     oe_debug_pub.add
10411      ( 'p_credit_check_rule_rec.orders_on_hold_flag : '
10412       || p_credit_check_rule_rec.orders_on_hold_flag, 2 );
10413      oe_debug_pub.add
10414      ( 'p_credit_check_rule_rec.shipping_interval : '
10415      || p_credit_check_rule_rec.shipping_interval, 2 );
10416      oe_debug_pub.add
10417       ( 'p_credit_check_rule_rec.open_ar_days : '
10418       || p_credit_check_rule_rec.open_ar_days, 2 );
10419      oe_debug_pub.add
10420      ( 'p_credit_check_rule_rec.start_date_active : '
10421      || p_credit_check_rule_rec.start_date_active, 2 );
10422      oe_debug_pub.add
10423      ( 'p_credit_check_rule_rec.end_date_active : '
10424       || p_credit_check_rule_rec.end_date_active, 2 );
10425      oe_debug_pub.add
10426      ( 'p_credit_check_rule_rec.include_payments_at_risk_flag : '
10427      || p_credit_check_rule_rec.include_payments_at_risk_flag, 2 );
10428      oe_debug_pub.add
10429      ( 'p_credit_check_rule_rec.include_tax_flag : '
10430      || p_credit_check_rule_rec.include_tax_flag, 2 );
10431      oe_debug_pub.add
10432      ( 'p_credit_check_rule_rec.maximum_days_past_due : '
10433      || p_credit_check_rule_rec.maximum_days_past_due, 2 );
10434      oe_debug_pub.add
10435      ( 'p_credit_check_rule_rec.QUICK_CR_CHECK_FLAG : '
10436      || p_credit_check_rule_rec.QUICK_CR_CHECK_FLAG, 2 );
10437      oe_debug_pub.add
10438      ( 'p_credit_check_rule_rec.incl_freight_charges_flag : '
10439       || p_credit_check_rule_rec.incl_freight_charges_flag, 2 );
10440      oe_debug_pub.add
10441       ( 'p_credit_check_rule_rec.shipping_horizon : '
10442      || p_credit_check_rule_rec.shipping_horizon, 2 );
10443      oe_debug_pub.add
10444      ( 'p_credit_check_rule_rec.include_external_exposure_flag : '
10445      || p_credit_check_rule_rec.include_external_exposure_flag, 2 );
10446      oe_debug_pub.add
10447      ( 'p_credit_check_rule_rec.include_returns_flag : '
10448      || p_credit_check_rule_rec.include_returns_flag, 2 );
10449      oe_debug_pub.add
10450      ( 'p_system_parameters_rec.org_id : '
10451      || p_system_parameters_rec.org_id, 2 );
10452      oe_debug_pub.add
10453      ( 'p_system_parameters_rec.master_organization_id : '
10454      || p_system_parameters_rec.master_organization_id, 2 );
10455      oe_debug_pub.add( 'p_limit_curr_code: '  ||  p_limit_curr_code, 2 );
10456      oe_debug_pub.add( 'p_include_all_flag: ' ||  p_include_all_flag, 2 );
10457      oe_debug_pub.add( 'p_global_exposure_flag = '|| p_global_exposure_flag );
10458 
10459   END IF;
10460 
10461   ------------------------------------------------------------------
10462 
10463   g_use_party_hierarchy := 'N' ;
10464 
10465     IF p_party_id is not NULL
10466     THEN
10467        OPEN C_g_use_party_hierarchy ;
10468 
10469        FETCH C_g_use_party_hierarchy
10470        INTO g_use_party_hierarchy ;
10471 
10472        CLOSE C_g_use_party_hierarchy ;
10473     ELSE
10474      g_use_party_hierarchy := 'N' ;
10475     END IF;
10476 
10477 
10478     IF G_debug_flag = 'Y'
10479     THEN
10480       oe_debug_pub.add( 'final g_use_party_hierarchy ==> '||
10481          g_use_party_hierarchy );
10482     END IF;
10483   ------------------------------------------------------------------
10484 
10485   i  :=  p_usage_curr_tbl.FIRST;
10486 
10487   WHILE i IS NOT NULL LOOP
10488   IF G_debug_flag = 'Y'
10489   THEN
10490     oe_debug_pub.add( 'usage curr: '
10491        || p_usage_curr_tbl(i).usage_curr_code, 2 );
10492   END IF;
10493     i  :=  p_usage_curr_tbl.NEXT(i);
10494   END LOOP;
10495 
10496   g_conversion_type  := p_credit_check_rule_rec.conversion_type;
10497 
10498 
10499 -----------
10500 -- Locks needed for consistency
10501 -- Goal: read-consistency of oe_credit_summaries during exposure
10502 -- Means: SHARE lock or read-only transaction.
10503 --        SHARE: Need to verify that update overrides share.
10504 --        read-only: May slow down query due to reconstruction using
10505 --          rollback segment w.r.t SCN
10506 -- Compromise: do nothing
10507 -- Tradeoffs: (consistent periodic) inconsistency extremely unlikely
10508 --            (triggers/table handlers) inconsistency slightly more likely
10509 --            since seperate exposure and update transactions may be correlated
10510 
10511   -- Get the functional currency for use in currency conversion
10512 --  using triangulation
10513 
10514   g_functional_currency := oe_credit_check_util.Get_GL_Currency;
10515 
10516   l_org_id        := OE_CREDIT_CHECK_UTIL.G_org_id;  --bug# 5031301
10517   l_total         := 0;
10518   l_both_exposure := 'N' ;
10519 
10520   x_ar_amount       := NULL;
10521   x_order_amount      := NULL ;
10522   x_order_hold_amount := NULL ;
10523   -----------------------------
10524 
10525   IF NVL(p_need_exposure_details,'N') = 'N'
10526   THEN
10527   -- Order Management Summaries
10528     IF G_debug_flag = 'Y'
10529     THEN
10530      oe_debug_pub.add(' OM Balances ');
10531      oe_debug_pub.add(' call balance_types_om ');
10532    END IF;
10533 
10534      balance_types_om( p_credit_check_rule_rec );
10535 
10536      calculate_buckets
10537      ( ship_date( p_credit_check_rule_rec.shipping_horizon )
10538      , p_credit_check_rule_rec.shipping_interval
10539      , l_main_bucket
10540      , l_binary_tbl
10541      );
10542 
10543 
10544   ---------------------
10545   -- IF no OM or AR Horizon days setup, then the exposure
10546   -- can be calculated in one execution from the
10547   -- summary table both for OM and AR exposure as we need
10548   -- all the data
10549 
10550     IF p_credit_check_rule_rec.open_ar_days IS NULL
10551        AND p_credit_check_rule_rec.shipping_interval IS NULL
10552     THEN
10553       IF G_debug_flag = 'Y'
10554       THEN
10555         oe_debug_pub.add(' Call balance_types_om_and_ar ');
10556       END IF;
10557 
10558        balance_types_om_and_ar( p_credit_check_rule_rec );
10559 
10560        l_both_exposure := 'Y' ;
10561 
10562     ELSE
10563       IF G_debug_flag = 'Y'
10564       THEN
10565         oe_debug_pub.add(' Select OM and AR exposure separately ');
10566       END IF;
10567     END IF;
10568 
10569     IF G_debug_flag = 'Y'
10570     THEN
10571       oe_debug_pub.add(' l_both_exposure ==> '|| l_both_exposure );
10572       oe_debug_pub.add(' Call retrieve_exposure ');
10573     END IF;
10574 
10575         l_total  := l_total  +  retrieve_exposure
10576         ( p_binary_tbl           =>  l_binary_tbl
10577         , p_site_use_id          =>  p_site_use_id
10578         , p_customer_id          =>  p_customer_id
10579         , p_party_id             => p_party_id
10580         , p_org_id               =>  l_org_id
10581         , p_include_all_flag     =>  p_include_all_flag
10582         , p_usage_curr_tbl       =>  p_usage_curr_tbl
10583         , p_limit_curr_code      =>  p_limit_curr_code
10584         , p_main_bucket          =>  l_main_bucket
10585         , p_global_exposure_flag =>  p_global_exposure_flag
10586         , p_credit_check_rule_rec => p_credit_check_rule_rec
10587         , x_error_curr_tbl       =>  x_error_curr_tbl
10588         );
10589 
10590       IF G_debug_flag = 'Y'
10591       THEN
10592         oe_debug_pub.add(' Out of Retreive exposure with total ==>  '
10593             || l_total );
10594       END IF;
10595 
10596   ---------------------------------
10597   -- Accounts Receivables Summaries
10598 
10599       IF l_both_exposure = 'N'
10600       THEN
10601         IF G_debug_flag = 'Y'
10602         THEN
10603           oe_debug_pub.add(' AR exposure ');
10604           oe_debug_pub.add(' Call balance_types_ar ');
10605         END IF;
10606 
10607          balance_types_ar( p_credit_check_rule_rec );
10608 
10609 
10610          calculate_buckets
10611          ( open_date( p_credit_check_rule_rec.open_ar_days )
10612          , p_credit_check_rule_rec.open_ar_days
10613          , l_main_bucket
10614          , l_binary_tbl
10615           );
10616 
10617          oe_debug_pub.add(' Call retrieve_exposure for AR balance ');
10618 
10619          l_total  := l_total  +  retrieve_exposure
10620          ( p_binary_tbl           =>  l_binary_tbl
10621          , p_site_use_id          =>  p_site_use_id
10622          , p_customer_id          =>  p_customer_id
10623          , p_party_id             => p_party_id
10624          , p_org_id               =>  l_org_id
10625          , p_include_all_flag     =>  p_include_all_flag
10626          , p_usage_curr_tbl       =>  p_usage_curr_tbl
10627          , p_limit_curr_code      =>  p_limit_curr_code
10628          , p_main_bucket          =>  l_main_bucket
10629          , p_global_exposure_flag =>  p_global_exposure_flag
10630          , p_credit_check_rule_rec => p_credit_check_rule_rec
10631          , x_error_curr_tbl       =>  x_error_curr_tbl
10632          );
10633 
10634         IF G_debug_flag = 'Y'
10635         THEN
10636            oe_debug_pub.add(' out of AR  retrieve_exposure ==> '||
10637          l_total );
10638         END IF;
10639 
10640       ELSE
10641         IF G_debug_flag = 'Y'
10642         THEN
10643           oe_debug_pub.add(' NO need for AR expe as both exp calculated = '
10644                 || l_both_exposure );
10645         END IF;
10646       END IF;
10647 
10648       x_total_exposure := l_total;
10649 
10650    ELSE
10651 
10652   ------------------------------ support detail exposure ------------
10653       IF G_debug_flag = 'Y'
10654       THEN
10655         oe_debug_pub.add(' support detail exposure ',1);
10656       END IF;
10657 
10658       balance_types_om_hold( p_credit_check_rule_rec );
10659 
10660       calculate_buckets
10661       ( ship_date( p_credit_check_rule_rec.shipping_horizon )
10662        , p_credit_check_rule_rec.shipping_interval
10663        , l_main_bucket
10664        , l_binary_tbl
10665        );
10666 
10667        x_order_hold_amount :=  retrieve_exposure
10668        ( p_binary_tbl            =>  l_binary_tbl
10669        , p_site_use_id           =>  p_site_use_id
10670        , p_customer_id           =>  p_customer_id
10671        , p_party_id              => p_party_id
10672        , p_org_id                =>  l_org_id
10673        , p_include_all_flag      =>  p_include_all_flag
10674        , p_usage_curr_tbl        =>  p_usage_curr_tbl
10675        , p_limit_curr_code       =>  p_limit_curr_code
10676        , p_main_bucket           =>  l_main_bucket
10677        , p_global_exposure_flag  =>  p_global_exposure_flag
10678        , p_credit_check_rule_rec => p_credit_check_rule_rec
10679        , x_error_curr_tbl        =>  x_error_curr_tbl
10680        );
10681 
10682       IF G_debug_flag = 'Y'
10683       THEN
10684         oe_debug_pub.add(' x_order_hold_amount => '||
10685          x_order_hold_amount );
10686 
10687         oe_debug_pub.add(' x_order_amount => '|| x_order_amount );
10688 
10689         oe_debug_pub.add(' x_ar_amount ' || x_ar_amount );
10690       END IF;
10691      --------------------------------------------------------
10692       balance_types_om_nohold ( p_credit_check_rule_rec );
10693 
10694       calculate_buckets
10695       ( ship_date( p_credit_check_rule_rec.shipping_horizon )
10696        , p_credit_check_rule_rec.shipping_interval
10697        , l_main_bucket
10698        , l_binary_tbl
10699        );
10700 
10701        x_order_amount :=  retrieve_exposure
10702        ( p_binary_tbl            =>  l_binary_tbl
10703        , p_site_use_id           =>  p_site_use_id
10704        , p_customer_id           =>  p_customer_id
10705        , p_party_id              => p_party_id
10706        , p_org_id                =>  l_org_id
10707        , p_include_all_flag      =>  p_include_all_flag
10708        , p_usage_curr_tbl        =>  p_usage_curr_tbl
10709        , p_limit_curr_code       =>  p_limit_curr_code
10710        , p_main_bucket           =>  l_main_bucket
10711        , p_global_exposure_flag  =>  p_global_exposure_flag
10712        , p_credit_check_rule_rec => p_credit_check_rule_rec
10713        , x_error_curr_tbl        =>  x_error_curr_tbl
10714        );
10715 
10716       IF G_debug_flag = 'Y'
10717       THEN
10718         oe_debug_pub.add(' x_order_amount => '|| x_order_amount );
10719         oe_debug_pub.add(' AR exposure ');
10720         oe_debug_pub.add(' Call balance_types_ar ');
10721       END IF;
10722 
10723          balance_types_ar( p_credit_check_rule_rec );
10724 
10725 
10726          calculate_buckets
10727          ( open_date( p_credit_check_rule_rec.open_ar_days )
10728          , p_credit_check_rule_rec.open_ar_days
10729          , l_main_bucket
10730          , l_binary_tbl
10731           );
10732 
10733          oe_debug_pub.add(' Call retrieve_exposure for AR balance ');
10734 
10735          x_ar_amount :=   retrieve_exposure
10736          ( p_binary_tbl           =>  l_binary_tbl
10737          , p_site_use_id          =>  p_site_use_id
10738          , p_customer_id          =>  p_customer_id
10739          , p_party_id             => p_party_id
10740          , p_org_id               =>  l_org_id
10741          , p_include_all_flag     =>  p_include_all_flag
10742          , p_usage_curr_tbl       =>  p_usage_curr_tbl
10743          , p_limit_curr_code      =>  p_limit_curr_code
10744          , p_main_bucket          =>  l_main_bucket
10745          , p_global_exposure_flag =>  p_global_exposure_flag
10746          , p_credit_check_rule_rec => p_credit_check_rule_rec
10747          , x_error_curr_tbl       =>  x_error_curr_tbl
10748          );
10749 
10750         IF G_debug_flag = 'Y'
10751         THEN
10752           oe_debug_pub.add(' out of AR  retrieve_exposure ==> '||
10753          x_ar_amount );
10754        END IF;
10755 
10756        --bug# 5597791
10757        IF G_debug_flag = 'Y'
10758        THEN
10759          oe_debug_pub.add(' x_order_hold_amount => '||
10760           x_order_hold_amount );
10761 
10762          oe_debug_pub.add(' x_order_amount => '|| x_order_amount );
10763 
10764          oe_debug_pub.add(' x_ar_amount ' || x_ar_amount );
10765        END IF;
10766 
10767        x_total_exposure := nvl(x_order_hold_amount,0) + nvl(x_order_amount,0) + nvl(x_ar_amount,0);
10768 
10769  END IF; -- exposure details
10770 
10771 --------------------------------------------------------------
10772   x_return_status  := FND_API.G_RET_STS_SUCCESS;
10773 
10774   IF G_debug_flag = 'Y'
10775   THEN
10776     oe_debug_pub.add(' ');
10777     oe_debug_pub.add(' Total FINAL exposure ==> '|| x_total_exposure,1 );
10778     oe_debug_pub.add(' ');
10779     oe_debug_pub.add('*************************************************');
10780     oe_debug_pub.add( 'Exiting OE_CREDIT_EXPOSURE_PVT.Get_Exposure', 1 );
10781   END IF;
10782 
10783 
10784   l_total   := 0;
10785   l_both_exposure := 'N' ;
10786 
10787 
10788 
10789 EXCEPTION
10790 
10791   WHEN FND_API.G_EXC_ERROR THEN
10792     x_return_status := FND_API.G_RET_STS_ERROR;
10793 
10794   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10795     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10796     oe_debug_pub.add(SQLERRM );
10797 
10798   WHEN OTHERS THEN
10799     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10800     oe_debug_pub.add(SQLERRM );
10801     IF
10802       FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
10803     THEN
10804 --        FND_MSG_PUB.Add_Exc_Msg( l_api_name, 'Get_Exposure' );
10805       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Get_Exposure' );
10806     END IF;
10807 
10808 END Get_Exposure;
10809 
10810 
10811 END OE_CREDIT_EXPOSURE_PVT;