[Home] [Help]
PACKAGE BODY: APPS.OE_CREDIT_CHECK_UTIL
Source
1 PACKAGE BODY OE_CREDIT_CHECK_UTIL AS
2 -- $Header: OEXUCRCB.pls 120.31.12020000.2 2012/08/22 10:15:32 sujithku ship $
3 --+=======================================================================+
4 --| Copyright (c) 2000 Oracle Corporation |
5 --| Redwood Shores, CA, USA |
6 --| All rights reserved. |
7 --+=======================================================================+
8 --| FILENAME |
9 --| OEXUCRCB.pls |
10 --| |
11 --| DESCRIPTION |
12 --| Package Spec of OE_CREDIT_CHECK_UTIL |
13 --| |
14 --| PROCEDURE LIST |
15 --| Get_Credit_Check_Rule_ID |
16 --| Get_Credit_Check_Rule |
17 --| Get_Order_Exposure |
18 --| Get_Limit_Info |
19 --| Get_System_Parameters |
20 --| Get_External_Trx_Amount |
21 --| |
22 --| HISTORY |
23 --| Oct-30-2001 current order exposure global |
24 --| FEB-06-2002 Multi org changes |
25 --| Feb-13-2002 Check External Credit API changes |
26 --| Added Get_external_trx_amount |
27 --| Feb-20-2002 changed Get_Credit_Check_Rule for Manual Release Holds|
28 --| Mar-15-2002 Modify get_order_exposure for external exposure. |
29 --| Mar-19-2002 Modify get_credit_check_rule to add new exposure col. |
30 --| Mar-28-2002 add the changes for the BUG 2236276 |
31 --| Apr-17-2002 Bug 2328351 |
32 --| Apr-30-2002 BUG 2352020 |
33 --| Jun-17-2002 rajkrish 2pm Bug2417717 |
34 --| Jun-18-2002 rajkrish 2412678 |
35 --| Aug-XX-2002 BUG2408466 |
36 --| Sep-18-2002 5PM OM-I |
37 --| Nov-11-2002 |
38 --| Mar-31-2003 vto bug 2846473,2878410. Modified SEND_CREDIT_HLD_NTF |
39 --| Apr-24-2003 vto bug 2921490.Performance fix for get_order_exposure|
40 --| 2925739. |
41 --| May-27-2003 rajkrish BUG 2886786 |
42 --| Jul-16-2003 tsimmond added code to Get_order_exposure and to |
43 --| Get_Transaction_Amount for Returns FPJ project|
44 --| Aug-11-2003 vto Changed to remove NVL as much as possible: |
45 --| Get_Order_Exposure. |
46 --| Also removed current order cursors from the |
47 --| get_order_exposure. They are ont used. |
48 --| Modified get prepayments sql |
49 --| Jan-15-2004 vto 3364726. Check G_crmgmt_installed directly |
50 --| instead of = TRUE. Removed some unnec NVLs |
51 --| Jan-16-2004 tsimmond Bug fix #3377881. In get_transaction_amount |
52 --| for order level credit check in sql statmnts|
53 --| added join between ra_terms_b and oe_order_lines|
54 --| t.term_id = l.payment_term_id |
55 --| Jan-21-2004 vto 3388857. Current order should not be limited |
56 --| by shipping horizon. |
57 --| Feb-05-2004 vto 3426436: Fix 3377881 as it is complete. |
58 --| Added check for t.credit_check_flag=Y also |
59 --| Feb-25-2004 vto 3449827,3463348: get_order_exposure details |
60 --| Jul-27-2004 vto 3818562. Add NVL on h.request_date |
61 --+=======================================================================+
62
63 --------------------
64 -- TYPE DECLARATIONS
65 --------------------
66 TYPE category_tmp_rec IS RECORD
67 ( item_category_id NUMBER
68 , profile_exist VARCHAR2(1)
69 );
70
71
72 TYPE category_tmp_tbl_type IS TABLE OF category_tmp_rec
73 INDEX BY BINARY_INTEGER;
74
75 ------------
76 -- CONSTANTS
77 ------------
78 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_CREDIT_CHECK_UTIL';
79 G_DBG_MSG VARCHAR2(200) := NULL;
80 /* Start MOAC CREDIT CHECK CHANGE */
81 --G_ORG_ID NUMBER :=
82 -- NVL(TO_NUMBER(FND_PROFILE.value('ORG_ID')), -99);
83 /* End MOAC CREDIT CHECK CHANGE */
84 G_debug_flag VARCHAR2(1) :=
85 NVL( OE_CREDIT_CHECK_UTIL.check_debug_flag ,'N') ;
86 G_MULTIPLE_PAYMENTS_ENABLED BOOLEAN :=
87 OE_PrePayment_Util.IS_MULTIPLE_PAYMENTS_ENABLED;
88
89 -------------------
90 -- PUBLIC GLOBAL VARIABLES
91 -------------------
92 G_category_set_id NUMBER ;
93 G_is_external_check BOOLEAN := FALSE;
94
95 ---------------------------
96 -- PROCEDURES AND FUNCTIONS
97 ---------------------------
98
99 FUNCTION check_debug_flag
100 RETURN VARCHAR2
101 IS
102 BEGIN
103 IF oe_debug_pub.g_debug_level > 0
104 THEN
105 RETURN('Y');
106 ELSE
107 RETURN('N') ;
108 END IF;
109 END check_debug_flag ;
110
111 FUNCTION Check_drawee_exists
112 ( p_cust_account_id IN NUMBER )
113 RETURN VARCHAR2
114 IS
115 CURSOR
116 drawee_exists_C IS
117 SELECT su.site_use_id
118 FROM hz_cust_site_uses su ,
119 hz_cust_acct_sites_all cas
120 WHERE cas.cust_account_id = p_cust_account_id
121 AND su.site_use_code = 'DRAWEE'
122 AND su.cust_acct_site_id = cas.cust_acct_site_id ; /* MOAC_SQL_CHANGE */
123
124 l_exists VARCHAR2(1) := 'N' ;
125 l_id NUMBER ;
126 BEGIN
127 IF G_debug_flag = 'Y'
128 THEN
129 OE_DEBUG_PUB.Add(' Into Check_drawee_exists ');
130 END IF;
131
132 OPEN drawee_exists_C ;
133 FETCH drawee_exists_C INTO l_id ;
134
135 IF l_id is not NULL
136 THEN
137 l_exists := 'Y' ;
138 ELSE
139 l_exists := 'N' ;
140 END IF;
141
142 IF drawee_exists_C%NOTFOUND
143 THEN
144 l_exists := 'N' ;
145 l_id := NULL ;
146 END IF;
147
148 CLOSE drawee_exists_C ;
149
150 return(NVL(l_exists,'N')) ;
151
152 EXCEPTION
153 WHEN OTHERS THEN
154 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
155 THEN
156 FND_MSG_PUB.Add_Exc_Msg
157 ( G_PKG_NAME
158 , 'Check_drawee_exists'
159 );
160 END IF;
161 END Check_drawee_exists ;
162
163 ----------------------------------------------------
164 --- get_drawee_site_use_id
165 --- return the BR purpose drawee site use id
166 -----------------------------------------------------
167 FUNCTION get_drawee_site_use_id
168 ( p_site_use_id IN NUMBER
169 ) RETURN NUMBER
170 IS
171
172 l_site_use_id NUMBER ;
173 l_cust_acct_site_id NUMBER;
174 BEGIN
175
176 IF G_debug_flag = 'Y'
177 THEN
178 oe_debug_pub.add('get_drawee_site_use_id ');
179 END IF;
180
181 BEGIN
182 SELECT cust_acct_site_id
183 INTO l_cust_acct_site_id
184 FROM hz_cust_site_uses su
185 WHERE su.site_use_id = p_site_use_id ;
186
187 SELECT su.site_use_id
188 INTO l_site_use_id
189 FROM hz_cust_acct_sites cas
190 , hz_cust_site_uses_all su
191 WHERE cas.cust_acct_site_id = su.cust_acct_site_id
192 AND su.cust_acct_site_id = l_cust_acct_site_id
193 AND su.site_use_code = 'DRAWEE' ; /* MOAC_SQL_CHANGE */
194
195 EXCEPTION
196 WHEN NO_DATA_FOUND
197 THEN
198 l_site_use_id := NULL ;
199
200
201 IF G_debug_flag = 'Y'
202 THEN
203 oe_debug_pub.add(' No Data found for BR in get_drawee_site_use_id ');
204 END IF;
205
206 WHEN TOO_MANY_ROWS
207 THEN
208 l_site_use_id := NULL ;
209
210 IF G_debug_flag = 'Y'
211 THEN
212 oe_debug_pub.add(' TOO_MANY_ROWS BR in get_drawee_site_use_id ');
213 END IF;
214 END ;
215 return ( l_site_use_id );
216
217 EXCEPTION
218 WHEN OTHERS THEN
219 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
220 THEN
221 FND_MSG_PUB.Add_Exc_Msg
222 ( G_PKG_NAME
223 , 'get_drawee_site_use_id'
224 );
225 END IF;
226
227 END get_drawee_site_use_id ;
228
229
230 --------------------------------------------------------------------
231 --FUNCTION: GET_hierarchy_party_limit
232 --COMMENTS: Returns the party level credit profile
233 ----------------------------------------------------------------------
234 PROCEDURE GET_hierarchy_party_limit
235 ( p_party_id IN NUMBER
236 , p_trx_curr_code IN VARCHAR2
237 , x_limit_curr_code OUT NOCOPY VARCHAR2
238 , x_trx_limit OUT NOCOPY NUMBER
239 , x_overall_limit OUT NOCOPY NUMBER
240 , x_return_status OUT NOCOPY VARCHAR2
241 , x_credit_limit_entity_id OUT NOCOPY NUMBER
242 )
243 IS
244
245 CURSOR party_hier_limit_no_incl_csr IS
246 SELECT cpa.currency_code currency_code
247 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
248 overall_limit
249 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
250 trx_limit
251 , cp.credit_checking credit_checking --bug 4967828
252 , cu.credit_usage_rule_set_id
253 , cp.party_id
254 FROM hz_customer_profiles cp
255 , hz_cust_profile_amts cpa
256 , hz_credit_usages cu
257 , hz_credit_usage_rules cur
258 , hz_hierarchy_nodes hn
259 WHERE cp.party_id = hn.parent_id
260 AND cp.cust_account_id = -1
261 AND cp.site_use_id IS NULL
262 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
263 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
264 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
265 AND NVL(TRUNC(cpa.expiration_date) , TRUNC(SYSDATE) )
266 <= TRUNC(SYSDATE)
267 AND NVL (cur.include_all_flag, 'N') = 'N'
268 AND cur.usage_type = 'CURRENCY'
269 AND cur.user_code = p_trx_curr_code
270 AND NVL(cur.exclude_flag,'N') = 'N'
271 -- AND NVL(cp.credit_checking,'Y') = 'Y' --bug 4967828
272 AND hn.child_id = p_party_id
273 AND hn.parent_object_type = 'ORGANIZATION'
274 and hn.parent_table_name = 'HZ_PARTIES'
275 and hn.child_object_type = 'ORGANIZATION'
276 and hn.effective_start_date <= sysdate
277 and hn.effective_end_date >= SYSDATE
278 and hn.hierarchy_type = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
279 ORDER BY hn.LEVEL_NUMBER DESC ;
280
281
282 party_hier_limit_no_incl_rec party_hier_limit_no_incl_csr%ROWTYPE ;
283
284 CURSOR party_hier_limit_incl_csr IS
285 SELECT cpa.currency_code currency_code
286 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
287 overall_limit
288 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
289 trx_limit
290 , cp.credit_checking credit_checking --bug 4967828
291 , cu.credit_usage_rule_set_id
292 , cp.party_id
293 FROM hz_customer_profiles cp
294 , hz_cust_profile_amts cpa
295 , hz_credit_usages cu
296 , hz_credit_usage_rules cur
297 , hz_hierarchy_nodes hn
298 WHERE cp.party_id = hn.parent_id
299 AND cp.cust_account_id = -1
300 AND cp.site_use_id IS NULL
301 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
302 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
303 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
304 AND NVL(TRUNC(cpa.expiration_date) , TRUNC(SYSDATE) )
305 <= TRUNC(SYSDATE)
306 AND cur.include_all_flag = 'Y'
307 AND NOT EXISTS ( SELECT 'EXCLUDE'
308 FROM hz_credit_usage_rules cur2
309 WHERE cu.credit_usage_rule_set_id
310 = cur2.credit_usage_rule_set_id
311 AND cur2.exclude_flag = 'Y'
312 AND cur2.usage_type = 'CURRENCY'
313 AND cur2.user_code = p_trx_curr_code
314 )
315 -- AND NVL(cp.credit_checking,'Y') = 'Y' --bug 4967828
316 AND hn.child_id = p_party_id
317 AND hn.parent_object_type = 'ORGANIZATION'
318 and hn.parent_table_name = 'HZ_PARTIES'
319 and hn.child_object_type = 'ORGANIZATION'
320 and hn.effective_start_date <= sysdate
321 and hn.effective_end_date >= SYSDATE
322 and hn.hierarchy_type = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
323 ORDER BY hn.LEVEL_NUMBER DESC ;
324
325 party_hier_limit_incl_rec party_hier_limit_incl_csr%ROWTYPE ;
326
327 CURSOR party_hier_single_limit_csr IS
328 SELECT cpa.currency_code currency_code
329 , cpa.overall_credit_limit * ((100+nvl(cp.tolerance,0))/100)
330 overall_limit
331 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
332 trx_limit
333 , cp.credit_checking credit_checking --bug 4967828
334 , cp.party_id
335 FROM hz_customer_profiles cp
336 , hz_cust_profile_amts cpa
337 , hz_hierarchy_nodes hn
338 WHERE cp.party_id = hn.parent_id
339 AND cp.cust_account_id = -1
340 AND cp.site_use_id IS NULL
341 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
342 AND cpa.currency_code = p_trx_curr_code
343 -- AND cp.credit_checking = 'Y' --bug 4967828
344 AND hn.child_id = p_party_id
345 AND hn.parent_object_type = 'ORGANIZATION'
346 and hn.parent_table_name = 'HZ_PARTIES'
347 and hn.child_object_type = 'ORGANIZATION'
348 and hn.effective_start_date
349 <= sysdate
350 and hn.effective_end_date
351 >= SYSDATE
352 and hn.hierarchy_type = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
353 ORDER BY hn.LEVEL_NUMBER DESC ;
354
355
356 party_hier_single_limit_rec party_hier_single_limit_csr%ROWTYPE ;
357
358 BEGIN
359
360 IF G_debug_flag = 'Y'
361 THEN
362 OE_DEBUG_PUB.ADD('IN GET_hierarchy_party_limit');
363 OE_DEBUG_PUB.ADD('p_party_id ==> '|| p_party_id );
364 OE_DEBUG_PUB.ADD('p_trx_curr_code ==> '|| p_trx_curr_code );
365 OE_DEBUG_PUB.ADD('party_hier_limit_no_incl_csr ');
366 END IF;
367
368 OPEN party_hier_limit_no_incl_csr ;
369 FETCH party_hier_limit_no_incl_csr
370 INTO party_hier_limit_no_incl_rec ;
371
372 IF party_hier_limit_no_incl_csr%NOTFOUND
373 THEN
374 x_return_status := NULL; --bug 4967828
375 ELSIF party_hier_limit_no_incl_rec.credit_checking = 'N'
376 THEN
377 x_credit_limit_entity_id := NULL ;
378 x_return_status := 'N' ;
379 ELSE
380 x_limit_curr_code := party_hier_limit_no_incl_rec.currency_code;
381 x_overall_limit := party_hier_limit_no_incl_rec.overall_limit;
382 x_trx_limit := party_hier_limit_no_incl_rec.trx_limit;
383 x_credit_limit_entity_id :=
384 party_hier_limit_no_incl_rec.party_id ;
385 x_return_status := 'Y' ;
386 END IF;
387
388 CLOSE party_hier_limit_no_incl_csr ;
389
390
391 IF x_limit_curr_code IS NULL
392 THEN
393 IF G_debug_flag = 'Y'
394 THEN
395 OE_DEBUG_PUB.ADD('party_hier_limit_incl_csr ');
396 END IF;
397
398 OPEN party_hier_limit_incl_csr ;
399 FETCH party_hier_limit_incl_csr
400 INTO party_hier_limit_incl_rec ;
401
402 IF party_hier_limit_incl_csr%NOTFOUND
403 THEN
404 x_return_status := NULL; --bug 4967828
405 ELSIF party_hier_limit_incl_rec.credit_checking = 'N'
406 THEN
407 x_credit_limit_entity_id := NULL ;
408 x_return_status := 'N' ;
409 ELSE
410 x_limit_curr_code := party_hier_limit_incl_rec.currency_code;
411 x_overall_limit := party_hier_limit_incl_rec.overall_limit;
412 x_trx_limit := party_hier_limit_incl_rec.trx_limit;
413 x_credit_limit_entity_id :=
414 party_hier_limit_incl_rec.party_id ;
415 x_return_status := 'Y' ;
416 END IF;
417
418 CLOSE party_hier_limit_incl_csr ;
419 END IF;
420
421 IF x_limit_curr_code IS NULL
422 THEN
423 IF G_debug_flag = 'Y'
424 THEN
425 OE_DEBUG_PUB.ADD('party_hier_single_limit_csr');
426 END IF;
427
428 OPEN party_hier_single_limit_csr ;
429 FETCH party_hier_single_limit_csr
430 INTO party_hier_single_limit_rec ;
431
432 IF party_hier_single_limit_csr%NOTFOUND
433 THEN
434 x_return_status := NULL; --bug 4967828
435 ELSIF party_hier_single_limit_rec.credit_checking = 'N'
436 THEN
437 x_credit_limit_entity_id := NULL ;
438 x_return_status := 'N' ;
439 ELSE
440 x_limit_curr_code := party_hier_single_limit_rec.currency_code;
441 x_overall_limit := party_hier_single_limit_rec.overall_limit;
442 x_trx_limit := party_hier_single_limit_rec.trx_limit;
443 x_credit_limit_entity_id :=
444 party_hier_single_limit_rec.party_id ;
445 x_return_status := 'Y' ;
446 END IF;
447
448 CLOSE party_hier_single_limit_csr ;
449 END IF;
450
451 IF G_debug_flag = 'Y'
452 THEN
453
454 OE_DEBUG_PUB.ADD('OUT GET_hierarchy_party_limit' );
455 END IF;
456
457 EXCEPTION
458 WHEN OTHERS THEN
459 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
460 THEN
461 FND_MSG_PUB.Add_Exc_Msg
462 ( G_PKG_NAME
463 , 'GET_hierarchy_party_limit'
464 );
465 END IF;
466
467
468 END GET_hierarchy_party_limit ;
469
470 --------------------------------------------------------------------
471 --FUNCTION: GET_single_party_limit
472 --COMMENTS: Returns the party level credit profile
473 ----------------------------------------------------------------------
474 PROCEDURE GET_single_party_limit
475 ( p_party_id IN NUMBER
476 , p_trx_curr_code IN VARCHAR2
477 , x_limit_curr_code OUT NOCOPY VARCHAR2
478 , x_trx_limit OUT NOCOPY NUMBER
479 , x_overall_limit OUT NOCOPY NUMBER
480 , x_return_status OUT NOCOPY VARCHAR2
481 , x_credit_limit_entity_id OUT NOCOPY NUMBER
482 )
483 IS
484 CURSOR party_single_limit_csr IS
485 SELECT cpa.currency_code currency_code
486 , cpa.overall_credit_limit * ((100+nvl(cp.tolerance,0))/100)
487 overall_limit
488 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
489 trx_limit
490 , cp.credit_checking credit_checking --bug 4967828
491 , cp.party_id
492 FROM hz_customer_profiles cp
493 , hz_cust_profile_amts cpa
494 WHERE cp.cust_account_id = -1
495 AND cp.site_use_id IS NULL
496 AND cp.party_id = p_party_id
497 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
498 AND cpa.currency_code = p_trx_curr_code ; --bug 4967828
499 -- AND NVL(cp.credit_checking,'Y') = 'Y' ;
500
501 party_single_limit_rec party_single_limit_csr%ROWTYPE ;
502
503 BEGIN
504
505 IF G_debug_flag = 'Y'
506 THEN
507
508 OE_DEBUG_PUB.ADD('IN GET_single_party_limit');
509 OE_DEBUG_PUB.ADD('p_party_id ==> '|| p_party_id );
510 OE_DEBUG_PUB.ADD('p_trx_curr_code ==> '|| p_trx_curr_code );
511 OE_DEBUG_PUB.ADD(' party_single_limit_csr ');
512 END IF;
513
514 OPEN party_single_limit_csr ;
515 FETCH party_single_limit_csr
516 INTO party_single_limit_rec ;
517
518 IF party_single_limit_csr%NOTFOUND
519 THEN
520 x_return_status := NULL; --bug 4967828
521 ELSIF party_single_limit_rec.credit_checking = 'N'
522 THEN
523 x_credit_limit_entity_id := NULL ;
524 x_return_status := 'N' ;
525 ELSE
526 x_limit_curr_code := party_single_limit_rec.currency_code;
527 x_overall_limit := party_single_limit_rec.overall_limit;
528 x_trx_limit := party_single_limit_rec.trx_limit;
529 x_credit_limit_entity_id :=
530 party_single_limit_rec.party_id ;
531 x_return_status := 'Y' ;
532 END IF;
533
534 CLOSE party_single_limit_csr ;
535
536
537 IF G_debug_flag = 'Y'
538 THEN
539 OE_DEBUG_PUB.ADD('OUT GET_single_party_limit' );
540 END IF;
541
542 EXCEPTION
543 WHEN OTHERS THEN
544 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
545 THEN
546 FND_MSG_PUB.Add_Exc_Msg
547 ( G_PKG_NAME
548 , 'GET_single_party_limit'
549 );
550 END IF;
551
552
553 END GET_single_party_limit ;
554
555 --------------------------------------------------------------------
556 --FUNCTION: GET_multi_party_limit
557 --COMMENTS: Returns the party level credit profile
558 ----------------------------------------------------------------------
559 PROCEDURE GET_multi_party_limit
560 ( p_party_id IN NUMBER
561 , p_trx_curr_code IN VARCHAR2
562 , x_limit_curr_code OUT NOCOPY VARCHAR2
563 , x_trx_limit OUT NOCOPY NUMBER
564 , x_overall_limit OUT NOCOPY NUMBER
565 , x_return_status OUT NOCOPY VARCHAR2
566 , x_credit_limit_entity_id OUT NOCOPY NUMBER
567 )
568 IS
569 CURSOR party_multi_limit_no_incl_csr IS
570 SELECT cpa.currency_code currency_code
571 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
572 overall_limit
573 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
574 trx_limit
575 , cp.credit_checking credit_checking --bug 4967828
576 , cu.credit_usage_rule_set_id
577 , cp.party_id
578 FROM hz_customer_profiles cp
579 , hz_cust_profile_amts cpa
580 , hz_credit_usages cu
581 , hz_credit_usage_rules cur
582 WHERE cp.cust_account_id = -1
583 AND cp.site_use_id IS NULL
584 AND cp.party_id = p_party_id
585 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
586 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
587 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
588 AND NVL(TRUNC(cpa.expiration_date) , TRUNC(SYSDATE) )
589 <= TRUNC(SYSDATE)
590 AND NVL (cur.include_all_flag, 'N') = 'N'
591 AND cur.usage_type = 'CURRENCY'
592 AND cur.user_code = p_trx_curr_code
593 AND NVL(cur.exclude_flag,'N') = 'N' ; --bug 4967828
594 -- AND NVL(cp.credit_checking,'Y') = 'Y' ;
595
596
597 party_multi_limit_no_incl_rec party_multi_limit_no_incl_csr%ROWTYPE ;
598
599
600
601 CURSOR party_multi_limit_incl_csr IS
602 SELECT cpa.currency_code currency_code
603 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
604 overall_limit
605 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
606 trx_limit
607 , cp.credit_checking credit_checking --bug 4967828
608 , cu.credit_usage_rule_set_id
609 , cp.party_id
610 FROM hz_customer_profiles cp
611 , hz_cust_profile_amts cpa
612 , hz_credit_usages cu
613 , hz_credit_usage_rules cur
614 WHERE cp.cust_account_id = -1
615 AND cp.site_use_id IS NULL
616 AND cp.party_id = p_party_id
617 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
618 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
619 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
620 AND NVL(TRUNC(cpa.expiration_date), TRUNC(SYSDATE)
621 ) <= TRUNC(SYSDATE)
622 AND cur.include_all_flag = 'Y'
623 -- AND NVL(cp.credit_checking,'Y') = 'Y' --bug 4967828
624 AND NOT EXISTS ( SELECT 'EXCLUDE'
625 FROM hz_credit_usage_rules cur2
626 WHERE cu.credit_usage_rule_set_id
627 = cur2.credit_usage_rule_set_id
628 AND cur2.exclude_flag = 'Y'
629 AND cur2.usage_type = 'CURRENCY'
630 AND cur2.user_code = p_trx_curr_code
631 );
632
633
634 party_multi_limit_incl_rec party_multi_limit_incl_csr%ROWTYPE ;
635
636
637 BEGIN
638 IF G_debug_flag = 'Y'
639 THEN
640
641 OE_DEBUG_PUB.ADD('IN GET_multi_party_limit ');
642 OE_DEBUG_PUB.ADD('p_party_id ==> '|| p_party_id );
643 OE_DEBUG_PUB.ADD('p_trx_curr_code ==> '|| p_trx_curr_code );
644 OE_DEBUG_PUB.ADD('party_multi_limit_no_incl_csr ');
645 END IF;
646
647 OPEN party_multi_limit_no_incl_csr ;
648 FETCH party_multi_limit_no_incl_csr
649 INTO party_multi_limit_no_incl_rec ;
650
651 IF party_multi_limit_no_incl_csr%NOTFOUND
652 THEN
653 x_return_status := NULL; --bug 4967828
654 ELSIF party_multi_limit_no_incl_rec.credit_checking = 'N'
655 THEN
656 x_credit_limit_entity_id := NULL ;
657 x_return_status := 'N' ;
658 ELSE
659 x_limit_curr_code := party_multi_limit_no_incl_rec.currency_code;
660 x_overall_limit := party_multi_limit_no_incl_rec.overall_limit;
661 x_trx_limit := party_multi_limit_no_incl_rec.trx_limit;
662 x_credit_limit_entity_id :=
663 party_multi_limit_no_incl_rec.party_id ;
664 x_return_status := 'Y' ;
665 END IF;
666
667 CLOSE party_multi_limit_no_incl_csr ;
668
669
670 IF x_limit_curr_code IS NULL
671 THEN
672 IF G_debug_flag = 'Y'
673 THEN
674 OE_DEBUG_PUB.ADD('party_multi_limit_incl_csr ');
675 END IF;
676
677 OPEN party_multi_limit_incl_csr ;
678 FETCH party_multi_limit_incl_csr
679 INTO party_multi_limit_incl_rec ;
680
681 IF party_multi_limit_incl_csr%NOTFOUND
682 THEN
683 x_return_status := NULL; --bug 4967828
684 ELSIF party_multi_limit_incl_rec.credit_checking = 'N'
685 THEN
686 x_credit_limit_entity_id := NULL ;
687 x_return_status := 'N' ;
688 ELSE
689 x_limit_curr_code := party_multi_limit_incl_rec.currency_code;
690 x_overall_limit := party_multi_limit_incl_rec.overall_limit;
691 x_trx_limit := party_multi_limit_incl_rec.trx_limit;
692 x_credit_limit_entity_id :=
693 party_multi_limit_incl_rec.party_id ;
694 x_return_status := 'Y' ;
695 END IF;
696
697 END IF;
698
699 IF G_debug_flag = 'Y'
700 THEN
701
702 OE_DEBUG_PUB.ADD('OUT GET_multi_party_limit ');
703 END IF;
704
705 EXCEPTION
706 WHEN OTHERS THEN
707 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
708 THEN
709 FND_MSG_PUB.Add_Exc_Msg
710 ( G_PKG_NAME
711 , 'GET_multi_party_limit'
712 );
713 END IF;
714
715
716 END GET_multi_party_limit ;
717
718 --------------------------------------------------------------------
719 --FUNCTION: GET_party_limit
720 --COMMENTS: Returns the party level credit profile
721 ----------------------------------------------------------------------
722 PROCEDURE GET_party_limit
723 ( p_party_id IN NUMBER
724 , p_trx_curr_code IN VARCHAR2
725 , x_limit_curr_code OUT NOCOPY VARCHAR2
726 , x_trx_limit OUT NOCOPY NUMBER
727 , x_overall_limit OUT NOCOPY NUMBER
728 , x_return_status OUT NOCOPY VARCHAR2
729 , x_credit_limit_entity_id OUT NOCOPY NUMBER
730 )
731 IS
732 l_return_status VARCHAR2(1); --bug 4967828
733 BEGIN
734 IF G_debug_flag = 'Y'
735 THEN
736
737 OE_DEBUG_PUB.ADD('IN GET_party_limit ');
738 OE_DEBUG_PUB.ADD('p_party_id ==> '|| p_party_id );
739 OE_DEBUG_PUB.ADD('p_trx_curr_code ==> '|| p_trx_curr_code );
740 END IF;
741
742 x_return_status := 'N' ;
743 x_limit_curr_code := NULL;
744 x_trx_limit := NULL ;
745 x_overall_limit := NULL ;
746
747 BEGIN
748 GET_multi_party_limit
749 ( p_party_id => p_party_id
750 , p_trx_curr_code => p_trx_curr_code
751 , x_limit_curr_code => x_limit_curr_code
752 , x_trx_limit => x_trx_limit
753 , x_overall_limit => x_overall_limit
754 , x_return_status => l_return_status --bug 4967828
755 , x_credit_limit_entity_id => x_credit_limit_entity_id
756 );
757
758 --Bug 4561384
759 IF G_debug_flag = 'Y'
760 THEN
761 OE_DEBUG_PUB.ADD(' Out GET_multi_party_Limit '|| l_return_status ); --bug 4967828
762 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
763 OE_DEBUG_PUB.ADD(' x_trx_limit = '|| x_trx_limit );
764 OE_DEBUG_PUB.ADD(' x_overall_limit = '|| x_overall_limit );
765 END IF;
766
767 x_return_status := NVL(l_return_status, 'N'); --bug 4967828
768 IF l_return_status = 'Y'
769 AND x_trx_limit is NULL
770 AND x_overall_limit is NULL
771 THEN
772 l_return_status := 'N' ; --bug 4967828
773 x_limit_curr_code := NULL ;
774 OE_DEBUG_PUB.ADD(' Limits NULL for party MULTI ');
775 END IF;
776 --Bug 4561384
777
778 IF NVL(l_return_status, 'N') = 'N' --bug 4967828
779 THEN
780 GET_single_party_limit
781 ( p_party_id => p_party_id
782 , p_trx_curr_code => p_trx_curr_code
783 , x_limit_curr_code => x_limit_curr_code
784 , x_trx_limit => x_trx_limit
785 , x_overall_limit => x_overall_limit
786 , x_return_status => l_return_status --bug 4967828
787 , x_credit_limit_entity_id => x_credit_limit_entity_id
788 );
789
790 --Bug 4561384
791 IF G_debug_flag = 'Y'
792 THEN
793 OE_DEBUG_PUB.ADD(' Out GET_single_party_Limit '|| l_return_status ); --bug 4967828
794 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
795 OE_DEBUG_PUB.ADD(' x_trx_limit = '|| x_trx_limit );
796 OE_DEBUG_PUB.ADD(' x_overall_limit = '|| x_overall_limit );
797 END IF;
798
799 x_return_status := NVL(l_return_status, 'N'); --bug 4967828
800 IF l_return_status = 'Y'
801 AND x_trx_limit is NULL
802 AND x_overall_limit is NULL
803 THEN
804 l_return_status := 'N' ; --bug 4967828
805 x_limit_curr_code := NULL ;
806 OE_DEBUG_PUB.ADD(' Limits NULL for party SITE ');
807 END IF;
808 END IF;
809 --Bug 4561384
810
811 OE_DEBUG_PUB.ADD('l_return_status '|| l_return_status ); --bug 4967828
812 OE_DEBUG_PUB.ADD('x_return_status '|| x_return_status );
813
814 IF NVL(l_return_status, 'N') = 'N' --bug 4967828
815 THEN
816 GET_hierarchy_party_limit
817 ( p_party_id => p_party_id
818 , p_trx_curr_code => p_trx_curr_code
819 , x_limit_curr_code => x_limit_curr_code
820 , x_trx_limit => x_trx_limit
821 , x_overall_limit => x_overall_limit
822 , x_return_status => l_return_status --bug 4967828
823 , x_credit_limit_entity_id => x_credit_limit_entity_id
824 );
825
826 --Bug 4561384
827 IF G_debug_flag = 'Y'
828 THEN
829 OE_DEBUG_PUB.ADD(' Out GET_hierarchy_party_Limit '|| l_return_status ); --bug 4967828
830 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
831 OE_DEBUG_PUB.ADD(' x_trx_limit = '|| x_trx_limit );
832 OE_DEBUG_PUB.ADD(' x_overall_limit = '|| x_overall_limit );
833 END IF;
834
835 x_return_status := NVL(l_return_status,'Y') ; --bug 4967828
836 IF l_return_status = 'Y'
837 AND x_trx_limit is NULL
838 AND x_overall_limit is NULL
839 THEN
840 l_return_status := 'N' ; --bug 4967828
841 x_limit_curr_code := NULL ;
842 OE_DEBUG_PUB.ADD(' Limits NULL for party HIERARCHY ');
843 END IF;
844 --Bug 4561384
845
846 END IF; -- hierarchy
847
848 -- END IF; -- single party -- Commented for bug 4561384
849
850 END ;
851
852 IF G_debug_flag = 'Y'
853 THEN
854
855 OE_DEBUG_PUB.ADD('x_credit_limit_party ==> '|| x_credit_limit_entity_id );
856 OE_DEBUG_PUB.ADD('x_limit_curr_code ==> '|| x_limit_curr_code );
857 OE_DEBUG_PUB.ADD('x_trx_limit ==> '|| x_trx_limit );
858 OE_DEBUG_PUB.ADD('x_overall_limit ==> '|| x_overall_limit );
859 OE_DEBUG_PUB.ADD('x_return_status ==> '|| x_return_status );
860 OE_DEBUG_PUB.ADD('OUT GET_party_limit ');
861 END IF;
862
863 EXCEPTION
864 WHEN OTHERS THEN
865 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
866 THEN
867 FND_MSG_PUB.Add_Exc_Msg
868 ( G_PKG_NAME
869 , 'GET_party_limit'
870 );
871 END IF;
872
873
874 END GET_party_limit ;
875
876
877
878 --------------------------------------------------------------------
879 --FUNCTION: Get_global_exposure_flag
880 --COMMENTS: Returns the global exposure flag for a given
881 -- entity ID and limit currency
882 -- used by the credit exposure report
883 -- Multi org enhancement
884 -- Entity type is accepted but not used for validation
885 --------------------------------------------------------------------
886 FUNCTION Get_global_exposure_flag
887 ( p_entity_type IN VARCHAR2
888 , p_entity_id IN NUMBER
889 , p_limit_curr_code IN VARCHAR2
890 ) RETURN VARCHAR2
891 IS
892
893 CURSOR cust_global_exposure_csr IS
894 SELECT NVL(curs.global_exposure_flag,'N') global_exposure_flag
895 , curs.credit_usage_rule_set_id credit_usage_rule_set_id
896 FROM hz_customer_profiles cp
897 , hz_cust_profile_amts cpa
898 , hz_credit_usages cu
899 , hz_credit_usage_rule_sets_B curs
900 WHERE cp.cust_account_id = p_entity_id
901 AND cp.site_use_id IS NULL
902 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
903 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
904 AND cpa.currency_code = p_limit_curr_code
905 AND curs.credit_usage_rule_set_id = cu.credit_usage_rule_set_id
906 AND curs.global_exposure_flag = 'Y' ;
907
908 cust_global_exposure_rec cust_global_exposure_csr%ROWTYPE ;
909
910
911 CURSOR dflt_global_exposure_csr IS
912 SELECT NVL(curs.global_exposure_flag,'N') global_exposure_flag
913 , curs.credit_usage_rule_set_id credit_usage_rule_set_id
914 FROM hz_credit_profiles cp
915 , hz_credit_profile_amts cpa
916 , hz_credit_usages cu
917 , hz_credit_usage_rule_sets_B curs
918 WHERE cp.organization_id = p_entity_id
919 AND cp.credit_profile_id = cpa.credit_profile_id
920 AND cpa.credit_profile_amt_id = cu.credit_profile_amt_id
921 AND cu.credit_usage_rule_set_id = curs.credit_usage_rule_set_id
922 AND cp.enable_flag = 'Y'
923 AND curs.global_exposure_flag = 'Y'
924 AND cpa.currency_code = p_limit_curr_code
925 AND ( TRUNC(SYSDATE) BETWEEN
926 TRUNC( NVL(cp.effective_date_from, SYSDATE ))
927 AND
928 TRUNC( NVL(cp.effective_date_to, SYSDATE ) )
929 );
930
931 dflt_global_exposure_rec dflt_global_exposure_csr%ROWTYPE ;
932
933 l_global_exposure_flag VARCHAR2(1);
934 BEGIN
935 IF G_debug_flag = 'Y'
936 THEN
937 OE_DEBUG_PUB.ADD('IN Get_global_exposure_flag ');
938 END IF;
939
940 l_global_exposure_flag := 'N' ;
941
942 IF p_entity_type = 'CUSTOMER'
943 THEN
944
945 OPEN cust_global_exposure_csr ;
946 FETCH cust_global_exposure_csr
947 INTO cust_global_exposure_rec ;
948
949 IF G_debug_flag = 'Y'
950 THEN
951 OE_DEBUG_PUB.ADD( ' credit_usage_rule_set_id => '
952 || cust_global_exposure_rec.credit_usage_rule_set_id);
953 OE_DEBUG_PUB.ADD( ' global_exposure_flag => '
954 || cust_global_exposure_rec.global_exposure_flag);
955 END IF;
956
957 l_global_exposure_flag :=
958 cust_global_exposure_rec.global_exposure_flag;
959
960 IF cust_global_exposure_csr%NOTFOUND
961 THEN
962 l_global_exposure_flag := 'N' ;
963
964 IF G_debug_flag = 'Y'
965 THEN
966 OE_DEBUG_PUB.ADD( ' cust_global_exposure_csr NO FOUND ');
967 END IF;
968
969 END IF;
970
971 CLOSE cust_global_exposure_csr ;
972
973 ELSIF p_entity_type = 'DEFAULT'
974 THEN
975 OPEN dflt_global_exposure_csr ;
976 FETCH dflt_global_exposure_csr
977 INTO dflt_global_exposure_rec ;
978
979 IF G_debug_flag = 'Y'
980 THEN
981
982 OE_DEBUG_PUB.ADD( ' credit_usage_rule_set_id => '
983 || dflt_global_exposure_rec.credit_usage_rule_set_id);
984 OE_DEBUG_PUB.ADD( ' global_exposure_flag => '
985 || dflt_global_exposure_rec.global_exposure_flag);
986 END IF;
987
988 l_global_exposure_flag :=
989 dflt_global_exposure_rec.global_exposure_flag;
990
991 IF dflt_global_exposure_csr%NOTFOUND
992 THEN
993 l_global_exposure_flag := 'N' ;
994 OE_DEBUG_PUB.ADD( ' dflt_global_exposure_csr NO FOUND ');
995 END IF;
996
997 CLOSE dflt_global_exposure_csr ;
998 END IF;
999
1000 IF G_debug_flag = 'Y'
1001 THEN
1002 OE_DEBUG_PUB.ADD('Return out NOCOPY from Get_global_exposure_flag with '
1003 || l_global_exposure_flag );
1004 END IF;
1005
1006 RETURN(l_global_exposure_flag);
1007
1008
1009
1010 EXCEPTION
1011 WHEN OTHERS THEN
1012 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1013 THEN
1014 FND_MSG_PUB.Add_Exc_Msg
1015 ( G_PKG_NAME
1016 , 'Get_global_exposure_flag'
1017 );
1018 END IF;
1019
1020
1021 END Get_global_exposure_flag ;
1022
1023
1024
1025 ---------------------------------------------------------------------------
1026 --FUNCTION Get_global_exposure_ruleset
1027 --COMMENT: REturns the global flag for a given rule set ID
1028
1029 ---------------------------------------------------------------------------
1030 FUNCTION Get_global_exposure_ruleset
1031 (p_credit_usage_rule_set_id IN NUMBER)
1032 RETURN VARCHAR2
1033 IS
1034
1035 l_global_exposure_flag VARCHAR2(1) := 'N' ;
1036 BEGIN
1037 IF G_debug_flag = 'Y'
1038 THEN
1039 OE_DEBUG_PUB.ADD('IN OEXUCRCB: Get_global_exposure_ruleset');
1040 END IF;
1041
1042 BEGIN
1043 SELECT
1044 NVL(global_exposure_flag,'N')
1045 INTO
1046 l_global_exposure_flag
1047 FROM
1048 HZ_CREDIT_USAGE_RULE_SETS_B
1049 WHERE
1050 credit_usage_rule_set_id = p_credit_usage_rule_set_id ;
1051
1052 EXCEPTION
1053 WHEN NO_DATA_FOUND
1054 THEN
1055 l_global_exposure_flag := 'N' ;
1056
1057 END ;
1058
1059 IF G_debug_flag = 'Y'
1060 THEN
1061 OE_DEBUG_PUB.ADD('OUT OEXUCRCB: Get_global_exposure_ruleset');
1062 END IF;
1063
1064 RETURN( NVL(l_global_exposure_flag,'N') );
1065
1066 EXCEPTION
1067 WHEN OTHERS THEN
1068 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1069 OE_MSG_PUB.Add_Exc_Msg
1070 ( G_PKG_NAME
1071 , 'Get_global_exposure_ruleset'
1072 );
1073 END IF;
1074 RAISE ;
1075 END Get_global_exposure_ruleset;
1076
1077 ---------------------------------------------------------------------------
1078 --FUNCTION GET_GL_currency
1079 --COMMENT: Returns the SOB currency
1080
1081 ---------------------------------------------------------------------------
1082 FUNCTION GET_GL_currency
1083 RETURN VARCHAR2
1084 IS
1085
1086 l_gl_currency VARCHAR2(10);
1087 l_sob_id NUMBER;
1088
1089 BEGIN
1090 IF G_debug_flag = 'Y'
1091 THEN
1092 OE_DEBUG_PUB.ADD('OEXUCRCB: In Get_GL_currency ');
1093 END IF;
1094
1095 BEGIN
1096 l_sob_id := FND_PROFILE.VALUE('GL_SET_OF_BKS_ID') ;
1097
1098 IF G_debug_flag = 'Y'
1099 THEN
1100 OE_DEBUG_PUB.ADD('l_sob_id = '|| l_sob_id );
1101 OE_DEBUG_PUB.ADD('GET SOB currency ');
1102 END IF;
1103
1104 SELECT
1105 currency_code
1106 INTO
1107 l_gl_currency
1108 FROM
1109 GL_sets_of_books
1110 WHERE set_of_books_id = l_sob_id ;
1111
1112 IF G_debug_flag = 'Y'
1113 THEN
1114 OE_DEBUG_PUB.ADD('l_gl_currency = '|| l_gl_currency );
1115 END IF;
1116
1117 EXCEPTION
1118 WHEN NO_DATA_FOUND
1119 THEN
1120 l_gl_currency := NULL ;
1121 OE_DEBUG_PUB.ADD('EXCEPTION: NO_DATA_FOUND ');
1122 l_gl_currency := NULL ;
1123 WHEN TOO_MANY_ROWS
1124 THEN
1125 l_gl_currency := NULL ;
1126 OE_DEBUG_PUB.ADD('EXCEPTION: TOO_MANY_ROWS');
1127 l_gl_currency := NULL ;
1128 END ;
1129
1130 IF G_debug_flag = 'Y'
1131 THEN
1132 OE_DEBUG_PUB.ADD('OEXUCRCB: Out NOCOPY Get_GL_currency ');
1133 END IF;
1134 RETURN(l_GL_currency);
1135 EXCEPTION
1136 WHEN OTHERS THEN
1137 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1138 OE_MSG_PUB.Add_Exc_Msg
1139 ( G_PKG_NAME
1140 , 'Get_GL_currency'
1141 );
1142 END IF;
1143 RAISE ;
1144 END Get_GL_currency ;
1145
1146
1147
1148
1149 ------------------------------------------------------------------------------
1150 -- FUNCTION : GET_category_set_id PRIVATE
1151 -- COMMENT : Returns the OE default category set ID
1152 --
1153 --------------------------------------------------------------------------------
1154 FUNCTION GET_category_set_id
1155 RETURN NUMBER
1156 IS
1157
1158
1159 l_category_set_id NUMBER;
1160
1161 BEGIN
1162
1163 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_category_set_id ' );
1164 BEGIN
1165
1166 SELECT
1167 category_set_id
1168 INTO
1169 l_category_set_id
1170 FROM
1171 MTL_DEFAULT_CATEGORY_SEts
1172 WHERE functional_area_id = 7 ;
1173
1174 EXCEPTION
1175 WHEN NO_DATA_FOUND
1176 THEN
1177 l_category_set_id := NULL;
1178
1179 END ;
1180
1181 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_category_set_id '|| l_category_set_id );
1182 RETURN l_category_set_id ;
1183
1184
1185 EXCEPTION
1186 WHEN OTHERS THEN
1187 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
1188
1189 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1190 THEN
1191 FND_MSG_PUB.Add_Exc_Msg
1192 ( G_PKG_NAME
1193 , ' GET_category_set_id '
1194 );
1195 END IF;
1196 RAISE;
1197
1198 END GET_category_set_id ;
1199
1200
1201 ------------------------------------------------------------------------------
1202 -- FUNCTION : GET_Credit_check_Flag PRIVATE
1203 -- COMMENT : Returns the Credit Checking flag
1204 -- from HZ_CUSTOMER_PROFILES
1205 --
1206 --------------------------------------------------------------------------------
1207 FUNCTION GET_Credit_check_Flag
1208 ( p_entity_id IN NUMBER
1209 , p_entity_type IN VARCHAR2 )
1210 RETURN VARCHAR2
1211 IS
1212
1213 l_credit_checking VARCHAR2(1);
1214
1215 BEGIN
1216
1217
1218 IF p_entity_type = 'CUSTOMER'
1219 THEN
1220 BEGIN
1221 SELECT
1222 credit_checking
1223 INTO
1224 l_credit_checking
1225 FROM
1226 HZ_CUSTOMER_PROFILES
1227 WHERE cust_account_id = p_entity_id
1228 AND site_use_id IS NULL ;
1229
1230 EXCEPTION
1231 WHEN NO_DATA_FOUND THEN
1232 l_credit_checking := NULL ;
1233
1234 END;
1235
1236 ELSIF p_entity_type = 'SITE'
1237 THEN
1238 BEGIN
1239 SELECT
1240 credit_checking
1241 INTO
1242 l_credit_checking
1243 FROM
1244 HZ_CUSTOMER_PROFILES
1245 WHERE site_use_id = p_entity_id ;
1246
1247 EXCEPTION
1248 WHEN NO_DATA_FOUND THEN
1249 l_credit_checking := NULL ;
1250 END;
1251 END IF;
1252
1253
1254 RETURN l_credit_checking ;
1255
1256
1257 EXCEPTION
1258 WHEN OTHERS THEN
1259 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
1260 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1261 THEN
1262 FND_MSG_PUB.Add_Exc_Msg
1263 ( G_PKG_NAME
1264 , ' GET_Credit_check_Flag'
1265 );
1266 END IF;
1267 RAISE;
1268
1269 END GET_Credit_check_Flag ;
1270
1271 ------------------------------------------------------------------------------
1272 -- PROCEDURE : GET_Single_Customer_Limit PRIVATE
1273 -- COMMENT : PROFILE : SINGLE
1274 -- ENTITY : CUSTOMER
1275 -- Returns the Limit from the Customer Profile Amount directly
1276 --------------------------------------------------------------------------------
1277 PROCEDURE GET_Single_Customer_Limit
1278 ( p_entity_id IN NUMBER
1279 , p_trx_curr_code IN
1280 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1281 , x_limit_curr_code OUT NOCOPY
1282 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1283 , x_trx_limit OUT NOCOPY NUMBER
1284 , x_overall_limit OUT NOCOPY NUMBER
1285 , x_return_status OUT NOCOPY VARCHAR2
1286 )
1287 IS
1288
1289
1290 ----------------------------------------------------
1291 -- The cursor gets credit limit info for --
1292 -- 1. customer --
1293 -- 2. directly specified limit (not usage based) --
1294 -- SINGLE - CUSTOMER
1295 ----------------------------------------------------
1296
1297 CURSOR cust_single_limit_csr IS
1298 SELECT cpa.currency_code currency_code
1299 , cpa.overall_credit_limit * ((100+nvl(cp.tolerance,0))/100)
1300 overall_limit
1301 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
1302 trx_limit
1303 , cp.credit_checking credit_checking --bug 5071518
1304 , 0 credit_usage_rule_set_id
1305 FROM hz_customer_profiles cp
1306 , hz_cust_profile_amts cpa
1307 WHERE cp.cust_account_id = p_entity_id
1308 AND cp.site_use_id IS NULL
1309 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
1310 AND cpa.currency_code = p_trx_curr_code ;
1311 -- AND cp.credit_checking = 'Y' ; --bug 5071518
1312
1313 cust_single_limit_rec cust_single_limit_csr%ROWTYPE ;
1314
1315 BEGIN
1316 IF G_debug_flag = 'Y'
1317 THEN
1318 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_Single_Customer_Limit ' );
1319 END IF;
1320
1321 OPEN cust_single_limit_csr;
1322 FETCH cust_single_limit_csr
1323 INTO cust_single_limit_rec ;
1324
1325 --Modified for Bug 5071518
1326 --If the customer profile is not created, then NULL should be returned.
1327 --If customer profile is created and credit check flag is not checked, only then 'N' should be returned
1328 IF cust_single_limit_csr%NOTFOUND
1329 THEN
1330 x_return_status := NULL ;
1331 ELSIF cust_single_limit_rec.credit_checking = 'N' THEN
1332 x_return_status := 'N' ;
1333 ELSE
1334 x_limit_curr_code := cust_single_limit_rec.currency_code;
1335 x_overall_limit := cust_single_limit_rec.overall_limit;
1336 x_trx_limit := cust_single_limit_rec.trx_limit;
1337
1338 x_return_status := 'Y' ;
1339
1340 END IF;
1341
1342 CLOSE cust_single_limit_csr;
1343
1344 IF G_debug_flag = 'Y'
1345 THEN
1346 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_Single_Customer_Limit ' );
1347 END IF;
1348
1349 EXCEPTION
1350 WHEN OTHERS THEN
1351 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
1352 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1353 THEN
1354 FND_MSG_PUB.Add_Exc_Msg
1355 ( G_PKG_NAME
1356 , ' GET_Single_Customer_Limit '
1357 );
1358 END IF;
1359 RAISE;
1360
1361 END GET_Single_Customer_Limit ;
1362
1363
1364 ------------------------------------------------------------------------------
1365 -- PROCEDURE : GET_Single_Site_Limit PRIVATE
1366 -- COMMENT : PROFILE : SINGLE
1367 -- ENTITY : SITE
1368 -- Returns the Limit from the Customer Profile Amount directly for
1369 -- the site
1370 --------------------------------------------------------------------------------
1371 PROCEDURE GET_Single_Site_Limit
1372 ( p_entity_id IN NUMBER
1373 , p_trx_curr_code IN
1374 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1375 , x_limit_curr_code OUT NOCOPY
1376 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1377 , x_trx_limit OUT NOCOPY NUMBER
1378 , x_overall_limit OUT NOCOPY NUMBER
1379 , x_return_status OUT NOCOPY VARCHAR2
1380 )
1381 IS
1382
1383
1384 ----------------------------------------------------
1385 -- The cursor gets credit limit info for --
1386 -- 1. Site --
1387 -- 2. directly specified limit (not usage based) --
1388 -- SINGLE - SITE
1389 ----------------------------------------------------
1390
1391 CURSOR site_single_limit_csr IS
1392 SELECT cpa.currency_code currency_code
1393 , cpa.overall_credit_limit * ((100+nvl(cp.tolerance,0))/100)
1394 overall_limit
1395 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
1396 trx_limit
1397 , cp.credit_checking credit_checking --bug 4582292
1398 , 0 credit_usage_rule_set_id
1399 FROM hz_customer_profiles cp
1400 , hz_cust_profile_amts cpa
1401 WHERE cp.site_use_id = p_entity_id
1402 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
1403 AND cpa.currency_code = p_trx_curr_code
1404 -- AND cp.credit_checking = 'Y' bug 4582292
1405 AND NVL(TRUNC(cpa.expiration_date)
1406 , TRUNC(SYSDATE) ) <= TRUNC(SYSDATE);
1407
1408
1409 site_single_limit_rec site_single_limit_csr%ROWTYPE ;
1410
1411
1412 BEGIN
1413 IF G_debug_flag = 'Y'
1414 THEN
1415 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_Single_site_Limit ' );
1416 END IF;
1417
1418 OPEN site_single_limit_csr ;
1419 FETCH site_single_limit_csr
1420 INTO site_single_limit_rec ;
1421
1422 --Modified for bug 4582292
1423 --If the site profile is not created, then NULL should be returned.
1424 --If site profile is created and credit check flag is not checked, only then 'N' should be returned
1425 IF site_single_limit_csr%NOTFOUND
1426 THEN
1427 x_return_status := NULL ;
1428 ELSIF site_single_limit_rec.credit_checking = 'N' THEN
1429 x_return_status := 'N' ;
1430 ELSE
1431 x_limit_curr_code := site_single_limit_rec.currency_code;
1432 x_overall_limit := site_single_limit_rec.overall_limit;
1433 x_trx_limit := site_single_limit_rec.trx_limit;
1434
1435 x_return_status := 'Y' ;
1436
1437 END IF;
1438
1439 CLOSE site_single_limit_csr ;
1440
1441 IF G_debug_flag = 'Y'
1442 THEN
1443 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_Single_site_Limit ' );
1444 END IF;
1445
1446
1447 EXCEPTION
1448 WHEN OTHERS THEN
1449 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
1450 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1451 THEN
1452 FND_MSG_PUB.Add_Exc_Msg
1453 ( G_PKG_NAME
1454 , ' GET_Single_Site_Limit '
1455 );
1456 END IF;
1457 RAISE;
1458
1459 END GET_Single_Site_Limit ;
1460
1461
1462 -----------------------------------------------------------------------------
1463 -- PROCEDURE : GET_multi_customer_Limit PRIVATE
1464 -- COMMENT : PROFILE : MULTI
1465 -- ENTITY : CUSTOMER
1466 -- Returns the Limit from the Customer Profile Amount after
1467 -- using the credit usage rules
1468 --------------------------------------------------------------------------------
1469 PROCEDURE GET_multi_customer_Limit
1470 ( p_entity_id IN NUMBER
1471 , p_trx_curr_code IN
1472 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1473 , x_limit_curr_code OUT NOCOPY
1474 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1475 , x_trx_limit OUT NOCOPY NUMBER
1476 , x_overall_limit OUT NOCOPY NUMBER
1477 , x_return_status OUT NOCOPY VARCHAR2
1478 , x_credit_usage_rule_set_id OUT NOCOPY NUMBER
1479 , x_global_exposure_flag OUT NOCOPY VARCHAR2
1480 )
1481 IS
1482
1483 ---------------------------------------------
1484 -- The cursor gets credit limit info for --
1485 -- 1. customer --
1486 -- 2. usage based limit --
1487 -- 3. lowest available --
1488
1489 -- MULTI CUSTOMER
1490 ---------------------------------------------
1491
1492 CURSOR cust_multi_limit_no_incl_csr IS
1493 SELECT cpa.currency_code currency_code
1494 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1495 overall_limit
1496 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1497 trx_limit
1498 , cp.credit_checking credit_checking --bug 5071518
1499 , curs.credit_usage_rule_set_id
1500 , cu.credit_usage_id
1501 , NVL(curs.global_exposure_flag,'N') global_exposure_flag
1502 FROM hz_customer_profiles cp
1503 , hz_cust_profile_amts cpa
1504 , hz_credit_usages cu
1505 , hz_credit_usage_rules cur
1506 , hz_credit_usage_rule_sets_B curs
1507 WHERE cp.cust_account_id = p_entity_id
1508 AND cp.site_use_id IS NULL
1509 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
1510 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
1511 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1512 AND curs.credit_usage_rule_set_id = cu.credit_usage_rule_set_id
1513 AND curs.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1514 AND NVL(TRUNC(cpa.expiration_date) , TRUNC(SYSDATE) )
1515 <= TRUNC(SYSDATE)
1516 AND NVL (cur.include_all_flag, 'N') = 'N'
1517 AND cur.usage_type = 'CURRENCY'
1518 AND cur.user_code = p_trx_curr_code
1519 AND NVL(cur.exclude_flag,'N') = 'N' ;
1520 -- AND cp.credit_checking = 'Y' ; --bug 5071518
1521
1522
1523 cust_multi_limit_no_incl_rec cust_multi_limit_no_incl_csr%ROWTYPE ;
1524
1525
1526 CURSOR cust_multi_limit_incl_csr IS
1527 SELECT cpa.currency_code currency_code
1528 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1529 overall_limit
1530 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1531 trx_limit
1532 , cp.credit_checking credit_checking --bug 5071518
1533 , cu.credit_usage_rule_set_id
1534 , NVL(curs.global_exposure_flag,'N') global_exposure_flag
1535 FROM hz_customer_profiles cp
1536 , hz_cust_profile_amts cpa
1537 , hz_credit_usages cu
1538 , hz_credit_usage_rules cur
1539 , hz_credit_usage_rule_sets_B curs
1540 WHERE cp.cust_account_id = p_entity_id
1541 AND cp.site_use_id IS NULL
1542 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
1543 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
1544 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1545 AND curs.credit_usage_rule_set_id = cu.credit_usage_rule_set_id
1546 AND curs.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1547 AND NVL(TRUNC(cpa.expiration_date), TRUNC(SYSDATE)
1548 ) <= TRUNC(SYSDATE)
1549 AND cur.include_all_flag = 'Y'
1550 AND NOT EXISTS ( SELECT 'EXCLUDE'
1551 FROM hz_credit_usage_rules cur2
1552 WHERE cu.credit_usage_rule_set_id
1553 = cur2.credit_usage_rule_set_id
1554 AND cur2.exclude_flag = 'Y'
1555 AND cur2.usage_type = 'CURRENCY'
1556 AND cur2.user_code = p_trx_curr_code
1557 ) ;
1558 -- AND cp.credit_checking = 'Y' ; --bug 5071518
1559
1560
1561 cust_multi_limit_incl_rec cust_multi_limit_incl_csr%ROWTYPE ;
1562
1563 BEGIN
1564 IF G_debug_flag = 'Y'
1565 THEN
1566 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_multi_Customer_Limit ' );
1567 END IF;
1568
1569 x_credit_usage_rule_set_id := NULL ;
1570
1571 -- The process will first try to find the limit avoiding the
1572 -- Include all factor.
1573 -- If not successful, the Include all is considered
1574
1575 OPEN cust_multi_limit_no_incl_csr ;
1576 FETCH cust_multi_limit_no_incl_csr
1577 INTO cust_multi_limit_no_incl_rec ;
1578
1579
1580 --Modified for Bug 5071518
1581 --If the customer profile is not created, then NULL should be returned.
1582 --If customer profile is created and credit check flag is not checked, only then 'N' should be returned
1583 IF cust_multi_limit_no_incl_csr%NOTFOUND
1584 THEN
1585 x_return_status := NULL ;
1586 ELSIF cust_multi_limit_no_incl_rec.credit_checking = 'N' THEN
1587 x_credit_usage_rule_set_id := NULL ;
1588 x_return_status := 'N' ;
1589 ELSE
1590 x_limit_curr_code := cust_multi_limit_no_incl_rec.currency_code;
1591 x_overall_limit := cust_multi_limit_no_incl_rec.overall_limit;
1592 x_trx_limit := cust_multi_limit_no_incl_rec.trx_limit;
1593 x_credit_usage_rule_set_id :=
1594 cust_multi_limit_no_incl_rec.credit_usage_rule_set_id ;
1595 x_global_exposure_flag := cust_multi_limit_no_incl_rec.global_exposure_flag ;
1596
1597 x_return_status := 'Y' ;
1598 END IF;
1599
1600 CLOSE cust_multi_limit_no_incl_csr ;
1601
1602 IF x_limit_curr_code IS NULL
1603 THEN
1604 OPEN cust_multi_limit_incl_csr ;
1605 FETCH cust_multi_limit_incl_csr
1606 INTO cust_multi_limit_incl_rec ;
1607
1608 --Modified for Bug 5071518
1609 --If the customer profile is not created, then NULL should be returned.
1610 --If customer profile is created and credit check flag is not checked, only then 'N' should be returned
1611 IF cust_multi_limit_incl_csr%NOTFOUND
1612 THEN
1613 x_return_status := NULL ;
1614 ELSIF cust_multi_limit_incl_rec.credit_checking = 'N' THEN
1615 x_credit_usage_rule_set_id := NULL ;
1616 x_return_status := 'N' ;
1617 ELSE
1618 x_limit_curr_code := cust_multi_limit_incl_rec.currency_code;
1619 x_overall_limit := cust_multi_limit_incl_rec.overall_limit;
1620 x_trx_limit := cust_multi_limit_incl_rec.trx_limit;
1621 x_credit_usage_rule_set_id :=
1622 cust_multi_limit_incl_rec.credit_usage_rule_set_id ;
1623 x_global_exposure_flag :=
1624 cust_multi_limit_incl_rec.global_exposure_flag ; --Bug 4703167
1625 x_return_status := 'Y' ;
1626 END IF;
1627
1628 CLOSE cust_multi_limit_incl_csr ;
1629
1630 END IF;
1631 IF G_debug_flag = 'Y'
1632 THEN
1633 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_multi_Customer_Limit ' );
1634 END IF;
1635
1636
1637 EXCEPTION
1638 WHEN OTHERS THEN
1639 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
1640 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1641 THEN
1642 FND_MSG_PUB.Add_Exc_Msg
1643 ( G_PKG_NAME
1644 , ' GET_multi_customer_Limit '
1645 );
1646 END IF;
1647 RAISE;
1648
1649 END GET_multi_customer_Limit ;
1650
1651
1652
1653 -----------------------------------------------------------------------------
1654 -- PROCEDURE : GET_multi_site_Limit PRIVATE
1655 -- COMMENT : PROFILE : MULTI
1656 -- ENTITY : SITE
1657 -- Returns the limit by using the Credit ussage rules
1658 --------------------------------------------------------------------------------
1659 PROCEDURE GET_multi_site_Limit
1660 ( p_entity_id IN NUMBER
1661 , p_trx_curr_code IN
1662 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1663 , x_limit_curr_code OUT NOCOPY
1664 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1665 , x_trx_limit OUT NOCOPY NUMBER
1666 , x_overall_limit OUT NOCOPY NUMBER
1667 , x_return_status OUT NOCOPY VARCHAR2
1668 )
1669 IS
1670
1671 ---------------------------------------------
1672 -- The cursor gets credit limit info for --
1673 -- 1. Site --
1674 -- 2. usage based limit --
1675 -- 3. lowest available --
1676
1677 -- MULTI SITE
1678 ---------------------------------------------
1679
1680 CURSOR site_multi_limit_no_incl_csr IS
1681 SELECT cpa.currency_code currency_code
1682 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1683 overall_limit
1684 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1685 trx_limit
1686 , cp.credit_checking credit_checking --bug 4582292
1687 , cu.credit_usage_rule_set_id
1688 FROM hz_customer_profiles cp
1689 , hz_cust_profile_amts cpa
1690 , hz_credit_usages cu
1691 , hz_credit_usage_rules cur
1692 WHERE cp.site_use_id = p_entity_id
1693 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
1694 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
1695 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1696 AND NVL(TRUNC(cpa.expiration_date) , TRUNC(SYSDATE) )
1697 <= TRUNC(SYSDATE)
1698 AND NVL (cur.include_all_flag, 'N') = 'N'
1699 AND cur.usage_type = 'CURRENCY'
1700 AND cur.user_code = p_trx_curr_code
1701 -- AND cp.credit_checking = 'Y' bug 4582292
1702 AND NVL(cur.exclude_flag,'N') = 'N';
1703
1704
1705 site_multi_limit_no_incl_rec site_multi_limit_no_incl_csr%ROWTYPE ;
1706
1707
1708 CURSOR site_multi_limit_incl_csr IS
1709 SELECT cpa.currency_code currency_code
1710 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1711 overall_limit
1712 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1713 trx_limit
1714 , cp.credit_checking credit_checking --bug 4582292
1715 , cu.credit_usage_rule_set_id
1716 FROM hz_customer_profiles cp
1717 , hz_cust_profile_amts cpa
1718 , hz_credit_usages cu
1719 , hz_credit_usage_rules cur
1720 WHERE cp.site_use_id = p_entity_id
1721 AND cp.cust_account_profile_id = cpa.cust_account_profile_id
1722 AND cpa.cust_acct_profile_amt_id = cu.cust_acct_profile_amt_id
1723 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1724 AND NVL(TRUNC(cpa.expiration_date), TRUNC(SYSDATE)
1725 ) <= TRUNC(SYSDATE)
1726 -- AND cp.credit_checking = 'Y' bug 4582292
1727 AND cur.include_all_flag = 'Y'
1728 AND NOT EXISTS ( SELECT 'EXCLUDE'
1729 FROM hz_credit_usage_rules cur2
1730 WHERE cu.credit_usage_rule_set_id
1731 = cur2.credit_usage_rule_set_id
1732 AND cur2.exclude_flag = 'Y'
1733 AND cur2.usage_type = 'CURRENCY'
1734 AND cur2.user_code = p_trx_curr_code
1735 );
1736
1737 site_multi_limit_incl_rec site_multi_limit_incl_csr%ROWTYPE ;
1738
1739 BEGIN
1740 IF G_debug_flag = 'Y'
1741 THEN
1742 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_multi_site_Limit ' );
1743 END IF;
1744
1745 -- The process will first try to find the limit avoiding the
1746 -- Include all factor.
1747 -- If not successful, the Include all is considered
1748
1749 OPEN site_multi_limit_no_incl_csr ;
1750 FETCH site_multi_limit_no_incl_csr
1751 INTO site_multi_limit_no_incl_rec ;
1752
1753 --Modified for Bug 4582292
1754 --If the site profile is not created, then NULL should be returned.
1755 --If site profile is created and credit check flag is not checked, only then 'N' should be returne
1756 IF site_multi_limit_no_incl_csr%NOTFOUND
1757 THEN
1758 x_return_status := NULL ;
1759 ELSIF site_multi_limit_no_incl_rec.credit_checking = 'N' THEN
1760 x_return_status := 'N';
1761 ELSE
1762 x_limit_curr_code := site_multi_limit_no_incl_rec.currency_code;
1763 x_overall_limit := site_multi_limit_no_incl_rec.overall_limit;
1764 x_trx_limit := site_multi_limit_no_incl_rec.trx_limit;
1765 x_return_status := 'Y' ;
1766
1767 END IF;
1768
1769 CLOSE site_multi_limit_no_incl_csr ;
1770
1771 IF x_limit_curr_code IS NULL
1772 THEN
1773 OPEN site_multi_limit_incl_csr ;
1774 FETCH site_multi_limit_incl_csr
1775 INTO site_multi_limit_incl_rec ;
1776
1777 --Modified for Bug 4582292
1778 --If the site profile is not created, then NULL should be returned.
1779 --If site profile is created and credit check flag is not checked, only then 'N' should be returned
1780 IF site_multi_limit_incl_csr%NOTFOUND
1781 THEN
1782 x_return_status := NULL ;
1783 ELSIF site_multi_limit_incl_rec.credit_checking = 'N' THEN
1784 x_return_status := 'N' ;
1785 ELSE
1786 x_limit_curr_code := site_multi_limit_incl_rec.currency_code;
1787 x_overall_limit := site_multi_limit_incl_rec.overall_limit;
1788 x_trx_limit := site_multi_limit_incl_rec.trx_limit;
1789 x_return_status := 'Y' ;
1790
1791 END IF;
1792
1793 CLOSE site_multi_limit_incl_csr ;
1794
1795 END IF;
1796 IF G_debug_flag = 'Y'
1797 THEN
1798 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_multi_site_Limit ' );
1799 END IF ;
1800
1801
1802 EXCEPTION
1803 WHEN OTHERS THEN
1804 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
1805 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1806 THEN
1807 FND_MSG_PUB.Add_Exc_Msg
1808 ( G_PKG_NAME
1809 , ' GET_multi_site_Limit '
1810 );
1811 END IF;
1812 RAISE;
1813
1814 END GET_multi_site_Limit ;
1815
1816
1817
1818 -----------------------------------------------------------------------------
1819 -- PROCEDURE : GET_single_default_Limit PRIVATE
1820 -- COMMENT : PROFILE : SINGLE
1821 -- ENTITY : DEFAULT ( Organization )
1822 -- Returns the limit from the Credit profile amounts directly
1823 --------------------------------------------------------------------------------
1824 PROCEDURE GET_single_default_Limit
1825 ( p_entity_id IN NUMBER
1826 , p_trx_curr_code IN
1827 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1828 , x_limit_curr_code OUT NOCOPY
1829 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1830 , x_trx_limit OUT NOCOPY NUMBER
1831 , x_overall_limit OUT NOCOPY NUMBER
1832 , x_return_status OUT NOCOPY VARCHAR2
1833 )
1834 IS
1835
1836 ---------------------------------------------------
1837 -- The cursor gets credit limit info for --
1838 -- 1. Organization --
1839 -- 2. directly specified limit (not usage based) --
1840 -- SINGLE - DEFAULT
1841 ----------------------------------------------------
1842
1843 CURSOR dflt_single_limit_csr IS
1844 SELECT cpa.currency_code currency_code
1845 , cpa.overall_credit_limit * ((100+nvl(cp.tolerance,0))/100)
1846 overall_limit
1847 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
1848 trx_limit
1849 , cp.credit_checking
1850 FROM hz_credit_profiles cp
1851 , hz_credit_profile_amts cpa
1852 WHERE cp.organization_id = G_ORG_ID
1853 AND cp.credit_profile_id = cpa.credit_profile_id
1854 AND cpa.currency_code = p_trx_curr_code
1855 AND cp.enable_flag = 'Y'
1856 AND ( TRUNC(SYSDATE) BETWEEN
1857 TRUNC( NVL(cp.effective_date_from, SYSDATE))
1858 AND
1859 TRUNC( NVL(cp.effective_date_to, SYSDATE ))
1860 );
1861 dflt_single_limit_rec dflt_single_limit_csr%ROWTYPE ;
1862
1863 BEGIN
1864 IF G_debug_flag = 'Y'
1865 THEN
1866 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_single_default_Limit ' );
1867 END IF ;
1868
1869 OPEN dflt_single_limit_csr ;
1870 FETCH dflt_single_limit_csr
1871 INTO dflt_single_limit_rec ;
1872
1873 IF dflt_single_limit_csr%NOTFOUND
1874 THEN
1875
1876 x_return_status := 'N' ;
1877 ELSE
1878
1879 x_limit_curr_code := dflt_single_limit_rec.currency_code;
1880 x_overall_limit := dflt_single_limit_rec.overall_limit;
1881 x_trx_limit := dflt_single_limit_rec.trx_limit;
1882
1883 x_return_status := 'Y' ;
1884
1885 END IF;
1886
1887 CLOSE dflt_single_limit_csr ;
1888
1889 IF G_debug_flag = 'Y'
1890 THEN
1891 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_single_default_Limit ' );
1892 END IF ;
1893
1894 EXCEPTION
1895 WHEN OTHERS THEN
1896 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
1897 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1898 THEN
1899 FND_MSG_PUB.Add_Exc_Msg
1900 ( G_PKG_NAME
1901 , ' GET_single_default_Limit '
1902 );
1903 END IF;
1904 RAISE;
1905
1906 END GET_single_default_Limit ;
1907
1908
1909
1910 -----------------------------------------------------------------------------
1911 -- PROCEDURE : GET_multi_default_Limit PRIVATE
1912 -- COMMENT : PROFILE : SINGLE
1913 -- ENTITY : DEFAULT ( Organization )
1914 -- Returns the limit using the usage rules
1915 --------------------------------------------------------------------------------
1916 PROCEDURE GET_multi_default_Limit
1917 ( p_entity_id IN NUMBER
1918 , p_trx_curr_code IN
1919 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1920 , x_limit_curr_code OUT NOCOPY
1921 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
1922 , x_trx_limit OUT NOCOPY NUMBER
1923 , x_overall_limit OUT NOCOPY NUMBER
1924 , x_return_status OUT NOCOPY VARCHAR2
1925 , x_credit_usage_rule_set_id OUT NOCOPY NUMBER
1926 , x_global_exposure_flag OUT NOCOPY VARCHAR2
1927 )
1928 IS
1929
1930 ---------------------------------------------
1931 -- The cursor gets credit limit info for --
1932 -- 1. Organization --
1933 -- 2. Default based limit --
1934 -- 3. lowest available --
1935
1936 -- MULTI DEFAULT
1937 ---------------------------------------------
1938
1939
1940 CURSOR dflt_multi_limit_no_incl_csr IS
1941 SELECT cpa.currency_code currency_code
1942 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1943 overall_limit
1944 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1945 trx_limit
1946 , cp.credit_checking
1947 , cu.credit_usage_rule_set_id
1948 , NVL(curs.global_exposure_flag,'N') global_exposure_flag
1949 FROM hz_credit_profiles cp
1950 , hz_credit_profile_amts cpa
1951 , hz_credit_usages cu
1952 , hz_credit_usage_rules cur
1953 , hz_credit_usage_rule_sets_B curs
1954 WHERE cp.organization_id = G_ORG_ID
1955 AND cp.credit_profile_id = cpa.credit_profile_id
1956 AND cpa.credit_profile_amt_id = cu.credit_profile_amt_id
1957 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1958 AND curs.credit_usage_rule_set_id = cu.credit_usage_rule_set_id
1959 AND curs.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1960 AND cp.enable_flag = 'Y'
1961 AND ( TRUNC(SYSDATE) BETWEEN
1962 TRUNC( NVL(cp.effective_date_from, SYSDATE ))
1963 AND
1964 TRUNC( NVL(cp.effective_date_to, SYSDATE ) )
1965 )
1966 AND NVL (cur.include_all_flag, 'N') = 'N'
1967 AND cur.usage_type = 'CURRENCY'
1968 AND cur.user_code = p_trx_curr_code
1969 AND NVL(cur.exclude_flag,'N') = 'N'
1970 AND cp.credit_checking = 'Y' ;
1971
1972
1973 dflt_multi_limit_no_incl_rec dflt_multi_limit_no_incl_csr%ROWTYPE ;
1974
1975
1976
1977 CURSOR dflt_multi_limit_incl_csr IS
1978 SELECT cpa.currency_code currency_code
1979 , cpa.overall_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1980 overall_limit
1981 , cpa.trx_credit_limit * ((100 + NVL(cp.tolerance,0))/100)
1982 trx_limit
1983 , cp.credit_checking
1984 , cu.credit_usage_rule_set_id
1985 , NVL(curs.global_exposure_flag,'N') global_exposure_flag
1986 FROM hz_credit_profiles cp
1987 , hz_credit_profile_amts cpa
1988 , hz_credit_usages cu
1989 , hz_credit_usage_rules cur
1990 , hz_credit_usage_rule_sets_B curs
1991 WHERE cp.organization_id = G_ORG_ID
1992 AND cp.credit_profile_id = cpa.credit_profile_id
1993 AND cpa.credit_profile_amt_id = cu.credit_profile_amt_id
1994 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1995 AND curs.credit_usage_rule_set_id = cu.credit_usage_rule_set_id
1996 AND curs.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
1997 AND cp.enable_flag = 'Y'
1998 AND ( TRUNC(SYSDATE) BETWEEN
1999 TRUNC( NVL(cp.effective_date_from, SYSDATE ))
2000 AND
2001 TRUNC( NVL(cp.effective_date_to, SYSDATE ) )
2002 )
2003 AND cur.include_all_flag = 'Y'
2004 AND cp.credit_checking = 'Y'
2005 AND NOT EXISTS ( SELECT 'EXCLUDE'
2006 FROM hz_credit_usage_rules cur2
2007 WHERE cu.credit_usage_rule_set_id
2008 = cur2.credit_usage_rule_set_id
2009 AND cur2.exclude_flag = 'Y'
2010 AND cur2.usage_type = 'CURRENCY'
2011 AND cur2.user_code = p_trx_curr_code
2012 );
2013
2014
2015 dflt_multi_limit_incl_rec dflt_multi_limit_incl_csr%ROWTYPE ;
2016
2017 BEGIN
2018
2019 IF G_debug_flag = 'Y'
2020 THEN
2021 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_multi_default_Limit ' );
2022 END IF;
2023
2024 x_credit_usage_rule_set_id := NULL ;
2025 x_global_exposure_flag := 'N' ;
2026
2027 -- The process will first try to find the limit avoiding the
2028 -- Include all factor.
2029 -- If not successful, the Include all is considered
2030
2031 OPEN dflt_multi_limit_no_incl_csr ;
2032 FETCH dflt_multi_limit_no_incl_csr
2033 INTO dflt_multi_limit_no_incl_rec ;
2034
2035 IF dflt_multi_limit_no_incl_csr%NOTFOUND
2036 THEN
2037 x_credit_usage_rule_set_id := NULL ;
2038 x_return_status := 'N' ;
2039 ELSE
2040 x_limit_curr_code := dflt_multi_limit_no_incl_rec.currency_code;
2041 x_overall_limit := dflt_multi_limit_no_incl_rec.overall_limit;
2042 x_trx_limit := dflt_multi_limit_no_incl_rec.trx_limit;
2043 x_credit_usage_rule_set_id :=
2044 dflt_multi_limit_no_incl_rec.credit_usage_rule_set_id ;
2045 x_return_status := 'Y' ;
2046 x_global_exposure_flag := dflt_multi_limit_no_incl_rec.global_exposure_flag ; --Bug 4703167
2047
2048 END IF;
2049
2050 CLOSE dflt_multi_limit_no_incl_csr ;
2051
2052 IF x_limit_curr_code IS NULL
2053 THEN
2054
2055 OPEN dflt_multi_limit_incl_csr ;
2056 FETCH dflt_multi_limit_incl_csr
2057 INTO dflt_multi_limit_incl_rec ;
2058
2059 IF dflt_multi_limit_incl_csr%NOTFOUND
2060 THEN
2061 x_credit_usage_rule_set_id := NULL ;
2062 x_return_status := 'N' ;
2063 ELSE
2064 x_limit_curr_code := dflt_multi_limit_incl_rec.currency_code;
2065 x_overall_limit := dflt_multi_limit_incl_rec.overall_limit;
2066 x_trx_limit := dflt_multi_limit_incl_rec.trx_limit;
2067 x_credit_usage_rule_set_id :=
2068 dflt_multi_limit_incl_rec.credit_usage_rule_set_id ;
2069 x_return_status := 'Y' ;
2070 x_global_exposure_flag := dflt_multi_limit_incl_rec.global_exposure_flag ;
2071
2072 END IF;
2073
2074 CLOSE dflt_multi_limit_incl_csr ;
2075 END IF;
2076
2077 IF G_debug_flag = 'Y'
2078 THEN
2079 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_multi_default_Limit ' );
2080 END IF;
2081
2082 EXCEPTION
2083 WHEN OTHERS THEN
2084 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
2085 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2086 THEN
2087 FND_MSG_PUB.Add_Exc_Msg
2088 ( G_PKG_NAME
2089 , ' GET_multi_default_Limit '
2090 );
2091 END IF;
2092 RAISE;
2093
2094 END GET_multi_default_Limit ;
2095
2096
2097 ----------------------------------------------------------------------------
2098 -- PROCEDURE : GET_single_Item_Limit PRIVATE
2099 -- COMMENT : Returns the limit associated with the Items.
2100 --
2101 ----------------------------------------------------------------------------
2102 PROCEDURE GET_single_Item_Limit
2103 ( p_category_id IN NUMBER
2104 , p_trx_curr_code IN VARCHAR2
2105 , x_limit_curr_code OUT NOCOPY VARCHAR2
2106 , x_trx_limit OUT NOCOPY NUMBER
2107 , x_return_status OUT NOCOPY VARCHAR2
2108 )
2109 IS
2110
2111
2112 ---------------------------------------------------
2113 -- The cursor gets credit limit info for --
2114 -- 1. Item categories
2115 ----------------------------------------------------
2116
2117 CURSOR single_Item_limit_csr IS
2118 SELECT cpa.currency_code limit_curr_code
2119 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
2120 trx_limit
2121 FROM hz_credit_profiles cp
2122 , hz_credit_profile_amts cpa
2123 WHERE cp.item_category_id = p_category_id
2124 AND cp.credit_profile_id = cpa.credit_profile_id
2125 AND cpa.currency_code = p_trx_curr_code
2126 AND cp.enable_flag = 'Y'
2127 AND ( TRUNC(SYSDATE) BETWEEN
2128 TRUNC( NVL(cp.effective_date_from, SYSDATE ) )
2129 AND TRUNC( NVL(cp.effective_date_to, SYSDATE ) )
2130 ) ;
2131
2132 l_single_Item_limit_csr_VAL single_Item_limit_csr%ROWTYPE ;
2133
2134
2135 BEGIN
2136
2137 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_single_Item_Limit ' );
2138
2139 OPEN single_Item_limit_csr;
2140 FETCH single_Item_limit_csr
2141 INTO l_single_Item_limit_csr_VAL ;
2142
2143 IF single_Item_limit_csr%NOTFOUND
2144 THEN
2145 x_return_status := 'N' ;
2146
2147 ELSE
2148 x_trx_limit
2149 := l_single_Item_limit_csr_VAL.trx_limit ;
2150 x_limit_curr_code
2151 := l_single_Item_limit_csr_VAL.limit_curr_code ;
2152
2153 x_return_status := 'Y' ;
2154
2155 END IF;
2156
2157 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_single_Item_Limit ' );
2158
2159 EXCEPTION
2160 WHEN OTHERS THEN
2161 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
2162 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2163 THEN
2164 FND_MSG_PUB.Add_Exc_Msg
2165 ( G_PKG_NAME
2166 , ' GET_single_Item_Limit'
2167 );
2168 END IF;
2169 RAISE;
2170
2171 END GET_single_Item_Limit ;
2172
2173 -----------------------------------------------------------------------------
2174 -- PROCEDURE : GET_multi_Item_Limit PRIVATE
2175 -- COMMENT : Returns the limit associated with the Items.
2176 --
2177 -----------------------------------------------
2178 PROCEDURE GET_multi_Item_Limit
2179 ( p_category_id IN NUMBER
2180 , p_trx_curr_code IN VARCHAR2
2181 , x_limit_curr_code OUT NOCOPY VARCHAR2
2182 , x_trx_limit OUT NOCOPY NUMBER
2183 , x_return_status OUT NOCOPY VARCHAR2
2184 )
2185 IS
2186
2187
2188 CURSOR multi_Item_limit_no_incl_csr IS
2189 SELECT cpa.currency_code limit_curr_code
2190 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
2191 trx_limit
2192 , cu.credit_usage_rule_set_id
2193 FROM hz_credit_profiles cp
2194 , hz_credit_profile_amts cpa
2195 , hz_credit_usages cu
2196 , hz_credit_usage_rules cur
2197 WHERE cp.credit_profile_id = cpa.credit_profile_id
2198 AND cpa.credit_profile_amt_id = cu.credit_profile_amt_id
2199 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
2200 AND cp.enable_flag = 'Y'
2201 AND cp.item_category_id = p_category_id
2202 AND ( TRUNC(SYSDATE) BETWEEN
2203 TRUNC( NVL(cp.effective_date_from, SYSDATE ) )
2204 AND TRUNC( NVL(cp.effective_date_to, SYSDATE ) )
2205 )
2206 AND NVL (cur.include_all_flag, 'N') = 'N'
2207 AND cur.usage_type = 'CURRENCY'
2208 AND cur.user_code = p_trx_curr_code
2209 AND NVL(cur.exclude_flag,'N') = 'N'
2210 ORDER BY cpa.overall_credit_limit;
2211
2212 l_multi_Item_limit_no_incl_VAL multi_Item_limit_no_incl_csr%ROWTYPE ;
2213
2214
2215
2216 CURSOR multi_Item_limit_incl_csr IS
2217 SELECT cpa.currency_code limit_curr_code
2218 , cpa.trx_credit_limit * ((100+nvl(cp.tolerance,0))/100)
2219 trx_limit
2220 , cu.credit_usage_rule_set_id
2221 FROM hz_credit_profiles cp
2222 , hz_credit_profile_amts cpa
2223 , hz_credit_usages cu
2224 , hz_credit_usage_rules cur
2225 WHERE cp.credit_profile_id = cpa.credit_profile_id
2226 AND cpa.credit_profile_amt_id = cu.credit_profile_amt_id
2227 AND cu.credit_usage_rule_set_id = cur.credit_usage_rule_set_id
2228 AND cp.enable_flag = 'Y'
2229 AND cp.item_category_id = p_category_id
2230 AND ( TRUNC(SYSDATE) BETWEEN
2231 TRUNC( NVL(cp.effective_date_from, SYSDATE ) )
2232 AND TRUNC( NVL(cp.effective_date_to, SYSDATE ) )
2233 )
2234 AND cur.include_all_flag = 'Y'
2235 AND NOT EXISTS ( SELECT 'EXCLUDE'
2236 FROM hz_credit_usage_rules cur2
2237 WHERE cu.credit_usage_rule_set_id
2238 = cur2.credit_usage_rule_set_id
2239 AND cur2.exclude_flag = 'Y'
2240 AND cur2.usage_type = 'CURRENCY'
2241 AND cur2.user_code = p_trx_curr_code
2242 )
2243 ORDER BY cpa.overall_credit_limit;
2244
2245 l_multi_Item_limit_incl_VAL multi_Item_limit_incl_csr%ROWTYPE ;
2246
2247 BEGIN
2248
2249 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_multi_item_Limit ' );
2250
2251 x_return_status := 'N' ;
2252
2253 OPEN multi_Item_limit_no_incl_csr ;
2254 FETCH multi_Item_limit_no_incl_csr
2255 INTO l_multi_Item_limit_no_incl_VAL ;
2256
2257 IF multi_Item_limit_no_incl_csr%NOTFOUND
2258 THEN
2259 x_return_status := 'N' ;
2260
2261 OPEN multi_Item_limit_incl_csr ;
2262 FETCH multi_Item_limit_incl_csr
2263 INTO l_multi_Item_limit_incl_VAL ;
2264
2265 IF multi_Item_limit_incl_csr%NOTFOUND
2266 THEN
2267 x_return_status := 'N' ;
2268
2269 ELSE
2270 x_trx_limit
2271 := l_multi_Item_limit_incl_VAL.trx_limit ;
2272 x_limit_curr_code
2273 := l_multi_Item_limit_incl_VAL.limit_curr_code ;
2274 x_return_status := 'Y' ;
2275
2276 END IF;
2277 ELSE
2278 x_trx_limit
2279 := l_multi_Item_limit_no_incl_VAL.trx_limit ;
2280 x_limit_curr_code
2281 := l_multi_Item_limit_no_incl_VAL.limit_curr_code ;
2282
2283 x_return_status := 'Y' ;
2284
2285 END IF;
2286
2287 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_multi_item_Limit ' );
2288
2289 EXCEPTION
2290 WHEN OTHERS THEN
2291 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
2292
2293 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2294 THEN
2295 FND_MSG_PUB.Add_Exc_Msg
2296 ( G_PKG_NAME
2297 , ' GET_multi_Item_Limit '
2298 );
2299 END IF;
2300 RAISE;
2301
2302 END GET_multi_Item_Limit ;
2303
2304
2305 -----------------------------------------------------------------------------
2306 -- FUNCTION : check_category PRIVATE
2307 -- COMMENT : Returns YES of category exist in the tmp table
2308 --
2309 ------------------------------------------------------------------------------
2310 FUNCTION check_category
2311 ( p_category_id IN NUMBER
2312 , p_category_tmp_tbl IN category_tmp_tbl_type
2313 )
2314 RETURN VARCHAR2
2315 IS
2316
2317 l_return_status VARCHAR2(1) := 'N' ;
2318
2319 BEGIN
2320
2321 FOR I IN 1..p_category_tmp_tbl.COUNT
2322 LOOP
2323 IF p_category_tmp_tbl(I).item_category_id = p_category_id
2324 THEN
2325 l_return_status := 'Y' ;
2326 EXIT;
2327 ELSE
2328 l_return_status := 'N' ;
2329 END IF;
2330
2331 END LOOP;
2332
2333 RETURN l_return_status ;
2334
2335 EXCEPTION
2336 WHEN OTHERS THEN
2337 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
2338
2339 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2340 THEN
2341 FND_MSG_PUB.Add_Exc_Msg
2342 ( G_PKG_NAME
2343 , 'check_category '
2344 );
2345 END IF;
2346 RAISE;
2347
2348 END check_category ;
2349
2350
2351 -----------------------------------------------------------------------------
2352 -- PROCEDURE : GET_Item_Limit PUBLIC
2353 -- COMMENT : Returns the limit associated with the Items.
2354 --
2355 ------------------------------------------------------------------------------
2356 PROCEDURE GET_Item_Limit
2357 ( p_header_id IN NUMBER
2358 , p_trx_curr_code IN VARCHAR2
2359 , p_site_use_id IN NUMBER
2360 , p_include_tax_flag IN VARCHAR2
2361 , x_item_limits_tbl OUT NOCOPY
2362 OE_CREDIT_CHECK_UTIL.item_limits_tbl_type
2363 , x_lines_tbl OUT NOCOPY
2364 OE_CREDIT_CHECK_UTIL.lines_Rec_tbl_type
2365 )
2366 IS
2367
2368 l_site_use_id NUMBER ;
2369 l_include_tax_flag VARCHAR2(1) := 'N' ;
2370 l_tmp_lines_tbl OE_CREDIT_CHECK_UTIL.lines_Rec_tbl_type ;
2371 l_tmp_category_tbl category_tmp_tbl_type ;
2372 l_selling_price NUMBER;
2373 l_tax_value NUMBER;
2374 l_ordered_quantity NUMBER;
2375 l_credit_profile_id NUMBER;
2376 l_ctg_profile_exist VARCHAR2(1) := 'N' ;
2377
2378 CURSOR C_SELECT_CTG_CREDIT_PROFILE IS
2379 SELECT
2380 cp.credit_profile_id
2381 FROM
2382 hz_credit_profiles cp
2383 WHERE cp.item_category_id is NOT NULL
2384 AND cp.enable_flag = 'Y'
2385 AND ( TRUNC(SYSDATE) BETWEEN
2386 TRUNC( NVL(cp.effective_date_from, SYSDATE ) )
2387 AND TRUNC( NVL(cp.effective_date_to, SYSDATE ) )
2388 ) ;
2389
2390 l_SELECT_CTG_CREDIT_PROFILE C_SELECT_CTG_CREDIT_PROFILE%ROWTYPE ;
2391
2392
2393 CURSOR C_SELECT_LINES_CSR IS
2394 SELECT
2395 ln.line_id line_id
2396 , ln.inventory_item_id item_id
2397 , ctg.category_id category_id
2398 , ln.ordered_quantity ordered_quantity
2399 , ln.unit_selling_price selling_price
2400 , ln.tax_value tax_value
2401 FROM
2402 OE_ORDER_LINES ln
2403 , mtl_item_categories ctg
2404 , ra_terms_b trm
2405 WHERE ln.header_id = p_header_id
2406 AND ln.invoice_to_org_id = NVL(l_site_use_id, ln.invoice_to_org_id )
2407 AND ln.open_flag = 'Y'
2408 AND (ln.invoiced_quantity IS NULL OR ln.invoiced_quantity = 0)
2409 AND ctg.category_set_id = G_category_set_id
2410 --Bug 7651089
2411 AND ctg.organization_id = oe_sys_parameters.value('MASTER_ORGANIZATION_ID', G_ORG_ID) --G_ORG_ID
2412 AND ctg.inventory_item_id = ln.inventory_item_id
2413 AND trm.term_id = ln.payment_term_id
2414 AND ln.line_category_code = 'ORDER'
2415 AND trm.credit_check_flag = 'Y'
2416 AND EXISTS
2417 (SELECT NULL
2418 FROM oe_payment_types_all pt,
2419 oe_order_headers_all h
2420 WHERE pt.credit_check_flag = 'Y'
2421 AND h.header_id = p_header_id
2422 AND ln.header_id = h.header_id
2423 AND NVL(pt.org_id, -99) = G_ORG_ID
2424 AND pt.payment_type_code =
2425 DECODE(ln.payment_type_code, NULL,
2426 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
2427 h.payment_type_code),
2428 ln.payment_type_code)
2429 );
2430
2431
2432 L_SELECT_LINES_VAL C_SELECT_LINES_CSR%ROWTYPE ;
2433
2434 l_return_status VARCHAR2(1);
2435 I NUMBER ; -- INDEX
2436
2437 l_item_id NUMBER;
2438 l_line_id NUMBER;
2439 l_trx_limit NUMBER;
2440 l_limit_curr_code VARCHAR2(15) ;
2441 l_category_id NUMBER;
2442 l_curr_category_id NUMBER;
2443 l_count NUMBER := 0 ;
2444
2445 l_ln_count NUMBER := 0;
2446 l_grouping_id NUMBER := 0;
2447 l_ctg_count NUMBER := 0;
2448 l_line_value NUMBER := 0 ;
2449 BEGIN
2450
2451 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_Item_Limit ');
2452
2453 ----------------------------------------------------
2454 -- Two PL/SQL tables are used to maintain the limits
2455 -- associated with the Item categories.
2456 -- Header table with the Item category ID
2457 -- details table that contains the oe lines for that
2458 -- Item category within a bill to site for line level
2459 -- The credit checking Engine will use the information
2460 -- returned in the PL/SQL tables to CC check
2461
2462 -----------------------------------------------------
2463
2464 l_site_use_id := p_site_use_id ;
2465 l_tmp_lines_tbl.DELETE ;
2466 l_tmp_category_tbl.DELETE ;
2467
2468 g_category_set_id := NULL;
2469 l_ctg_profile_exist := 'N' ;
2470
2471 OE_DEBUG_PUB.ADD('Initial g_category_set_id ' || g_category_set_id );
2472 -- OE_DEBUG_PUB.ADD(' G_profile ' || G_profile );
2473
2474 -- For each Line ID/Item, the limits are selected
2475 -- using the Category.
2476 -- The similar selection pattern in coordination
2477 -- with the profile is used,
2478 -- that is being used for selecting the
2479 -- default limit.
2480
2481 -- First verify if any category exist with a profile
2482
2483 BEGIN
2484 OE_DEBUG_PUB.ADD(' Cusror select to check CTG profile exist ');
2485
2486 OPEN C_SELECT_CTG_CREDIT_PROFILE ;
2487
2488 FETCH C_SELECT_CTG_CREDIT_PROFILE
2489 INTO l_SELECT_CTG_CREDIT_PROFILE ;
2490
2491 IF C_SELECT_CTG_CREDIT_PROFILE%NOTFOUND
2492 THEN
2493 l_ctg_profile_exist := 'N' ;
2494 OE_DEBUG_PUB.ADD(' Category profile do NOT exist ');
2495 ELSE
2496 l_credit_profile_id :=
2497 l_SELECT_CTG_CREDIT_PROFILE.credit_profile_id ;
2498 l_ctg_profile_exist := 'Y' ;
2499 OE_DEBUG_PUB.ADD(' Category profile exist ');
2500 END IF;
2501 CLOSE C_SELECT_CTG_CREDIT_PROFILE ;
2502
2503 END ;
2504
2505
2506 OE_DEBUG_PUB.ADD(' Out NOCOPY of CTG profile check cursor ');
2507 OE_DEBUG_PUB.ADD(' l_ctg_profile_exist = '|| l_ctg_profile_exist );
2508
2509 IF l_ctg_profile_exist = 'Y'
2510 THEN
2511
2512 OE_DEBUG_PUB.ADD(' Continue Item category credit get limit ');
2513
2514 g_category_set_id := GET_category_set_id ;
2515 OE_DEBUG_PUB.ADD('g_category_set_id ' || g_category_set_id );
2516
2517 FOR L_SELECT_LINES_VAL IN C_SELECT_LINES_CSR
2518 LOOP
2519 l_line_id := L_SELECT_LINES_VAL.line_id ;
2520 l_item_id := L_SELECT_LINES_VAL.item_id ;
2521 l_category_id := L_SELECT_LINES_VAL.category_id ;
2522 l_selling_price := L_SELECT_LINES_VAL.selling_price ;
2523 l_tax_value := L_SELECT_LINES_VAL.tax_value ;
2524 l_ordered_quantity := L_SELECT_LINES_VAL.ordered_quantity ;
2525 l_count := NVL(l_count,0) + 1 ;
2526
2527 -- Insert into the TMP PL/SQL table.
2528
2529 l_tmp_lines_tbl(l_count).grouping_id := NULL;
2530 l_tmp_lines_tbl(l_count).item_category_id := l_category_id ;
2531 l_tmp_lines_tbl(l_count).line_id := l_line_id ;
2532 l_tmp_lines_tbl(l_count).unit_selling_price := l_selling_price ;
2533 l_tmp_lines_tbl(l_count).tax_value := l_tax_value ;
2534 l_tmp_lines_tbl(l_count).ordered_quantity := l_ordered_quantity ;
2535
2536 l_line_id := NULL;
2537 l_item_id := NULL;
2538 l_category_id := NULL;
2539 l_selling_price := NULL;
2540 l_tax_value := NULL;
2541 l_ordered_quantity := NULL;
2542
2543 END LOOP; -- CTG cursor loop
2544
2545 OE_DEBUG_PUB.ADD(' Out NOCOPY of category cursor ');
2546
2547 OE_DEBUG_PUB.ADD(' l_tmp_lines_tbl.COUNT ' || l_tmp_lines_tbl.COUNT );
2548 -- Now the TMP table needs to be scannned and relocated into
2549 -- the main table with category check.
2550
2551 FOR I IN 1.. l_tmp_lines_tbl.COUNT
2552 LOOP
2553 IF check_category
2554 ( p_category_id => l_tmp_lines_tbl(i).item_category_id
2555 , p_category_tmp_tbl => l_tmp_category_tbl
2556 ) = 'N'
2557 THEN
2558
2559 l_ctg_count := NVL(l_ctg_count,0) + 1 ;
2560
2561 -- Always get multi first and get single if no usages found
2562
2563 OE_DEBUG_PUB.ADD(' GET_multi_Item_Limit ');
2564
2565 GET_multi_Item_Limit
2566 ( p_category_id => l_tmp_lines_tbl(i).item_category_id
2567 , p_trx_curr_code => p_trx_curr_code
2568 , x_limit_curr_code => l_limit_curr_code
2569 , x_trx_limit => l_trx_limit
2570 , x_return_status => l_return_status
2571 );
2572
2573 IF l_return_status = 'N'
2574 THEN
2575 OE_DEBUG_PUB.ADD(' Call GET_single_Item_Limit ');
2576 GET_single_Item_Limit
2577 ( p_category_id => l_tmp_lines_tbl(i).item_category_id
2578 , p_trx_curr_code => p_trx_curr_code
2579 , x_limit_curr_code => l_limit_curr_code
2580 , x_trx_limit => l_trx_limit
2581 , x_return_status => l_return_status
2582 );
2583
2584 END IF;
2585 -- END IF;
2586
2587 IF G_debug_flag = 'Y'
2588 THEN
2589 OE_DEBUG_PUB.ADD(' after getting the limits ');
2590 OE_DEBUG_PUB.ADD(' l_return_status '|| l_return_status);
2591 OE_DEBUG_PUB.ADD(' l_trx_limit '|| l_trx_limit);
2592 OE_DEBUG_PUB.ADD(' l_limit_curr_code '|| l_limit_curr_code );
2593 OE_DEBUG_PUB.ADD(' p_trx_curr_code '|| p_trx_curr_code );
2594 END IF;
2595
2596 l_curr_category_id := l_tmp_lines_tbl(i).item_category_id ;
2597
2598 l_tmp_category_tbl(l_ctg_count).item_category_id
2599 := l_tmp_lines_tbl(i).item_category_id ;
2600
2601 l_tmp_category_tbl(l_ctg_count).profile_exist
2602 := l_return_status ;
2603
2604 IF l_return_status = 'Y'
2605 THEN
2606 l_grouping_id := NVL(l_grouping_id,0) + 1;
2607
2608 x_item_limits_tbl(l_grouping_id).grouping_id :=
2609 l_grouping_id ;
2610
2611 x_item_limits_tbl(l_grouping_id).item_category_id :=
2612 l_curr_category_id ;
2613
2614 x_item_limits_tbl(l_grouping_id).limit_curr_code :=
2615 l_limit_curr_code ;
2616
2617 x_item_limits_tbl(l_grouping_id).item_limit :=
2618 l_trx_limit ;
2619 END IF;
2620
2621 END IF;
2622 -- end category_exist IF
2623
2624 l_line_id := NULL;
2625 l_trx_limit := NULL;
2626 l_limit_curr_code := NULL;
2627 l_return_status := NULL;
2628 l_curr_category_id := NULL;
2629
2630
2631 END LOOP;
2632
2633 -- assign the values to the output table
2634
2635 l_grouping_id := NULL;
2636 l_curr_category_id := NULL;
2637
2638 FOR ctg_id IN 1 .. x_item_limits_tbl.COUNT
2639 LOOP
2640 l_grouping_id :=
2641 x_item_limits_tbl(ctg_id).grouping_id ;
2642
2643 l_curr_category_id := x_item_limits_tbl(ctg_id).item_category_id ;
2644
2645 FOR ln_id IN 1 .. l_tmp_lines_tbl.COUNT
2646 LOOP
2647 IF l_tmp_lines_tbl(ln_id).item_category_id =
2648 l_curr_category_id
2649 THEN
2650 l_ln_count := NVL(l_ln_count,0) + 1 ;
2651 x_lines_tbl(l_ln_count).grouping_id := l_grouping_id ;
2652 x_lines_tbl(l_ln_count).item_category_id := l_curr_category_id ;
2653 x_lines_tbl(l_ln_count).line_id :=
2654 l_tmp_lines_tbl(ln_id).line_id ;
2655 x_lines_tbl(l_ln_count).unit_selling_price :=
2656 l_tmp_lines_tbl(ln_id).unit_selling_price ;
2657 x_lines_tbl(l_ln_count).tax_value :=
2658 l_tmp_lines_tbl(ln_id).tax_value ;
2659 x_lines_tbl(l_ln_count).ordered_quantity :=
2660 l_tmp_lines_tbl(ln_id).ordered_quantity ;
2661
2662 IF p_include_tax_flag = 'Y'
2663 THEN
2664 l_line_value := NVL(l_line_value,0) +
2665 ( NVL(l_tmp_lines_tbl(ln_id).tax_value,0 ) +
2666 ( l_tmp_lines_tbl(ln_id).ordered_quantity
2667 * l_tmp_lines_tbl(ln_id).unit_selling_price
2668 )
2669 );
2670 ELSE
2671 l_line_value := NVL(l_line_value,0) +
2672 ( l_tmp_lines_tbl(ln_id).ordered_quantity
2673 * l_tmp_lines_tbl(ln_id).unit_selling_price
2674 );
2675 END IF;
2676 END IF;
2677 END LOOP;
2678
2679 x_item_limits_tbl(ctg_id).ctg_line_amount := NVL(l_line_value,0) ;
2680 l_line_value := NULL;
2681
2682 END LOOP;
2683
2684 ELSE
2685
2686 OE_DEBUG_PUB.ADD(' No CTG credit profile found - No Item CC required ');
2687
2688
2689 END IF; -- Profile check IF
2690
2691
2692 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_Item_Limit ');
2693
2694
2695 EXCEPTION
2696 WHEN OTHERS THEN
2697 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
2698
2699 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2700 THEN
2701 FND_MSG_PUB.Add_Exc_Msg
2702 ( G_PKG_NAME
2703 , ' GET_Item_Limit '
2704 );
2705 END IF;
2706 RAISE;
2707
2708
2709 END GET_Item_Limit ;
2710
2711
2712
2713 -----------------------------------------------------------------------------
2714 -- PROCEDURE : Get_Multi_Limit PRIVATE
2715 -- COMMENT :
2716 --
2717 ---------------------------------------------------------------------------
2718 PROCEDURE Get_Multi_Limit (
2719 p_entity_type IN VARCHAR2
2720 , p_entity_id IN NUMBER
2721 , p_trx_curr_code IN
2722 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
2723 , x_limit_curr_code OUT NOCOPY
2724 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
2725 , x_trx_limit OUT NOCOPY NUMBER
2726 , x_overall_limit OUT NOCOPY NUMBER
2727 , x_global_exposure_flag OUT NOCOPY VARCHAR2
2728 --bug 4212981
2729 , x_site_cc_flag OUT NOCOPY VARCHAR2
2730 , x_cust_cc_flag OUT NOCOPY VARCHAR2
2731 )
2732 IS
2733
2734 l_return_status VARCHAR2(1);
2735 l_credit_usage_rule_set_id NUMBER;
2736
2737 BEGIN
2738
2739 IF G_debug_flag = 'Y'
2740 THEN
2741 OE_DEBUG_PUB.ADD('OEXUCRCB: IN Get_Multi_Limit ');
2742 END IF;
2743
2744 x_global_exposure_flag := 'N' ;
2745
2746 l_credit_usage_rule_set_id := NULL ;
2747
2748 IF P_entity_Type = 'CUSTOMER'
2749 THEN
2750 GET_multi_customer_Limit
2751 ( p_entity_id => p_entity_id
2752 , p_trx_curr_code => p_trx_curr_code
2753 , x_limit_curr_code => x_limit_curr_code
2754 , x_trx_limit => x_trx_limit
2755 , x_overall_limit => x_overall_limit
2756 , x_return_status => l_return_status
2757 , x_credit_usage_rule_set_id
2758 => l_credit_usage_rule_set_id
2759 , x_global_exposure_flag => x_global_exposure_flag
2760 );
2761
2762 IF G_debug_flag = 'Y'
2763 THEN
2764 OE_DEBUG_PUB.ADD(' Out NOCOPY GET_multi_customer_Limit '|| l_return_status );
2765 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
2766 OE_DEBUG_PUB.ADD(' x_trx_limit = '|| x_trx_limit );
2767 OE_DEBUG_PUB.ADD(' x_overall_limit = '|| x_overall_limit );
2768 END IF;
2769
2770 x_cust_cc_flag := l_return_status; --bug 4582292
2771
2772 -- BUG 2236276
2773 -- roll up to next level if limits are NULL
2774
2775 IF l_return_status = 'Y'
2776 AND x_trx_limit is NULL
2777 AND x_overall_limit is NULL
2778 THEN
2779 l_return_status := 'N' ;
2780 x_limit_curr_code := NULL ;
2781 x_global_exposure_flag := 'N' ;
2782
2783 OE_DEBUG_PUB.ADD(' Limits NULL for customer MULTI ');
2784
2785 END IF;
2786
2787 IF NVL(l_return_status, 'N') = 'N' --bug 5071518
2788 THEN
2789 x_global_exposure_flag := 'N' ;
2790 l_credit_usage_rule_set_id := NULL ;
2791
2792 IF G_debug_flag = 'Y'
2793 THEN
2794 OE_DEBUG_PUB.ADD(' Calling GET_Single_Customer_Limit ');
2795 END IF;
2796
2797 GET_Single_Customer_Limit
2798 ( p_entity_id => p_entity_id
2799 , p_trx_curr_code => p_trx_curr_code
2800 , x_limit_curr_code => x_limit_curr_code
2801 , x_trx_limit => x_trx_limit
2802 , x_overall_limit => x_overall_limit
2803 , x_return_status => l_return_status
2804 );
2805
2806 IF G_debug_flag = 'Y'
2807 THEN
2808 OE_DEBUG_PUB.ADD(' Out NOCOPY GET_Single_Customer_Limit '
2809 || l_return_status );
2810 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '
2811 || x_limit_curr_code );
2812 OE_DEBUG_PUB.ADD(' x_trx_limit = '|| x_trx_limit );
2813 OE_DEBUG_PUB.ADD(' x_overall_limit = '|| x_overall_limit );
2814 END IF;
2815
2816 x_cust_cc_flag := l_return_status; -- bug 4582292
2817
2818 IF l_return_status = 'Y'
2819 AND x_trx_limit is NULL
2820 AND x_overall_limit is NULL
2821 THEN
2822 l_return_status := 'N' ;
2823 x_limit_curr_code := NULL ;
2824 x_global_exposure_flag := 'N' ;
2825 END IF;
2826 END IF;
2827
2828
2829 ------------------------- Site level -------------------------
2830
2831 ELSIF P_entity_Type = 'SITE'
2832 THEN
2833 x_global_exposure_flag := 'N' ;
2834
2835 IF G_debug_flag = 'Y'
2836 THEN
2837 OE_DEBUG_PUB.ADD(' Call GET_multi_site_Limit ');
2838 END IF;
2839
2840 GET_multi_site_Limit
2841 ( p_entity_id => p_entity_id
2842 , p_trx_curr_code => p_trx_curr_code
2843 , x_limit_curr_code => x_limit_curr_code
2844 , x_trx_limit => x_trx_limit
2845 , x_overall_limit => x_overall_limit
2846 , x_return_status => l_return_status
2847 );
2848
2849 IF G_debug_flag = 'Y'
2850 THEN
2851 OE_DEBUG_PUB.ADD(' Out NOCOPY GET_multi_site_Limit '|| l_return_status );
2852 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
2853 OE_DEBUG_PUB.ADD(' x_trx_limit = '|| x_trx_limit );
2854 OE_DEBUG_PUB.ADD(' x_overall_limit = '|| x_overall_limit );
2855 END IF;
2856
2857 x_site_cc_flag := l_return_status; --bug 4212981
2858 -- BUG 4158439
2859 -- roll up to next level if limits are NULL
2860
2861 IF l_return_status = 'Y'
2862 AND x_trx_limit is NULL
2863 AND x_overall_limit is NULL
2864 THEN
2865 l_return_status := 'N' ;
2866 x_limit_curr_code := NULL ;
2867
2868 OE_DEBUG_PUB.ADD(' Limits NULL for site MULTI ');
2869
2870 END IF;
2871
2872 IF NVL(l_return_status, 'N') = 'N' --bug 4582292
2873 THEN
2874 GET_Single_Site_Limit
2875 ( p_entity_id => p_entity_id
2876 , p_trx_curr_code => p_trx_curr_code
2877 , x_limit_curr_code => x_limit_curr_code
2878 , x_trx_limit => x_trx_limit
2879 , x_overall_limit => x_overall_limit
2880 , x_return_status => l_return_status
2881 );
2882
2883 IF G_debug_flag = 'Y'
2884 THEN
2885 OE_DEBUG_PUB.ADD(' Out NOCOPY GET_Single_Site_Limit '|| l_return_status );
2886 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
2887 OE_DEBUG_PUB.ADD(' x_trx_limit = '|| x_trx_limit );
2888 OE_DEBUG_PUB.ADD(' x_overall_limit = '|| x_overall_limit );
2889 END IF;
2890
2891 x_site_cc_flag := l_return_status; --bug 4212981
2892
2893 -- BUG 4158439
2894 IF l_return_status = 'Y'
2895 AND x_trx_limit is NULL
2896 AND x_overall_limit is NULL
2897 THEN
2898 l_return_status := 'N' ;
2899 x_limit_curr_code := NULL ;
2900 OE_DEBUG_PUB.ADD(' Limits NULL for site SINGLE ');
2901 END IF;
2902
2903 END IF;
2904
2905 ELSE
2906 NULL;
2907 END IF;
2908
2909 IF G_debug_flag = 'Y'
2910 THEN
2911 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY Get_Multi_Limit ');
2912 END IF;
2913
2914 EXCEPTION
2915 WHEN OTHERS THEN
2916 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
2917
2918 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2919 THEN
2920 FND_MSG_PUB.Add_Exc_Msg
2921 ( G_PKG_NAME
2922 , ' Get_Multi_Limit '
2923 );
2924 END IF;
2925 RAISE;
2926
2927
2928 END Get_Multi_Limit ;
2929
2930
2931
2932 -----------------------------------------------------------------------------
2933 -- PROCEDURE : Get_SIngle_Limit PRIVATE
2934 -- COMMENT : Returns the Limit for the SINGLE profile
2935 --
2936 ---------------------------------------------------------------------------
2937 PROCEDURE Get_SIngle_Limit (
2938 p_entity_type IN VARCHAR2
2939 , p_entity_id IN NUMBER
2940 , p_trx_curr_code IN
2941 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
2942 , x_limit_curr_code OUT NOCOPY
2943 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
2944 , x_trx_limit OUT NOCOPY NUMBER
2945 , x_overall_limit OUT NOCOPY NUMBER
2946 , x_default_limit_flag OUT NOCOPY VARCHAR2
2947 )
2948 IS
2949
2950 l_return_status VARCHAR2(1);
2951
2952 BEGIN
2953
2954 IF G_debug_flag = 'Y'
2955 THEN
2956 OE_DEBUG_PUB.ADD('OEXUCRCB: IN Get_SIngle_Limit ');
2957 END IF;
2958
2959 IF P_entity_Type = 'CUSTOMER'
2960 THEN
2961 GET_Single_Customer_Limit
2962 ( p_entity_id => p_entity_id
2963 , p_trx_curr_code => p_trx_curr_code
2964 , x_limit_curr_code => x_limit_curr_code
2965 , x_trx_limit => x_trx_limit
2966 , x_overall_limit => x_overall_limit
2967 , x_return_status => l_return_status
2968 );
2969
2970 IF l_return_status = 'N'
2971 THEN
2972 GET_single_default_Limit
2973 ( p_entity_id => p_entity_id
2974 , p_trx_curr_code => p_trx_curr_code
2975 , x_limit_curr_code => x_limit_curr_code
2976 , x_trx_limit => x_trx_limit
2977 , x_overall_limit => x_overall_limit
2978 , x_return_status => x_default_limit_flag
2979 );
2980
2981 ELSE
2982 x_default_limit_flag := 'N' ;
2983 END IF;
2984
2985 ELSIF P_entity_Type = 'SITE'
2986 THEN
2987 GET_Single_Site_Limit
2988 ( p_entity_id => p_entity_id
2989 , p_trx_curr_code => p_trx_curr_code
2990 , x_limit_curr_code => x_limit_curr_code
2991 , x_trx_limit => x_trx_limit
2992 , x_overall_limit => x_overall_limit
2993 , x_return_status => l_return_status
2994 );
2995
2996 x_default_limit_flag := 'N' ;
2997
2998 ELSE
2999 NULL;
3000 END IF;
3001
3002 IF G_debug_flag = 'Y'
3003 THEN
3004 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY Get_SIngle_Limit ');
3005 END IF;
3006
3007
3008 EXCEPTION
3009 WHEN OTHERS THEN
3010 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
3011
3012 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3013 THEN
3014 FND_MSG_PUB.Add_Exc_Msg
3015 ( G_PKG_NAME
3016 , ' Get_SIngle_Limit '
3017 );
3018 END IF;
3019 RAISE;
3020
3021
3022 END Get_SIngle_Limit ;
3023
3024
3025 ------------------------------------------------------------------------------
3026 -- PROCEDURE : Get_Usages PUBLIC
3027 -- COMMENT : Returns the Usages associated with a given
3028 -- profile amount currency
3029 --
3030 ------------------------------------------------------------------------------
3031 PROCEDURE Get_Usages (
3032 p_entity_type IN VARCHAR2
3033 , p_entity_id IN NUMBER
3034 , p_limit_curr_code IN
3035 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
3036 , p_suppress_unused_usages_flag IN VARCHAR2 := 'N'
3037 , p_default_limit_flag IN VARCHAR2 := 'N'
3038 , p_global_exposure_flag IN VARCHAR2 := 'N'
3039 , x_include_all_flag OUT NOCOPY VARCHAR2
3040 , x_usage_curr_tbl OUT NOCOPY OE_CREDIT_CHECK_UTIL.curr_tbl_type
3041 )
3042 IS
3043
3044 l_count NUMBER;
3045
3046 --------------------------------------------------------
3047 -- This cursor identifies the usage rule sets for --
3048 -- usages credit limit. --
3049 --------------------------------------------------------
3050
3051 CURSOR party_rule_set_csr IS
3052 SELECT credit_usage_rule_set_id
3053 FROM hz_credit_usages usg,
3054 hz_customer_profiles prf,
3055 hz_cust_profile_amts amt
3056 WHERE usg.cust_acct_profile_amt_id = amt.cust_acct_profile_amt_id
3057 AND prf.cust_account_profile_id = amt.cust_account_profile_id
3058 AND amt.currency_code = p_limit_curr_code
3059 AND prf.cust_account_id = -1
3060 AND prf.site_use_id IS NULL
3061 AND prf.party_id = p_entity_id ;
3062
3063 CURSOR cust_rule_set_csr IS
3064 SELECT credit_usage_rule_set_id
3065 FROM hz_credit_usages usg,
3066 hz_customer_profiles prf,
3067 hz_cust_profile_amts amt
3068 WHERE usg.cust_acct_profile_amt_id = amt.cust_acct_profile_amt_id
3069 AND prf.cust_account_profile_id = amt.cust_account_profile_id
3070 AND amt.currency_code = p_limit_curr_code
3071 AND prf.cust_account_id = p_entity_id
3072 AND prf.site_use_id IS NULL;
3073
3074 CURSOR site_rule_set_csr IS
3075 SELECT credit_usage_rule_set_id
3076 FROM hz_credit_usages usg,
3077 hz_customer_profiles prf,
3078 hz_cust_profile_amts amt
3079 WHERE usg.cust_acct_profile_amt_id = amt.cust_acct_profile_amt_id
3080 AND prf.cust_account_profile_id = amt.cust_account_profile_id
3081 AND amt.currency_code = p_limit_curr_code
3082 AND prf.site_use_id = p_entity_id ;
3083
3084
3085 --------------------------------------------------------
3086 -- This cursor identifies the usage rule sets for --
3087 -- Default credit limit. --
3088 --------------------------------------------------------
3089 CURSOR dflt_rule_set_csr IS
3090 SELECT credit_usage_rule_set_id
3091 FROM hz_credit_usages usg,
3092 hz_credit_profiles prf,
3093 hz_credit_profile_amts amt
3094 WHERE usg.credit_profile_amt_id = amt.credit_profile_amt_id
3095 AND prf.credit_profile_id = amt.credit_profile_id
3096 AND amt.currency_code = p_limit_curr_code
3097 AND prf.organization_id = G_ORG_ID ;
3098
3099
3100
3101 --------------------------------------------------------
3102 -- This cursor identifies if the include all flag --
3103 -- is set for this usage rule set . --
3104 --------------------------------------------------------
3105
3106 CURSOR include_all_csr (c_credit_usage_rule_set_id IN NUMBER) IS
3107 SELECT 'X'
3108 FROM hz_credit_usage_rules
3109 WHERE credit_usage_rule_set_id = c_credit_usage_rule_set_id
3110 AND usage_type = 'CURRENCY'
3111 AND include_all_flag = 'Y';
3112
3113 --------------------------------------------------------
3114 -- This cursor identifies all included usages --
3115 -- for this usage rule set . --
3116 --------------------------------------------------------
3117
3118 CURSOR incl_curr_csr (c_credit_usage_rule_set_id IN NUMBER) IS
3119 SELECT user_code
3120 FROM hz_credit_usage_rules cur
3121 WHERE cur.credit_usage_rule_set_id = c_credit_usage_rule_set_id
3122 AND cur.usage_type = 'CURRENCY'
3123 AND cur.user_code IS NOT NULL
3124 AND NVL(cur.exclude_flag,'N') = 'N';
3125
3126 --------------------------------------------------------
3127 -- This cursor identifies all excluded usages --
3128 -- for this usage rule set . --
3129 --------------------------------------------------------
3130
3131 CURSOR excl_curr_csr (c_credit_usage_rule_set_id IN NUMBER) IS
3132 SELECT user_code
3133 FROM hz_credit_usage_rules cur
3134 WHERE cur.credit_usage_rule_set_id = c_credit_usage_rule_set_id
3135 AND cur.usage_type = 'CURRENCY'
3136 AND cur.user_code IS NOT NULL
3137 AND cur.exclude_flag = 'Y';
3138
3139 --------------------------------------------------------
3140 -- This cursor identifies all currencies in which --
3141 -- transactions are available for this entity --
3142 --------------------------------------------------------
3143 --- BUG 2352020
3144 -- Bug 2417717 AR relationshops
3145
3146 CURSOR trx_curr_csr_customer IS
3147 SELECT soh.transactional_curr_code user_code
3148 FROM oe_order_headers soh
3149 , hz_cust_acct_sites_all cas
3150 , hz_cust_site_uses_all su
3151 WHERE soh.org_id = su.org_id
3152 AND soh.invoice_to_org_id = su.site_use_id
3153 AND cas.cust_acct_site_id = su.cust_acct_site_id
3154 AND cas.cust_account_id = p_entity_id
3155 GROUP BY transactional_curr_code
3156 UNION
3157 SELECT pay.invoice_currency_code user_code
3158 FROM ar_payment_schedules pay
3159 , hz_cust_acct_sites_all cas
3160 , hz_cust_site_uses_all su
3161 WHERE pay.org_id = su.org_id
3162 AND pay.customer_site_use_id = su.site_use_id
3163 AND cas.cust_acct_site_id = su.cust_acct_site_id
3164 AND cas.cust_account_id = p_entity_id
3165 GROUP BY invoice_currency_code
3166 UNION
3167 SELECT exs.currency_code
3168 FROM oe_credit_summaries exs
3169 WHERE exs.balance_type = 18
3170 AND exs.cust_account_id = p_entity_id
3171 AND NVL(exs.org_id,-99) = G_ORG_ID; /* MOAC_SQL_CHANGE */
3172
3173
3174
3175 CURSOR trx_curr_csr_customer_global IS
3176 SELECT soh.transactional_curr_code user_code
3177 FROM oe_order_headers_ALL soh
3178 , hz_cust_acct_sites_ALL cas
3179 , hz_cust_site_uses_ALL su
3180 WHERE soh.invoice_to_org_id = su.site_use_id
3181 AND cas.cust_acct_site_id = su.cust_acct_site_id
3182 AND cas.cust_account_id = p_entity_id
3183 GROUP BY transactional_curr_code
3184 UNION
3185 SELECT pay.invoice_currency_code user_code
3186 FROM ar_payment_schedules_ALL pay
3187 , hz_cust_acct_sites_ALL cas
3188 , hz_cust_site_uses_ALL su
3189 WHERE pay.customer_site_use_id = su.site_use_id
3190 AND cas.cust_acct_site_id = su.cust_acct_site_id
3191 AND cas.cust_account_id = p_entity_id
3192 GROUP BY invoice_currency_code
3193 UNION
3194 SELECT exs.currency_code
3195 FROM oe_credit_summaries exs
3196 WHERE exs.balance_type = 18
3197 AND exs.cust_account_id = p_entity_id ;
3198
3199
3200
3201 CURSOR trx_curr_csr_site IS
3202 SELECT soh.transactional_curr_code user_code
3203 FROM oe_order_headers soh
3204 WHERE soh.invoice_to_org_id = p_entity_id
3205 GROUP BY transactional_curr_code
3206 UNION
3207 SELECT pay.invoice_currency_code user_code
3208 FROM ar_payment_schedules pay
3209 WHERE pay.customer_site_use_id = p_entity_id
3210 GROUP BY invoice_currency_code
3211 UNION
3212 SELECT exs.currency_code
3213 FROM oe_credit_summaries exs
3214 WHERE balance_type = 18
3215 AND site_use_id = p_entity_id ;
3216
3217
3218
3219
3220 CURSOR C_g_use_party_hierarchy IS
3221 SELECT
3222 'Y'
3223 FROM
3224 hz_hierarchy_nodes hn
3225 WHERE hn.parent_id = p_entity_id
3226 AND hn.parent_object_type = 'ORGANIZATION'
3227 and hn.parent_table_name = 'HZ_PARTIES'
3228 and hn.child_object_type = 'ORGANIZATION'
3229 and hn.effective_start_date <= sysdatE
3230 and hn.effective_end_date >= SYSDATE
3231 and hn.hierarchy_type
3232 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type ;
3233
3234 CURSOR party_txn_cur IS
3235 SELECT distinct ( currency_code) user_code
3236 FROM oe_credit_summaries
3237 WHERE party_id = p_entity_id
3238 AND bucket_duration = OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH ;
3239
3240
3241 CURSOR party_h_txn_cur IS
3242 SELECT distinct ( oes.currency_code) user_code
3243 FROM oe_credit_summaries oes
3244 , hz_hierarchy_nodes hn
3245 WHERE hn.parent_id = p_entity_id
3246 AND hn.parent_object_type = 'ORGANIZATION'
3247 and hn.parent_table_name = 'HZ_PARTIES'
3248 and hn.child_object_type = 'ORGANIZATION'
3249 and hn.effective_start_date <= sysdate
3250 and hn.effective_end_date >= SYSDATE
3251 and hn.hierarchy_type
3252 = OE_CREDIT_CHECK_UTIL.G_hierarchy_type
3253 AND oes.party_id = hn.child_id
3254 AND oes.bucket_duration = OE_CREDIT_EXPOSURE_PVT.G_MAX_BUCKET_LENGTH ;
3255
3256
3257 include_all_rec include_all_csr%rowtype;
3258 l_credit_limit_exist VARCHAR2(1) ;
3259
3260
3261 l_limit_flag VARCHAR2(1) := 'N';
3262 i NUMBER := 0;
3263 j NUMBER := 1;
3264 l_return_status NUMBER;
3265 l_credit_check_flag VARCHAR2(2);
3266 l_overall_limit NUMBER;
3267 l_trx_limit NUMBER;
3268
3269 l_arrsize NUMBER;
3270
3271 l_incl_curr_list VARCHAR2(2000);
3272 l_excl_curr_list VARCHAR2(2000);
3273 l_trx_curr_list VARCHAR2(2000);
3274 l_seperator VARCHAR2(1) := '#';
3275 l_currency VARCHAR2(10);
3276
3277 l_start NUMBER := 1;
3278 l_end NUMBER := 1;
3279
3280 l_exclude_flag VARCHAR2(1) := 'N' ;
3281 l_use_party_hierarchy VARCHAR2(1) ;
3282
3283 l_include_all_flag VARCHAR2(1) := 'N' ;
3284
3285 BEGIN
3286
3287 IF G_debug_flag = 'Y'
3288 THEN
3289 OE_DEBUG_PUB.ADD('OEXUCRCB: IN get_usages ');
3290 OE_DEBUG_PUB.ADD(' p_entity_type = '|| p_entity_type );
3291 OE_DEBUG_PUB.ADD(' p_entity_id = '|| p_entity_id );
3292 OE_DEBUG_PUB.ADD(' p_limit_curr_code = '|| p_limit_curr_code );
3293 OE_DEBUG_PUB.ADD(' p_suppress_unused_usages_flag = '||
3294 p_suppress_unused_usages_flag );
3295 OE_DEBUG_PUB.ADD(' p_global_exposure_flag '||
3296 p_global_exposure_flag );
3297
3298 OE_DEBUG_PUB.ADD(' ---------------------------------------------- ');
3299
3300 END IF;
3301
3302 OE_CREDIT_CHECK_UTIL.G_excl_curr_list := NULL ;
3303 l_exclude_flag := 'N' ;
3304
3305 IF G_debug_flag = 'Y'
3306 THEN
3307 OE_DEBUG_PUB.ADD(' Credit Limit found ');
3308 END IF;
3309
3310 ---------------------------------------------------
3311 -- First get all usage rule sets for this limit --
3312 ---------------------------------------------------
3313
3314 IF NVL(p_default_limit_flag,'N') = 'N'
3315 THEN
3316 IF G_debug_flag = 'Y'
3317 THEN
3318 OE_DEBUG_PUB.ADD(' Into Default limit = N ');
3319 END IF;
3320
3321 IF p_entity_type = 'PARTY'
3322 THEN
3323 FOR rule_set_rec IN party_rule_set_csr
3324 LOOP
3325 OPEN include_all_csr
3326 (rule_set_rec.credit_usage_rule_set_id);
3327
3328 FETCH include_all_csr
3329 INTO include_all_rec;
3330
3331 IF include_all_csr%FOUND
3332 THEN
3333 l_include_all_flag := 'Y';
3334 ELSE
3335 l_include_all_flag := 'N';
3336 END IF;
3337
3338 CLOSE include_all_csr;
3339
3340 --------------------------------------------------------
3341 -- identify the included currencies for each rule set --
3342 --------------------------------------------------------
3343 FOR incl_curr_rec
3344 IN incl_curr_csr
3345 (rule_set_rec.credit_usage_rule_set_id)
3346 LOOP
3347 l_incl_curr_list :=
3348 l_incl_curr_list || l_seperator || incl_curr_rec.user_code;
3349 END LOOP;
3350
3351 --------------------------------------------------------
3352 -- identify the excluded currencies for each rule set --
3353 --------------------------------------------------------
3354
3355 FOR excl_curr_rec
3356 IN excl_curr_csr
3357 (rule_set_rec.credit_usage_rule_set_id)
3358 LOOP
3359 l_excl_curr_list :=
3360 l_excl_curr_list || l_seperator || excl_curr_rec.user_code;
3361 l_exclude_flag := 'Y' ;
3362 END LOOP;
3363 END LOOP;
3364 ELSIF p_entity_type = 'CUSTOMER'
3365 THEN
3366 FOR rule_set_rec IN cust_rule_set_csr
3367 LOOP
3368 OPEN include_all_csr
3369 (rule_set_rec.credit_usage_rule_set_id);
3370
3371 FETCH include_all_csr
3372 INTO include_all_rec;
3373
3374 IF include_all_csr%FOUND
3375 THEN
3376 l_include_all_flag := 'Y';
3377 ELSE
3378 l_include_all_flag := 'N';
3379 END IF;
3380
3381 CLOSE include_all_csr;
3382
3383 --------------------------------------------------------
3384 -- identify the included currencies for each rule set --
3385 --------------------------------------------------------
3386 FOR incl_curr_rec
3387 IN incl_curr_csr
3388 (rule_set_rec.credit_usage_rule_set_id)
3389 LOOP
3390 l_incl_curr_list :=
3391 l_incl_curr_list || l_seperator || incl_curr_rec.user_code;
3392 END LOOP;
3393
3394 --------------------------------------------------------
3395 -- identify the excluded currencies for each rule set --
3396 --------------------------------------------------------
3397
3398 FOR excl_curr_rec
3399 IN excl_curr_csr
3400 (rule_set_rec.credit_usage_rule_set_id)
3401 LOOP
3402 l_excl_curr_list :=
3403 l_excl_curr_list || l_seperator || excl_curr_rec.user_code;
3404 l_exclude_flag := 'Y' ;
3405 END LOOP;
3406 END LOOP;
3407 -- End rule_set_rec
3408
3409 ELSE --- SITE level
3410 FOR rule_set_rec IN site_rule_set_csr
3411 LOOP
3412 OPEN include_all_csr
3413 (rule_set_rec.credit_usage_rule_set_id);
3414
3415 FETCH include_all_csr
3416 INTO include_all_rec;
3417
3418 IF include_all_csr%FOUND
3419 THEN
3420 l_include_all_flag := 'Y';
3421 ELSE
3422 l_include_all_flag := 'N';
3423 END IF;
3424 CLOSE include_all_csr;
3425
3426 --------------------------------------------------------
3427 -- identify the included currencies for each rule set --
3428 --------------------------------------------------------
3429 FOR incl_curr_rec
3430 IN incl_curr_csr
3431 (rule_set_rec.credit_usage_rule_set_id)
3432 LOOP
3433 l_incl_curr_list :=
3434 l_incl_curr_list || l_seperator || incl_curr_rec.user_code;
3435 END LOOP;
3436
3437 --------------------------------------------------------
3438 -- identify the excluded currencies for each rule set --
3439 --------------------------------------------------------
3440
3441 FOR excl_curr_rec
3442 IN excl_curr_csr
3443 (rule_set_rec.credit_usage_rule_set_id)
3444 LOOP
3445 l_excl_curr_list :=
3446 l_excl_curr_list || l_seperator || excl_curr_rec.user_code;
3447 l_exclude_flag := 'Y' ;
3448 END LOOP;
3449
3450 END LOOP;
3451 -- End rule_set_rec
3452 END IF;
3453 -- end entity type IF
3454
3455 ELSE
3456 -- Default limit = 'Y'
3457
3458 IF G_debug_flag = 'Y'
3459 THEN
3460 OE_DEBUG_PUB.ADD(' Into Default limit = Y ');
3461 END IF ;
3462
3463 FOR rule_set_rec IN dflt_rule_set_csr
3464 LOOP
3465 OPEN include_all_csr
3466 (rule_set_rec.credit_usage_rule_set_id);
3467
3468 FETCH include_all_csr
3469 INTO include_all_rec;
3470
3471 IF include_all_csr%FOUND
3472 THEN
3473 l_include_all_flag := 'Y';
3474 ELSE
3475 l_include_all_flag := 'N';
3476 END IF;
3477
3478 CLOSE include_all_csr;
3479
3480 --------------------------------------------------------
3481 -- identify the included currencies for each rule set --
3482 --------------------------------------------------------
3483
3484 FOR incl_curr_rec
3485 IN incl_curr_csr
3486 (rule_set_rec.credit_usage_rule_set_id)
3487 LOOP
3488 l_incl_curr_list :=
3489 l_incl_curr_list || l_seperator || incl_curr_rec.user_code;
3490 END LOOP;
3491
3492 --------------------------------------------------------
3493 -- identify the excluded currencies for each rule set --
3494 --------------------------------------------------------
3495
3496 FOR excl_curr_rec
3497 IN excl_curr_csr
3498 (rule_set_rec.credit_usage_rule_set_id)
3499 LOOP
3500 l_excl_curr_list :=
3501 l_excl_curr_list || l_seperator || excl_curr_rec.user_code;
3502 l_exclude_flag := 'Y' ;
3503 END LOOP;
3504 END LOOP;
3505 -- End dflt_rule_set_csr
3506 END IF;
3507 -- End default flag IF
3508
3509 OE_CREDIT_CHECK_UTIL.G_excl_curr_list := l_excl_curr_list ;
3510
3511 IF G_debug_flag = 'Y'
3512 THEN
3513 OE_DEBUG_PUB.ADD(' G_excl_curr_list => '||
3514 OE_CREDIT_CHECK_UTIL.G_excl_curr_list );
3515 END IF;
3516 -----------------------------------------------------------
3517 ---------------------------------------------
3518 -- identify all the transaction currencies
3519 -- This is required if we need to eliminate the
3520 -- currencies that were never used for any Orders
3521 -- or if Include all is set to Yes, as we need to
3522 -- find out NOCOPY the actual currencies
3523 ---------------------------------------------
3524
3525 -- p_suppress_unused_usages_flag is used in conjunction
3526 -- with the l_include_all_flag
3527 -- The purpose of this flag is to get the transaction curr
3528 -- list even if the INCLUDE_ALL currency is set to Y
3529 -- For pre-calculated exposure, the include all flag alone
3530 -- is enough. But for online exposure calc, the transaction curr
3531 -- list is crucial even if include all currency is set to Y
3532 -- The reason being, the exposure calculation must know
3533 -- what currencies actualy have transactions against to avoid
3534 -- scanning the order tables for all currencies
3535
3536 l_use_party_hierarchy := 'N' ;
3537 IF l_include_all_flag = 'Y' AND p_suppress_unused_usages_flag = 'Y'
3538 THEN
3539 IF p_entity_type = 'PARTY'
3540 THEN
3541 OPEN C_g_use_party_hierarchy ;
3542 FETCH C_g_use_party_hierarchy
3543 INTO l_use_party_hierarchy ;
3544 CLOSE C_g_use_party_hierarchy ;
3545
3546 IF l_use_party_hierarchy = 'Y'
3547 THEN
3548 FOR trx_curr_rec
3549 IN party_h_txn_cur
3550 LOOP
3551 l_trx_curr_list :=
3552 l_trx_curr_list || l_seperator || trx_curr_rec.user_code;
3553 END LOOP;
3554 ELSE
3555 FOR trx_curr_rec
3556 IN party_txn_cur
3557 LOOP
3558 l_trx_curr_list :=
3559 l_trx_curr_list || l_seperator || trx_curr_rec.user_code;
3560 END LOOP;
3561 END IF; --- global
3562 END IF;
3563
3564 IF p_entity_type = 'CUSTOMER'
3565 THEN
3566 IF p_global_exposure_flag = 'Y'
3567 THEN
3568 FOR trx_curr_rec
3569 IN trx_curr_csr_customer_global
3570 LOOP
3571 l_trx_curr_list :=
3572 l_trx_curr_list || l_seperator || trx_curr_rec.user_code;
3573 END LOOP;
3574 ELSE
3575 FOR trx_curr_rec
3576 IN trx_curr_csr_customer
3577 LOOP
3578 l_trx_curr_list :=
3579 l_trx_curr_list || l_seperator || trx_curr_rec.user_code;
3580 END LOOP;
3581 END IF; --- global
3582 END IF;
3583
3584 IF p_entity_type = 'SITE'
3585 THEN
3586 FOR trx_curr_rec
3587 IN trx_curr_csr_site
3588 LOOP
3589 l_trx_curr_list :=
3590 l_trx_curr_list || l_seperator || trx_curr_rec.user_code;
3591 END LOOP;
3592 END IF;
3593
3594 END IF;
3595 -- end l_include_all_flag, p_suppress IF
3596
3597
3598 ----------------- Start creating the usages curr table list ------
3599
3600 IF p_suppress_unused_usages_flag = 'Y'
3601 AND l_include_all_flag = 'Y'
3602 THEN
3603
3604 IF G_debug_flag = 'Y'
3605 THEN
3606 OE_DEBUG_PUB.ADD(' into suppress = Y ');
3607 END IF;
3608
3609 -------------------------------------------------------
3610 -- include only the intersection of incl currencies --
3611 -- and transaction currencies --
3612 -------------------------------------------------------
3613 l_start := 1;
3614 l_end := 1;
3615
3616 LOOP
3617 l_start := INSTRB (l_trx_curr_list,l_seperator,l_end,1);
3618 l_end := INSTRB (l_trx_curr_list,l_seperator,l_start+1,1);
3619
3620 IF NVL(l_start,0) = 0
3621 THEN
3622 -- List completed
3623 EXIT;
3624 END IF;
3625
3626 IF NVL(l_end,0) = 0
3627 THEN
3628 l_end := LENGTHB (l_trx_curr_list) + 1;
3629 END IF;
3630
3631 l_currency := SUBSTRB ( l_trx_curr_list
3632 , ( l_start + 1 )
3633 , ( l_end - l_start - 1 )
3634 );
3635 IF NVL(INSTRB (l_incl_curr_list,l_currency,1,1),0) <> 0
3636 AND NVL(INSTRB (l_excl_curr_list,l_currency,1,1),0) = 0
3637 THEN
3638 i := i + 1;
3639 x_usage_curr_tbl(i).usage_curr_code := l_currency;
3640
3641 IF l_currency = p_limit_curr_code
3642 THEN
3643 l_limit_flag := 'Y';
3644 END IF;
3645 END IF;
3646 END LOOP;
3647
3648 ELSE
3649 IF G_debug_flag = 'Y'
3650 THEN
3651 OE_DEBUG_PUB.ADD(' into suppress = N ');
3652 END IF;
3653
3654 -------------------------------------------------------
3655 -- first include all incl currencies (minus excl) --
3656 -------------------------------------------------------
3657 l_start := 1;
3658 l_end := 1;
3659
3660 LOOP
3661 l_start := INSTRB (l_incl_curr_list,l_seperator,l_end,1);
3662 l_end := INSTRB (l_incl_curr_list,l_seperator,l_start+1,1);
3663
3664 IF NVL(l_start,0) = 0
3665 THEN
3666 EXIT;
3667 END IF;
3668
3669 IF NVL(l_end,0) = 0
3670 THEN
3671 l_end := LENGTHB (l_incl_curr_list) + 1;
3672 END IF;
3673
3674 l_currency := SUBSTRB ( l_incl_curr_list
3675 , ( l_start + 1 )
3676 , ( l_end - l_start - 1 )
3677 );
3678
3679 IF NVL(INSTRB (l_excl_curr_list,l_currency,1,1),0) = 0
3680 THEN
3681 i := i + 1;
3682 x_usage_curr_tbl(i).usage_curr_code := l_currency;
3683
3684 IF l_currency = p_limit_curr_code
3685 THEN
3686 l_limit_flag := 'Y';
3687 END IF;
3688 END IF;
3689 END LOOP;
3690 END IF;
3691 -- end suppress flag IF
3692
3693 IF l_include_all_flag = 'Y'
3694 THEN
3695 --------------------------------------------------------------
3696 -- include all trx currencies that are not already included --
3697 --------------------------------------------------------------
3698 l_start := 1;
3699 l_end := 1;
3700
3701 LOOP
3702 l_start := INSTRB (l_trx_curr_list,l_seperator,l_end,1);
3703 l_end := INSTRB ( l_trx_curr_list ,l_seperator,l_start+1,1);
3704
3705 IF NVL(l_start,0) = 0
3706 THEN
3707 EXIT;
3708 END IF;
3709
3710 IF NVL(l_end,0) = 0
3711 THEN
3712 l_end := LENGTHB (l_trx_curr_list) + 1;
3713 END IF;
3714
3715 l_currency := SUBSTRB ( l_trx_curr_list
3716 , ( l_start + 1 )
3717 , ( l_end - l_start - 1 )
3718 );
3719 IF NVL(INSTRB (l_incl_curr_list,l_currency,1,1),0) = 0
3720 AND NVL(INSTRB (l_excl_curr_list,l_currency,1,1),0) = 0
3721 THEN
3722 i := i + 1;
3723 x_usage_curr_tbl(i).usage_curr_code := l_currency;
3724
3725 IF l_currency = p_limit_curr_code
3726 THEN
3727 l_limit_flag := 'Y';
3728 END IF;
3729 END IF;
3730 END LOOP;
3731
3732 END IF;
3733 -- end l_include_all_flag IF
3734
3735 -------------------------------------
3736 -- if the limit currency code is --
3737 -- not already included, do it now --
3738 -------------------------------------
3739 IF l_limit_flag = 'N'
3740 THEN
3741 i := NVL(i,0) + 1;
3742 x_usage_curr_tbl(i).usage_curr_code := p_limit_curr_code;
3743 END IF;
3744
3745 IF l_exclude_flag = 'Y'
3746 THEN
3747 IF p_suppress_unused_usages_flag = 'Y' THEN
3748 l_include_all_flag := 'N' ;
3749 END IF;
3750 END IF;
3751
3752 x_include_all_flag := l_include_all_flag;
3753
3754 IF G_debug_flag = 'Y'
3755 THEN
3756 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT get_usages ');
3757 END IF;
3758
3759 EXCEPTION
3760 WHEN OTHERS THEN
3761 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
3762
3763 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3764 THEN
3765 FND_MSG_PUB.Add_Exc_Msg
3766 ( G_PKG_NAME
3767 , 'get_usages'
3768 );
3769 END IF;
3770 RAISE;
3771
3772 END get_usages ;
3773
3774
3775 -----------------------------------------------------------------------------
3776 -- PROCEDURE: GET_System_parameters PUBLIC
3777 -- COMMENT : Returns the OE system parameter info for the current org
3778 -- MODIFICATION:
3779 -- 02/12/2002 vto Added NVL on org_id to handle multi-org/non multi-org setup
3780 ------------------------------------------------------------------------------
3781 PROCEDURE GET_System_parameters
3782 ( x_system_parameter_rec OUT NOCOPY
3783 OE_CREDIT_CHECK_UTIL.OE_systems_param_rec_type
3784 )
3785 IS
3786 BEGIN
3787 IF G_debug_flag = 'Y'
3788 THEN
3789 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_System_parameters');
3790 END IF;
3791
3792 -- BEGIN /* MOAC CREDIT CHECK CHANGE */
3793 -- Start Sys Param Change
3794 /*
3795 SELECT
3796 org_id
3797 , master_organization_id
3798 , customer_relationships_flag
3799 INTO
3800 x_system_parameter_rec.org_id
3801 , x_system_parameter_rec.master_organization_id
3802 , x_system_parameter_rec.customer_relationships_flag
3803 FROM
3804 OE_system_parameters_all
3805 WHERE NVL(org_id,-99) = G_ORG_ID;
3806 */
3807
3808 /* Start MOAC CREDIT CHECK CHANGE */
3809 /*
3810 x_system_parameter_rec.org_id := G_ORG_ID;
3811 x_system_parameter_rec.master_organization_id
3812 := oe_sys_parameters.value('MASTER_ORGANIZATION_ID', G_ORG_ID);
3813 x_system_parameter_rec.customer_relationships_flag
3814 :=oe_sys_parameters.value('CUSTOMER_RELATIONSHIPS_FLAG', G_ORG_ID);
3815 -- End Sys Param Change
3816
3817 EXCEPTION
3818 WHEN NO_DATA_FOUND
3819 THEN
3820 x_system_parameter_rec := NULL ;
3821 OE_DEBUG_PUB.ADD(' Exception Get Syetem parameters');
3822 END ;
3823 */
3824 /* End MOAC CREDIT CHECK CHANGE */
3825
3826 IF G_debug_flag = 'Y'
3827 THEN
3828 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT GET_System_parameters');
3829 END IF;
3830 EXCEPTION
3831 WHEN OTHERS THEN
3832 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
3833
3834 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3835 THEN
3836 FND_MSG_PUB.Add_Exc_Msg
3837 ( G_PKG_NAME
3838 , 'GET_System_parameters'
3839 );
3840 END IF;
3841 RAISE;
3842
3843 END GET_System_parameters ;
3844
3845 ---------------------------------------------------------------------------
3846 --PROCEDURE: Get_Credit_Check_Rule_ID
3847 --COMMENT: Returns the credit check rule id attached with
3848 -- the order trn type
3849 ---------------------------------------------------------------------------
3850 PROCEDURE Get_Credit_Check_Rule_ID
3851 ( p_calling_action IN VARCHAR2
3852 , p_order_type_id IN OE_ORDER_HEADERS.order_type_id%TYPE
3853 , x_credit_rule_id OUT NOCOPY
3854 OE_Credit_check_rules.credit_check_rule_id%TYPE
3855 )
3856 IS
3857 BEGIN
3858 IF G_debug_flag = 'Y'
3859 THEN
3860 OE_DEBUG_PUB.ADD('OEXUCRCB: In Get_Credit_Check_Rule_ID ');
3861 OE_DEBUG_PUB.ADD('p_order_type_id = '|| p_order_type_id );
3862 OE_DEBUG_PUB.ADD('p_calling_action = '|| p_calling_action );
3863 END IF;
3864
3865 x_credit_rule_id := NULL ;
3866
3867 IF p_calling_action in ('BOOKING','BOOKING_INLINE','AUTO','UPDATE')
3868 THEN
3869 IF G_debug_flag = 'Y'
3870 THEN
3871 OE_DEBUG_PUB.ADD('Selecting the order entry credit check rule');
3872 END IF;
3873 /*7194250
3874 SELECT ENTRY_CREDIT_CHECK_RULE_ID
3875 INTO x_credit_rule_id
3876 FROM OE_ORDER_TYPES_V
3877 WHERE ORDER_TYPE_ID = p_order_type_id;
3878 7194250*/
3879 --7194250
3880 SELECT NVL(ENTRY_CREDIT_CHECK_RULE_ID, -1)
3881 INTO x_credit_rule_id
3882 FROM OE_ORDER_TYPES_V OT,OE_CREDIT_CHECK_RULES CCR
3883 WHERE OT.ORDER_TYPE_ID = p_order_type_id
3884 AND ENTRY_CREDIT_CHECK_RULE_ID=CCR.CREDIT_CHECK_RULE_ID
3885 AND Trunc(SYSDATE) BETWEEN NVL(CCR.START_DATE_ACTIVE, Trunc(SYSDATE)) AND NVL(CCR.END_DATE_ACTIVE, Trunc(SYSDATE));
3886 --7194250
3887
3888 OE_Verify_Payment_PUB.G_credit_check_rule := 'Ordering'; --ER#7479609
3889
3890 ELSIF p_calling_action = 'SHIPPING'
3891 THEN
3892 IF G_debug_flag = 'Y'
3893 THEN
3894 OE_DEBUG_PUB.Add('Selecting the shipping credit check rule');
3895 END IF;
3896
3897 /*7194250
3898 SELECT SHIPPING_CREDIT_CHECK_RULE_ID
3899 INTO x_credit_rule_id
3900 FROM OE_ORDER_TYPES_V
3901 WHERE ORDER_TYPE_ID = p_order_type_id;
3902 7194250*/
3903 --7194250
3904 SELECT NVL(SHIPPING_CREDIT_CHECK_RULE_ID, -1)
3905 INTO x_credit_rule_id
3906 FROM OE_ORDER_TYPES_V OT,OE_CREDIT_CHECK_RULES CCR
3907 WHERE OT.ORDER_TYPE_ID = p_order_type_id
3908 AND SHIPPING_CREDIT_CHECK_RULE_ID=CCR.CREDIT_CHECK_RULE_ID
3909 AND Trunc(SYSDATE) BETWEEN NVL(CCR.START_DATE_ACTIVE, Trunc(SYSDATE)) AND NVL(CCR.END_DATE_ACTIVE, Trunc(SYSDATE));
3910 --7194250
3911
3912 OE_Verify_Payment_PUB.G_credit_check_rule := 'Shipping'; --ER#7479609
3913
3914 ELSIF p_calling_action = 'PICKING'
3915 THEN
3916
3917 IF G_debug_flag = 'Y'
3918 THEN
3919 OE_DEBUG_PUB.Add('Selecting the picking credit check rule');
3920 END IF;
3921
3922 /*7194250
3923 SELECT PICKING_CREDIT_CHECK_RULE_ID
3924 INTO x_credit_rule_id
3925 FROM OE_ORDER_TYPES_V
3926 WHERE ORDER_TYPE_ID = p_order_type_id;
3927 7194250*/
3928 --7194250
3929 SELECT NVL(PICKING_CREDIT_CHECK_RULE_ID, -1)
3930 INTO x_credit_rule_id
3931 FROM OE_ORDER_TYPES_V OT,OE_CREDIT_CHECK_RULES CCR
3932 WHERE OT.ORDER_TYPE_ID = p_order_type_id
3933 AND PICKING_CREDIT_CHECK_RULE_ID=CCR.CREDIT_CHECK_RULE_ID
3934 AND Trunc(SYSDATE) BETWEEN NVL(CCR.START_DATE_ACTIVE, Trunc(SYSDATE)) AND NVL(CCR.END_DATE_ACTIVE, Trunc(SYSDATE));
3935 --7194250
3936
3937 OE_Verify_Payment_PUB.G_credit_check_rule := 'Picking/Purchase Release'; --ER#7479609
3938
3939 ELSIF p_calling_action = 'PACKING'
3940 THEN
3941 IF G_debug_flag = 'Y'
3942 THEN
3943 OE_DEBUG_PUB.Add('Selecting the packing credit check rule');
3944 END IF;
3945
3946 /*7194250
3947 SELECT PACKING_CREDIT_CHECK_RULE_ID
3948 INTO x_credit_rule_id
3949 FROM OE_ORDER_TYPES_V
3950 WHERE ORDER_TYPE_ID = p_order_type_id;
3951 7194250*/
3952 --7194250
3953 SELECT NVL(PACKING_CREDIT_CHECK_RULE_ID, -1)
3954 INTO x_credit_rule_id
3955 FROM OE_ORDER_TYPES_V OT,OE_CREDIT_CHECK_RULES CCR
3956 WHERE OT.ORDER_TYPE_ID = p_order_type_id
3957 AND PACKING_CREDIT_CHECK_RULE_ID=CCR.CREDIT_CHECK_RULE_ID
3958 AND Trunc(SYSDATE) BETWEEN NVL(CCR.START_DATE_ACTIVE, Trunc(SYSDATE)) AND NVL(CCR.END_DATE_ACTIVE, Trunc(SYSDATE));
3959 --7194250
3960 END IF;
3961 OE_Verify_Payment_PUB.G_credit_check_rule := 'Packing'; --ER#7479609
3962
3963 IF G_debug_flag = 'Y'
3964 THEN
3965
3966 OE_DEBUG_PUB.ADD('OEXUCRCB: Credit Check Rule ID: '
3967 ||TO_CHAR(x_credit_rule_id) );
3968
3969 OE_DEBUG_PUB.ADD('OEXUCRCB: Out NOCOPY Get_Credit_Check_Rule_ID');
3970 END IF;
3971
3972
3973 EXCEPTION
3974 WHEN NO_DATA_FOUND
3975 THEN
3976 x_credit_rule_id := NULL ;
3977 OE_DEBUG_PUB.ADD('EXCEPTION:No credit check rule found');
3978 WHEN OTHERS THEN
3979 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3980 OE_MSG_PUB.Add_Exc_Msg
3981 ( G_PKG_NAME
3982 , 'Get_Credit_Check_Rule_ID'
3983 );
3984 END IF;
3985 RAISE ;
3986 END Get_Credit_Check_Rule_ID ;
3987
3988
3989
3990 -----------------------------------------------------------------------------
3991 -- FUNCTION : GET_credit_check_level
3992 -- COMMENT : Returns ORDER or LINE
3993 -- BUG 2114156
3994 ------------------------------------------------------------------------------
3995 FUNCTION GET_credit_check_level
3996 ( p_calling_action IN VARCHAR2
3997 , p_order_type_id IN NUMBER
3998 ) RETURN VARCHAR2
3999 IS
4000
4001 l_level VARCHAR2(30);
4002 l_credit_check_rule_id NUMBER;
4003 l_credit_check_rule_rec
4004 OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type ;
4005
4006 BEGIN
4007 IF G_debug_flag = 'Y'
4008 THEN
4009 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_credit_check_level ');
4010 OE_DEBUG_PUB.ADD('p_calling_action = '|| p_calling_action );
4011 OE_DEBUG_PUB.ADD('p_order_type_id = '|| p_order_type_id );
4012 END IF;
4013
4014 l_level := NULL ;
4015 l_credit_check_rule_id := NULL ;
4016
4017 IF G_debug_flag = 'Y'
4018 THEN
4019 OE_DEBUG_PUB.ADD(' Calling Get_Credit_Check_Rule_ID ');
4020 END IF;
4021
4022 OE_Credit_CHECK_UTIL.Get_Credit_Check_Rule_ID
4023 ( p_calling_action => p_calling_action
4024 , p_order_type_id => p_order_type_id
4025 , x_credit_rule_id => l_credit_check_rule_id
4026 );
4027
4028 IF G_debug_flag = 'Y'
4029 THEN
4030 OE_DEBUG_PUB.ADD(' out NOCOPY l_credit_check_rule_id = '||
4031 l_credit_check_rule_id );
4032 END IF;
4033
4034 IF l_credit_check_rule_id is NULL
4035 THEN
4036 IF G_debug_flag = 'Y'
4037 THEN
4038 OE_DEBUG_PUB.ADD(' No credit check attached ');
4039 END IF;
4040
4041 l_level := NULL ;
4042
4043 ELSE
4044
4045 IF G_debug_flag = 'Y'
4046 THEN
4047 OE_DEBUG_PUB.ADD('OEXUCRCB: Call GET_credit_check_rule ');
4048 END IF;
4049
4050 OE_CREDIT_CHECK_UTIL.GET_credit_check_rule
4051 ( p_credit_check_rule_id => l_credit_check_rule_id
4052 , x_credit_check_rules_rec => l_credit_check_rule_rec
4053 );
4054
4055 IF G_debug_flag = 'Y'
4056 THEN
4057 OE_DEBUG_PUB.ADD('credit_check_level_code = '||
4058 l_credit_check_rule_rec.credit_check_level_code );
4059 END IF;
4060
4061 l_level := l_credit_check_rule_rec.credit_check_level_code ;
4062
4063 END IF;
4064
4065 IF G_debug_flag = 'Y'
4066 THEN
4067 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_credit_check_level ' || l_level);
4068 END IF;
4069
4070 RETURN( l_level ) ;
4071
4072 EXCEPTION
4073 WHEN OTHERS THEN
4074 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
4075
4076 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4077 THEN
4078 FND_MSG_PUB.Add_Exc_Msg
4079 ( G_PKG_NAME
4080 , 'GET_credit_check_level'
4081 );
4082 END IF;
4083 RAISE;
4084
4085 END GET_credit_check_level ;
4086
4087 -----------------------------------------------------------------------------
4088 -- PROCEDURE: GET_credit_check_rule PUBLIC
4089 -- COMMENT : Returns the OE credit check rules info for the current org
4090 --
4091 ------------------------------------------------------------------------------
4092 PROCEDURE GET_credit_check_rule
4093 ( p_header_id IN NUMBER := NULL
4094 , p_credit_check_rule_id IN NUMBER
4095 , x_credit_check_rules_rec OUT NOCOPY
4096 OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type
4097 )
4098 IS
4099
4100 BEGIN
4101
4102 IF G_debug_flag = 'Y'
4103 THEN
4104 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_credit_check_rule ' );
4105 END IF;
4106
4107 BEGIN
4108 IF G_debug_flag = 'Y'
4109 THEN
4110 OE_DEBUG_PUB.ADD(' Select for ID ' || p_credit_check_rule_id );
4111 END IF;
4112
4113
4114 SELECT
4115 credit_check_rule_id
4116 , name
4117 , failure_result_code
4118 , open_ar_balance_flag
4119 , uninvoiced_orders_flag
4120 , orders_on_hold_flag
4121 , shipping_interval
4122 , open_ar_days
4123 , start_date_active
4124 , end_date_active
4125 , include_payments_at_risk_flag
4126 , NVL(include_tax_flag,'N')
4127 , maximum_days_past_due
4128 , NVL(QUICK_CR_CHECK_FLAG,'N')
4129 , NVL(incl_freight_charges_flag,'N')
4130 , DECODE( shipping_interval, NULL,
4131 TO_DATE('31/12/4712','DD/MM/YYYY'), shipping_interval + SYSDATE
4132 )
4133 , NVL(credit_check_level_code,'ORDER')
4134 , NVL(credit_hold_level_code,'ORDER')
4135 , conversion_type
4136 , NVL(check_item_categories_flag,'N')
4137 , NVL(send_hold_notifications_flag,'N')
4138 , days_honor_manual_release
4139 , NVL(include_external_exposure_flag, 'N')
4140 , NVL(include_returns_flag, 'N')
4141 --ER 12363706 start
4142 , Tolerance_Percentage
4143 , Tolerance_Curr_Code
4144 , Tolerance_Amount
4145 --ER 12363706 end
4146 INTO x_credit_check_rules_rec.credit_check_rule_id
4147 , x_credit_check_rules_rec.name
4148 , x_credit_check_rules_rec.failure_result_code
4149 , x_credit_check_rules_rec.open_ar_balance_flag
4150 , x_credit_check_rules_rec.uninvoiced_orders_flag
4151 , x_credit_check_rules_rec.orders_on_hold_flag
4152 , x_credit_check_rules_rec.shipping_interval
4153 , x_credit_check_rules_rec.open_ar_days
4154 , x_credit_check_rules_rec.start_date_active
4155 , x_credit_check_rules_rec.end_date_active
4156 , x_credit_check_rules_rec.include_payments_at_risk_flag
4157 , x_credit_check_rules_rec.include_tax_flag
4158 , x_credit_check_rules_rec.maximum_days_past_due
4159 , x_credit_check_rules_rec.QUICK_CR_CHECK_FLAG
4160 , x_credit_check_rules_rec.incl_freight_charges_flag
4161 , x_credit_check_rules_rec.shipping_horizon
4162 , x_credit_check_rules_rec.credit_check_level_code
4163 , x_credit_check_rules_rec.credit_hold_level_code
4164 , x_credit_check_rules_rec.conversion_type
4165 , x_credit_check_rules_rec.check_item_categories_flag
4166 , x_credit_check_rules_rec.send_hold_notifications_flag
4167 , x_credit_check_rules_rec.days_honor_manual_release
4168 , x_credit_check_rules_rec.include_external_exposure_flag
4169 , x_credit_check_rules_rec.include_returns_flag
4170 --ER 12363706 start
4171 , x_credit_check_rules_rec.Tolerance_Percentage
4172 , x_credit_check_rules_rec.Tolerance_Curr_Code
4173 , x_credit_check_rules_rec.Tolerance_Amount
4174 --ER 12363706 end
4175 FROM
4176 OE_Credit_Check_rules
4177 WHERE credit_check_rule_id = p_credit_check_rule_id ;
4178
4179 --bug 5031301
4180 /*The Include Open Recaivables cursors which we use includes payments at risk also.
4181 This will make the cursors behave as follows:
4182 If open_ar_balance_flag = 'Y' AND include_risk_flag ='Y' then
4183 Just consider AR balance, as it already includes payments at risk.
4184 Ignore payments at risk cursor value
4185 Else if open_ar_balance_flag = 'Y' AND include_risk_flag ='N' then
4186 Consider both AR balance and payments at risk, so that it nullifies the effect.
4187 As such we are not considering payments at risk.
4188 Else (both are 'N')
4189 Do Nothing.
4190 End if*/
4191 IF x_credit_check_rules_rec.open_ar_balance_flag ='Y'
4192 AND x_credit_check_rules_rec.include_payments_at_risk_flag = 'Y'
4193 THEN
4194 x_credit_check_rules_rec.include_payments_at_risk_flag := 'N';
4195 ELSIF x_credit_check_rules_rec.open_ar_balance_flag ='Y'
4196 AND x_credit_check_rules_rec.include_payments_at_risk_flag = 'N'
4197 THEN
4198 x_credit_check_rules_rec.include_payments_at_risk_flag := 'Y';
4199 END IF;
4200
4201 EXCEPTION
4202 WHEN NO_DATA_FOUND
4203 THEN
4204 x_credit_check_rules_rec := NULL ;
4205 OE_DEBUG_PUB.ADD(' Get credit check rule No_Data_Found exception ' );
4206
4207 WHEN TOO_MANY_ROWS
4208 THEN
4209 x_credit_check_rules_rec := NULL ;
4210 OE_DEBUG_PUB.ADD(' Get credit check rule TOO_MANY_ROWS ');
4211 END ;
4212
4213 IF G_debug_flag = 'Y'
4214 THEN
4215 OE_DEBUG_PUB.ADD(' conversion_type = '
4216 || x_credit_check_rules_rec.conversion_type );
4217 END IF;
4218
4219 BEGIN
4220 IF NVL(x_credit_check_rules_rec.conversion_type,'Corporate')
4221 NOT IN ('Corporate','User')
4222 THEN
4223 BEGIN
4224 IF G_debug_flag = 'Y'
4225 THEN
4226 OE_DEBUG_PUB.ADD(' Select user_conversion_type ');
4227 END IF;
4228
4229 SELECT
4230 user_conversion_type
4231 INTO
4232 x_credit_check_rules_rec.user_conversion_type
4233 FROM
4234 GL_DAILY_CONVERSION_TYPES
4235 WHERE conversion_type = x_credit_check_rules_rec.conversion_type ;
4236
4237 EXCEPTION
4238
4239 WHEN NO_DATA_FOUND
4240 THEN
4241 x_credit_check_rules_rec.user_conversion_type :=
4242 x_credit_check_rules_rec.conversion_type ;
4243 OE_DEBUG_PUB.ADD(' conversion type NO_DATA_FOUND ');
4244
4245 WHEN TOO_MANY_ROWS
4246 THEN
4247 x_credit_check_rules_rec.user_conversion_type :=
4248 x_credit_check_rules_rec.conversion_type ;
4249 OE_DEBUG_PUB.ADD(' conversion type TOO_MANY_ROWS ');
4250 END ;
4251
4252 ELSE
4253 IF G_debug_flag = 'Y'
4254 THEN
4255 OE_DEBUG_PUB.ADD(' No need for selct user_conversion_type ');
4256 END IF;
4257
4258 x_credit_check_rules_rec.user_conversion_type :=
4259 x_credit_check_rules_rec.conversion_type ;
4260 END IF;
4261
4262
4263 END ;
4264
4265 IF G_debug_flag = 'Y'
4266 THEN
4267 OE_DEBUG_PUB.ADD('Conversion type = '
4268 || x_credit_check_rules_rec.conversion_type );
4269
4270 OE_DEBUG_PUB.ADD('User Conversion type = '
4271 || x_credit_check_rules_rec.user_conversion_type );
4272
4273 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_credit_check_rule ' );
4274 END IF;
4275
4276 EXCEPTION
4277 WHEN OTHERS THEN
4278 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
4279
4280 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4281 THEN
4282 FND_MSG_PUB.Add_Exc_Msg
4283 ( G_PKG_NAME
4284 , 'GET_credit_check_rule'
4285 );
4286 END IF;
4287 RAISE;
4288
4289 END GET_credit_check_rule ;
4290
4291 -----------------------------------------------------------------------------
4292 -- PROCEDURE : Rounded_Amount PUBLIC
4293 -- COMMENT : Returns rounded amount
4294 -- BUG 4320650
4295 ---------------------------------------------------------------------------
4296
4297 PROCEDURE Rounded_Amount
4298 ( p_currency_code IN VARCHAR2
4299 , p_unrounded_amount IN NUMBER
4300 , x_rounded_amount OUT NOCOPY NUMBER
4301 )
4302 IS
4303 l_precision NUMBER;
4304 l_ext_precision NUMBER;
4305 l_min_acct_unit NUMBER;
4306 --
4307 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4308 --
4309 BEGIN
4310
4311 IF l_debug_level > 0 THEN
4312 oe_debug_pub.add( 'OEXUCRCB: IN ROUNDED_AMOUNT ( ) WITH AMOUNT : ' ||P_UNROUNDED_AMOUNT , 5 ) ;
4313 END IF;
4314 FND_CURRENCY.GET_INFO(Currency_Code => p_currency_code,
4315 precision => l_precision,
4316 ext_precision => l_ext_precision,
4317 min_acct_unit => l_min_acct_unit);
4318
4319 IF (l_min_acct_unit = 0 OR l_min_acct_unit IS NULL) THEN
4320 x_rounded_amount := ROUND(p_unrounded_amount, l_precision);
4321 ELSE
4322 x_rounded_amount := ROUND(p_unrounded_amount/l_min_acct_unit)*l_min_acct_unit;
4323 END IF;
4324 IF l_debug_level > 0 THEN
4325 oe_debug_pub.add( 'OEXUCRCB: OUT ROUNDED AMOUNT ( ) WITH AMOUNT : '||X_ROUNDED_AMOUNT , 5 ) ;
4326 END IF;
4327 END Rounded_Amount;
4328 --ER 12363706 start
4329 --------------------------------------------------------------------------------------------
4330 -- Procedure Update_Released_Amount
4331 -- This procedure is added to update the OCM released amount in OE_HOLD_RELEASES table
4332 -- that will be used for Tolerance Check.
4333 --------------------------------------------------------------------------------------------
4334 PROCEDURE Update_Released_Amount(
4335 p_header_id NUMBER,
4336 p_hold_release_id NUMBER)
4337 IS
4338 l_credit_check_rule_id NUMBER;
4339 l_credit_check_rule_rec OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type ;
4340 l_header_rec OE_Order_PUB.Header_Rec_Type;
4341 l_released_amount NUMBER;
4342 l_calling_action VARCHAR2(30);
4343 l_conversion_status OE_CREDIT_CHECK_UTIL.CURR_TBL_TYPE;
4344 l_return_status VARCHAR2(30);
4345 BEGIN
4346 IF G_debug_flag = 'Y' THEN
4347 oe_debug_pub.add('Starting Update_Released_Amount');
4348 oe_debug_pub.add('Header ID:'||p_header_id);
4349 oe_debug_pub.add('Hold Release ID:'||p_hold_release_id);
4350 END IF;
4351 l_calling_action := OE_Verify_Payment_PUB.Which_Rule(p_header_id => p_header_id);
4352 oe_debug_pub.add('slagiset: l_calling_action ' || l_calling_action);
4353 OE_HEADER_UTIL.QUERY_ROW ( p_header_id => p_header_id, x_header_rec => l_header_rec);
4354 OE_CREDIT_CHECK_UTIL.Get_Credit_Check_Rule_ID ( p_calling_action => l_calling_action , p_order_type_id => l_header_rec.order_type_id , x_credit_rule_id => l_credit_check_rule_id );
4355 oe_debug_pub.add('slagiset: l_credit_check_rule_id ' || l_credit_check_rule_id);
4356
4357 OE_CREDIT_CHECK_UTIL.GET_credit_check_rule ( p_header_id => p_header_id ,
4358 p_credit_check_rule_id => l_credit_check_rule_id ,
4359 x_credit_check_rules_rec => l_credit_check_rule_rec );
4360
4361 l_credit_check_rule_rec.credit_check_level_code := 'ORDER';
4362
4363 OE_CREDIT_CHECK_UTIL.GET_transaction_amount ( p_header_id => p_header_id ,
4364 p_transaction_curr_code => l_header_rec.transactional_curr_code ,
4365 p_credit_check_rule_rec => l_credit_check_rule_rec ,
4366 p_system_parameter_rec => NULL ,
4367 p_customer_id => NULL ,
4368 p_site_use_id => NULL ,
4369 p_limit_curr_code => l_header_rec.transactional_curr_code ,
4370 p_all_lines => 'Y' ,
4371 x_amount => l_released_amount ,
4372 x_conversion_status => l_conversion_status ,
4373 x_return_status => l_return_status );
4374 oe_debug_pub.add('slagiset: l_released_amount ' || l_released_amount);
4375 oe_debug_pub.add('slagiset: l_return_status ' || l_return_status);
4376 UPDATE OE_HOLD_RELEASES
4377 SET Released_Order_Amount=l_released_amount,
4378 Released_Curr_code =l_header_rec.transactional_curr_code
4379 WHERE hold_release_id =p_hold_release_id;
4380 IF G_debug_flag = 'Y' THEN
4381 oe_debug_pub.add('Ending Update_Released_Amount');
4382 END IF;
4383 EXCEPTION
4384 WHEN OTHERS THEN
4385 IF G_debug_flag = 'Y' THEN
4386 oe_debug_pub.add('Error in Update_Released_Amount:'||SUBSTR(SQLERRM,1,250));
4387 END IF;
4388 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4389 END Update_Released_Amount;
4390
4391 --------------------------------------------------------------------------------------------
4392 -- Procedure Update_Credit_Profile_Level
4393 -- This procedure is added to update the Credit Profile Lvel in OE_ORDER_HOLDS_ALL table
4394 -- that will be used to decide if the Bill to Change should trigger Credit Checing or not.
4395 --------------------------------------------------------------------------------------------
4396 PROCEDURE Update_Credit_Profile_Level(
4397 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type)
4398 IS
4399 l_hold_source_id NUMBER;
4400 BEGIN
4401 IF G_debug_flag = 'Y' THEN
4402 oe_debug_pub.add('Starting Update_Credit_Profile_Level');
4403 oe_debug_pub.add('OEXUCRCB: OE_Credit_Engine_GRP.G_Credit_Profile_Level ' || OE_Credit_Engine_GRP.G_Credit_Profile_Level);
4404 END IF;
4405
4406 IF p_hold_source_rec.hold_source_id IS NOT NULL
4407 THEN
4408 l_hold_source_id := p_hold_source_rec.hold_source_id;
4409 IF G_debug_flag = 'Y' THEN
4410 oe_debug_pub.add('OEXUCRCB: Hold Source Id is passed: '||p_hold_source_rec.hold_source_id);
4411 END IF;
4412
4413 ELSIF p_hold_source_rec.HOLD_ENTITY_CODE is NOT NULL AND
4414 p_hold_source_rec.HOLD_ENTITY_ID is NOT NULL
4415 THEN
4416 IF G_debug_flag = 'Y' THEN
4417 oe_debug_pub.add('OEXUCRCB: Retrieving Hold Source Id');
4418 END IF;
4419
4420 BEGIN
4421 IF p_hold_source_rec.line_id IS NOT NULL THEN
4422 SELECT hold_source_id
4423 INTO l_hold_source_id
4424 FROM OE_HOLD_SOURCES_ALL HS
4425 WHERE HOLD_ENTITY_CODE = p_hold_source_rec.HOLD_ENTITY_CODE
4426 AND HOLD_ENTITY_ID = p_hold_source_rec.HOLD_ENTITY_ID
4427 AND HOLD_ID = p_hold_source_rec.hold_id
4428 AND RELEASED_FLAG = 'N'
4429 AND NVL(HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE
4430 AND exists (SELECT 'x'
4431 FROM OE_ORDER_HOLDS OH
4432 WHERE OH.LINE_ID = p_hold_source_rec.line_id
4433 AND OH.HOLD_SOURCE_ID = HS.HOLD_SOURCE_ID);
4434 ELSE
4435 SELECT hold_source_id
4436 INTO l_hold_source_id
4437 FROM OE_HOLD_SOURCES_ALL
4438 WHERE HOLD_ENTITY_CODE = p_hold_source_rec.HOLD_ENTITY_CODE
4439 AND HOLD_ENTITY_ID = p_hold_source_rec.HOLD_ENTITY_ID
4440 AND HOLD_ID = p_hold_source_rec.hold_id
4441 AND RELEASED_FLAG = 'N'
4442 AND NVL(HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE;
4443 END IF;
4444 EXCEPTION
4445 WHEN OTHERS THEN
4446 oe_debug_pub.ADD('OEXUCRCB: Exception raised!');
4447 -- RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4448
4449 END;
4450 IF G_debug_flag = 'Y' THEN
4451 oe_debug_pub.add('OEXUCRCB: Retrieved Hold Source Id: '|| l_hold_source_id);
4452 END IF;
4453 END IF;
4454
4455 UPDATE OE_ORDER_HOLDS_ALL
4456 SET Credit_Profile_Level=OE_Credit_Engine_GRP.G_Credit_Profile_Level,
4457 Last_Update_Date = SYSDATE,
4458 Last_Updated_By = FND_GLOBAL.user_id
4459 WHERE hold_source_id = l_hold_source_id;
4460
4461 IF G_debug_flag = 'Y' THEN
4462 oe_debug_pub.add('OEXUCRCB: Ending Update_Credit_Profile_Level');
4463 END IF;
4464
4465 EXCEPTION
4466 WHEN OTHERS THEN
4467 IF G_debug_flag = 'Y' THEN
4468 oe_debug_pub.add('Error in Update_Credit_Profile_Level:'||SUBSTR(SQLERRM,1,250));
4469 END IF;
4470 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4471 END Update_Credit_Profile_Level;
4472 --ER 12363706 end
4473
4474 -----------------------------------------------------------------------------
4475 -- PROCEDURE: GET_transaction_amount PUBLIC
4476 -- COMMENT : Returns the transaction amount for a given order. If the
4477 -- p_site_use_id IS null, the entire order is considered
4478 -- x_conversion_status provides any currency conversion
4479 -- error.
4480 -- BUG 2056412 Freights include
4481 -- BUG 4320650 Rounded the transaction amount
4482 ------------------------------------------------------------------------------
4483 PROCEDURE GET_transaction_amount
4484 ( p_header_id IN NUMBER
4485 , p_transaction_curr_code IN VARCHAR2
4486 , p_credit_check_rule_rec IN
4487 OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type
4488 , p_system_parameter_rec IN
4489 OE_CREDIT_CHECK_UTIL.OE_systems_param_rec_type
4490 , p_customer_id IN NUMBER
4491 , p_site_use_id IN NUMBER
4492 , p_limit_curr_code IN VARCHAR2
4493 , p_all_lines IN VARCHAR2 := 'N' --ER 12363706
4494 , x_amount OUT NOCOPY NUMBER
4495 , x_conversion_status OUT NOCOPY OE_CREDIT_CHECK_UTIL.CURR_TBL_TYPE
4496 , x_return_status OUT NOCOPY VARCHAR2
4497 )
4498 IS
4499
4500 l_order_value NUMBER := 0;
4501 L_LIMIT_ORDER_VALUE NUMBER := 0;
4502 l_commitment NUMBER := 0;
4503 l_freights NUMBER := 0;
4504 l_freights_hdr_1 NUMBER := 0;
4505 l_freights_hdr_2 NUMBER := 0;
4506 l_prepayment NUMBER := 0;
4507
4508 BEGIN
4509
4510 IF G_debug_flag = 'Y'
4511 THEN
4512 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_transaction_amount for '
4513 || p_header_id );
4514 END IF;
4515
4516 -- For line level, if it is customer level credit check
4517 -- all the lines belonging to the sites owned by the
4518 -- customer in the order needs to be considered as per the RDD
4519
4520 -- Bug 2328351 check for line ctg code as well
4521
4522 x_return_status := FND_API.G_RET_STS_SUCCESS;
4523
4524 OE_CREDIT_CHECK_UTIL.g_current_order_value := NULL ;
4525
4526 IF p_credit_check_rule_rec.credit_check_level_code = 'LINE'
4527 THEN
4528 IF G_debug_flag = 'Y'
4529 THEN
4530 OE_DEBUG_PUB.ADD('In Line level ');
4531 END IF;
4532
4533 IF p_customer_id IS NOT NULL -- line level CC
4534 THEN
4535 -----added for Returns
4536 IF NVL(p_credit_check_rule_rec.include_returns_flag,'N')='N'
4537 THEN
4538 ---returns are not included
4539
4540 IF G_debug_flag = 'Y'
4541 THEN
4542 OE_DEBUG_PUB.ADD('Line - Customer level select,no returns ');
4543 END IF;
4544
4545 SELECT SUM ( DECODE( p_credit_check_rule_rec.include_tax_flag , 'Y',
4546 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
4547 + ( l.unit_selling_price * l.ordered_quantity )
4548 )
4549 INTO l_order_value
4550 FROM oe_order_lines l,
4551 oe_order_headers_all h,
4552 ra_terms_b t,
4553 HZ_CUST_SITE_USES_ALL su,
4554 HZ_CUST_ACCT_SITES_ALL cas
4555 WHERE h.header_id = p_header_id
4556 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4557 AND h.header_id = l.header_id
4558 AND l.invoice_to_org_id = su.site_use_id
4559 AND su.CUST_ACCT_SITE_ID = cas.CUST_ACCT_SITE_ID
4560 AND cas.cust_account_id = p_customer_id
4561 --ER 12363706 AND l.open_flag = 'Y'
4562 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4563 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4564 AND t.term_id = l.payment_term_id
4565 AND l.line_category_code = 'ORDER'
4566 AND t.credit_check_flag = 'Y'
4567 AND (EXISTS
4568 (SELECT NULL
4569 FROM oe_payment_types_all pt
4570 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4571 NVL(h.payment_type_code, 'BME'))
4572 AND pt.credit_check_flag = 'Y'
4573 AND NVL(pt.org_id, -99) = G_ORG_ID)
4574 OR
4575 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4576
4577 ELSE
4578 ---returns are included
4579
4580 IF G_debug_flag = 'Y'
4581 THEN
4582 OE_DEBUG_PUB.ADD('Line - Customer level select,with returns ');
4583 END IF;
4584
4585 SELECT
4586 SUM ( DECODE( p_credit_check_rule_rec.include_tax_flag , 'Y',
4587 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0), 0 ) --TaxER
4588 + ( l.unit_selling_price *
4589 (DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,
4590 l.ordered_quantity) )
4591 ))
4592 INTO l_order_value
4593 FROM oe_order_lines l,
4594 oe_order_headers_all h,
4595 ra_terms_b t,
4596 HZ_CUST_SITE_USES_ALL su,
4597 HZ_CUST_ACCT_SITES_ALL cas
4598 WHERE h.header_id = p_header_id
4599 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4600 AND h.header_id = l.header_id
4601 AND l.invoice_to_org_id = su.site_use_id
4602 AND su.CUST_ACCT_SITE_ID = cas.CUST_ACCT_SITE_ID
4603 AND cas.cust_account_id = p_customer_id
4604 --ER 12363706 AND l.open_flag = 'Y'
4605 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4606 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4607 AND t.term_id = l.payment_term_id
4608 AND t.credit_check_flag = 'Y'
4609 AND (EXISTS
4610 (SELECT NULL
4611 FROM oe_payment_types_all pt
4612 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4613 NVL(h.payment_type_code, 'BME'))
4614 AND pt.credit_check_flag = 'Y'
4615 AND NVL(pt.org_id, -99) = G_ORG_ID)
4616 OR
4617 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4618
4619
4620 END IF; ----end for checking if returns are included
4621
4622 IF G_debug_flag = 'Y'
4623 THEN
4624 OE_DEBUG_PUB.ADD('Check for Committment profile ');
4625 END IF;
4626
4627 IF OE_Commitment_PVT.Do_Commitment_Sequencing THEN
4628 BEGIN
4629 IF G_debug_flag = 'Y'
4630 THEN
4631 OE_DEBUG_PUB.ADD('Customer level commitment select ');
4632 END IF;
4633
4634 SELECT NVL(SUM(P.commitment_applied_amount), 0)
4635 INTO l_commitment
4636 FROM OE_PAYMENTS P, OE_ORDER_HEADERS_ALL H, OE_ORDER_LINES L ,
4637 HZ_CUST_SITE_USES_ALL su,
4638 HZ_CUST_ACCT_SITES_ALL cas,
4639 ra_terms_b t
4640 WHERE h.header_id = p_header_id
4641 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4642 AND h.header_id = l.header_id
4643 AND l.invoice_to_org_id = su.site_use_id
4644 AND su.CUST_ACCT_SITE_ID = cas.CUST_ACCT_SITE_ID
4645 AND cas.cust_account_id = p_customer_id
4646 --ER 12363706 AND l.open_flag = 'Y'
4647 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4648 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4649 AND t.term_id = l.payment_term_id
4650 AND t.credit_check_flag = 'Y'
4651 AND p.header_id = p_header_id
4652 AND p.line_id = l.line_id
4653 AND l.line_category_code = 'ORDER'
4654 AND p.header_id = h.header_id
4655 AND (EXISTS
4656 (SELECT NULL
4657 FROM oe_payment_types_all pt
4658 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4659 NVL(h.payment_type_code, 'BME'))
4660 AND pt.credit_check_flag = 'Y'
4661 AND NVL(pt.org_id, -99) = G_ORG_ID)
4662 OR
4663 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4664
4665 EXCEPTION
4666 WHEN NO_DATA_FOUND
4667 THEN
4668 OE_DEBUG_PUB.ADD(' NO commitment-1 found ');
4669 l_commitment := 0 ;
4670
4671 WHEN TOO_MANY_ROWS
4672 THEN
4673 OE_DEBUG_PUB.ADD(' Too many rows exception NO commtment-1');
4674 l_commitment := 0 ;
4675 END ;
4676 END IF; --- commitment
4677
4678
4679 IF p_credit_check_rule_rec.incl_freight_charges_flag
4680 = 'Y'
4681 THEN
4682 -----added for Returns
4683 IF NVL(p_credit_check_rule_rec.include_returns_flag,'N')='N'
4684 THEN
4685 ---returns are not included
4686 IF G_debug_flag = 'Y'
4687 THEN
4688 OE_DEBUG_PUB.ADD(' Process trx freights - Line level customer without returns ');
4689 END IF;
4690
4691 BEGIN
4692 SELECT
4693 SUM
4694 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
4695 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
4696 p.operand, (l.ordered_quantity * p.adjusted_amount)))
4697 --TaxER Start
4698 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
4699 --TaxER End
4700 )
4701 INTO l_freights
4702 FROM oe_order_lines l,
4703 oe_order_headers_all h,
4704 ra_terms_b t,
4705 HZ_CUST_SITE_USES_ALL su,
4706 HZ_CUST_ACCT_SITES_ALL cas,
4707 oe_price_adjustments p
4708 WHERE h.header_id = p_header_id
4709 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4710 AND h.header_id = l.header_id
4711 AND p.line_id = l.line_id
4712 AND p.header_id = l.header_id
4713 AND p.header_id = h.header_id
4714 AND l.invoice_to_org_id = su.site_use_id
4715 --TaxER AND p.applied_flag = 'Y'
4716 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
4717 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
4718 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N' )
4719 AND su.CUST_ACCT_SITE_ID = cas.CUST_ACCT_SITE_ID
4720 AND cas.cust_account_id = p_customer_id
4721 --ER 12363706 AND l.open_flag = 'Y'
4722 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4723 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4724 AND t.term_id = l.payment_term_id
4725 AND l.line_category_code = 'ORDER'
4726 AND t.credit_check_flag = 'Y'
4727 AND (EXISTS
4728 (SELECT NULL
4729 FROM oe_payment_types_all pt
4730 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4731 NVL(h.payment_type_code, 'BME'))
4732 AND pt.credit_check_flag = 'Y'
4733 AND NVL(pt.org_id, -99) = G_ORG_ID)
4734 OR
4735 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4736
4737 EXCEPTION
4738 WHEN NO_DATA_FOUND
4739 THEN
4740 OE_DEBUG_PUB.ADD(' NO Freights found ');
4741 l_freights := 0 ;
4742
4743 END ;
4744 ELSE
4745 ---returns are included
4746 IF G_debug_flag = 'Y'
4747 THEN
4748 OE_DEBUG_PUB.ADD(' Process trx freights - Line level customer,with returns ');
4749 END IF;
4750
4751 BEGIN
4752 SELECT
4753 SUM
4754 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
4755 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
4756 p.operand, (l.ordered_quantity * p.adjusted_amount)))
4757 --TaxER Start
4758 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
4759 --TaxER End
4760 )
4761 INTO l_freights
4762 FROM oe_order_lines l,
4763 oe_order_headers_all h,
4764 ra_terms_b t,
4765 HZ_CUST_SITE_USES_ALL su,
4766 HZ_CUST_ACCT_SITES_ALL cas,
4767 oe_price_adjustments p
4768 WHERE h.header_id = p_header_id
4769 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4770 AND h.header_id = l.header_id
4771 AND p.line_id = l.line_id
4772 AND p.header_id = l.header_id
4773 AND p.header_id = h.header_id
4774 AND l.invoice_to_org_id = su.site_use_id
4775 --TaxER AND p.applied_flag = 'Y'
4776 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
4777 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
4778 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N' )
4779 AND su.CUST_ACCT_SITE_ID = cas.CUST_ACCT_SITE_ID
4780 AND cas.cust_account_id = p_customer_id
4781 --ER 12363706 AND l.open_flag = 'Y'
4782 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4783 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4784 AND t.term_id = l.payment_term_id
4785 AND t.credit_check_flag = 'Y'
4786 AND (EXISTS
4787 (SELECT NULL
4788 FROM oe_payment_types_all pt
4789 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4790 NVL(h.payment_type_code, 'BME'))
4791 AND pt.credit_check_flag = 'Y'
4792 AND NVL(pt.org_id, -99) = G_ORG_ID)
4793 OR
4794 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4795 EXCEPTION
4796 WHEN NO_DATA_FOUND
4797 THEN
4798 OE_DEBUG_PUB.ADD(' NO Freights found ');
4799 l_freights := 0 ;
4800
4801 END ;
4802
4803 END IF; ----end of checking if returns are included
4804
4805 END IF; -- Freights
4806
4807
4808
4809 ELSE
4810 -----added for Returns
4811 IF NVL(p_credit_check_rule_rec.include_returns_flag,'N')='N'
4812 THEN
4813 ---returns are not included
4814
4815 IF G_debug_flag = 'Y'
4816 THEN
4817 OE_DEBUG_PUB.ADD('Line - Site level select ');
4818 END IF;
4819
4820 SELECT SUM ( DECODE( p_credit_check_rule_rec.include_tax_flag , 'Y',
4821 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
4822 + ( l.unit_selling_price * l.ordered_quantity )
4823 )
4824 INTO l_order_value
4825 FROM oe_order_lines l,
4826 oe_order_headers_all h,
4827 ra_terms_b t
4828 WHERE h.header_id = p_header_id
4829 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4830 AND h.header_id = l.header_id
4831 AND l.invoice_to_org_id = p_site_use_id
4832 --ER 12363706 AND l.open_flag = 'Y'
4833 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4834 AND l.line_category_code = 'ORDER'
4835 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4836 AND t.term_id = l.payment_term_id
4837 AND t.credit_check_flag = 'Y'
4838 AND (EXISTS
4839 (SELECT NULL
4840 FROM oe_payment_types_all pt
4841 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4842 NVL(h.payment_type_code, 'BME'))
4843 AND pt.credit_check_flag = 'Y'
4844 AND NVL(pt.org_id, -99) = G_ORG_ID)
4845 OR
4846 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4847
4848 ELSE
4849 ---returns are included
4850
4851 IF G_debug_flag = 'Y'
4852 THEN
4853 OE_DEBUG_PUB.ADD('Line - Site level select,including returns ');
4854 END IF;
4855
4856 SELECT
4857 SUM ( DECODE( p_credit_check_rule_rec.include_tax_flag , 'Y',
4858 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0), 0 ) --TaxER
4859 + (l.unit_selling_price * DECODE(l.line_category_code,'RETURN',
4860 (-1)*l.ordered_quantity,l.ordered_quantity))
4861 )
4862 INTO l_order_value
4863 FROM oe_order_lines l,
4864 oe_order_headers_all h,
4865 ra_terms_b t
4866 WHERE h.header_id = p_header_id
4867 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4868 AND h.header_id = l.header_id
4869 AND l.invoice_to_org_id = p_site_use_id
4870 --ER 12363706 AND l.open_flag = 'Y'
4871 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4872 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4873 AND t.term_id = l.payment_term_id
4874 AND t.credit_check_flag = 'Y'
4875 AND (EXISTS
4876 (SELECT NULL
4877 FROM oe_payment_types_all pt
4878 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4879 NVL(h.payment_type_code, 'BME'))
4880 AND pt.credit_check_flag = 'Y'
4881 AND NVL(pt.org_id, -99) = G_ORG_ID)
4882 OR
4883 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4884
4885 END IF; ---end of checking for returns
4886
4887 IF G_debug_flag = 'Y'
4888 THEN
4889 OE_DEBUG_PUB.ADD('Check for Committment ');
4890 END IF;
4891
4892 IF OE_Commitment_PVT.Do_Commitment_Sequencing THEN
4893 BEGIN
4894 SELECT NVL(SUM(P.commitment_applied_amount), 0)
4895 INTO l_commitment
4896 FROM OE_PAYMENTS P,
4897 OE_ORDER_HEADERS_ALL H,
4898 OE_ORDER_LINES L,
4899 ra_terms_b t
4900 WHERE h.header_id = p_header_id
4901 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4902 AND h.header_id = l.header_id
4903 AND l.invoice_to_org_id = p_site_use_id
4904 --ER 12363706 AND l.open_flag = 'Y'
4905 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4906 AND l.line_category_code = 'ORDER'
4907 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4908 AND t.term_id = l.payment_term_id
4909 AND t.credit_check_flag = 'Y'
4910 AND p.header_id = p_header_id
4911 AND l.line_id = p.line_id
4912 AND p.header_id = h.header_id
4913 AND (EXISTS
4914 (SELECT NULL
4915 FROM oe_payment_types_all pt
4916 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4917 NVL(h.payment_type_code, 'BME'))
4918 AND pt.credit_check_flag = 'Y'
4919 AND NVL(pt.org_id, -99) = G_ORG_ID)
4920 OR
4921 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4922
4923 EXCEPTION
4924 WHEN NO_DATA_FOUND
4925 THEN
4926 OE_DEBUG_PUB.ADD(' NO commitment-1 found ');
4927 l_commitment := 0 ;
4928
4929 WHEN TOO_MANY_ROWS
4930 THEN
4931 OE_DEBUG_PUB.ADD(' Too many rows excepn NO commitment-1 found ');
4932 l_commitment := 0 ;
4933 END ;
4934 END IF; --- commitment
4935
4936 IF p_credit_check_rule_rec.incl_freight_charges_flag
4937 = 'Y'
4938 THEN
4939
4940 -----added for Returns
4941 IF NVL(p_credit_check_rule_rec.include_returns_flag,'N')='N'
4942 THEN
4943 ---returns are not included
4944
4945 IF G_debug_flag = 'Y'
4946 THEN
4947 OE_DEBUG_PUB.ADD(' Process trx freights - Line level site,no returns ');
4948 END IF;
4949
4950 BEGIN
4951 SELECT
4952 SUM
4953 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
4954 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
4955 p.operand, (l.ordered_quantity * p.adjusted_amount)))
4956 --TaxER Start
4957 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
4958 --TaxER End
4959 )
4960 INTO l_freights
4961 FROM oe_order_lines l,
4962 oe_order_headers_all h,
4963 ra_terms_b t,
4964 oe_price_adjustments p
4965 WHERE h.header_id = p_header_id
4966 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
4967 AND h.header_id = l.header_id
4968 AND p.line_id = l.line_id
4969 AND p.header_id = l.header_id
4970 AND p.header_id = h.header_id
4971 AND l.invoice_to_org_id = p_site_use_id
4972 --TaxER AND p.applied_flag = 'Y'
4973 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
4974 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
4975 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
4976 --ER 12363706 AND l.open_flag = 'Y'
4977 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
4978 AND l.line_category_code = 'ORDER'
4979 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
4980 AND t.term_id = l.payment_term_id
4981 AND t.credit_check_flag = 'Y'
4982 AND (EXISTS
4983 (SELECT NULL
4984 FROM oe_payment_types_all pt
4985 WHERE pt.payment_type_code = NVL(l.payment_type_code,
4986 NVL(h.payment_type_code, 'BME'))
4987 AND pt.credit_check_flag = 'Y'
4988 AND NVL(pt.org_id, -99) = G_ORG_ID)
4989 OR
4990 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
4991 EXCEPTION
4992 WHEN NO_DATA_FOUND
4993 THEN
4994 OE_DEBUG_PUB.ADD(' NO Freights found ');
4995 l_freights := 0 ;
4996
4997 END ;
4998
4999 ELSE
5000 ---returns are included
5001
5002 IF G_debug_flag = 'Y'
5003 THEN
5004 OE_DEBUG_PUB.ADD(' Process trx freights - Line level site, with returns ');
5005 END IF;
5006
5007 BEGIN
5008 SELECT
5009 SUM
5010 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( p.credit_or_charge_flag, 'C', (-1), (+1) )
5011 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
5012 p.operand, (l.ordered_quantity * p.adjusted_amount)))
5013 --TaxER Start
5014 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
5015 --TaxER End
5016 )
5017 INTO l_freights
5018 FROM oe_order_lines l,
5019 oe_order_headers_all h,
5020 ra_terms_b t,
5021 oe_price_adjustments p
5022 WHERE h.header_id = p_header_id
5023 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
5024 AND h.header_id = l.header_id
5025 AND p.line_id = l.line_id
5026 AND p.header_id = l.header_id
5027 AND p.header_id = h.header_id
5028 AND l.invoice_to_org_id = p_site_use_id
5029 --TaxER AND p.applied_flag = 'Y'
5030 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
5031 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
5032 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
5033 --ER 12363706 AND l.open_flag = 'Y'
5034 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
5035 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
5036 AND t.term_id = l.payment_term_id
5037 AND t.credit_check_flag = 'Y'
5038 AND (EXISTS
5039 (SELECT NULL
5040 FROM oe_payment_types_all pt
5041 WHERE pt.payment_type_code = NVL(l.payment_type_code,
5042 NVL(h.payment_type_code, 'BME'))
5043 AND pt.credit_check_flag = 'Y'
5044 AND NVL(pt.org_id, -99) = G_ORG_ID)
5045 OR
5046 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
5047
5048 EXCEPTION
5049 WHEN NO_DATA_FOUND
5050 THEN
5051 OE_DEBUG_PUB.ADD(' NO Freights found ');
5052 l_freights := 0 ;
5053
5054 END ;
5055
5056 END IF; ---end for checking if returns are included
5057
5058 END IF; -- Freights
5059
5060 END IF; -- site or cust line level
5061
5062 ELSE --- Header level CC
5063 -----added for Returns
5064 -----exclude prepayments if any
5065 IF NVL(p_credit_check_rule_rec.include_returns_flag,'N')='N'
5066 THEN
5067 ---returns are not included
5068
5069 IF G_debug_flag = 'Y'
5070 THEN
5071 OE_DEBUG_PUB.ADD('In Order header level select ');
5072 END IF;
5073
5074 SELECT SUM ( DECODE( p_credit_check_rule_rec.include_tax_flag , 'Y',
5075 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
5076 + ( l.unit_selling_price * l.ordered_quantity )
5077 )
5078 INTO l_order_value
5079 FROM oe_order_lines l,
5080 oe_order_headers_all h,
5081 ra_terms_b t
5082 WHERE h.header_id = p_header_id
5083 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
5084 AND h.header_id = l.header_id
5085 --ER 12363706 AND l.open_flag = 'Y'
5086 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
5087 AND l.line_category_code = 'ORDER'
5088 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
5089 AND t.term_id = l.payment_term_id
5090 AND t.credit_check_flag = 'Y'
5091 AND (EXISTS
5092 (SELECT NULL
5093 FROM oe_payment_types_all pt
5094 WHERE pt.payment_type_code = NVL(l.payment_type_code,
5095 NVL(h.payment_type_code, 'BME'))
5096 AND pt.credit_check_flag = 'Y'
5097 AND NVL(pt.org_id, -99) = G_ORG_ID)
5098 OR
5099 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
5100
5101 ELSE
5102 ---returns are included
5103
5104 IF G_debug_flag = 'Y'
5105 THEN
5106 OE_DEBUG_PUB.ADD('In Order header level select, with returns ');
5107 END IF;
5108
5109 SELECT
5110 SUM ( DECODE( p_credit_check_rule_rec.include_tax_flag , 'Y',
5111 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0), 0 ) --TaxER
5112 + (l.unit_selling_price * DECODE(l.line_category_code,'RETURN',
5113 (-1)*l.ordered_quantity,l.ordered_quantity))
5114 )
5115 INTO l_order_value
5116 FROM oe_order_lines l,
5117 oe_order_headers_all h,
5118 ra_terms_b t
5119 WHERE h.header_id = p_header_id
5120 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
5121 AND h.header_id = l.header_id
5122 --ER 12363706 AND l.open_flag = 'Y'
5123 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
5124 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
5125 AND t.term_id = l.payment_term_id
5126 AND t.credit_check_flag = 'Y'
5127 AND (EXISTS
5128 (SELECT NULL
5129 FROM oe_payment_types_all pt
5130 WHERE pt.payment_type_code = NVL(l.payment_type_code,
5131 NVL(h.payment_type_code, 'BME'))
5132 AND pt.credit_check_flag = 'Y'
5133 AND NVL(pt.org_id, -99) = G_ORG_ID)
5134 OR
5135 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
5136
5137
5138 END IF; ---end for checking if returns are included
5139
5140 IF G_debug_flag = 'Y'
5141 THEN
5142 OE_DEBUG_PUB.ADD('Check for Committment ');
5143 END IF ;
5144
5145 IF OE_Commitment_PVT.Do_Commitment_Sequencing
5146 THEN
5147 BEGIN
5148 IF G_debug_flag = 'Y'
5149 THEN
5150 OE_DEBUG_PUB.ADD('In Order header commitment');
5151 END IF;
5152
5153 SELECT NVL(SUM(P.commitment_applied_amount), 0)
5154 INTO l_commitment
5155 FROM oe_order_lines l,
5156 oe_order_headers_all h,
5157 ra_terms_b t,
5158 oe_payments p
5159 WHERE h.header_id = p_header_id
5160 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
5161 AND h.header_id = l.header_id
5162 AND p.header_id = p_header_id
5163 AND p.header_id = h.header_id
5164 AND p.line_id = l.line_id
5165 --ER 12363706 AND l.open_flag = 'Y'
5166 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
5167 AND l.line_category_code = 'ORDER'
5168 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
5169 AND t.term_id = l.payment_term_id
5170 AND t.credit_check_flag = 'Y'
5171 AND (EXISTS
5172 (SELECT NULL
5173 FROM oe_payment_types_all pt
5174 WHERE pt.payment_type_code = NVL(l.payment_type_code,
5175 NVL(h.payment_type_code,'BME'))
5176 AND pt.credit_check_flag = 'Y'
5177 AND NVL(pt.org_id, -99) = G_ORG_ID)
5178 OR
5179 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
5180
5181 EXCEPTION
5182 WHEN NO_DATA_FOUND
5183 THEN
5184 OE_DEBUG_PUB.ADD(' NO commitment-1 found ');
5185 l_commitment := 0 ;
5186
5187 WHEN TOO_MANY_ROWS
5188 THEN
5189 OE_DEBUG_PUB.ADD(' Too many rows excepn NO commitment-1 found ');
5190 l_commitment := 0 ;
5191 END ;
5192 END IF; -- commitment
5193
5194 --
5195 -- Get prepayment amount if prepayment is used
5196 -- the order is assumed to have at least one line with
5197 -- payment type with credit_check_flag = Y since it passes
5198 -- check the check to determine if credit check is required
5199 --
5200 IF G_MULTIPLE_PAYMENTS_ENABLED THEN
5201 IF G_debug_flag = 'Y' THEN
5202 OE_DEBUG_PUB.ADD('In Order header prepayment');
5203 END IF;
5204
5205 SELECT SUM(P.prepaid_amount)
5206 INTO l_prepayment
5207 FROM oe_payments p
5208 WHERE p.header_id = p_header_id
5209 AND p.line_id IS NULL;
5210
5211 END IF; -- prepayment
5212
5213 IF p_credit_check_rule_rec.incl_freight_charges_flag = 'Y'
5214 THEN
5215
5216 -----added for Returns
5217 IF NVL(p_credit_check_rule_rec.include_returns_flag,'N')='N'
5218 THEN
5219 ---returns are not included
5220
5221 IF G_debug_flag = 'Y'
5222 THEN
5223 OE_DEBUG_PUB.ADD(' Process trx freights - order level ');
5224 END IF;
5225
5226 BEGIN
5227
5228 SELECT
5229 SUM
5230 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
5231 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
5232 p.operand, (l.ordered_quantity * p.adjusted_amount)))
5233 --TaxER Start
5234 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
5235 --TaxER End
5236 )
5237 INTO l_freights_hdr_1
5238 FROM oe_price_adjustments p
5239 , oe_order_lines l
5240 , oe_order_headers_all h
5241 , ra_terms_b t
5242 WHERE h.header_id = p_header_id
5243 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
5244 AND p.line_id = l.line_id
5245 AND p.header_id = l.header_id
5246 AND p.header_id = h.header_id
5247 AND h.booked_flag = 'Y'
5248 AND h.open_flag = 'Y'
5249 --ER 12363706 AND l.open_flag = 'Y'
5250 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
5251 AND l.line_category_code = 'ORDER'
5252 --TaxER AND p.applied_flag = 'Y'
5253 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
5254 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
5255 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
5256 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
5257 AND t.term_id = l.payment_term_id
5258 AND t.credit_check_flag = 'Y'
5259 AND (EXISTS
5260 (SELECT NULL
5261 FROM oe_payment_types_all pt
5262 WHERE pt.payment_type_code = NVL(l.payment_type_code,
5263 NVL(h.payment_type_code,'BME'))
5264 AND pt.credit_check_flag = 'Y'
5265 AND NVL(pt.org_id, -99) = G_ORG_ID)
5266 OR
5267 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
5268
5269 SELECT
5270 SUM(DECODE(p.list_line_type_code,'TAX',0,DECODE(P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
5271 --TaxER Start
5272 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
5273 --TaxER End
5274 INTO l_freights_hdr_2
5275 FROM
5276 oe_price_adjustments p
5277 , oe_order_headers h
5278 WHERE h.header_id = p_header_id
5279 AND p.line_id IS NULL
5280 AND p.header_id = h.header_id
5281 AND h.order_category_code IN ('ORDER','MIXED')
5282 AND h.open_flag = 'Y'
5283 AND h.booked_flag = 'Y'
5284 --TaxER AND p.applied_flag = 'Y'
5285 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
5286 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
5287 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N');
5288
5289
5290 l_freights := NVL(l_freights_hdr_2,0) + NVL(l_freights_hdr_1,0) ;
5291
5292 EXCEPTION
5293 WHEN NO_DATA_FOUND
5294 THEN
5295 l_freights := 0 ;
5296 END ;
5297 ELSE
5298 ---returns are included
5299
5300 IF G_debug_flag = 'Y'
5301 THEN
5302 OE_DEBUG_PUB.ADD(' Process trx freights - order level,with returns ');
5303 END IF;
5304
5305 BEGIN
5306 SELECT
5307 SUM
5308 (DECODE(p.list_line_type_code,'TAX',0, DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
5309 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
5310 p.operand, (l.ordered_quantity * p.adjusted_amount)))
5311 --TaxER Start
5312 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
5313 --TaxER End
5314 )
5315 INTO l_freights_hdr_1
5316 FROM oe_price_adjustments p
5317 , oe_order_lines l
5318 , oe_order_headers_all h
5319 , ra_terms_b t
5320 WHERE h.header_id = p_header_id
5321 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
5322 AND p.line_id = l.line_id
5323 AND p.header_id = l.header_id
5324 AND p.header_id = h.header_id
5325 AND h.booked_flag = 'Y'
5326 AND h.open_flag = 'Y'
5327 --ER 12363706 AND l.open_flag = 'Y'
5328 AND l.open_flag = DECODE(p_all_lines,'Y',l.open_flag,'Y') --ER 12363706
5329 --TaxER AND p.applied_flag = 'Y'
5330 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
5331 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
5332 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N' )
5333 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
5334 AND t.term_id = l.payment_term_id
5335 AND t.credit_check_flag = 'Y'
5336 AND (EXISTS
5337 (SELECT NULL
5338 FROM oe_payment_types_all pt
5339 WHERE pt.payment_type_code = NVL(l.payment_type_code,
5340 NVL(h.payment_type_code, 'BME'))
5341 AND pt.credit_check_flag = 'Y'
5342 AND NVL(pt.org_id, -99) = G_ORG_ID)
5343 OR
5344 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
5345
5346 -- no need to check for credit_check_flag since the order
5347 -- already have at least one line with the flag set.
5348 SELECT
5349 SUM(DECODE(p.list_line_type_code,'TAX',0,DECODE(P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
5350 --TaxER Start
5351 + DECODE(p_credit_check_rule_rec.include_tax_flag ,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
5352 --TaxER End
5353 INTO l_freights_hdr_2
5354 FROM
5355 oe_price_adjustments p
5356 , oe_order_headers h
5357 WHERE h.header_id = p_header_id
5358 AND p.line_id IS NULL
5359 AND p.header_id = h.header_id
5360 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
5361 AND h.open_flag = 'Y'
5362 AND h.booked_flag = 'Y'
5363 --TaxER AND p.applied_flag = 'Y'
5364 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
5365 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
5366 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N');
5367
5368
5369 l_freights := NVL(l_freights_hdr_2,0) + NVL(l_freights_hdr_1,0) ;
5370
5371 EXCEPTION
5372 WHEN NO_DATA_FOUND
5373 THEN
5374 l_freights := 0 ;
5375 END ;
5376
5377 END IF; --end of checkig if returns are included
5378 END IF; -- freights
5379
5380 END IF; -- Hdr or line
5381
5382 IF G_debug_flag = 'Y'
5383 THEN
5384 OE_DEBUG_PUB.ADD(' l_order_value = '|| l_order_value );
5385 OE_DEBUG_PUB.ADD(' l_commitment = '|| l_commitment );
5386 OE_DEBUG_PUB.ADD(' l_freights = ' || l_freights );
5387 END IF;
5388
5389
5390 -- convert amount
5391 BEGIN
5392 IF G_debug_flag = 'Y'
5393 THEN
5394 OE_DEBUG_PUB.Add(' GL_CURRENCY = '||
5395 OE_Credit_Engine_GRP.GL_currency );
5396 END IF;
5397 -- Bug 8249878
5398 /* l_order_value := NVL(l_order_value,0)
5399 - NVL(l_commitment,0)
5400 - NVL(l_prepayment,0)
5401 + NVL(l_freights,0); */
5402 l_order_value := NVL(l_order_value,0)
5403 - NVL(l_commitment,0)
5404 + NVL(l_freights,0);
5405 IF G_debug_flag = 'Y'
5406 THEN
5407 OE_DEBUG_PUB.ADD(' Total order amount = '|| l_order_value );
5408 END IF;
5409
5410 l_limit_order_value :=
5411 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
5412 ( p_amount => l_order_value
5413 , p_transactional_currency => p_transaction_curr_code
5414 , p_limit_currency => p_limit_curr_code
5415 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
5416 , p_conversion_date => SYSDATE
5417 , p_conversion_type => p_credit_check_rule_rec.conversion_type
5418 );
5419
5420
5421 END ;
5422
5423 -- x_amount := NVL(l_limit_order_value,0) ;
5424
5425 OE_CREDIT_CHECK_UTIL.Rounded_Amount(p_currency_code => p_limit_curr_code
5426 ,p_unrounded_amount => NVL(l_limit_order_value,0)
5427 ,x_rounded_amount => x_amount);
5428
5429 OE_CREDIT_CHECK_UTIL.g_current_order_value := x_amount ;
5430
5431 IF G_debug_flag = 'Y'
5432 THEN
5433 OE_DEBUG_PUB.Add(' g_current_order_value = '||
5434 OE_CREDIT_CHECK_UTIL.g_current_order_value );
5435 OE_DEBUG_PUB.Add(' Final trx check order amount = '|| x_amount,1 );
5436 OE_DEBUG_PUB.Add(' ====================================');
5437 END IF;
5438
5439 IF G_debug_flag = 'Y'
5440 THEN
5441 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_transaction_amount ');
5442 END IF;
5443
5444 EXCEPTION
5445 WHEN GL_CURRENCY_API.NO_RATE
5446 THEN
5447 OE_DEBUG_PUB.ADD('EXCEPTION: GL_CURRENCY_API.NO_RATE ');
5448 x_conversion_status(1).usage_curr_code := p_transaction_curr_code;
5449 fnd_message.set_name('ONT', 'OE_CONVERSION_ERROR');
5450 OE_DEBUG_PUB.ADD('Exception table added ');
5451
5452 WHEN NO_DATA_FOUND
5453 THEN
5454 x_amount := 0 ;
5455 OE_DEBUG_PUB.ADD('EXCEPTION: NO_DATA_FOUND ');
5456
5457 WHEN TOO_MANY_ROWS
5458 THEN
5459 x_amount := 0 ;
5460 OE_DEBUG_PUB.ADD('EXCEPTION: TOO_MANY_ROWS ');
5461
5462 WHEN OTHERS THEN
5463 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
5464 OE_DEBUG_PUB.ADD('EXCEPTION = '||
5465 SUBSTR(sqlerrm,1,200) );
5466 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5467
5468 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5469 THEN
5470 FND_MSG_PUB.Add_Exc_Msg
5471 ( G_PKG_NAME
5472 , 'GET_transaction_amount'
5473 );
5474 END IF;
5475 RAISE;
5476 END GET_transaction_amount ;
5477
5478
5479 --========================================================================
5480 -- PROCEDURE : Get_Past_Due_Invoice
5481 -- Comments : for pre-claculated cc the check will be made
5482 -- from summary table
5483 -- Parameters:
5484 --
5485 --========================================================================
5486 PROCEDURE Get_Past_Due_Invoice
5487 ( p_customer_id IN NUMBER
5488 , p_site_use_id IN NUMBER
5489 , p_party_id IN NUMBER
5490 , p_credit_check_rule_rec IN
5491 OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type
5492 , p_system_parameter_rec IN
5493 OE_CREDIT_CHECK_UTIL.OE_systems_param_rec_type
5494 , p_credit_level IN VARCHAR2
5495 , p_usage_curr IN oe_credit_check_util.curr_tbl_type
5496 , p_include_all_flag IN VARCHAR2
5497 , p_global_exposure_flag IN VARCHAR2 := 'N'
5498 , x_exist_flag OUT NOCOPY VARCHAR2
5499 , x_return_status OUT NOCOPY VARCHAR2
5500 )
5501 IS
5502 l_maximum_days_past_due NUMBER;
5503 l_dummy VARCHAR2(30);
5504 BEGIN
5505 IF G_debug_flag = 'Y'
5506 THEN
5507 OE_DEBUG_PUB.ADD('OEXUCRCB: In Get_Past_Due_Invoice');
5508 END IF;
5509
5510 -- Initialize return status to success
5511 x_return_status := FND_API.G_RET_STS_SUCCESS;
5512
5513 IF NVL(p_credit_check_rule_rec.quick_cr_check_flag,'N') = 'N'
5514 THEN
5515 -- Bug2408466
5516 -- REmove the OLD code with DECODES
5517 IF G_debug_flag = 'Y'
5518 THEN
5519 OE_DEBUG_PUB.ADD('maximum_days_past_due ==> '||
5520 p_credit_check_rule_rec.maximum_days_past_due,1 );
5521
5522 OE_DEBUG_PUB.ADD('p_credit_level ==> '|| p_credit_level );
5523 OE_DEBUG_PUB.ADD('p_include_all_flag ==> '|| p_include_all_flag);
5524 OE_DEBUG_PUB.ADD('p_global_exposure_flag ==> '||
5525 p_global_exposure_flag );
5526 END IF;
5527
5528 IF NVL(p_global_exposure_flag,'N') = 'N'
5529 THEN
5530 BEGIN
5531 IF G_debug_flag = 'Y'
5532 THEN
5533 OE_DEBUG_PUB.Add(' Into NOT Global ');
5534 END IF;
5535 --bug 4174163
5536 --IF NVL(p_credit_check_rule_rec.maximum_days_past_due,0) > 0
5537 IF p_credit_check_rule_rec.maximum_days_past_due is not null
5538 and p_credit_check_rule_rec.maximum_days_past_due >= 0
5539 THEN
5540 IF p_credit_level = 'CUSTOMER'
5541 THEN
5542 BEGIN
5543 IF G_debug_flag = 'Y'
5544 THEN
5545 OE_DEBUG_PUB.Add(' Into CUSTOMER ');
5546 END IF;
5547
5548 FOR i IN 1..p_usage_curr.count
5549 LOOP
5550 IF G_debug_flag = 'Y'
5551 THEN
5552 OE_DEBUG_PUB.Add('Currency code = '
5553 || p_usage_curr(i).usage_curr_code );
5554 END IF;
5555 BEGIN
5556 SELECT 'Y'
5557 INTO x_exist_flag
5558 FROM ar_payment_schedules
5559 WHERE customer_id = p_customer_id
5560 AND ( invoice_currency_code
5561 = p_usage_curr(i).usage_curr_code
5562 OR p_include_all_flag = 'Y' )
5563 AND NVL(receipt_confirmed_flag, 'Y') = 'Y'
5564 AND gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
5565 AND amount_due_remaining > 0
5566 AND due_date <
5567 sysdate - p_credit_check_rule_rec.maximum_days_past_due;
5568
5569 -- Invoices found
5570 x_exist_flag := 'Y' ;
5571
5572 IF G_debug_flag = 'Y'
5573 THEN
5574 OE_DEBUG_PUB.Add('Invoices found ' );
5575 END IF;
5576
5577 EXIT;
5578
5579 EXCEPTION
5580 WHEN NO_DATA_FOUND THEN
5581 OE_DEBUG_PUB.Add(' No Invoices Past due found ' );
5582
5583 x_exist_flag := 'N' ;
5584
5585 WHEN TOO_MANY_ROWS THEN
5586 OE_DEBUG_PUB.Add('Invoices found ' );
5587 x_exist_flag := 'Y' ;
5588 EXIT;
5589 END;
5590 END LOOP;
5591 END ;
5592
5593 ELSE
5594 BEGIN
5595 IF G_debug_flag = 'Y'
5596 THEN
5597 OE_DEBUG_PUB.Add(' Into SITE ');
5598 END IF;
5599
5600 FOR i IN 1..p_usage_curr.count
5601 LOOP
5602 IF G_debug_flag = 'Y'
5603 THEN
5604 OE_DEBUG_PUB.Add(' Currency code = '
5605 || p_usage_curr(i).usage_curr_code );
5606 END IF;
5607 BEGIN
5608 SELECT 'Y'
5609 INTO x_exist_flag
5610 FROM ar_payment_schedules
5611 WHERE customer_site_use_id = p_site_use_id
5612 AND ( invoice_currency_code = p_usage_curr(i).usage_curr_code
5613 OR p_include_all_flag = 'Y' )
5614 AND NVL(receipt_confirmed_flag, 'Y') = 'Y'
5615 AND gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
5616 AND amount_due_remaining > 0
5617 AND due_date <
5618 sysdate - p_credit_check_rule_rec.maximum_days_past_due;
5619
5620 -- Invoices found
5621 x_exist_flag := 'Y' ;
5622
5623 IF G_debug_flag = 'Y'
5624 THEN
5625 OE_DEBUG_PUB.Add('Invoices found ' );
5626 END IF;
5627
5628 EXIT;
5629
5630 EXCEPTION
5631 WHEN NO_DATA_FOUND THEN
5632 OE_DEBUG_PUB.Add('No Invoices Past due found in this curr' );
5633 x_exist_flag := 'N' ;
5634 WHEN TOO_MANY_ROWS THEN
5635 OE_DEBUG_PUB.Add('Invoices found ' );
5636 x_exist_flag := 'Y' ;
5637 EXIT;
5638 END;
5639 END LOOP;
5640 END ;
5641 END IF;
5642
5643 ELSE
5644 IF G_debug_flag = 'Y'
5645 THEN
5646 OE_DEBUG_PUB.Add(' No need to check ' );
5647 END IF;
5648 x_exist_flag := 'N' ;
5649 END IF;
5650 END;
5651
5652 ELSIF p_global_exposure_flag = 'Y'
5653 THEN
5654 BEGIN
5655 IF G_debug_flag = 'Y'
5656 THEN
5657 OE_DEBUG_PUB.Add(' Into GLOBAL checking ');
5658 END IF;
5659 --bug 4174163
5660 --IF NVL(p_credit_check_rule_rec.maximum_days_past_due,0) > 0
5661 IF p_credit_check_rule_rec.maximum_days_past_due is not null
5662 and p_credit_check_rule_rec.maximum_days_past_due >= 0
5663 THEN
5664 IF p_credit_level = 'CUSTOMER'
5665 THEN
5666 BEGIN
5667 IF G_debug_flag = 'Y'
5668 THEN
5669 OE_DEBUG_PUB.Add(' Into CUSTOMER ');
5670 END IF;
5671
5672 FOR i IN 1..p_usage_curr.count
5673 LOOP
5674 IF G_debug_flag = 'Y'
5675 THEN
5676 OE_DEBUG_PUB.Add('Currency code = '
5677 || p_usage_curr(i).usage_curr_code );
5678 END IF;
5679
5680 BEGIN
5681 SELECT 'Y'
5682 INTO x_exist_flag
5683 FROM ar_payment_schedules_ALL
5684 WHERE customer_id = p_customer_id
5685 AND ( invoice_currency_code
5686 = p_usage_curr(i).usage_curr_code
5687 OR p_include_all_flag = 'Y' )
5688 AND NVL(receipt_confirmed_flag, 'Y') = 'Y'
5689 AND gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
5690 AND amount_due_remaining > 0
5691 AND due_date <
5692 sysdate - p_credit_check_rule_rec.maximum_days_past_due;
5693
5694 -- Invoices found
5695 x_exist_flag := 'Y' ;
5696
5697 IF G_debug_flag = 'Y'
5698 THEN
5699 OE_DEBUG_PUB.Add('Invoices found ' );
5700 end if;
5701
5702 EXIT;
5703
5704 EXCEPTION
5705 WHEN NO_DATA_FOUND THEN
5706 OE_DEBUG_PUB.Add(' No Invoices Past due found ' );
5707
5708 x_exist_flag := 'N' ;
5709
5710 WHEN TOO_MANY_ROWS THEN
5711 OE_DEBUG_PUB.Add('Invoices found ' );
5712 x_exist_flag := 'Y' ;
5713 EXIT;
5714 END;
5715 END LOOP;
5716 END ;
5717 END IF;
5718 ELSE
5719 OE_DEBUG_PUB.Add(' No need to check ' );
5720 x_exist_flag := 'N' ;
5721 END IF;
5722
5723
5724 END ;
5725 END IF;
5726 ---- End Global
5727
5728 ELSE
5729 --bug 4174163
5730 --IF NVL(p_credit_check_rule_rec.maximum_days_past_due,0) > 0
5731 IF p_credit_check_rule_rec.maximum_days_past_due is not null
5732 and p_credit_check_rule_rec.maximum_days_past_due >= 0
5733 THEN
5734 IF G_debug_flag = 'Y'
5735 THEN
5736 oe_debug_pub.add('calling get_invoices_over_duedate ');
5737 END IF;
5738
5739 OE_CREDIT_EXPOSURE_PVT.get_invoices_over_duedate
5740 ( p_customer_id => p_customer_id
5741 , p_site_use_id => p_site_use_id
5742 , p_party_id => p_party_id
5743 , p_credit_check_rule_rec => p_credit_check_rule_rec
5744 , p_credit_level => p_credit_level
5745 , p_usage_curr => p_usage_curr
5746 , p_include_all_flag => NVL(p_include_all_flag,'N')
5747 , p_global_exposure_flag => NVL(p_global_exposure_flag,'N')
5748 , p_org_id => G_org_id --bug# 5031301
5749 , x_exist_flag => x_exist_flag
5750 );
5751 ELSE
5752 x_exist_flag := 'N' ;
5753 END IF;
5754
5755 END IF; -- precalc
5756
5757 IF x_exist_flag IS NULL
5758 THEN
5759 x_exist_flag := 'N' ;
5760 END IF ;
5761
5762 IF G_debug_flag = 'Y'
5763 THEN
5764 OE_DEBUG_PUB.Add(' x_exist_flag = '|| x_exist_flag );
5765 OE_DEBUG_PUB.ADD('OEXUCRCB: Out NOCOPY Get_Past_Due_Invoice');
5766 END IF;
5767
5768 EXCEPTION
5769 WHEN OTHERS THEN
5770 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5771 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5772 OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Get_Past_Due_Invoice');
5773 END IF;
5774 RAISE;
5775 END Get_Past_Due_Invoice ;
5776
5777
5778
5779
5780 --========================================================================
5781 -- PROCEDURE : Get_order_exposure
5782 -- Comments : Returns the exposure in the limit currency
5783 -- used for online/Header level credit checking
5784 -- BUG 3449827,3463348: return correct values when p_need_exposure_flag enabled
5785 --========================================================================
5786 PROCEDURE Get_order_exposure
5787 ( p_header_id IN NUMBER
5788 , p_transaction_curr_code IN VARCHAR2
5789 , p_customer_id IN NUMBER
5790 , p_site_use_id IN NUMBER
5791 , p_credit_check_rule_rec IN
5792 OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type
5793 , p_system_parameter_rec IN
5794 OE_CREDIT_CHECK_UTIL.OE_systems_param_rec_type
5795 , p_credit_level IN VARCHAR2
5796 , p_limit_curr_code IN VARCHAR2
5797 , p_usage_curr IN oe_credit_check_util.curr_tbl_type
5798 , p_include_all_flag IN VARCHAR2
5799 , p_global_exposure_flag IN VARCHAR2 := 'N'
5800 , p_need_exposure_details IN VARCHAR2 := 'N'
5801 , x_total_exposure OUT NOCOPY NUMBER
5802 , x_ar_amount OUT NOCOPY NUMBER
5803 , x_order_amount OUT NOCOPY NUMBER
5804 , x_order_hold_amount OUT NOCOPY NUMBER
5805 , x_conversion_status OUT NOCOPY CURR_TBL_TYPE
5806 , x_return_status OUT NOCOPY VARCHAR2
5807 )
5808 IS
5809
5810 l_est_valid_days NUMBER :=
5811 to_number(nvl(fnd_profile.value('ONT_EST_AUTH_VALID_DAYS'),'0'));
5812
5813
5814 l_total_from_ar NUMBER := 0 ;
5815 l_total_from_br NUMBER := 0 ;
5816 l_total_on_order NUMBER := 0 ;
5817 l_total_commitment NUMBER := 0 ;
5818 l_total_exposure NUMBER := 0 ;
5819
5820 l_total_on_hold NUMBER := 0 ;
5821
5822 l_total_no_hold NUMBER := 0 ;
5823
5824 l_limit_total_exposure NUMBER := 0 ;
5825 l_limit_current_order NUMBER := 0 ;
5826
5827 l_usage_total_commitment NUMBER := 0 ;
5828 l_usage_total_exposure NUMBER := 0 ;
5829
5830 l_uninvoiced_hdr_freight1 NUMBER := 0 ;
5831 l_uninvoiced_hdr_freight2 NUMBER := 0 ;
5832 l_uninvoiced_line_freight1 NUMBER := 0 ;
5833
5834 l_hold_hdr_freight1 NUMBER := 0 ;
5835 l_hold_hdr_freight2 NUMBER := 0 ;
5836
5837 l_no_hold_hdr_freight1 NUMBER := 0 ;
5838 l_no_hold_hdr_freight2 NUMBER := 0 ;
5839 l_external_exposure NUMBER := 0 ;
5840
5841 l_cum_total_from_ar NUMBER := 0 ;
5842 l_cum_payments_at_risk NUMBER := 0 ;
5843 l_cum_total_on_order NUMBER := 0 ;
5844 l_cum_total_on_hold NUMBER := 0 ;
5845 l_cum_total_no_hold NUMBER := 0;
5846 l_cum_total_commitment NUMBER := 0;
5847 l_cum_external_exposure NUMBER := 0;
5848 l_cum_uninv_order_total NUMBER := 0;
5849
5850 l_payments_at_risk NUMBER := 0 ;
5851 l_payments_at_risk_br NUMBER := 0 ;
5852
5853 l_exposure_amount NUMBER := 0 ; --bug 2714553
5854
5855 -----------------------------------------
5856 ------ Variables for setting default values
5857 ------------------------------------------
5858
5859 l_open_ar_days NUMBER;
5860 l_uninvoiced_orders_flag VARCHAR2(1) ;
5861 l_orders_on_hold_flag VARCHAR2(1) ;
5862 l_include_tax_flag VARCHAR2(1) ;
5863 l_shipping_horizon DATE := TO_DATE('31/12/4712', 'DD/MM/YYYY');
5864 l_include_risk_flag VARCHAR2(1) ;
5865 l_quick_cr_check_flag VARCHAR2(1) ;
5866 l_freight_charges_flag VARCHAR2(1) ;
5867 l_open_ar_balance_flag VARCHAR2(1) ;
5868 l_current_usage_cur VARCHAR2(100);
5869 l_incl_external_exposure_flag VARCHAR2(1);
5870 l_drawee_site_use_id NUMBER;
5871 l_need_exposure_details VARCHAR2(1) := NVL(p_need_exposure_details, 'N');
5872 l_include_returns_flag VARCHAR2(1);
5873 l_header_id NUMBER;
5874 ---------------------------------------------------------------
5875 -- Cursor definitions
5876 -- a) In order related cursors, use l_header_id instead of
5877 -- p_header_id. This is done to remove the NVL on p_header_id
5878 -- as p_header_id will be coming in as NULL for the
5879 -- exposure reports.
5880 --
5881 -- b) Removed NVL on ordered_quantity and unit_selling_price as these
5882 -- will always have a value for booked orders.
5883 ---------------------------------------------------------------
5884 --- CUSTOMER LEVEL CURSORS
5885
5886 -- External exposure cursor
5887 CURSOR cust_external_exposure_csr (p_curr_code IN VARCHAR2 default NULL) IS
5888 SELECT SUM(balance)
5889 FROM oe_credit_summaries
5890 WHERE balance_type = 18
5891 AND cust_account_id = p_customer_id
5892 AND NVL(org_id,-99) = G_ORG_ID
5893 AND currency_code = p_curr_code;
5894
5895 CURSOR cust_external_csr_global
5896 (p_curr_code IN VARCHAR2 default NULL) IS
5897 SELECT SUM(balance)
5898 FROM oe_credit_summaries
5899 WHERE balance_type = 18
5900 AND cust_account_id = p_customer_id
5901 AND currency_code = p_curr_code;
5902
5903
5904 -- AR BALANCE
5905 -- Bug2417717 Support customer relationships
5906 -- The exposure must include transactions where
5907 -- created by the bill to sites owned by the customer
5908
5909 CURSOR cust_ar_balance (p_curr_code IN VARCHAR2 default NULL) IS
5910 SELECT SUM(NVL(ps.amount_due_remaining,0))
5911 FROM ar_payment_schedules ps
5912 , hz_cust_site_uses_all su
5913 -- , hz_cust_acct_sites_all cas -- Commented Bug#11827225
5914 WHERE ps.CUSTOMER_SITE_USE_ID = su.site_use_id
5915 AND ps.org_id = su.org_id /* MOAC_SQL_CHANGE */
5916 AND ps.status = 'OP'
5917 --AND su.cust_acct_site_id = cas.cust_acct_site_id -- Commented Bug#11827225
5918 --AND cas.cust_account_id = p_customer_id -- Commented Bug#11827225
5919 AND ps.customer_id = p_customer_id -- Added for Bug#11827225
5920 AND su.site_use_code =
5921 DECODE(l_open_ar_days,0,site_use_code,'BILL_TO' )
5922 AND ps.invoice_currency_code =
5923 p_curr_code
5924 AND NVL(ps.receipt_confirmed_flag, 'Y') = 'Y'
5925 AND ps.gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
5926 AND sysdate - ps.trx_date >
5927 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS, sysdate - ps.trx_date - 1);
5928
5929 ---------------------- BR support -------------------
5930
5931 CURSOR cust_BR_balance (p_curr_code IN VARCHAR2 default NULL) IS
5932 SELECT SUM(NVL(ps.amount_due_remaining,0))
5933 FROM ar_payment_schedules ps
5934 , hz_cust_site_uses_all su
5935 -- , hz_cust_acct_sites_all cas -- Commented Bug#11827225
5936 WHERE ps.CUSTOMER_SITE_USE_ID = su.site_use_id
5937 AND ps.org_id = su.org_id /* MOAC_SQL_CHANGE */
5938 AND ps.status = 'OP'
5939 --AND su.cust_acct_site_id = cas.cust_acct_site_id -- Commented Bug#11827225
5940 --AND cas.cust_account_id = p_customer_id -- Commented Bug#11827225
5941 AND ps.customer_id = p_customer_id -- Added for Bug#11827225
5942 AND ps.invoice_currency_code =
5943 p_curr_code
5944 AND NVL(ps.receipt_confirmed_flag, 'Y') = 'Y'
5945 AND su.site_use_code = 'DRAWEE'
5946 AND ps.gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY') ;
5947
5948 -- PAY AT RISK
5949
5950 CURSOR cust_pay_risk (p_curr_code IN VARCHAR2 default NULL) IS
5951 SELECT SUM(NVL(crh.amount,0))
5952 FROM ar_cash_receipt_history crh
5953 , ar_cash_receipts_all cr
5954 , hz_cust_site_uses_all su
5955 , hz_cust_acct_sites_all cas
5956 WHERE crh.cash_receipt_id = cr.cash_receipt_id
5957 AND crh.org_id = cr.org_id /* MOAC_SQL_CHANGE */
5958 AND NVL(cr.confirmed_flag,'Y') = 'Y'
5959 AND crh.current_record_flag = 'Y'
5960 AND crh.status <> DECODE ( crh.factor_flag
5961 , 'Y', 'RISK_ELIMINATED'
5962 , 'CLEARED')
5963 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
5964 AND crh.status <> 'REVERSED'
5965 AND cr.currency_code =
5966 p_curr_code
5967 AND cr.pay_from_customer = cas.cust_account_id
5968 AND cr.org_id = cas.org_id
5969 AND cr.CUSTOMER_SITE_USE_ID = su.site_use_id
5970 AND su.cust_acct_site_id = cas.cust_acct_site_id
5971 AND cas.cust_account_id = p_customer_id
5972 AND su.site_use_code =
5973 DECODE(l_open_ar_days,0,
5974 site_use_code,'BILL_TO' )
5975 AND sysdate - cr.receipt_date >
5976 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS,
5977 sysdate - cr.receipt_date - 1)
5978 AND NOT EXISTS
5979 (
5980 SELECT
5981 'X'
5982 FROM
5983 ar_receivable_applications rap
5984 WHERE
5985 rap.cash_receipt_id = cr.cash_receipt_id
5986 AND rap.applied_payment_schedule_id = -2
5987 AND rap.display = 'Y'
5988 ) ;
5989
5990
5991 CURSOR cust_br_pay_risk (p_curr_code IN VARCHAR2 default NULL) IS
5992 SELECT SUM(NVL(crh.amount,0))
5993 FROM ar_cash_receipt_history crh
5994 , ar_cash_receipts_all cr
5995 , hz_cust_site_uses_all su
5996 , hz_cust_acct_sites_all cas
5997 WHERE crh.cash_receipt_id = cr.cash_receipt_id
5998 AND crh.org_id = cr.org_id /* MOAC_SQL_CHANGE */
5999 AND NVL(cr.confirmed_flag,'Y') = 'Y'
6000 AND crh.current_record_flag = 'Y'
6001 AND crh.status <> DECODE ( crh.factor_flag
6002 , 'Y', 'RISK_ELIMINATED'
6003 , 'CLEARED')
6004 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
6005 AND crh.status <> 'REVERSED'
6006 AND cr.currency_code =
6007 p_curr_code
6008 AND cr.pay_from_customer = cas.cust_account_id
6009 AND cr.org_id = cas.org_id
6010 AND cr.CUSTOMER_SITE_USE_ID = su.site_use_id
6011 AND su.cust_acct_site_id = cas.cust_acct_site_id
6012 AND cas.cust_account_id = p_customer_id
6013 AND su.site_use_code = 'DRAWEE'
6014 AND NOT EXISTS
6015 (
6016 SELECT
6017 'X'
6018 FROM
6019 ar_receivable_applications rap
6020 WHERE
6021 rap.cash_receipt_id = cr.cash_receipt_id
6022 AND rap.applied_payment_schedule_id = -2
6023 AND rap.display = 'Y' );
6024
6025
6026
6027 ---CUSTOMER UNINVOICED ORDERS
6028
6029 CURSOR cust_uninvoiced_orders (p_curr_code IN VARCHAR2 default NULL) IS
6030 SELECT SUM (
6031 ( l.ordered_quantity * l.unit_selling_price )
6032 + DECODE(l_include_tax_flag, 'Y',
6033 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
6034 )
6035 FROM oe_order_lines_all l
6036 , oe_order_headers h
6037 , hz_cust_site_uses_all su
6038 , hz_cust_acct_sites_all cas
6039 WHERE h.invoice_to_org_id = su.site_use_id
6040 AND h.org_id = su.org_id
6041 AND su.cust_acct_site_id = cas.cust_acct_site_id
6042 AND cas.cust_account_id = p_customer_id
6043 AND h.header_id = l.header_id
6044 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
6045 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6046 <= l_shipping_horizon
6047 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6048 AND h.open_flag = 'Y'
6049 AND l.line_category_code = 'ORDER'
6050 AND h.booked_flag = 'Y'
6051 AND l.open_flag = 'Y'
6052 AND h.header_id <> l_header_id
6053 AND h.transactional_curr_code = p_curr_code
6054 AND (EXISTS
6055 (SELECT NULL
6056 FROM oe_payment_types_all pt
6057 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6058 NVL(h.payment_type_code, 'BME'))
6059 AND pt.credit_check_flag = 'Y'
6060 AND NVL(pt.org_id, -99) = G_ORG_ID)
6061 OR
6062 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6063
6064 ---CUSTOMER UNINVOICED ORDERS, including Returns
6065
6066 CURSOR cust_uninv_orders_ret(p_curr_code IN VARCHAR2 default NULL) IS
6067 SELECT
6068 SUM (
6069 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
6070 * l.unit_selling_price )
6071 + DECODE(l_include_tax_flag, 'Y',
6072 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 --TaxER
6073 ))
6074 FROM oe_order_lines l
6075 , oe_order_headers_all h
6076 , hz_cust_site_uses_all su
6077 , hz_cust_acct_sites_all cas
6078 WHERE h.invoice_to_org_id = su.site_use_id
6079 AND h.org_id = su.org_id
6080 AND su.cust_acct_site_id = cas.cust_acct_site_id
6081 AND cas.cust_account_id = p_customer_id
6082 AND h.header_id = l.header_id
6083 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
6084 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6085 <= l_shipping_horizon
6086 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6087 AND h.open_flag = 'Y'
6088 AND h.booked_flag = 'Y'
6089 AND l.open_flag = 'Y'
6090 AND h.header_id <> l_header_id
6091 AND h.transactional_curr_code = p_curr_code
6092 AND (EXISTS
6093 (SELECT NULL
6094 FROM oe_payment_types_all pt
6095 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6096 NVL(h.payment_type_code, 'BME'))
6097 AND pt.credit_check_flag = 'Y'
6098 AND NVL(pt.org_id, -99) = G_ORG_ID)
6099 OR
6100 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6101
6102
6103 -------------------------------------------------
6104 ------- commitments -- Exsiting code enhancement
6105 ------------------------------------------------
6106
6107 Cursor customer_commitment_total (p_curr_code IN VARCHAR2 default NULL) IS
6108 SELECT NVL(SUM(P.commitment_applied_amount), 0)
6109 FROM OE_PAYMENTS P, OE_ORDER_HEADERS_ALL H, OE_ORDER_LINES L
6110 , hz_cust_site_uses_all su
6111 , hz_cust_acct_sites_all cas
6112 WHERE H.invoice_to_org_id = su.site_use_id
6113 AND h.org_id = su.org_id
6114 AND su.cust_acct_site_id = cas.cust_acct_site_id
6115 AND cas.cust_account_id = p_customer_id
6116 AND H.TRANSACTIONAL_CURR_CODE = p_curr_code
6117 AND H.OPEN_FLAG = 'Y'
6118 AND H.BOOKED_FLAG = 'Y'
6119 AND H.HEADER_ID = P.HEADER_ID
6120 AND H.HEADER_ID <> l_header_id
6121 AND L.HEADER_ID = H.HEADER_ID
6122 AND L.ORG_ID = H.ORG_ID /* MOAC_SQL_CHANGE */
6123 AND L.LINE_ID = P.LINE_ID
6124 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6125 AND L.OPEN_FLAG = 'Y'
6126 AND L.LINE_CATEGORY_CODE = 'ORDER'
6127 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6128 <= l_shipping_horizon
6129 AND (EXISTS
6130 (SELECT NULL
6131 FROM oe_payment_types_all pt
6132 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6133 NVL(h.payment_type_code, 'BME'))
6134 AND pt.credit_check_flag = 'Y'
6135 AND NVL(pt.org_id, -99) = G_ORG_ID)
6136 OR
6137 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6138 Cursor site_commitment_total (p_curr_code IN VARCHAR2 default NULL) IS
6139 SELECT NVL(SUM(P.commitment_applied_amount), 0)
6140 FROM OE_PAYMENTS P, OE_ORDER_HEADERS_ALL H, OE_ORDER_LINES L
6141 WHERE H.INVOICE_TO_ORG_ID = p_site_use_id
6142 AND H.TRANSACTIONAL_CURR_CODE = p_curr_code
6143 AND H.OPEN_FLAG = 'Y'
6144 AND H.BOOKED_FLAG = 'Y'
6145 AND H.HEADER_ID = P.HEADER_ID
6146 AND H.ORG_ID = L.ORG_ID /* MOAC_SQL_CHANGE */
6147 AND H.HEADER_ID <> l_header_id
6148 AND L.HEADER_ID = H.HEADER_ID
6149 AND L.LINE_ID = P.LINE_ID
6150 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6151 AND L.OPEN_FLAG = 'Y'
6152 AND L.LINE_CATEGORY_CODE = 'ORDER'
6153 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6154 <= l_shipping_horizon
6155 AND (EXISTS
6156 (SELECT NULL
6157 FROM oe_payment_types_all pt
6158 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6159 NVL(h.payment_type_code, 'BME'))
6160 AND pt.credit_check_flag = 'Y'
6161 AND NVL(pt.org_id, -99) = G_ORG_ID)
6162 OR
6163 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6164
6165 -------------------- End commitment cursors -----------------
6166
6167 -- Customer orders not on hold
6168
6169 CURSOR cust_orders_not_on_hold (p_curr_code IN VARCHAR2 default NULL) IS
6170 SELECT SUM (
6171 (l.ordered_quantity * l.unit_selling_price )
6172 + DECODE(l_include_tax_flag, 'Y',
6173 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
6174 )
6175 FROM oe_order_lines l
6176 , oe_order_headers_all h
6177 , hz_cust_site_uses_all su
6178 , hz_cust_acct_sites_all cas
6179 WHERE h.invoice_to_org_id = su.site_use_id
6180 AND h.org_id = su.org_id
6181 AND su.cust_acct_site_id = cas.cust_acct_site_id
6182 AND cas.cust_account_id = p_customer_id
6183 AND h.header_id = l.header_id
6184 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
6185 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6186 <= l_shipping_horizon
6187 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6188 AND h.open_flag = 'Y'
6189 AND l.line_category_code = 'ORDER'
6190 AND h.booked_flag = 'Y'
6191 AND l.open_flag = 'Y'
6192 AND h.header_id <> l_header_id
6193 AND NOT EXISTS ( SELECT 1
6194 FROM oe_order_holds_all oh --Performance issue (SQL ID-14880589 FTS on OE_ORDER_HOLDS_ALL)
6195 WHERE h.header_id = oh.header_id
6196 AND oh.hold_release_id IS NULL )
6197 AND h.transactional_curr_code = p_curr_code
6198 AND (EXISTS
6199 (SELECT NULL
6200 FROM oe_payment_types_all pt
6201 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6202 NVL(h.payment_type_code, 'BME'))
6203 AND pt.credit_check_flag = 'Y'
6204 AND NVL(pt.org_id, -99) = G_ORG_ID)
6205 OR
6206 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6207
6208 -- Customer orders not on hold including Returns
6209
6210 CURSOR cust_ord_not_on_hold_ret (p_curr_code IN VARCHAR2 default NULL) IS
6211 SELECT
6212 SUM (
6213 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
6214 * l.unit_selling_price )
6215 + DECODE(l_include_tax_flag, 'Y',
6216 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 ) --TaxER
6217 )
6218 FROM oe_order_lines l
6219 , oe_order_headers_all h
6220 , hz_cust_site_uses_all su
6221 , hz_cust_acct_sites_all cas
6222 WHERE h.invoice_to_org_id = su.site_use_id
6223 AND h.org_id = su.org_id
6224 AND su.cust_acct_site_id = cas.cust_acct_site_id
6225 AND cas.cust_account_id = p_customer_id
6226 AND h.header_id = l.header_id
6227 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
6228 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6229 <= l_shipping_horizon
6230 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6231 AND h.open_flag = 'Y'
6232 AND h.booked_flag = 'Y'
6233 AND l.open_flag = 'Y'
6234 AND h.header_id <> l_header_id
6235 AND NOT EXISTS ( SELECT 1
6236 FROM oe_order_holds_all oh --Performance issue (SQL ID-14880618 FTS on OE_ORDER_HOLDS_ALL)
6237 WHERE h.header_id = oh.header_id
6238 AND oh.hold_release_id IS NULL )
6239 AND h.transactional_curr_code = p_curr_code
6240 AND (EXISTS
6241 (SELECT NULL
6242 FROM oe_payment_types_all pt
6243 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6244 NVL(h.payment_type_code, 'BME'))
6245 AND pt.credit_check_flag = 'Y'
6246 AND NVL(pt.org_id, -99) = G_ORG_ID)
6247 OR
6248 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6249
6250 -- Customer orders on hold
6251 CURSOR cust_orders_on_hold (p_curr_code IN VARCHAR2 default NULL) IS
6252 SELECT SUM (
6253 (l.ordered_quantity * l.unit_selling_price )
6254 + DECODE(l_include_tax_flag, 'Y',
6255 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
6256 )
6257 FROM oe_order_lines l
6258 , oe_order_headers_all h
6259 , hz_cust_site_uses_all su
6260 , hz_cust_acct_sites_all cas
6261 WHERE h.invoice_to_org_id = su.site_use_id
6262 AND h.org_id = su.org_id
6263 AND su.cust_acct_site_id = cas.cust_acct_site_id
6264 AND cas.cust_account_id = p_customer_id
6265 AND h.header_id = l.header_id
6266 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
6267 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6268 <= l_shipping_horizon
6269 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6270 AND h.open_flag = 'Y'
6271 AND l.line_category_code = 'ORDER'
6272 AND h.booked_flag = 'Y'
6273 AND l.open_flag = 'Y'
6274 AND h.header_id <> l_header_id
6275 AND EXISTS ( SELECT 1
6276 FROM oe_order_holds_all oh
6277 WHERE h.header_id = oh.header_id
6278 AND oh.hold_release_id IS NULL )
6279 AND h.transactional_curr_code = p_curr_code
6280 AND (EXISTS
6281 (SELECT NULL
6282 FROM oe_payment_types_all pt
6283 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6284 NVL(h.payment_type_code, 'BME'))
6285 AND pt.credit_check_flag = 'Y'
6286 AND NVL(pt.org_id, -99) = G_ORG_ID)
6287 OR
6288 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6289
6290 -- Customer orders on hold including Returns
6291
6292 CURSOR cust_ord_on_hold_ret (p_curr_code IN VARCHAR2 default NULL) IS
6293 SELECT
6294 SUM (
6295 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
6296 * l.unit_selling_price )
6297 + DECODE(l_include_tax_flag, 'Y',
6298 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 ) --TaxER
6299 )
6300 FROM oe_order_lines l
6301 , oe_order_headers_all h
6302 , hz_cust_site_uses_all su
6303 , hz_cust_acct_sites_all cas
6304 WHERE h.invoice_to_org_id = su.site_use_id
6305 AND h.org_id = su.org_id
6306 AND su.cust_acct_site_id = cas.cust_acct_site_id
6307 AND su.org_id = cas.org_id
6308 AND cas.cust_account_id = p_customer_id
6309 AND h.header_id = l.header_id
6310 AND h.org_id = l.org_id
6311 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6312 <= l_shipping_horizon
6313 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6314 AND h.open_flag = 'Y'
6315 AND h.booked_flag = 'Y'
6316 AND l.open_flag = 'Y'
6317 AND h.header_id <> l_header_id
6318 AND EXISTS ( SELECT 1
6319 FROM oe_order_holds_all oh
6320 WHERE h.header_id = oh.header_id
6321 AND oh.hold_release_id IS NULL )
6322 AND h.transactional_curr_code = p_curr_code
6323 AND (EXISTS
6324 (SELECT NULL
6325 FROM oe_payment_types_all pt
6326 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6327 NVL(h.payment_type_code, 'BME'))
6328 AND pt.credit_check_flag = 'Y'
6329 AND NVL(pt.org_id, -99) = G_ORG_ID)
6330 OR
6331 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6332
6333 -------------------------------------------------
6334 --Fix Freight charges CURSORS for shipping Horizons
6335 -------------------------------------------------
6336 -- customer hdr freights , Does not include curr order
6337 CURSOR cust_uninv_hdr_freight1 (p_curr_code IN VARCHAR2 default null) IS
6338 SELECT
6339 SUM
6340 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
6341 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
6342 p.operand, (l.ordered_quantity * p.adjusted_amount)))
6343 --TaxER Start
6344 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
6345 --TaxER End
6346 )
6347 FROM oe_price_adjustments p
6348 , oe_order_lines l
6349 , oe_order_headers_all h
6350 , hz_cust_site_uses_all su
6351 , hz_cust_acct_sites_all cas
6352 WHERE h.invoice_to_org_id = su.site_use_id
6353 AND h.org_id = su.org_id
6354 AND su.cust_acct_site_id = cas.cust_acct_site_id
6355 AND cas.cust_account_id = p_customer_id
6356 AND p.line_id = l.line_id
6357 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6358 <= l_shipping_horizon
6359 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6360 AND p.header_id = l.header_id
6361 AND p.header_id = h.header_id
6362 AND h.header_id = l.header_id
6363 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
6364 AND h.booked_flag = 'Y'
6365 AND h.open_flag = 'Y'
6366 AND l.open_flag = 'Y'
6367 AND l.line_category_code = 'ORDER'
6368 --TaxER AND p.applied_flag = 'Y'
6369 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6370 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6371 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6372 AND h.transactional_curr_code = p_curr_code
6373 AND h.header_id <> l_header_id
6374 AND (EXISTS
6375 (SELECT NULL
6376 FROM oe_payment_types_all pt
6377 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6378 NVL(h.payment_type_code, 'BME'))
6379 AND pt.credit_check_flag = 'Y'
6380 AND NVL(pt.org_id, -99) = G_ORG_ID)
6381 OR
6382 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6383
6384 -- customer hdr freights , Does not include curr order,
6385 -- including Returns
6386
6387 CURSOR cust_uninv_hdr_freight1_ret (p_curr_code IN VARCHAR2 default null) IS
6388 SELECT
6389 SUM
6390 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
6391 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
6392 p.operand, (l.ordered_quantity * p.adjusted_amount)))
6393 --TaxER Start
6394 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
6395 --TaxER End
6396 )
6397 FROM oe_price_adjustments p
6398 , oe_order_lines l
6399 , oe_order_headers_all h
6400 , hz_cust_site_uses_all su
6401 , hz_cust_acct_sites_all cas
6402 WHERE h.invoice_to_org_id = su.site_use_id
6403 AND h.org_id = su.org_id
6404 AND su.cust_acct_site_id = cas.cust_acct_site_id
6405 AND cas.cust_account_id = p_customer_id
6406 AND p.line_id = l.line_id
6407 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6408 <= l_shipping_horizon
6409 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6410 AND p.header_id = l.header_id
6411 AND p.header_id = h.header_id
6412 AND h.header_id = l.header_id
6413 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
6414 AND h.booked_flag = 'Y'
6415 AND h.open_flag = 'Y'
6416 AND l.open_flag = 'Y'
6417 --TaxER AND p.applied_flag = 'Y'
6418 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6419 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6420 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6421 AND h.transactional_curr_code = p_curr_code
6422 AND h.header_id <> l_header_id
6423 AND (EXISTS
6424 (SELECT NULL
6425 FROM oe_payment_types_all pt
6426 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6427 NVL(h.payment_type_code, 'BME'))
6428 AND pt.credit_check_flag = 'Y'
6429 AND NVL(pt.org_id, -99) = G_ORG_ID)
6430 OR
6431 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6432
6433
6434 -- customer freights 2
6435 -- check if there is at least on line with credit check flag = Y, then
6436 -- include the header freight.
6437 CURSOR cust_uninv_hdr_freight2 (p_curr_code IN VARCHAR2 default null) IS
6438 SELECT
6439 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND)
6440 --TaxER Start
6441 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
6442 --TaxER End
6443 FROM
6444 oe_price_adjustments p
6445 , oe_order_headers h
6446 , hz_cust_site_uses_all su
6447 , hz_cust_acct_sites_all cas
6448 WHERE h.invoice_to_org_id = su.site_use_id
6449 AND h.org_id = su.org_id /* MOAC_SQL_CHANGE */
6450 AND su.cust_acct_site_id = cas.cust_acct_site_id
6451 AND cas.cust_account_id = p_customer_id
6452 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
6453 AND h.transactional_curr_code = p_curr_code
6454 AND p.line_id IS NULL
6455 AND p.header_id = h.header_id
6456 AND h.order_category_code IN ('ORDER','MIXED')
6457 AND open_flag = 'Y'
6458 AND h.booked_flag = 'Y'
6459 --TaxER AND p.applied_flag = 'Y'
6460 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6461 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6462 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6463 AND h.header_id <> l_header_id
6464 AND EXISTS
6465 (SELECT NULL
6466 FROM oe_payment_types_all pt,
6467 oe_order_lines l
6468 WHERE pt.credit_check_flag = 'Y'
6469 AND l.header_id = h.header_id
6470 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
6471 AND NVL(pt.org_id, -99) = G_ORG_ID
6472 AND pt.payment_type_code =
6473 DECODE(l.payment_type_code, NULL,
6474 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
6475 h.payment_type_code),
6476 l.payment_type_code)
6477 );
6478
6479
6480 -- customer freights 2 including Returns
6481 -- check if there is at least on line with credit check flag = Y, then
6482 -- include the header freight.
6483
6484 CURSOR cust_uninv_hdr_freight2_ret (p_curr_code IN VARCHAR2 default null) IS
6485 SELECT
6486 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
6487 --TaxER Start
6488 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
6489 --TaxER End
6490 FROM
6491 oe_price_adjustments p
6492 , oe_order_headers_all h
6493 , hz_cust_site_uses_all su
6494 , hz_cust_acct_sites_all cas
6495 WHERE h.invoice_to_org_id = su.site_use_id
6496 AND h.org_id = su.org_id /* MOAC_SQL_CHANGE */
6497 AND su.cust_acct_site_id = cas.cust_acct_site_id
6498 AND cas.cust_account_id = p_customer_id
6499 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
6500 AND h.transactional_curr_code = p_curr_code
6501 AND p.line_id IS NULL
6502 AND p.header_id = h.header_id
6503 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
6504 AND open_flag = 'Y'
6505 AND h.booked_flag = 'Y'
6506 --TaxER AND p.applied_flag = 'Y'
6507 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6508 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6509 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6510 AND h.header_id <> l_header_id
6511 AND EXISTS
6512 (SELECT NULL
6513 FROM oe_payment_types_all pt,
6514 oe_order_lines l
6515 WHERE pt.credit_check_flag = 'Y'
6516 AND l.header_id = h.header_id
6517 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
6518 AND NVL(pt.org_id, -99) = G_ORG_ID
6519 AND pt.payment_type_code =
6520 DECODE(l.payment_type_code, NULL,
6521 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
6522 h.payment_type_code),
6523 l.payment_type_code)
6524 );
6525
6526
6527 -- customer freights not on hold 1
6528 CURSOR cust_no_hold_hdr_freight1 (p_curr_code IN VARCHAR2 default null) IS
6529 SELECT
6530 SUM
6531 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
6532 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
6533 p.operand, (l.ordered_quantity * p.adjusted_amount)))
6534 --TaxER Start
6535 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
6536 --TaxER End
6537 )
6538 FROM oe_price_adjustments p
6539 , oe_order_lines l
6540 , oe_order_headers_all h
6541 , hz_cust_site_uses_all su
6542 , hz_cust_acct_sites_all cas
6543 WHERE h.invoice_to_org_id = su.site_use_id
6544 AND h.org_id = su.org_id
6545 AND su.cust_acct_site_id = cas.cust_acct_site_id
6546 AND cas.cust_account_id = p_customer_id
6547 AND p.line_id = l.line_id
6548 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6549 <= l_shipping_horizon
6550 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6551 AND l.header_id = h.header_id
6552 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
6553 AND p.header_id = l.header_id
6554 AND p.header_id = h.header_id
6555 AND h.booked_flag = 'Y'
6556 AND h.open_flag = 'Y'
6557 AND l.open_flag = 'Y'
6558 AND l.line_category_code = 'ORDER'
6559 --TaxER AND p.applied_flag = 'Y'
6560 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6561 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6562 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6563 AND h.transactional_curr_code = p_curr_code
6564 AND h.header_id <> l_header_id
6565 AND NOT EXISTS ( SELECT 1
6566 FROM oe_order_holds_all oh --Performance issue (SQL ID-14880775 FTS on OE_ORDER_HOLDS_ALL)
6567 WHERE h.header_id = oh.header_id
6568 AND oh.line_id IS NULL
6569 AND oh.hold_release_id IS NULL )
6570 AND (EXISTS
6571 (SELECT NULL
6572 FROM oe_payment_types_all pt
6573 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6574 NVL(h.payment_type_code, 'BME'))
6575 AND pt.credit_check_flag = 'Y'
6576 AND NVL(pt.org_id, -99) = G_ORG_ID)
6577 OR
6578 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6579
6580
6581 -- customer freights not on hold 1
6582 CURSOR cust_no_hold_hdr_freight1_ret (p_curr_code IN VARCHAR2 default null) IS
6583 SELECT
6584 SUM
6585 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
6586 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
6587 p.operand, (l.ordered_quantity * p.adjusted_amount)))
6588 --TaxER Start
6589 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
6590 --TaxER End
6591 )
6592 FROM oe_price_adjustments p
6593 , oe_order_lines l
6594 , oe_order_headers_all h
6595 , hz_cust_site_uses_all su
6596 , hz_cust_acct_sites_all cas
6597 WHERE h.invoice_to_org_id = su.site_use_id
6598 AND h.org_id = su.org_id
6599 AND su.cust_acct_site_id = cas.cust_acct_site_id
6600 AND cas.cust_account_id = p_customer_id
6601 AND p.line_id = l.line_id
6602 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6603 <= l_shipping_horizon
6604 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6605 AND l.header_id = h.header_id
6606 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
6607 AND p.header_id = l.header_id
6608 AND p.header_id = h.header_id
6609 AND h.booked_flag = 'Y'
6610 AND h.open_flag = 'Y'
6611 AND l.open_flag = 'Y'
6612 --TaxER AND p.applied_flag = 'Y'
6613 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6614 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6615 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6616 AND h.transactional_curr_code = p_curr_code
6617 AND h.header_id <> l_header_id
6618 AND NOT EXISTS ( SELECT 1
6619 FROM oe_order_holds_all oh --Performance issue (SQL ID-14880801 FTS on OE_ORDER_HOLDS_ALL)
6620 WHERE h.header_id = oh.header_id
6621 AND oh.line_id IS NULL
6622 AND oh.hold_release_id IS NULL )
6623 AND (EXISTS
6624 (SELECT NULL
6625 FROM oe_payment_types_all pt
6626 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6627 NVL(h.payment_type_code, 'BME'))
6628 AND pt.credit_check_flag = 'Y'
6629 AND NVL(pt.org_id, -99) = G_ORG_ID)
6630 OR
6631 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6632
6633 -- customer freights on hold 1
6634
6635 CURSOR cust_hold_hdr_freight1 (p_curr_code IN VARCHAR2 default null) IS
6636 SELECT
6637 SUM
6638 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
6639 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
6640 p.operand, (l.ordered_quantity * p.adjusted_amount)))
6641 --TaxER Start
6642 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
6643 --TaxER End
6644 )
6645 FROM oe_price_adjustments p
6646 , oe_order_lines l
6647 , oe_order_headers_all h
6648 , hz_cust_site_uses_all su
6649 , hz_cust_acct_sites_all cas
6650 WHERE h.invoice_to_org_id = su.site_use_id
6651 AND h.org_id = su.org_id
6652 AND su.cust_acct_site_id = cas.cust_acct_site_id
6653 AND cas.cust_account_id = p_customer_id
6654 AND p.line_id = l.line_id
6655 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6656 <= l_shipping_horizon
6657 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6658 AND l.header_id = h.header_id
6659 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
6660 AND p.header_id = l.header_id
6661 AND p.header_id = h.header_id
6662 AND h.booked_flag = 'Y'
6663 AND h.open_flag = 'Y'
6664 AND l.open_flag = 'Y'
6665 AND l.line_category_code = 'ORDER'
6666 --TaxER AND p.applied_flag = 'Y'
6667 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6668 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6669 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6670 AND h.transactional_curr_code = p_curr_code
6671 AND h.header_id <> l_header_id
6672 AND EXISTS ( SELECT 1
6673 FROM oe_order_holds_all oh
6674 WHERE h.header_id = oh.header_id
6675 AND oh.line_id IS NULL
6676 AND oh.hold_release_id IS NULL )
6677 AND (EXISTS
6678 (SELECT NULL
6679 FROM oe_payment_types_all pt
6680 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6681 NVL(h.payment_type_code, 'BME'))
6682 AND pt.credit_check_flag = 'Y'
6683 AND NVL(pt.org_id, -99) = G_ORG_ID)
6684 OR
6685 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6686
6687
6688 -- customer freights on hold 1 with returns
6689
6690 CURSOR cust_hold_hdr_freight1_ret (p_curr_code IN VARCHAR2 default null) IS
6691 SELECT
6692 SUM
6693 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
6694 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
6695 p.operand, (l.ordered_quantity * p.adjusted_amount)))
6696 --TaxER Start
6697 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
6698 --TaxER End
6699 )
6700 FROM oe_price_adjustments p
6701 , oe_order_lines l
6702 , oe_order_headers_all h
6703 , hz_cust_site_uses_all su
6704 , hz_cust_acct_sites_all cas
6705 WHERE h.invoice_to_org_id = su.site_use_id
6706 AND h.org_id = su.org_id
6707 AND su.cust_acct_site_id = cas.cust_acct_site_id
6708 AND su.org_id = cas.org_id
6709 AND cas.cust_account_id = p_customer_id
6710 AND p.line_id = l.line_id
6711 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
6712 <= l_shipping_horizon
6713 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
6714 AND l.header_id = h.header_id
6715 AND l.org_id = h.org_id
6716 AND p.header_id = l.header_id
6717 AND p.header_id = h.header_id
6718 AND h.booked_flag = 'Y'
6719 AND h.open_flag = 'Y'
6720 AND l.open_flag = 'Y'
6721 --TaxER AND p.applied_flag = 'Y'
6722 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6723 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6724 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6725 AND h.transactional_curr_code = p_curr_code
6726 AND h.header_id <> l_header_id
6727 AND EXISTS ( SELECT 1
6728 FROM oe_order_holds_all oh
6729 WHERE h.header_id = oh.header_id
6730 AND oh.line_id IS NULL
6731 AND oh.hold_release_id IS NULL )
6732 AND (EXISTS
6733 (SELECT NULL
6734 FROM oe_payment_types_all pt
6735 WHERE pt.payment_type_code = NVL(l.payment_type_code,
6736 NVL(h.payment_type_code, 'BME'))
6737 AND pt.credit_check_flag = 'Y'
6738 AND NVL(pt.org_id, -99) = G_ORG_ID)
6739 OR
6740 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
6741
6742 -- customer not on hold freight 2
6743 CURSOR cust_no_hold_hdr_freight2 (p_curr_code IN VARCHAR2 default null) IS
6744 SELECT
6745 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
6746 --TaxER Start
6747 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
6748 --TaxER End
6749 FROM
6750 oe_price_adjustments p
6751 , oe_order_headers h
6752 , hz_cust_site_uses_all su
6753 , hz_cust_acct_sites_all cas
6754 WHERE h.invoice_to_org_id = su.site_use_id
6755 AND h.org_id = su.org_id
6756 AND su.cust_acct_site_id = cas.cust_acct_site_id
6757 AND cas.cust_account_id = p_customer_id
6758 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
6759 AND h.transactional_curr_code = p_curr_code
6760 AND p.line_id IS NULL
6761 AND p.header_id = h.header_id
6762 AND h.order_category_code IN ('ORDER','MIXED')
6763 AND h.open_flag = 'Y'
6764 AND h.booked_flag = 'Y'
6765 --TaxER AND p.applied_flag = 'Y'
6766 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6767 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6768 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6769 AND h.header_id <> l_header_id
6770 AND NOT EXISTS ( SELECT 1
6771 FROM oe_order_holds_all oh --Performance issue (SQL ID-14880869 FTS on OE_ORDER_HOLDS_ALL)
6772 WHERE h.header_id = oh.header_id
6773 AND oh.line_id IS NULL
6774 AND oh.hold_release_id IS NULL )
6775 AND EXISTS
6776 (SELECT NULL
6777 FROM oe_payment_types_all pt,
6778 oe_order_lines_all l --Performance issue (SQL ID-14880869 FTS on OE_ORDER_HOLDS_ALL)
6779 WHERE pt.credit_check_flag = 'Y'
6780 AND l.header_id = h.header_id
6781 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
6782 AND NVL(pt.org_id, -99) = G_ORG_ID
6783 AND pt.payment_type_code =
6784 DECODE(l.payment_type_code, NULL,
6785 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
6786 h.payment_type_code),
6787 l.payment_type_code)
6788 );
6789
6790 -- customer not on hold freight 2 including Returns
6791
6792 CURSOR cust_no_hold_hdr_freight2_ret (p_curr_code IN VARCHAR2 default null) IS
6793 SELECT
6794 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
6795 --TaxER Start
6796 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
6797 --TaxER End
6798 FROM
6799 oe_price_adjustments p
6800 , oe_order_headers h
6801 , hz_cust_site_uses_all su
6802 , hz_cust_acct_sites_all cas
6803 WHERE h.invoice_to_org_id = su.site_use_id
6804 AND h.org_id = su.org_id
6805 AND su.cust_acct_site_id = cas.cust_acct_site_id
6806 AND cas.cust_account_id = p_customer_id
6807 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
6808 AND h.transactional_curr_code = p_curr_code
6809 AND p.line_id IS NULL
6810 AND p.header_id = h.header_id
6811 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
6812 AND h.open_flag = 'Y'
6813 AND h.booked_flag = 'Y'
6814 --TaxER AND p.applied_flag = 'Y'
6815 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6816 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6817 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6818 AND h.header_id <> l_header_id
6819 AND NOT EXISTS ( SELECT 1
6820 FROM oe_order_holds_all oh --Performance issue (SQL ID-14880892 FTS on OE_ORDER_HOLDS_ALL)
6821 WHERE h.header_id = oh.header_id
6822 AND oh.line_id IS NULL
6823 AND oh.hold_release_id IS NULL )
6824 AND EXISTS
6825 (SELECT NULL
6826 FROM oe_payment_types_all pt,
6827 oe_order_lines_all l --Performance issue (SQL ID-14880892 FTS on OE_ORDER_HOLDS_ALL)
6828 WHERE pt.credit_check_flag = 'Y'
6829 AND l.header_id = h.header_id
6830 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
6831 AND NVL(pt.org_id, -99) = G_ORG_ID
6832 AND pt.payment_type_code =
6833 DECODE(l.payment_type_code, NULL,
6834 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
6835 h.payment_type_code),
6836 l.payment_type_code)
6837 );
6838
6839 -- customer on hold freight 2
6840 CURSOR cust_hold_hdr_freight2 (p_curr_code IN VARCHAR2 default null) IS
6841 SELECT
6842 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
6843 --TaxER Start
6844 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
6845 --TaxER End
6846 FROM
6847 oe_price_adjustments p
6848 , oe_order_headers h
6849 , hz_cust_site_uses_all su
6850 , hz_cust_acct_sites_all cas
6851 WHERE h.invoice_to_org_id = su.site_use_id
6852 AND h.org_id = su.org_id
6853 AND su.cust_acct_site_id = cas.cust_acct_site_id
6854 AND cas.cust_account_id = p_customer_id
6855 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
6856 AND h.transactional_curr_code = p_curr_code
6857 AND p.line_id IS NULL
6858 AND p.header_id = h.header_id
6859 AND h.order_category_code IN ('ORDER','MIXED')
6860 AND h.open_flag = 'Y'
6861 AND h.booked_flag = 'Y'
6862 --TaxER AND p.applied_flag = 'Y'
6863 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6864 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6865 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6866 AND h.header_id <> l_header_id
6867 AND EXISTS ( SELECT 1
6868 FROM oe_order_holds_all oh --Performance issue (SQL ID-14880915 FTS on OE_ORDER_HOLDS_ALL)
6869 WHERE h.header_id = oh.header_id
6870 AND oh.line_id IS NULL
6871 AND oh.hold_release_id IS NULL )
6872 AND EXISTS
6873 (SELECT NULL
6874 FROM oe_payment_types_all pt,
6875 oe_order_lines_all l --Performance issue (SQL ID-14880915 FTS on OE_ORDER_HOLDS_ALL)
6876 WHERE pt.credit_check_flag = 'Y'
6877 AND l.header_id = h.header_id
6878 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
6879 AND NVL(pt.org_id, -99) = G_ORG_ID
6880 AND pt.payment_type_code =
6881 DECODE(l.payment_type_code, NULL,
6882 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
6883 h.payment_type_code),
6884 l.payment_type_code)
6885 );
6886
6887 -- customer on hold freight 2 including Returns
6888
6889 CURSOR cust_hold_hdr_freight2_ret (p_curr_code IN VARCHAR2 default null) IS
6890 SELECT
6891 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
6892 --TaxER Start
6893 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
6894 --TaxER End
6895 FROM
6896 oe_price_adjustments p
6897 , oe_order_headers h
6898 , hz_cust_site_uses_all su
6899 , hz_cust_acct_sites_all cas
6900 WHERE h.invoice_to_org_id = su.site_use_id
6901 AND h.org_id = su.org_id
6902 AND su.cust_acct_site_id = cas.cust_acct_site_id
6903 AND cas.cust_account_id = p_customer_id
6904 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
6905 AND h.transactional_curr_code = p_curr_code
6906 AND p.line_id IS NULL
6907 AND p.header_id = h.header_id
6908 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
6909 AND h.open_flag = 'Y'
6910 AND h.booked_flag = 'Y'
6911 --TaxER AND p.applied_flag = 'Y'
6912 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
6913 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
6914 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
6915 AND h.header_id <> l_header_id
6916 AND EXISTS ( SELECT 1
6917 FROM oe_order_holds_all oh
6918 WHERE h.header_id = oh.header_id
6919 AND oh.line_id IS NULL
6920 AND oh.hold_release_id IS NULL )
6921 AND EXISTS
6922 (SELECT NULL
6923 FROM oe_payment_types_all pt,
6924 oe_order_lines l
6925 WHERE pt.credit_check_flag = 'Y'
6926 AND l.header_id = h.header_id
6927 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
6928 AND NVL(pt.org_id, -99) = G_ORG_ID
6929 AND pt.payment_type_code =
6930 DECODE(l.payment_type_code, NULL,
6931 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
6932 h.payment_type_code),
6933 l.payment_type_code)
6934 );
6935
6936 ------------------------
6937 --- SITE LEVEL CURSORS
6938 -------------------------
6939
6940 -- site external exposure cursor
6941 CURSOR site_external_exposure_csr (p_curr_code IN VARCHAR2 default NULL) IS
6942 SELECT SUM(balance)
6943 FROM oe_credit_summaries
6944 WHERE balance_type = 18
6945 AND site_use_id = p_site_use_id
6946 AND currency_code = p_curr_code;
6947
6948
6949 CURSOR site_ar_balance (p_curr_code IN VARCHAR2 default NULL) IS
6950 SELECT SUM(NVL(amount_due_remaining,0) )
6951 FROM ar_payment_schedules
6952 WHERE customer_site_use_id = p_site_use_id
6953 AND status = 'OP'
6954 AND invoice_currency_code =
6955 p_curr_code
6956 AND (receipt_confirmed_flag IS NULL OR receipt_confirmed_flag = 'Y')
6957 AND gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
6958 AND sysdate - trx_date >
6959 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS, sysdate - trx_date - 1);
6960
6961 -- PAY AT RISK
6962
6963 CURSOR site_pay_risk (p_curr_code IN VARCHAR2 default NULL) IS
6964 SELECT SUM(NVL(crh.amount,0))
6965 FROM ar_cash_receipt_history crh
6966 , ar_cash_receipts_all cr
6967 , hz_cust_site_uses_all s
6968 , hz_cust_acct_sites_all a
6969 WHERE crh.cash_receipt_id = cr.cash_receipt_id
6970 AND crh.org_id = cr.org_id
6971 AND crh.current_record_flag = 'Y'
6972 AND crh.status <> DECODE ( crh.factor_flag
6973 , 'Y', 'RISK_ELIMINATED'
6974 , 'CLEARED' )
6975 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
6976 AND crh.status <> 'REVERSED'
6977 AND cr.currency_code =
6978 p_curr_code
6979 AND cr.customer_site_use_id = s.site_use_id
6980 AND cr.org_id = s.org_id /* MOAC_SQL_CHANGE */
6981 AND cr.pay_from_customer = a.cust_account_id
6982 AND s.cust_acct_site_id = a.cust_acct_site_id
6983 AND s.site_use_id = p_site_use_id
6984 AND sysdate - cr.receipt_date
6985 > NVL(p_credit_check_rule_rec.OPEN_AR_DAYS,
6986 sysdate - cr.receipt_date - 1)
6987 AND NOT EXISTS
6988 (
6989 SELECT
6990 'X'
6991 FROM
6992 ar_receivable_applications rap
6993 WHERE
6994 rap.cash_receipt_id = cr.cash_receipt_id
6995 AND rap.applied_payment_schedule_id = -2
6996 AND rap.display = 'Y'
6997 ) ;
6998
6999
7000 ------------------------ SITE BR ------------------------------
7001 CURSOR site_br_balance (p_curr_code IN VARCHAR2 default NULL) IS
7002 SELECT SUM(NVL(amount_due_remaining,0) )
7003 FROM ar_payment_schedules
7004 WHERE customer_site_use_id = l_drawee_site_use_id
7005 AND status = 'OP'
7006 AND invoice_currency_code = p_curr_code
7007 AND (receipt_confirmed_flag IS NULL OR receipt_confirmed_flag = 'Y')
7008 AND gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY');
7009
7010 CURSOR site_br_pay_risk (p_curr_code IN VARCHAR2 default NULL) IS
7011 SELECT SUM(NVL(crh.amount,0))
7012 FROM ar_cash_receipt_history crh
7013 , ar_cash_receipts_all cr
7014 WHERE crh.cash_receipt_id = cr.cash_receipt_id
7015 AND crh.org_id = cr.org_id /* MOAC_SQL_CHANGE */
7016 AND crh.current_record_flag = 'Y'
7017 AND crh.status <> DECODE ( crh.factor_flag
7018 , 'Y', 'RISK_ELIMINATED'
7019 , 'CLEARED' )
7020 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
7021 AND crh.status <> 'REVERSED'
7022 AND cr.currency_code = p_curr_code
7023 AND cr.pay_from_customer = p_customer_id
7024 AND cr.customer_site_use_id = l_drawee_site_use_id
7025 AND NOT EXISTS
7026 (
7027 SELECT
7028 'X'
7029 FROM
7030 ar_receivable_applications rap
7031 WHERE
7032 rap.cash_receipt_id = cr.cash_receipt_id
7033 AND rap.applied_payment_schedule_id = -2
7034 AND rap.display = 'Y'
7035 ) ;
7036
7037
7038
7039 -- SITE UNINVOICED ORDERS
7040
7041 CURSOR site_uninvoiced_orders (p_curr_code IN VARCHAR2 default NULL) IS
7042 SELECT SUM (
7043 ( l.ordered_quantity * l.unit_selling_price )
7044 + DECODE(l_include_tax_flag, 'Y',
7045 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
7046 )
7047 FROM oe_order_lines l
7048 , oe_order_headers_all h
7049 WHERE h.invoice_to_org_id = p_site_use_id
7050 AND h.header_id = l.header_id
7051 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
7052 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7053 <= l_shipping_horizon
7054 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7055 AND h.open_flag = 'Y'
7056 AND l.line_category_code = 'ORDER'
7057 AND h.booked_flag = 'Y'
7058 AND l.open_flag = 'Y'
7059 AND h.header_id <> l_header_id
7060 AND h.transactional_curr_code = p_curr_code
7061 AND (EXISTS
7062 (SELECT NULL
7063 FROM oe_payment_types_all pt
7064 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7065 NVL(h.payment_type_code, 'BME'))
7066 AND pt.credit_check_flag = 'Y'
7067 AND NVL(pt.org_id, -99) = G_ORG_ID)
7068 OR
7069 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7070
7071
7072
7073 -- SITE UNINVOICED ORDERS including RETURNS
7074
7075 CURSOR site_uninvoiced_orders_ret (p_curr_code IN VARCHAR2 default NULL) IS
7076 SELECT
7077 SUM (
7078 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
7079 * l.unit_selling_price )
7080 + DECODE(l_include_tax_flag, 'Y',
7081 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 ) --TaxER
7082 )
7083 FROM oe_order_lines l
7084 , oe_order_headers_all h
7085 WHERE h.invoice_to_org_id = p_site_use_id
7086 AND h.header_id = l.header_id
7087 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
7088 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7089 <= l_shipping_horizon
7090 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7091 AND h.open_flag = 'Y'
7092 AND h.booked_flag = 'Y'
7093 AND l.open_flag = 'Y'
7094 AND h.header_id <> l_header_id
7095 AND h.transactional_curr_code = p_curr_code
7096 AND (EXISTS
7097 (SELECT NULL
7098 FROM oe_payment_types_all pt
7099 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7100 NVL(h.payment_type_code, 'BME'))
7101 AND pt.credit_check_flag = 'Y'
7102 AND NVL(pt.org_id, -99) = G_ORG_ID)
7103 OR
7104 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7105
7106
7107 -- site orders not on hold
7108
7109 CURSOR site_orders_not_on_hold (p_curr_code IN VARCHAR2 default NULL) IS
7110 SELECT SUM( (l.ordered_quantity * l.unit_selling_price )
7111 + DECODE( l_include_tax_flag, 'Y',
7112 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 --TaxER
7113 )
7114 )
7115 FROM oe_order_lines l
7116 , oe_order_headers_all h
7117 WHERE h.invoice_to_org_id = p_site_use_id
7118 AND h.header_id = l.header_id
7119 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
7120 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7121 <= l_shipping_horizon
7122 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7123 AND h.open_flag = 'Y'
7124 AND l.line_category_code = 'ORDER'
7125 AND h.booked_flag = 'Y'
7126 AND l.open_flag = 'Y'
7127 AND h.header_id <> l_header_id
7128 AND NOT EXISTS ( SELECT 1
7129 FROM oe_order_holds_all oh
7130 WHERE h.header_id = oh.header_id
7131 AND oh.hold_release_id IS NULL )
7132 AND h.transactional_curr_code = p_curr_code
7133 AND (EXISTS
7134 (SELECT NULL
7135 FROM oe_payment_types_all pt
7136 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7137 NVL(h.payment_type_code, 'BME'))
7138 AND pt.credit_check_flag = 'Y'
7139 AND NVL(pt.org_id, -99) = G_ORG_ID)
7140 OR
7141 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7142
7143
7144
7145 -- site orders not on hold including Returns
7146
7147 CURSOR site_orders_not_on_hold_ret (p_curr_code IN VARCHAR2 default NULL) IS
7148 SELECT
7149 SUM (
7150 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
7151 * l.unit_selling_price )
7152 + DECODE(l_include_tax_flag, 'Y',
7153 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 ) --TaxER
7154 )
7155 FROM oe_order_lines l
7156 , oe_order_headers_all h
7157 WHERE h.invoice_to_org_id = p_site_use_id
7158 AND h.header_id = l.header_id
7159 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
7160 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7161 <= l_shipping_horizon
7162 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7163 AND h.open_flag = 'Y'
7164 AND h.booked_flag = 'Y'
7165 AND l.open_flag = 'Y'
7166 AND h.header_id <> l_header_id
7167 AND NOT EXISTS ( SELECT 1
7168 FROM oe_order_holds_all oh
7169 WHERE h.header_id = oh.header_id
7170 AND oh.hold_release_id IS NULL )
7171 AND h.transactional_curr_code = p_curr_code
7172 AND (EXISTS
7173 (SELECT NULL
7174 FROM oe_payment_types_all pt
7175 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7176 NVL(h.payment_type_code, 'BME'))
7177 AND pt.credit_check_flag = 'Y'
7178 AND NVL(pt.org_id, -99) = G_ORG_ID)
7179 OR
7180 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7181
7182 -- site orders on hold
7183 CURSOR site_orders_on_hold (p_curr_code IN VARCHAR2 default NULL) IS
7184 SELECT SUM( (l.ordered_quantity * l.unit_selling_price )
7185 + DECODE( l_include_tax_flag, 'Y',
7186 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 --TaxER
7187 )
7188 )
7189 FROM oe_order_lines l
7190 , oe_order_headers_all h
7191 WHERE h.invoice_to_org_id = p_site_use_id
7192 AND h.header_id = l.header_id
7193 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
7194 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7195 <= l_shipping_horizon
7196 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7197 AND h.open_flag = 'Y'
7198 AND l.line_category_code = 'ORDER'
7199 AND h.booked_flag = 'Y'
7200 AND l.open_flag = 'Y'
7201 AND h.header_id <> l_header_id
7202 AND EXISTS ( SELECT 1
7203 FROM oe_order_holds_all oh
7204 WHERE h.header_id = oh.header_id
7205 AND oh.hold_release_id IS NULL )
7206 AND h.transactional_curr_code = p_curr_code
7207 AND (EXISTS
7208 (SELECT NULL
7209 FROM oe_payment_types_all pt
7210 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7211 NVL(h.payment_type_code, 'BME'))
7212 AND pt.credit_check_flag = 'Y'
7213 AND NVL(pt.org_id, -99) = G_ORG_ID)
7214 OR
7215 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7216
7217 -- site orders on hold including Returns
7218
7219 CURSOR site_orders_on_hold_ret (p_curr_code IN VARCHAR2 default NULL) IS
7220 SELECT
7221 SUM (
7222 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity) * l.unit_selling_price )
7223 + DECODE(l_include_tax_flag, 'Y',
7224 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 ) --TaxER
7225 )
7226 FROM oe_order_lines l
7227 , oe_order_headers_all h
7228 WHERE h.invoice_to_org_id = p_site_use_id
7229 AND h.header_id = l.header_id
7230 AND h.org_id = l.org_id /* MOAC_SQL_CHANGE */
7231 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7232 <= l_shipping_horizon
7233 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7234 AND h.open_flag = 'Y'
7235 AND h.booked_flag = 'Y'
7236 AND l.open_flag = 'Y'
7237 AND h.header_id <> l_header_id
7238 AND EXISTS ( SELECT 1
7239 FROM oe_order_holds_all oh --Performance issue (SQL ID-14881132 FTS on OE_ORDER_HOLDS_ALL)
7240 WHERE h.header_id = oh.header_id
7241 AND oh.hold_release_id IS NULL )
7242 AND h.transactional_curr_code = p_curr_code
7243 AND (EXISTS
7244 (SELECT NULL
7245 FROM oe_payment_types_all pt
7246 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7247 NVL(h.payment_type_code, 'BME'))
7248 AND pt.credit_check_flag = 'Y'
7249 AND NVL(pt.org_id, -99) = G_ORG_ID)
7250 OR
7251 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7252
7253 -- site hdr freights , Does not include curr order
7254 CURSOR site_uninv_hdr_freight1 (p_curr_code IN VARCHAR2 default null) IS
7255 SELECT
7256 SUM
7257 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
7258 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
7259 p.operand, (l.ordered_quantity * p.adjusted_amount)))
7260 --TaxER Start
7261 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
7262 --TaxER End
7263 )
7264 FROM oe_price_adjustments p
7265 , oe_order_lines l
7266 , oe_order_headers_all h
7267 WHERE h.invoice_to_org_id = p_site_use_id
7268 AND p.line_id = l.line_id
7269 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7270 <= l_shipping_horizon
7271 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7272 AND l.header_id = h.header_id
7273 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
7274 AND p.header_id = l.header_id
7275 AND p.header_id = h.header_id
7276 AND h.booked_flag = 'Y'
7277 AND h.open_flag = 'Y'
7278 AND l.open_flag = 'Y'
7279 AND l.line_category_code = 'ORDER'
7280 --TaxER AND p.applied_flag = 'Y'
7281 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7282 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7283 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7284 AND h.transactional_curr_code = p_curr_code
7285 AND h.header_id <> l_header_id
7286 AND (EXISTS
7287 (SELECT NULL
7288 FROM oe_payment_types_all pt
7289 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7290 NVL(h.payment_type_code, 'BME'))
7291 AND pt.credit_check_flag = 'Y'
7292 AND NVL(pt.org_id, -99) = G_ORG_ID)
7293 OR
7294 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7295
7296
7297 -- sitehdr freights , Does not include curr order
7298 -- Including Returns
7299
7300 CURSOR site_uninv_hdr_freight1_ret (p_curr_code IN VARCHAR2 default null) IS
7301 SELECT
7302 SUM
7303 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
7304 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
7305 p.operand, (l.ordered_quantity * p.adjusted_amount)))
7306 --TaxER Start
7307 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
7308 --TaxER End
7309 )
7310 FROM oe_price_adjustments p
7311 , oe_order_lines l
7312 , oe_order_headers_all h
7313 WHERE h.invoice_to_org_id = p_site_use_id
7314 AND p.line_id = l.line_id
7315 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7316 <= l_shipping_horizon
7317 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7318 AND l.header_id = h.header_id
7319 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
7320 AND p.header_id = l.header_id
7321 AND p.header_id = h.header_id
7322 AND h.booked_flag = 'Y'
7323 AND h.open_flag = 'Y'
7324 AND l.open_flag = 'Y'
7325 --TaxER AND p.applied_flag = 'Y'
7326 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7327 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7328 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7329 AND h.transactional_curr_code = p_curr_code
7330 AND h.header_id <> l_header_id
7331 AND (EXISTS
7332 (SELECT NULL
7333 FROM oe_payment_types_all pt
7334 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7335 NVL(h.payment_type_code, 'BME'))
7336 AND pt.credit_check_flag = 'Y'
7337 AND NVL(pt.org_id, -99) = G_ORG_ID)
7338 OR
7339 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7340
7341 -- sitefreights 2
7342 CURSOR site_uninv_hdr_freight2 (p_curr_code IN VARCHAR2 default null) IS
7343 SELECT
7344 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
7345 --TaxER Start
7346 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
7347 --TaxER End
7348 FROM
7349 oe_price_adjustments p
7350 , oe_order_headers h
7351 WHERE h.invoice_to_org_id = p_site_use_id
7352 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
7353 AND h.transactional_curr_code = p_curr_code
7354 AND p.line_id IS NULL
7355 AND p.header_id = h.header_id
7356 AND h.order_category_code IN ('ORDER','MIXED')
7357 AND h.open_flag = 'Y'
7358 AND h.booked_flag = 'Y'
7359 --TaxER AND p.applied_flag = 'Y'
7360 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7361 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7362 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7363 AND h.header_id <> l_header_id
7364 AND EXISTS
7365 (SELECT NULL
7366 FROM oe_payment_types_all pt,
7367 oe_order_lines l
7368 WHERE pt.credit_check_flag = 'Y'
7369 AND l.header_id = h.header_id
7370 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
7371 AND NVL(pt.org_id, -99) = G_ORG_ID
7372 AND pt.payment_type_code =
7373 DECODE(l.payment_type_code, NULL,
7374 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
7375 h.payment_type_code),
7376 l.payment_type_code)
7377 );
7378
7379 -- sitefreights 2 including Returns
7380
7381 CURSOR site_uninv_hdr_freight2_ret (p_curr_code IN VARCHAR2 default null) IS
7382 SELECT
7383 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
7384 --TaxER Start
7385 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
7386 --TaxER End
7387 FROM
7388 oe_price_adjustments p
7389 , oe_order_headers h
7390 WHERE h.invoice_to_org_id = p_site_use_id
7391 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
7392 AND h.transactional_curr_code = p_curr_code
7393 AND p.line_id IS NULL
7394 AND p.header_id = h.header_id
7395 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
7396 AND h.open_flag = 'Y'
7397 AND h.booked_flag = 'Y'
7398 --TaxER AND p.applied_flag = 'Y'
7399 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7400 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7401 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7402 AND h.header_id <> l_header_id
7403 AND EXISTS
7404 (SELECT NULL
7405 FROM oe_payment_types_all pt,
7406 oe_order_lines l
7407 WHERE pt.credit_check_flag = 'Y'
7408 AND l.header_id = h.header_id
7409 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
7410 AND NVL(pt.org_id, -99) = G_ORG_ID
7411 AND pt.payment_type_code =
7412 DECODE(l.payment_type_code, NULL,
7413 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
7414 h.payment_type_code),
7415 l.payment_type_code)
7416 );
7417
7418 -- site freights not on hold 1
7419 CURSOR site_no_hold_hdr_freight1 (p_curr_code IN VARCHAR2 default null) IS
7420 SELECT
7421 SUM
7422 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
7423 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
7424 p.operand, (l.ordered_quantity * p.adjusted_amount)))
7425 --TaxER Start
7426 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
7427 --TaxER End
7428 )
7429 FROM oe_price_adjustments p
7430 , oe_order_lines l
7431 , oe_order_headers_all h
7432 WHERE h.invoice_to_org_id = p_site_use_id
7433 AND p.line_id = l.line_id
7434 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7435 <= l_shipping_horizon
7436 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7437 AND l.header_id = h.header_id
7438 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
7439 AND p.header_id = l.header_id
7440 AND p.header_id = h.header_id
7441 AND h.booked_flag = 'Y'
7442 AND h.open_flag = 'Y'
7443 AND l.open_flag = 'Y'
7444 AND l.line_category_code = 'ORDER'
7445 --TaxER AND p.applied_flag = 'Y'
7446 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7447 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7448 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7449 AND h.transactional_curr_code = p_curr_code
7450 AND h.header_id <> l_header_id
7451 AND NOT EXISTS ( SELECT 1
7452 FROM oe_order_holds_all oh --Modified the query to access oe_order_holds_all
7453 WHERE h.header_id = oh.header_id --instead of oe_order_holds to avoid FTS (SQL ID#14881276)
7454 AND oh.line_id IS NULL
7455 AND oh.hold_release_id IS NULL )
7456 AND (EXISTS
7457 (SELECT NULL
7458 FROM oe_payment_types_all pt
7459 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7460 NVL(h.payment_type_code, 'BME'))
7461 AND pt.credit_check_flag = 'Y'
7462 AND NVL(pt.org_id, -99) = G_ORG_ID)
7463 OR
7464 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7465
7466
7467 -- sitefreights not on hold 1 including Returns
7468
7469 CURSOR site_no_hold_hdr_freight1_ret (p_curr_code IN VARCHAR2 default null) IS
7470 SELECT
7471 SUM
7472 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
7473 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
7474 p.operand, (l.ordered_quantity * p.adjusted_amount)))
7475 --TaxER Start
7476 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
7477 --TaxER End
7478 )
7479 FROM oe_price_adjustments p
7480 , oe_order_lines l
7481 , oe_order_headers_all h
7482 WHERE h.invoice_to_org_id = p_site_use_id
7483 AND p.line_id = l.line_id
7484 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7485 <= l_shipping_horizon
7486 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7487 AND l.header_id = h.header_id
7488 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
7489 AND p.header_id = l.header_id
7490 AND p.header_id = h.header_id
7491 AND h.booked_flag = 'Y'
7492 AND h.open_flag = 'Y'
7493 AND l.open_flag = 'Y'
7494 --TaxER AND p.applied_flag = 'Y'
7495 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7496 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7497 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7498 AND h.transactional_curr_code = p_curr_code
7499 AND h.header_id <> l_header_id
7500 AND NOT EXISTS ( SELECT 1
7501 FROM oe_order_holds_all oh --Modified the query to select from
7502 WHERE h.header_id = oh.header_id --oe_order_holds_all to avoid FTS (SQL#14881293)
7503 AND oh.line_id IS NULL
7504 AND oh.hold_release_id IS NULL )
7505 AND (EXISTS
7506 (SELECT NULL
7507 FROM oe_payment_types_all pt
7508 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7509 NVL(h.payment_type_code, 'BME'))
7510 AND pt.credit_check_flag = 'Y'
7511 AND NVL(pt.org_id, -99) = G_ORG_ID)
7512 OR
7513 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7514
7515 -- site freights on hold 1
7516 CURSOR site_hold_hdr_freight1 (p_curr_code IN VARCHAR2 default null) IS
7517 SELECT
7518 SUM
7519 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
7520 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
7521 p.operand, (l.ordered_quantity * p.adjusted_amount)))
7522 --TaxER Start
7523 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
7524 --TaxER End
7525 )
7526 FROM oe_price_adjustments p
7527 , oe_order_lines l
7528 , oe_order_headers_all h
7529 WHERE h.invoice_to_org_id = p_site_use_id
7530 AND p.line_id = l.line_id
7531 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7532 <= l_shipping_horizon
7533 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7534 AND l.header_id = h.header_id
7535 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
7536 AND p.header_id = l.header_id
7537 AND p.header_id = h.header_id
7538 AND h.booked_flag = 'Y'
7539 AND h.open_flag = 'Y'
7540 AND l.open_flag = 'Y'
7541 AND l.line_category_code = 'ORDER'
7542 --TaxER AND p.applied_flag = 'Y'
7543 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7544 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7545 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7546 AND h.transactional_curr_code = p_curr_code
7547 AND h.header_id <> l_header_id
7548 AND EXISTS ( SELECT 1
7549 FROM oe_order_holds_all oh
7550 WHERE h.header_id = oh.header_id
7551 AND oh.line_id IS NULL
7552 AND oh.hold_release_id IS NULL )
7553 AND (EXISTS
7554 (SELECT NULL
7555 FROM oe_payment_types_all pt
7556 WHERE pt.payment_type_code = NVL(l.payment_type_code,
7557 NVL(h.payment_type_code, 'BME'))
7558 AND pt.credit_check_flag = 'Y'
7559 AND NVL(pt.org_id, -99) = G_ORG_ID)
7560 OR
7561 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
7562
7563 -- sitefreights on hold 1 including Returns
7564
7565 CURSOR site_hold_hdr_freight1_ret (p_curr_code IN VARCHAR2 default null) IS
7566 SELECT
7567 SUM
7568 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
7569 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
7570 p.operand, (l.ordered_quantity * p.adjusted_amount)))
7571 --TaxER Start
7572 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
7573 --TaxER End
7574 )
7575 FROM oe_price_adjustments p
7576 , oe_order_lines l
7577 , oe_order_headers_all h
7578 WHERE h.invoice_to_org_id = p_site_use_id
7579 AND p.line_id = l.line_id
7580 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
7581 <= l_shipping_horizon
7582 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
7583 AND l.header_id = h.header_id
7584 AND l.org_id = h.org_id /* MOAC_SQL_CHANGE */
7585 AND p.header_id = l.header_id
7586 AND p.header_id = h.header_id
7587 AND h.booked_flag = 'Y'
7588 AND h.open_flag = 'Y'
7589 AND l.open_flag = 'Y'
7590 --TaxER AND p.applied_flag = 'Y'
7591 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7592 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7593 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7594 AND h.transactional_curr_code = p_curr_code
7595 AND h.header_id <> l_header_id
7596 AND EXISTS ( SELECT 1
7597 FROM oe_order_holds_all oh
7598 WHERE h.header_id = oh.header_id
7599 AND oh.line_id IS NULL
7600 AND oh.hold_release_id IS NULL )
7601 AND EXISTS
7602 (SELECT NULL
7603 FROM oe_payment_types_all pt,
7604 oe_order_lines l
7605 WHERE pt.credit_check_flag = 'Y'
7606 AND l.header_id = h.header_id
7607 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
7608 AND NVL(pt.org_id, -99) = G_ORG_ID
7609 AND pt.payment_type_code =
7610 DECODE(l.payment_type_code, NULL,
7611 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
7612 h.payment_type_code),
7613 l.payment_type_code)
7614 );
7615
7616
7617 -- site not on hold freight 2
7618 CURSOR site_no_hold_hdr_freight2 (p_curr_code IN VARCHAR2 default null) IS
7619 SELECT
7620 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
7621 --TaxER Start
7622 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
7623 --TaxER End
7624 FROM
7625 oe_price_adjustments p
7626 , oe_order_headers h
7627 WHERE h.invoice_to_org_id = p_site_use_id
7628 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
7629 AND h.transactional_curr_code = p_curr_code
7630 AND p.line_id IS NULL
7631 AND p.header_id = h.header_id
7632 AND h.order_category_code IN ('ORDER','MIXED')
7633 AND h.open_flag = 'Y'
7634 AND h.booked_flag = 'Y'
7635 --TaxER AND p.applied_flag = 'Y'
7636 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7637 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7638 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7639 AND h.header_id <> l_header_id
7640 AND NOT EXISTS ( SELECT 1
7641 FROM oe_order_holds_all oh
7642 WHERE h.header_id = oh.header_id
7643 AND oh.line_id IS NULL
7644 AND oh.hold_release_id IS NULL )
7645 AND EXISTS
7646 (SELECT NULL
7647 FROM oe_payment_types_all pt,
7648 oe_order_lines l
7649 WHERE pt.credit_check_flag = 'Y'
7650 AND l.header_id = h.header_id
7651 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
7652 AND NVL(pt.org_id, -99) = G_ORG_ID
7653 AND pt.payment_type_code =
7654 DECODE(l.payment_type_code, NULL,
7655 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
7656 h.payment_type_code),
7657 l.payment_type_code)
7658 );
7659
7660
7661 -- site not on hold freight 2 including Returns
7662
7663 CURSOR site_no_hold_hdr_freight2_ret (p_curr_code IN VARCHAR2 default null) IS
7664 SELECT
7665 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
7666 --TaxER Start
7667 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
7668 --TaxER End
7669 FROM
7670 oe_price_adjustments p
7671 , oe_order_headers h
7672 WHERE h.invoice_to_org_id = p_site_use_id
7673 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
7674 AND h.transactional_curr_code = p_curr_code
7675 AND p.line_id IS NULL
7676 AND p.header_id = h.header_id
7677 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
7678 AND h.open_flag = 'Y'
7679 AND h.booked_flag = 'Y'
7680 --TaxER AND p.applied_flag = 'Y'
7681 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7682 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7683 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7684 AND h.header_id <> l_header_id
7685 AND NOT EXISTS ( SELECT 1
7686 FROM oe_order_holds_all oh
7687 WHERE h.header_id = oh.header_id
7688 AND oh.line_id IS NULL
7689 AND oh.hold_release_id IS NULL )
7690 AND EXISTS
7691 (SELECT NULL
7692 FROM oe_payment_types_all pt,
7693 oe_order_lines l
7694 WHERE pt.credit_check_flag = 'Y'
7695 AND l.header_id = h.header_id
7696 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
7697 AND NVL(pt.org_id, -99) = G_ORG_ID
7698 AND pt.payment_type_code =
7699 DECODE(l.payment_type_code, NULL,
7700 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
7701 h.payment_type_code),
7702 l.payment_type_code)
7703 );
7704
7705 -- site on hold freight 2
7706
7707 CURSOR site_hold_hdr_freight2 (p_curr_code IN VARCHAR2 default null) IS
7708 SELECT
7709 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
7710 --TaxER Start
7711 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
7712 --TaxER End
7713 FROM
7714 oe_price_adjustments p
7715 , oe_order_headers h
7716 WHERE h.invoice_to_org_id = p_site_use_id
7717 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
7718 AND h.transactional_curr_code = p_curr_code
7719 AND p.line_id IS NULL
7720 AND p.header_id = h.header_id
7721 AND h.order_category_code IN ('ORDER','MIXED')
7722 AND h.open_flag = 'Y'
7723 AND h.booked_flag = 'Y'
7724 --TaxER AND p.applied_flag = 'Y'
7725 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7726 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7727 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7728 AND h.header_id <> l_header_id
7729 AND EXISTS ( SELECT 1
7730 FROM oe_order_holds_all oh
7731 WHERE h.header_id = oh.header_id
7732 AND oh.line_id IS NULL
7733 AND oh.hold_release_id IS NULL )
7734 AND EXISTS
7735 (SELECT NULL
7736 FROM oe_payment_types_all pt,
7737 oe_order_lines l
7738 WHERE pt.credit_check_flag = 'Y'
7739 AND l.header_id = h.header_id
7740 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
7741 AND NVL(pt.org_id, -99) = G_ORG_ID
7742 AND pt.payment_type_code =
7743 DECODE(l.payment_type_code, NULL,
7744 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
7745 h.payment_type_code),
7746 l.payment_type_code)
7747 );
7748
7749 -- site on hold freight 2 including Returns
7750
7751 CURSOR site_hold_hdr_freight2_ret (p_curr_code IN VARCHAR2 default null) IS
7752 SELECT
7753 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
7754 --TaxER Start
7755 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
7756 --TaxER End
7757 FROM
7758 oe_price_adjustments p
7759 , oe_order_headers h
7760 WHERE h.invoice_to_org_id = p_site_use_id
7761 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
7762 AND h.transactional_curr_code = p_curr_code
7763 AND p.line_id IS NULL
7764 AND p.header_id = h.header_id
7765 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
7766 AND h.open_flag = 'Y'
7767 AND h.booked_flag = 'Y'
7768 --TaxER AND p.applied_flag = 'Y'
7769 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
7770 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
7771 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
7772 AND h.header_id <> l_header_id
7773 AND EXISTS ( SELECT 1
7774 FROM oe_order_holds_all oh
7775 WHERE h.header_id = oh.header_id
7776 AND oh.line_id IS NULL
7777 AND oh.hold_release_id IS NULL )
7778 AND EXISTS
7779 (SELECT NULL
7780 FROM oe_payment_types_all pt,
7781 oe_order_lines l
7782 WHERE pt.credit_check_flag = 'Y'
7783 AND l.header_id = h.header_id
7784 AND l.org_id = pt.org_id /* MOAC_SQL_CHANGE */
7785 AND NVL(pt.org_id, -99) = G_ORG_ID
7786 AND pt.payment_type_code =
7787 DECODE(l.payment_type_code, NULL,
7788 DECODE(h.payment_type_code, NULL, pt.payment_type_code,
7789 h.payment_type_code),
7790 l.payment_type_code)
7791 );
7792
7793
7794 -------------------------------------------------------------
7795 ------------ GLOBAL EXPOSURE CURSORS
7796 -- Discussed with the performance team and
7797 -- was advised to have separate cursors to avoid any
7798 -- performance related Issues , especially if ORG was indexed
7799 -- down the line.
7800
7801 -- Byg 2417717 - AR relationships
7802 -------------------------------------------------------------
7803 -- AR BALANCE
7804 --Bug 7570339
7805 /*CURSOR cust_ar_balance_global
7806 (p_curr_code IN VARCHAR2 default NULL) IS
7807 SELECT SUM(NVL(ps.amount_due_remaining,0))
7808 FROM ar_payment_schedules_ALL ps
7809 , hz_cust_site_uses_ALL su
7810 , hz_cust_acct_sites_ALL cas
7811 WHERE ps.customer_site_use_id = su.site_use_id
7812 AND ps.status = 'OP'
7813 AND cas.cust_acct_site_id = su.cust_acct_site_id
7814 AND cas.cust_account_id = p_customer_id
7815 AND su.site_use_code =
7816 DECODE(l_open_ar_days,0,site_use_code,'BILL_TO' )
7817 AND ps.invoice_currency_code = p_curr_code
7818 AND (ps.receipt_confirmed_flag IS NULL OR ps.receipt_confirmed_flag='Y')
7819 AND ps.gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
7820 AND sysdate - ps.trx_date >
7821 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS, sysdate - ps.trx_date - 1); */
7822
7823 CURSOR cust_ar_balance_global
7824 (p_curr_code IN VARCHAR2 default NULL) IS
7825 SELECT SUM(NVL(amount_due_remaining,0)) FROM (
7826 SELECT NVL(ps.amount_due_remaining,0) amount_due_remaining,ps.PAYMENT_SCHEDULE_ID
7827 FROM ar_payment_schedules_ALL ps
7828 , hz_cust_site_uses_ALL su
7829 , hz_cust_acct_sites_ALL cas
7830 WHERE ps.customer_site_use_id = su.site_use_id
7831 AND ps.status = 'OP'
7832 AND cas.cust_acct_site_id = su.cust_acct_site_id
7833 AND cas.cust_account_id = p_customer_id
7834 AND su.site_use_code =
7835 DECODE(l_open_ar_days,0,site_use_code,'BILL_TO' )
7836 AND ps.invoice_currency_code = p_curr_code
7837 AND (ps.receipt_confirmed_flag IS NULL OR ps.receipt_confirmed_flag='Y')
7838 AND ps.gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
7839 AND sysdate - ps.trx_date >
7840 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS, sysdate - ps.trx_date - 1)
7841 UNION
7842
7843 SELECT NVL(ps.amount_due_remaining,0) amount_due_remaining,ps.PAYMENT_SCHEDULE_ID
7844 FROM ar_payment_schedules_ALL ps
7845 WHERE ps.status = 'OP'
7846 AND ps.CUSTOMER_ID = p_customer_id
7847 AND ps.CUSTOMER_SITE_USE_ID IS NULL
7848 AND ps.invoice_currency_code = p_curr_code
7849 AND (ps.receipt_confirmed_flag IS NULL OR ps.receipt_confirmed_flag='Y')
7850 AND ps.gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY')
7851 AND sysdate - ps.trx_date >
7852 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS, sysdate - ps.trx_date - 1));
7853
7854 -- PAY AT RISK
7855 --Bug 7570339
7856
7857 /*CURSOR cust_pay_risk_global
7858 (p_curr_code IN VARCHAR2 default NULL) IS
7859 SELECT SUM(NVL(crh.amount,0))
7860 FROM ar_cash_receipt_history_ALL crh
7861 , ar_cash_receipts_ALL cr
7862 , hz_cust_site_uses_ALL su
7863 , hz_cust_acct_sites_ALL cas
7864 WHERE crh.cash_receipt_id = cr.cash_receipt_id
7865 AND (cr.confirmed_flag IS NULL OR cr.confirmed_flag = 'Y')
7866 AND crh.current_record_flag = 'Y'
7867 AND crh.status <> DECODE ( crh.factor_flag
7868 , 'Y', 'RISK_ELIMINATED'
7869 , 'CLEARED')
7870 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
7871 AND crh.status <> 'REVERSED'
7872 AND cr.currency_code = p_curr_code
7873 AND cr.pay_from_customer = cas.cust_account_id
7874 AND cr.customer_site_use_id = su.site_use_id
7875 AND cas.cust_acct_site_id = su.cust_acct_site_id
7876 AND cas.cust_account_id = p_customer_id
7877 AND su.site_use_code =
7878 DECODE(l_open_ar_days,0,site_use_code,'BILL_TO' )
7879 AND sysdate - cr.receipt_date >
7880 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS,
7881 sysdate - cr.receipt_date - 1)
7882 AND NOT EXISTS
7883 (
7884 SELECT
7885 'X'
7886 FROM
7887 ar_receivable_applications_ALL rap
7888 WHERE
7889 rap.cash_receipt_id = cr.cash_receipt_id
7890 AND rap.applied_payment_schedule_id = -2
7891 AND rap.display = 'Y'
7892 ) ;
7893 */
7894 CURSOR cust_pay_risk_global
7895 (p_curr_code IN VARCHAR2 default NULL) IS
7896 SELECT SUM(NVL(amount,0)) FROM (
7897 SELECT NVL(crh.amount,0) amount,cr.pay_from_customer,cr.cash_receipt_id
7898 FROM ar_cash_receipt_history_ALL crh
7899 , ar_cash_receipts_ALL cr
7900 , hz_cust_site_uses_ALL su
7901 , hz_cust_acct_sites_ALL cas
7902 WHERE crh.cash_receipt_id = cr.cash_receipt_id
7903 AND (cr.confirmed_flag IS NULL OR cr.confirmed_flag = 'Y')
7904 AND crh.current_record_flag = 'Y'
7905 AND crh.status <> DECODE ( crh.factor_flag
7906 , 'Y', 'RISK_ELIMINATED'
7907 , 'CLEARED')
7908 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
7909 AND crh.status <> 'REVERSED'
7910 AND cr.currency_code = p_curr_code
7911 AND cr.pay_from_customer = cas.cust_account_id
7912 AND cr.customer_site_use_id = su.site_use_id
7913 AND cas.cust_acct_site_id = su.cust_acct_site_id
7914 AND cas.cust_account_id = p_customer_id
7915 AND su.site_use_code =
7916 DECODE(l_open_ar_days,0,site_use_code,'BILL_TO' )
7917 AND sysdate - cr.receipt_date >
7918 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS,
7919 sysdate - cr.receipt_date - 1)
7920 AND NOT EXISTS
7921 (
7922 SELECT
7923 'X'
7924 FROM
7925 ar_receivable_applications_ALL rap
7926 WHERE
7927 rap.cash_receipt_id = cr.cash_receipt_id
7928 AND rap.applied_payment_schedule_id = -2
7929 AND rap.display = 'Y'
7930 )
7931 UNION
7932 SELECT NVL(crh.amount,0) amount,cr.pay_from_customer,cr.cash_receipt_id
7933 FROM ar_cash_receipt_history_ALL crh
7934 , ar_cash_receipts_ALL cr
7935 WHERE crh.cash_receipt_id = cr.cash_receipt_id
7936 AND (cr.confirmed_flag IS NULL OR cr.confirmed_flag = 'Y')
7937 AND crh.current_record_flag = 'Y'
7938 AND crh.status <> DECODE ( crh.factor_flag
7939 , 'Y', 'RISK_ELIMINATED'
7940 , 'CLEARED')
7941 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
7942 AND crh.status <> 'REVERSED'
7943 AND cr.currency_code = p_curr_code
7944 AND cr.pay_from_customer = p_customer_id
7945 AND cr.customer_site_use_id IS NULL
7946 AND sysdate - cr.receipt_date >
7947 NVL(p_credit_check_rule_rec.OPEN_AR_DAYS,
7948 sysdate - cr.receipt_date - 1)
7949 AND NOT EXISTS
7950 (
7951 SELECT
7952 'X'
7953 FROM
7954 ar_receivable_applications_ALL rap
7955 WHERE
7956 rap.cash_receipt_id = cr.cash_receipt_id
7957 AND rap.applied_payment_schedule_id = -2
7958 AND rap.display = 'Y'
7959 )
7960 );
7961
7962
7963 ----------------------------- BR -----------------------------
7964 CURSOR cust_br_balance_global
7965 (p_curr_code IN VARCHAR2 default NULL) IS
7966 SELECT SUM(NVL(ps.amount_due_remaining,0))
7967 FROM ar_payment_schedules_ALL ps
7968 , hz_cust_site_uses_ALL su
7969 -- , hz_cust_acct_sites_ALL cas -- Commented Bug#11827225
7970 WHERE ps.customer_site_use_id = su.site_use_id
7971 AND ps.status = 'OP'
7972 --AND cas.cust_acct_site_id = su.cust_acct_site_id -- Commented Bug#11827225
7973 --AND cas.cust_account_id = p_customer_id -- Commented Bug#11827225
7974 AND ps.customer_id = p_customer_id -- Added for Bug#11827225
7975 AND su.site_use_code = 'DRAWEE'
7976 AND ps.invoice_currency_code = p_curr_code
7977 AND (ps.receipt_confirmed_flag IS NULL OR ps.receipt_confirmed_flag='Y')
7978 AND ps.gl_date_closed = to_date( '31-12-4712', 'DD-MM-YYYY') ;
7979
7980 CURSOR cust_br_pay_risk_global
7981 (p_curr_code IN VARCHAR2 default NULL) IS
7982 SELECT SUM(NVL(crh.amount,0))
7983 FROM ar_cash_receipt_history_ALL crh
7984 , ar_cash_receipts_ALL cr
7985 , hz_cust_site_uses_ALL su
7986 , hz_cust_acct_sites_ALL cas
7987 WHERE crh.cash_receipt_id = cr.cash_receipt_id
7988 AND (cr.confirmed_flag IS NULL OR cr.confirmed_flag = 'Y')
7989 AND crh.current_record_flag = 'Y'
7990 AND crh.status <> DECODE ( crh.factor_flag
7991 , 'Y', 'RISK_ELIMINATED'
7992 , 'CLEARED')
7993 AND NVL( cr.reversal_category, cr.status||'X' ) <> cr.status
7994 AND crh.status <> 'REVERSED'
7995 AND cr.currency_code = p_curr_code
7996 AND cr.pay_from_customer = cas.cust_account_id
7997 AND cr.customer_site_use_id = su.site_use_id
7998 AND cas.cust_acct_site_id = su.cust_acct_site_id
7999 AND cas.cust_account_id = p_customer_id
8000 AND su.site_use_code = 'DRAWEE'
8001 AND NOT EXISTS
8002 (
8003 SELECT
8004 'X'
8005 FROM
8006 ar_receivable_applications_ALL rap
8007 WHERE
8008 rap.cash_receipt_id = cr.cash_receipt_id
8009 AND rap.applied_payment_schedule_id = -2
8010 AND rap.display = 'Y');
8011
8012
8013 ---CUSTOMER UNINVOICED ORDERS
8014
8015 CURSOR cust_uninvoiced_orders_global
8016 (p_curr_code IN VARCHAR2 default NULL) IS
8017 SELECT SUM (
8018 ( l.ordered_quantity * l.unit_selling_price )
8019 + DECODE(l_include_tax_flag, 'Y',
8020 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
8021 )
8022 FROM oe_order_lines_ALL l
8023 , oe_order_headers_ALL h
8024 , hz_cust_site_uses_ALL su
8025 , hz_cust_acct_sites_ALL cas
8026 WHERE h.invoice_to_org_id = su.site_use_id
8027 AND cas.cust_acct_site_id = su.cust_acct_site_id
8028 AND cas.cust_account_id = p_customer_id
8029 AND h.header_id = l.header_id
8030 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8031 <= l_shipping_horizon
8032 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8033 AND h.open_flag = 'Y'
8034 AND l.line_category_code = 'ORDER'
8035 AND h.booked_flag = 'Y'
8036 AND l.open_flag = 'Y'
8037 AND h.header_id <> l_header_id
8038 AND h.transactional_curr_code = p_curr_code
8039 AND (EXISTS
8040 (SELECT NULL
8041 FROM oe_payment_types_all pt
8042 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8043 NVL(h.payment_type_code, 'BME'))
8044 AND pt.credit_check_flag = 'Y'
8045 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8046 OR
8047 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8048
8049
8050 ---CUSTOMER UNINVOICED ORDERS including Returns
8051
8052 CURSOR cust_uninv_orders_global_ret
8053 (p_curr_code IN VARCHAR2 default NULL) IS
8054 SELECT
8055 SUM (
8056 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
8057 * l.unit_selling_price )
8058 + DECODE(l_include_tax_flag, 'Y',
8059 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0) --TaxER
8060 )
8061 FROM oe_order_lines_ALL l
8062 , oe_order_headers_ALL h
8063 , hz_cust_site_uses_ALL su
8064 , hz_cust_acct_sites_ALL cas
8065 WHERE h.invoice_to_org_id = su.site_use_id
8066 AND cas.cust_acct_site_id = su.cust_acct_site_id
8067 AND cas.cust_account_id = p_customer_id
8068 AND h.header_id = l.header_id
8069 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8070 <= l_shipping_horizon
8071 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8072 AND h.open_flag = 'Y'
8073 AND h.booked_flag = 'Y'
8074 AND l.open_flag = 'Y'
8075 AND h.header_id <> l_header_id
8076 AND h.transactional_curr_code = p_curr_code
8077 AND (EXISTS
8078 (SELECT NULL
8079 FROM oe_payment_types_all pt
8080 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8081 NVL(h.payment_type_code, 'BME'))
8082 AND pt.credit_check_flag = 'Y'
8083 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8084 OR
8085 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8086
8087
8088
8089 -------------------------------------------------
8090 ------- commitments -- Exiting code enhancement
8091 ------------------------------------------------
8092 -------- There is no multi org table for OE_PAYMENTS_ALL
8093
8094 Cursor cust_commitment_total_global
8095 (p_curr_code IN VARCHAR2 default NULL) IS
8096 SELECT NVL(SUM(P.commitment_applied_amount), 0)
8097 FROM OE_PAYMENTS P
8098 , OE_ORDER_HEADERS_ALL H
8099 , OE_ORDER_LINES_ALL L
8100 , hz_cust_site_uses_ALL su
8101 , hz_cust_acct_sites_ALL cas
8102 WHERE H.invoice_to_org_id = su.site_use_id
8103 AND cas.cust_acct_site_id = su.cust_acct_site_id
8104 AND cas.cust_account_id = p_customer_id
8105 AND H.TRANSACTIONAL_CURR_CODE = p_curr_code
8106 AND H.OPEN_FLAG = 'Y'
8107 AND H.BOOKED_FLAG = 'Y'
8108 AND H.HEADER_ID = P.HEADER_ID
8109 AND H.HEADER_ID <> l_header_id
8110 AND L.HEADER_ID = H.HEADER_ID
8111 AND L.LINE_ID = P.LINE_ID
8112 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8113 AND L.OPEN_FLAG = 'Y'
8114 AND L.LINE_CATEGORY_CODE = 'ORDER'
8115 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8116 <= l_shipping_horizon
8117 AND (EXISTS
8118 (SELECT NULL
8119 FROM oe_payment_types_all pt
8120 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8121 NVL(h.payment_type_code, 'BME'))
8122 AND pt.credit_check_flag = 'Y'
8123 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8124 OR
8125 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8126
8127
8128
8129 -- Customer orders not on hold global
8130
8131 CURSOR cust_orders_not_on_hold_global
8132 (p_curr_code IN VARCHAR2 default NULL) IS
8133 SELECT SUM (
8134 ( l.ordered_quantity * l.unit_selling_price )
8135 + DECODE(l_include_tax_flag, 'Y',
8136 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
8137 )
8138 FROM oe_order_lines_ALL l
8139 , oe_order_headers_ALL h
8140 , hz_cust_site_uses_ALL su
8141 , hz_cust_acct_sites_ALL cas
8142 WHERE h.invoice_to_org_id = su.site_use_id
8143 AND cas.cust_acct_site_id = su.cust_acct_site_id
8144 AND cas.cust_account_id = p_customer_id
8145 AND h.header_id = l.header_id
8146 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8147 <= l_shipping_horizon
8148 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8149 AND h.open_flag = 'Y'
8150 AND l.line_category_code = 'ORDER'
8151 AND h.booked_flag = 'Y'
8152 AND l.open_flag = 'Y'
8153 AND h.header_id <> l_header_id
8154 AND NOT EXISTS ( SELECT 1
8155 FROM oe_order_holds_ALL oh
8156 WHERE h.header_id = oh.header_id
8157 AND oh.hold_release_id IS NULL )
8158 AND h.transactional_curr_code = p_curr_code
8159 AND (EXISTS
8160 (SELECT NULL
8161 FROM oe_payment_types_all pt
8162 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8163 NVL(h.payment_type_code, 'BME'))
8164 AND pt.credit_check_flag = 'Y'
8165 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8166 OR
8167 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8168
8169
8170 -- Customer orders not on hold global including Returns
8171
8172 CURSOR cust_ord_not_on_hold_glb_ret
8173 (p_curr_code IN VARCHAR2 default NULL) IS
8174 SELECT
8175 SUM (
8176 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
8177 * l.unit_selling_price )
8178 + DECODE(l_include_tax_flag, 'Y',
8179 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 ) --TaxER
8180 )
8181 FROM oe_order_lines_ALL l
8182 , oe_order_headers_ALL h
8183 , hz_cust_site_uses_ALL su
8184 , hz_cust_acct_sites_ALL cas
8185 WHERE h.invoice_to_org_id = su.site_use_id
8186 AND cas.cust_acct_site_id = su.cust_acct_site_id
8187 AND cas.cust_account_id = p_customer_id
8188 AND h.header_id = l.header_id
8189 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8190 <= l_shipping_horizon
8191 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8192 AND h.open_flag = 'Y'
8193 AND h.booked_flag = 'Y'
8194 AND l.open_flag = 'Y'
8195 AND h.header_id <> l_header_id
8196 AND NOT EXISTS ( SELECT 1
8197 FROM oe_order_holds_ALL oh
8198 WHERE h.header_id = oh.header_id
8199 AND oh.hold_release_id IS NULL )
8200 AND h.transactional_curr_code = p_curr_code
8201 AND (EXISTS
8202 (SELECT NULL
8203 FROM oe_payment_types_all pt
8204 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8205 NVL(h.payment_type_code, 'BME'))
8206 AND pt.credit_check_flag = 'Y'
8207 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8208 OR
8209 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8210
8211 -- Customer orders on hold global
8212
8213 CURSOR cust_orders_on_hold_global
8214 (p_curr_code IN VARCHAR2 default NULL) IS
8215 SELECT SUM (
8216 ( l.ordered_quantity * l.unit_selling_price )
8217 + DECODE(l_include_tax_flag, 'Y',
8218 NVL(NVL(l.tax_line_value,l.tax_value),0), 0 ) --TaxER
8219 )
8220 FROM oe_order_lines_ALL l
8221 , oe_order_headers_ALL h
8222 , hz_cust_site_uses_ALL su
8223 , hz_cust_acct_sites_ALL cas
8224 WHERE h.invoice_to_org_id = su.site_use_id
8225 AND cas.cust_acct_site_id = su.cust_acct_site_id
8226 AND cas.cust_account_id = p_customer_id
8227 AND h.header_id = l.header_id
8228 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8229 <= l_shipping_horizon
8230 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8231 AND h.open_flag = 'Y'
8232 AND l.line_category_code = 'ORDER'
8233 AND h.booked_flag = 'Y'
8234 AND l.open_flag = 'Y'
8235 AND h.header_id <> l_header_id
8236 AND EXISTS ( SELECT 1
8237 FROM oe_order_holds_ALL oh
8238 WHERE h.header_id = oh.header_id
8239 AND oh.hold_release_id IS NULL )
8240 AND h.transactional_curr_code = p_curr_code
8241 AND (EXISTS
8242 (SELECT NULL
8243 FROM oe_payment_types_all pt
8244 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8245 NVL(h.payment_type_code, 'BME'))
8246 AND pt.credit_check_flag = 'Y'
8247 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8248 OR
8249 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8250
8251 -- Customer orders on hold global including Returns
8252
8253 CURSOR cust_ord_on_hold_glb_ret
8254 (p_curr_code IN VARCHAR2 default NULL) IS
8255 SELECT
8256 SUM (
8257 ( DECODE(l.line_category_code,'RETURN',(-1)*l.ordered_quantity,l.ordered_quantity)
8258 * l.unit_selling_price )
8259 + DECODE(l_include_tax_flag, 'Y',
8260 NVL(DECODE(l.line_category_code,'RETURN',(-1)*NVL(l.tax_line_value,l.tax_value),NVL(l.tax_line_value,l.tax_value)),0),0 ) --TaxER
8261 )
8262 FROM oe_order_lines_ALL l
8263 , oe_order_headers_ALL h
8264 , hz_cust_site_uses_ALL su
8265 , hz_cust_acct_sites_ALL cas
8266 WHERE h.invoice_to_org_id = su.site_use_id
8267 AND cas.cust_acct_site_id = su.cust_acct_site_id
8268 AND cas.cust_account_id = p_customer_id
8269 AND h.header_id = l.header_id
8270 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8271 <= l_shipping_horizon
8272 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8273 AND h.open_flag = 'Y'
8274 AND h.booked_flag = 'Y'
8275 AND l.open_flag = 'Y'
8276 AND h.header_id <> l_header_id
8277 AND EXISTS ( SELECT 1
8278 FROM oe_order_holds_ALL oh
8279 WHERE h.header_id = oh.header_id
8280 AND oh.hold_release_id IS NULL )
8281 AND h.transactional_curr_code = p_curr_code
8282 AND (EXISTS
8283 (SELECT NULL
8284 FROM oe_payment_types_all pt
8285 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8286 NVL(h.payment_type_code, 'BME'))
8287 AND pt.credit_check_flag = 'Y'
8288 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8289 OR
8290 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8291
8292 -- customer hdr freights , Does not include curr order
8293 --- There is not multi org table for oe_price_adjustments
8294
8295 CURSOR cust_uninv_hdr_freight1_global
8296 (p_curr_code IN VARCHAR2 default null) IS
8297 SELECT
8298 SUM
8299 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
8300 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
8301 p.operand, (l.ordered_quantity * p.adjusted_amount)))
8302 --TaxER Start
8303 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
8304 --TaxER End
8305 )
8306 FROM oe_price_adjustments p
8307 , oe_order_lines_ALL l
8308 , oe_order_headers_ALL h
8309 , hz_cust_site_uses_ALL su
8310 , hz_cust_acct_sites_ALL cas
8311 WHERE h.invoice_to_org_id = su.site_use_id
8312 AND cas.cust_acct_site_id = su.cust_acct_site_id
8313 AND cas.cust_account_id = p_customer_id
8314 AND p.line_id = l.line_id
8315 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8316 <= l_shipping_horizon
8317 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8318 AND l.header_id = h.header_id
8319 AND p.header_id = l.header_id
8320 AND p.header_id = h.header_id
8321 AND h.booked_flag = 'Y'
8322 AND h.open_flag = 'Y'
8323 AND l.open_flag = 'Y'
8324 AND l.line_category_code = 'ORDER'
8325 --TaxER AND p.applied_flag = 'Y'
8326 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8327 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8328 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8329 AND h.transactional_curr_code = p_curr_code
8330 AND h.header_id <> l_header_id
8331 AND (EXISTS
8332 (SELECT NULL
8333 FROM oe_payment_types_all pt
8334 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8335 NVL(h.payment_type_code, 'BME'))
8336 AND pt.credit_check_flag = 'Y'
8337 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8338 OR
8339 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8340
8341
8342 -- customer hdr freights including Returns, Does not include curr order
8343 --- There is not multi org table for oe_price_adjustments
8344
8345 CURSOR cust_uninv_hdr_fr1_glb_ret
8346 (p_curr_code IN VARCHAR2 default null) IS
8347 SELECT
8348 SUM
8349 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
8350 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
8351 p.operand, (l.ordered_quantity * p.adjusted_amount)))
8352 --TaxER Start
8353 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
8354 --TaxER End
8355 )
8356 FROM oe_price_adjustments p
8357 , oe_order_lines_ALL l
8358 , oe_order_headers_ALL h
8359 , hz_cust_site_uses_ALL su
8360 , hz_cust_acct_sites_ALL cas
8361 WHERE h.invoice_to_org_id = su.site_use_id
8362 AND cas.cust_acct_site_id = su.cust_acct_site_id
8363 AND cas.cust_account_id = p_customer_id
8364 AND p.line_id = l.line_id
8365 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8366 <= l_shipping_horizon
8367 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8368 AND l.header_id = h.header_id
8369 AND p.header_id = l.header_id
8370 AND p.header_id = h.header_id
8371 AND h.booked_flag = 'Y'
8372 AND h.open_flag = 'Y'
8373 AND l.open_flag = 'Y'
8374 --TaxER AND p.applied_flag = 'Y'
8375 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8376 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8377 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8378 AND h.transactional_curr_code = p_curr_code
8379 AND h.header_id <> l_header_id
8380 AND (EXISTS
8381 (SELECT NULL
8382 FROM oe_payment_types_all pt
8383 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8384 NVL(h.payment_type_code, 'BME'))
8385 AND pt.credit_check_flag = 'Y'
8386 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8387 OR
8388 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8389
8390
8391
8392 -- customer freights 2
8393 CURSOR cust_uninv_hdr_freight2_global
8394 (p_curr_code IN VARCHAR2 default null) IS
8395 SELECT
8396 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
8397 --TaxER Start
8398 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
8399 --TaxER End
8400 FROM
8401 oe_price_adjustments p
8402 , oe_order_headers_ALL h
8403 , hz_cust_site_uses_ALL su
8404 , hz_cust_acct_sites_ALL cas
8405 WHERE h.invoice_to_org_id = su.site_use_id
8406 AND cas.cust_acct_site_id = su.cust_acct_site_id
8407 AND cas.cust_account_id = p_customer_id
8408 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
8409 AND h.transactional_curr_code = p_curr_code
8410 AND p.line_id IS NULL
8411 AND p.header_id = h.header_id
8412 AND h.order_category_code IN ('ORDER','MIXED')
8413 AND open_flag = 'Y'
8414 AND h.booked_flag = 'Y'
8415 --TaxER AND p.applied_flag = 'Y'
8416 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8417 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8418 AND ( p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8419 AND h.header_id <> l_header_id
8420 AND EXISTS
8421 ( SELECT NULL
8422 FROM oe_payment_types_all t,
8423 oe_order_lines_all l
8424 WHERE t.credit_check_flag = 'Y'
8425 AND NVL(t.org_id,-99) = NVL(h.org_id, -99)
8426 AND l.header_id = h.header_id
8427 AND t.payment_type_code =
8428 DECODE(l.payment_type_code, NULL,
8429 DECODE(h.payment_type_code, NULL, t.payment_type_code,
8430 h.payment_type_code),
8431 l.payment_type_code)
8432 );
8433
8434
8435 -- customer freights 2 including Returns
8436
8437 CURSOR cust_uninv_hdr_fr2_glb_ret
8438 (p_curr_code IN VARCHAR2 default null) IS
8439 SELECT
8440 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
8441 --TaxER Start
8442 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
8443 --TaxER End
8444 FROM
8445 oe_price_adjustments p
8446 , oe_order_headers_ALL h
8447 , hz_cust_site_uses_ALL su
8448 , hz_cust_acct_sites_ALL cas
8449 WHERE h.invoice_to_org_id = su.site_use_id
8450 AND cas.cust_acct_site_id = su.cust_acct_site_id
8451 AND cas.cust_account_id = p_customer_id
8452 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
8453 AND h.transactional_curr_code = p_curr_code
8454 AND p.line_id IS NULL
8455 AND p.header_id = h.header_id
8456 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
8457 AND open_flag = 'Y'
8458 AND h.booked_flag = 'Y'
8459 --TaxER AND p.applied_flag = 'Y'
8460 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8461 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8462 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8463 AND h.header_id <> l_header_id
8464 AND EXISTS
8465 ( SELECT NULL
8466 FROM oe_payment_types_all t,
8467 oe_order_lines_all l
8468 WHERE t.credit_check_flag = 'Y'
8469 AND NVL(t.org_id,-99) = NVL(h.org_id, -99)
8470 AND l.header_id = h.header_id
8471 AND t.payment_type_code =
8472 DECODE(l.payment_type_code, NULL,
8473 DECODE(h.payment_type_code, NULL, t.payment_type_code,
8474 h.payment_type_code),
8475 l.payment_type_code)
8476 );
8477
8478 -- customer freights not on hold 1 global
8479 CURSOR cust_no_hold_hdr_freight1_glb
8480 (p_curr_code IN VARCHAR2 default null) IS
8481 SELECT
8482 SUM
8483 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
8484 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
8485 p.operand, (l.ordered_quantity * p.adjusted_amount)))
8486 --TaxER Start
8487 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
8488 --TaxER End
8489 )
8490 FROM oe_price_adjustments p
8491 , oe_order_lines_ALL l
8492 , oe_order_headers_ALL h
8493 , hz_cust_site_uses_ALL su
8494 , hz_cust_acct_sites_ALL cas
8495 WHERE h.invoice_to_org_id = su.site_use_id
8496 AND cas.cust_acct_site_id = su.cust_acct_site_id
8497 AND cas.cust_account_id = p_customer_id
8498 AND p.line_id = l.line_id
8499 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8500 <= l_shipping_horizon
8501 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8502 AND l.header_id = h.header_id
8503 AND p.header_id = l.header_id
8504 AND p.header_id = h.header_id
8505 AND h.booked_flag = 'Y'
8506 AND h.open_flag = 'Y'
8507 AND l.open_flag = 'Y'
8508 AND l.line_category_code = 'ORDER'
8509 --TaxER AND p.applied_flag = 'Y'
8510 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8511 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8512 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8513 AND h.transactional_curr_code = p_curr_code
8514 AND h.header_id <> l_header_id
8515 AND NOT EXISTS ( SELECT 1
8516 FROM oe_order_holds_ALL oh
8517 WHERE h.header_id = oh.header_id
8518 AND oh.line_id IS NULL
8519 AND oh.hold_release_id IS NULL )
8520 AND (EXISTS
8521 (SELECT NULL
8522 FROM oe_payment_types_all pt
8523 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8524 NVL(h.payment_type_code, 'BME'))
8525 AND pt.credit_check_flag = 'Y'
8526 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8527 OR
8528 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8529
8530
8531 -- customer freights not on hold 1 global including Returns
8532
8533 CURSOR cust_no_hold_hdr_fr1_glb_ret
8534 (p_curr_code IN VARCHAR2 default null) IS
8535 SELECT
8536 SUM
8537 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
8538 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
8539 p.operand, (l.ordered_quantity * p.adjusted_amount)))
8540 --TaxER Start
8541 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
8542 --TaxER End
8543 )
8544 FROM oe_price_adjustments p
8545 , oe_order_lines_ALL l
8546 , oe_order_headers_ALL h
8547 , hz_cust_site_uses_ALL su
8548 , hz_cust_acct_sites_ALL cas
8549 WHERE h.invoice_to_org_id = su.site_use_id
8550 AND cas.cust_acct_site_id = su.cust_acct_site_id
8551 AND cas.cust_account_id = p_customer_id
8552 AND p.line_id = l.line_id
8553 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8554 <= l_shipping_horizon
8555 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8556 AND l.header_id = h.header_id
8557 AND p.header_id = l.header_id
8558 AND p.header_id = h.header_id
8559 AND h.booked_flag = 'Y'
8560 AND h.open_flag = 'Y'
8561 AND l.open_flag = 'Y'
8562 --TaxER AND p.applied_flag = 'Y'
8563 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8564 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8565 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8566 AND h.transactional_curr_code = p_curr_code
8567 AND h.header_id <> l_header_id
8568 AND NOT EXISTS ( SELECT 1
8569 FROM oe_order_holds_ALL oh
8570 WHERE h.header_id = oh.header_id
8571 AND oh.line_id IS NULL
8572 AND oh.hold_release_id IS NULL )
8573 AND (EXISTS
8574 (SELECT NULL
8575 FROM oe_payment_types_all pt
8576 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8577 NVL(h.payment_type_code, 'BME'))
8578 AND pt.credit_check_flag = 'Y'
8579 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8580 OR
8581 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8582
8583 -- customer freights on hold 1 global
8584 CURSOR cust_hold_hdr_freight1_glb
8585 (p_curr_code IN VARCHAR2 default null) IS
8586 SELECT
8587 SUM
8588 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
8589 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
8590 p.operand, (l.ordered_quantity * p.adjusted_amount)))
8591 --TaxER Start
8592 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
8593 --TaxER End
8594 )
8595 FROM oe_price_adjustments p
8596 , oe_order_lines_ALL l
8597 , oe_order_headers_ALL h
8598 , hz_cust_site_uses_ALL su
8599 , hz_cust_acct_sites_ALL cas
8600 WHERE h.invoice_to_org_id = su.site_use_id
8601 AND cas.cust_acct_site_id = su.cust_acct_site_id
8602 AND cas.cust_account_id = p_customer_id
8603 AND p.line_id = l.line_id
8604 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8605 <= l_shipping_horizon
8606 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8607 AND l.header_id = h.header_id
8608 AND p.header_id = l.header_id
8609 AND p.header_id = h.header_id
8610 AND h.booked_flag = 'Y'
8611 AND h.open_flag = 'Y'
8612 AND l.open_flag = 'Y'
8613 AND l.line_category_code = 'ORDER'
8614 --TaxER AND p.applied_flag = 'Y'
8615 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8616 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8617 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8618 AND h.transactional_curr_code = p_curr_code
8619 AND h.header_id <> l_header_id
8620 AND EXISTS ( SELECT 1
8621 FROM oe_order_holds_ALL oh
8622 WHERE h.header_id = oh.header_id
8623 AND oh.line_id IS NULL
8624 AND oh.hold_release_id IS NULL )
8625 AND (EXISTS
8626 (SELECT NULL
8627 FROM oe_payment_types_all pt
8628 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8629 NVL(h.payment_type_code, 'BME'))
8630 AND pt.credit_check_flag = 'Y'
8631 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8632 OR
8633 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8634
8635
8636 -- customer freights on hold 1 global including Returns
8637
8638 CURSOR cust_hold_hdr_fr1_glb_ret
8639 (p_curr_code IN VARCHAR2 default null) IS
8640 SELECT
8641 SUM
8642 ( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) )
8643 * DECODE( p.arithmetic_operator, 'LUMPSUM', --bug 4295299
8644 p.operand, (l.ordered_quantity * p.adjusted_amount)))
8645 --TaxER Start
8646 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0)
8647 --TaxER End
8648 )
8649 FROM oe_price_adjustments p
8650 , oe_order_lines_ALL l
8651 , oe_order_headers_ALL h
8652 , hz_cust_site_uses_ALL su
8653 , hz_cust_acct_sites_ALL cas
8654 WHERE h.invoice_to_org_id = su.site_use_id
8655 AND cas.cust_acct_site_id = su.cust_acct_site_id
8656 AND cas.cust_account_id = p_customer_id
8657 AND p.line_id = l.line_id
8658 AND NVL(L.SCHEDULE_SHIP_DATE,NVL(L.REQUEST_DATE,NVL(H.REQUEST_DATE,H.CREATION_DATE)))
8659 <= l_shipping_horizon
8660 AND (l.invoiced_quantity IS NULL OR l.invoiced_quantity = 0)
8661 AND l.header_id = h.header_id
8662 AND p.header_id = l.header_id
8663 AND p.header_id = h.header_id
8664 AND h.booked_flag = 'Y'
8665 AND h.open_flag = 'Y'
8666 AND l.open_flag = 'Y'
8667 --TaxER AND p.applied_flag = 'Y'
8668 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8669 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8670 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8671 AND h.transactional_curr_code = p_curr_code
8672 AND h.header_id <> l_header_id
8673 AND EXISTS ( SELECT 1
8674 FROM oe_order_holds_ALL oh
8675 WHERE h.header_id = oh.header_id
8676 AND oh.line_id IS NULL
8677 AND oh.hold_release_id IS NULL )
8678 AND (EXISTS
8679 (SELECT NULL
8680 FROM oe_payment_types_all pt
8681 WHERE pt.payment_type_code = NVL(l.payment_type_code,
8682 NVL(h.payment_type_code, 'BME'))
8683 AND pt.credit_check_flag = 'Y'
8684 AND NVL(pt.org_id, -99) = NVL(h.org_id, -99))
8685 OR
8686 (l.payment_type_code IS NULL AND h.payment_type_code IS NULL));
8687
8688
8689 -- customer not on hold freight 2 global
8690 CURSOR cust_no_hold_hdr_freight2_glb
8691 (p_curr_code IN VARCHAR2 default null) IS
8692 SELECT
8693 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
8694 --TaxER Start
8695 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
8696 --TaxER End
8697 FROM
8698 oe_price_adjustments p
8699 , oe_order_headers_ALL h
8700 , hz_cust_site_uses_ALL su
8701 , hz_cust_acct_sites_ALL cas
8702 WHERE h.invoice_to_org_id = su.site_use_id
8703 AND cas.cust_acct_site_id = su.cust_acct_site_id
8704 AND cas.cust_account_id = p_customer_id
8705 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
8706 AND h.transactional_curr_code = p_curr_code
8707 AND p.line_id IS NULL
8708 AND p.header_id = h.header_id
8709 AND h.order_category_code IN ('ORDER','MIXED')
8710 AND h.open_flag = 'Y'
8711 AND h.booked_flag = 'Y'
8712 --TaxER AND p.applied_flag = 'Y'
8713 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8714 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8715 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8716 AND h.header_id <> l_header_id
8717 AND NOT EXISTS ( SELECT 1
8718 FROM oe_order_holds_ALL oh
8719 WHERE h.header_id = oh.header_id
8720 AND oh.line_id IS NULL
8721 AND oh.hold_release_id IS NULL )
8722 AND EXISTS
8723 ( SELECT NULL
8724 FROM oe_payment_types_all t,
8725 oe_order_lines_all l
8726 WHERE t.credit_check_flag = 'Y'
8727 AND NVL(t.org_id,-99) = NVL(h.org_id, -99)
8728 AND l.header_id = h.header_id
8729 AND t.payment_type_code =
8730 DECODE(l.payment_type_code, NULL,
8731 DECODE(h.payment_type_code, NULL, t.payment_type_code,
8732 h.payment_type_code),
8733 l.payment_type_code)
8734 );
8735
8736
8737 -- customer not on hold freight 2 global including Returns
8738
8739 CURSOR cust_no_hold_hdr_fr2_glb_ret
8740 (p_curr_code IN VARCHAR2 default null) IS
8741 SELECT
8742 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
8743 --TaxER Start
8744 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
8745 --TaxER End
8746 FROM
8747 oe_price_adjustments p
8748 , oe_order_headers_ALL h
8749 , hz_cust_site_uses_ALL su
8750 , hz_cust_acct_sites_ALL cas
8751 WHERE h.invoice_to_org_id = su.site_use_id
8752 AND cas.cust_acct_site_id = su.cust_acct_site_id
8753 AND cas.cust_account_id = p_customer_id
8754 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
8755 AND h.transactional_curr_code = p_curr_code
8756 AND p.line_id IS NULL
8757 AND p.header_id = h.header_id
8758 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
8759 AND h.open_flag = 'Y'
8760 AND h.booked_flag = 'Y'
8761 --TaxER AND p.applied_flag = 'Y'
8762 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8763 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8764 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8765 AND h.header_id <> l_header_id
8766 AND NOT EXISTS ( SELECT 1
8767 FROM oe_order_holds_ALL oh
8768 WHERE h.header_id = oh.header_id
8769 AND oh.line_id IS NULL
8770 AND oh.hold_release_id IS NULL )
8771 AND EXISTS
8772 ( SELECT NULL
8773 FROM oe_payment_types_all t,
8774 oe_order_lines_all l
8775 WHERE t.credit_check_flag = 'Y'
8776 AND NVL(t.org_id,-99) = NVL(h.org_id, -99)
8777 AND l.header_id = h.header_id
8778 AND t.payment_type_code =
8779 DECODE(l.payment_type_code, NULL,
8780 DECODE(h.payment_type_code, NULL, t.payment_type_code,
8781 h.payment_type_code),
8782 l.payment_type_code)
8783 );
8784
8785 -- customer on hold freight 2 global
8786 CURSOR cust_hold_hdr_freight2_glb
8787 (p_curr_code IN VARCHAR2 default null) IS
8788 SELECT
8789 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
8790 --TaxER Start
8791 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
8792 --TaxER End
8793 FROM
8794 oe_price_adjustments p
8795 , oe_order_headers_ALL h
8796 , hz_cust_site_uses_ALL su
8797 , hz_cust_acct_sites_ALL cas
8798 WHERE h.invoice_to_org_id = su.site_use_id
8799 AND cas.cust_acct_site_id = su.cust_acct_site_id
8800 AND cas.cust_account_id = p_customer_id
8801 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
8802 AND h.transactional_curr_code = p_curr_code
8803 AND p.line_id IS NULL
8804 AND p.header_id = h.header_id
8805 AND h.order_category_code IN ('ORDER','MIXED')
8806 AND h.open_flag = 'Y'
8807 AND h.booked_flag = 'Y'
8808 --TaxER AND p.applied_flag = 'Y'
8809 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8810 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8811 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8812 AND h.header_id <> l_header_id
8813 AND EXISTS ( SELECT 1
8814 FROM oe_order_holds_ALL oh
8815 WHERE h.header_id = oh.header_id
8816 AND oh.line_id IS NULL
8817 AND oh.hold_release_id IS NULL )
8818 AND EXISTS
8819 ( SELECT NULL
8820 FROM oe_payment_types_all t,
8821 oe_order_lines_all l
8822 WHERE t.credit_check_flag = 'Y'
8823 AND NVL(t.org_id,-99) = NVL(h.org_id, -99)
8824 AND l.header_id = h.header_id
8825 AND t.payment_type_code =
8826 DECODE(l.payment_type_code, NULL,
8827 DECODE(h.payment_type_code, NULL, t.payment_type_code,
8828 h.payment_type_code),
8829 l.payment_type_code)
8830 );
8831
8832 -- customer on hold freight 2 global including Returns
8833
8834 CURSOR cust_hold_hdr_fr2_glb_ret
8835 (p_curr_code IN VARCHAR2 default null) IS
8836 SELECT
8837 SUM( DECODE(p.list_line_type_code,'TAX',0,DECODE( P.CREDIT_OR_CHARGE_FLAG, 'C', (-1), (+1) ) * P.OPERAND )
8838 --TaxER Start
8839 + DECODE(l_include_tax_flag,'Y',DECODE(p.list_line_type_code,'TAX',p.adjusted_amount,0),0))
8840 --TaxER End
8841 FROM
8842 oe_price_adjustments p
8843 , oe_order_headers_ALL h
8844 , hz_cust_site_uses_ALL su
8845 , hz_cust_acct_sites_ALL cas
8846 WHERE h.invoice_to_org_id = su.site_use_id
8847 AND cas.cust_acct_site_id = su.cust_acct_site_id
8848 AND cas.cust_account_id = p_customer_id
8849 AND NVL(h.request_date, h.creation_date) <= l_shipping_horizon
8850 AND h.transactional_curr_code = p_curr_code
8851 AND p.line_id IS NULL
8852 AND p.header_id = h.header_id
8853 AND h.order_category_code IN ('ORDER','MIXED','RETURN')
8854 AND h.open_flag = 'Y'
8855 AND h.booked_flag = 'Y'
8856 --TaxER AND p.applied_flag = 'Y'
8857 --TaxER AND p.list_line_type_code = 'FREIGHT_CHARGE'
8858 AND ((p.list_line_type_code = 'FREIGHT_CHARGE' and p.applied_flag = 'Y') OR (p.list_line_type_code = 'TAX' and p.applied_flag = 'N' and p.parent_adjustment_id IS NOT NULL)) --TaxER --12895421
8859 AND (p.invoiced_flag IS NULL OR p.invoiced_flag = 'N')
8860 AND h.header_id <> l_header_id
8861 AND EXISTS ( SELECT 1
8862 FROM oe_order_holds_ALL oh
8863 WHERE h.header_id = oh.header_id
8864 AND oh.line_id IS NULL
8865 AND oh.hold_release_id IS NULL )
8866 AND EXISTS
8867 ( SELECT NULL
8868 FROM oe_payment_types_all t,
8869 oe_order_lines_all l
8870 WHERE t.credit_check_flag = 'Y'
8871 AND NVL(t.org_id,-99) = NVL(h.org_id, -99)
8872 AND l.header_id = h.header_id
8873 AND t.payment_type_code =
8874 DECODE(l.payment_type_code, NULL,
8875 DECODE(h.payment_type_code, NULL, t.payment_type_code,
8876 h.payment_type_code),
8877 l.payment_type_code)
8878 );
8879
8880 ----------------------- END Global exposure cursors ---------
8881
8882 l_cum_order_amount NUMBER := 0 ;
8883 l_cum_order_hold_amount NUMBER := 0 ;
8884 l_cum_ar_amount NUMBER := 0 ;
8885
8886 l_limit_cum_order_amount NUMBER := 0 ;
8887 l_limit_cum_order_hold_amount NUMBER := 0 ;
8888 l_limit_cum_ar_amount NUMBER := 0 ;
8889
8890 l_order_amount NUMBER := 0 ;
8891 l_order_hold_amount NUMBER := 0 ;
8892 l_ar_amount NUMBER := 0 ;
8893
8894
8895 BEGIN
8896 IF G_debug_flag = 'Y'
8897 THEN
8898 OE_DEBUG_PUB.ADD('OEXUCRCB: IN Get_order_exposure',1);
8899 END IF;
8900
8901 x_return_status := FND_API.G_RET_STS_SUCCESS;
8902
8903 IF G_debug_flag = 'Y'
8904 THEN
8905 OE_DEBUG_PUB.Add('exposure Input parameters ');
8906 OE_DEBUG_PUB.Add(' ');
8907 OE_DEBUG_PUB.Add('--------------------------------------------');
8908 OE_DEBUG_PUB.Add('p_customer_id = '|| p_customer_id, 1);
8909 OE_DEBUG_PUB.Add('p_site_use_id = '|| p_site_use_id, 1);
8910 OE_DEBUG_PUB.Add('p_header_id = '|| p_header_id);
8911 OE_DEBUG_PUB.Add('p_credit_check_rule_id = '
8912 || p_credit_check_rule_rec.credit_check_rule_id
8913 );
8914
8915 OE_DEBUG_PUB.Add('Conversion type = '
8916 || p_credit_check_rule_rec.conversion_type
8917 );
8918
8919 OE_DEBUG_PUB.Add('p_credit_level = '|| p_credit_level, 1);
8920 OE_DEBUG_PUB.Add('p_limit_curr_code = '|| p_limit_curr_code);
8921 OE_DEBUG_PUB.Add('p_include_all_flag = '|| p_include_all_flag);
8922 OE_DEBUG_PUB.Add('p_global_exposure_flag = '|| p_global_exposure_flag, 1);
8923 OE_DEBUG_PUB.Add('p_need_exposure_details= '|| p_need_exposure_details);
8924 OE_DEBUG_PUB.Add('----------------End Parameters------------------------ ');
8925 OE_DEBUG_PUB.Add(' ');
8926 OE_DEBUG_PUB.Add('Local Variables');
8927 OE_DEBUG_PUB.Add('l_need_exposure_details = '||l_need_exposure_details);
8928 OE_DEBUG_PUB.Add(' ');
8929
8930 --------------------------------------------------------------------
8931 --------- Assign default values: credit check rules ----------------
8932 --------------------------------------------------------------------
8933
8934 OE_DEBUG_PUB.Add(' Assign Default Values: Credit rules ');
8935 END IF;
8936
8937 l_open_ar_days := p_credit_check_rule_rec.open_ar_days ;
8938 l_uninvoiced_orders_flag :=
8939 NVL(p_credit_check_rule_rec.uninvoiced_orders_flag,'N') ;
8940 l_orders_on_hold_flag :=
8941 NVL(p_credit_check_rule_rec.orders_on_hold_flag,'N') ;
8942 l_include_tax_flag :=
8943 NVL(p_credit_check_rule_rec.include_tax_flag,'N') ;
8944 l_shipping_horizon := p_credit_check_rule_rec.shipping_horizon ;
8945 l_include_risk_flag :=
8946 NVL(p_credit_check_rule_rec.include_payments_at_risk_flag,'N') ;
8947 l_quick_cr_check_flag :=
8948 NVL(p_credit_check_rule_rec.quick_cr_check_flag,'N') ;
8949 l_freight_charges_flag :=
8950 NVL(p_credit_check_rule_rec.incl_freight_charges_flag,'N') ;
8951 l_open_ar_balance_flag :=
8952 NVL(p_credit_check_rule_rec.open_ar_balance_flag,'N');
8953 l_incl_external_exposure_flag :=
8954 NVL(p_credit_check_rule_rec.include_external_exposure_flag,'N');
8955 l_header_id := NVL(p_header_id,0);
8956 -----added for Returns-------------------
8957 l_include_returns_flag :=
8958 NVL(p_credit_check_rule_rec.include_returns_flag,'N');
8959
8960 IF G_debug_flag = 'Y'
8961 THEN
8962 OE_DEBUG_PUB.Add(' Credit rule setup values ');
8963 OE_DEBUG_PUB.Add(' ');
8964 OE_DEBUG_PUB.Add(' -----------------------------------------------');
8965 OE_DEBUG_PUB.Add(' l_open_ar_days = '|| l_open_ar_days );
8966 OE_DEBUG_PUB.Add(' l_uninvoiced_orders_flag = '||
8967 l_uninvoiced_orders_flag );
8968 OE_DEBUG_PUB.Add(' l_orders_on_hold_flag = '|| l_orders_on_hold_flag );
8969 OE_DEBUG_PUB.Add(' l_include_tax_flag = '|| l_include_tax_flag );
8970 OE_DEBUG_PUB.Add(' l_shipping_horizon = '|| l_shipping_horizon );
8971 OE_DEBUG_PUB.Add(' l_include_risk_flag = '|| l_include_risk_flag );
8972 OE_DEBUG_PUB.Add(' l_quick_cr_check_flag = '|| l_quick_cr_check_flag );
8973 OE_DEBUG_PUB.Add(' l_freight_charges_flag = '|| l_freight_charges_flag );
8974 OE_DEBUG_PUB.Add(' l_open_ar_balance_flag = '|| l_open_ar_balance_flag );
8975 OE_DEBUG_PUB.Add(' l_incl_external_exposure_flag = ' ||
8976 l_incl_external_exposure_flag );
8977 OE_DEBUG_PUB.Add(' l_include_returns_flag = ' ||
8978 l_include_returns_flag );
8979 OE_DEBUG_PUB.Add(' -------------------------------------------------- ');
8980 OE_DEBUG_PUB.Add(' ');
8981 END IF;
8982
8983
8984 IF p_credit_level = 'CUSTOMER'
8985 THEN
8986 -- Select total exposure using CUSTOMER CURSORs
8987
8988 IF G_debug_flag = 'Y'
8989 THEN
8990 OE_DEBUG_PUB.Add('Get_order_Exposure CUSTOMER ',1);
8991 END IF;
8992
8993 -- The exposure calculation must be done for all the
8994 -- usage currencies as part of the multi currency
8995 -- set up.
8996 l_current_usage_cur := NULL ;
8997
8998 FOR i IN 1..p_usage_curr.count
8999 LOOP
9000 l_current_usage_cur := NULL ;
9001 IF G_debug_flag = 'Y'
9002 THEN
9003 OE_DEBUG_PUB.ADD(' ');
9004 OE_DEBUG_PUB.ADD('############################### ');
9005 OE_DEBUG_PUB.ADD('USAGE CURR = '|| p_usage_curr(i).usage_curr_code );
9006 OE_DEBUG_PUB.ADD('############################### ');
9007 OE_DEBUG_PUB.ADD(' ');
9008 OE_DEBUG_PUB.ADD('l_current_usage_cur = '|| l_current_usage_cur );
9009 OE_DEBUG_PUB.ADD(' ');
9010 OE_DEBUG_PUB.ADD('.');
9011 END IF;
9012
9013 l_current_usage_cur := p_usage_curr(i).usage_curr_code ;
9014
9015 -- get external exposure
9016 IF l_incl_external_exposure_flag = 'Y'
9017 THEN
9018 --- Bug2352020
9019 IF p_global_exposure_flag = 'Y'
9020 THEN
9021 IF G_debug_flag = 'Y'
9022 THEN
9023 OE_DEBUG_PUB.Add(' Get cust_external_csr_global ');
9024 END IF;
9025
9026 OPEN cust_external_csr_global (p_usage_curr(i).usage_curr_code);
9027 FETCH cust_external_csr_global INTO l_external_exposure;
9028 IF cust_external_csr_global%NOTFOUND
9029 THEN
9030 OE_DEBUG_PUB.Add(' No cust_external_csr_global balance found');
9031 l_external_exposure := 0;
9032 END IF;
9033 CLOSE cust_external_csr_global ;
9034
9035 ELSE
9036
9037 OE_DEBUG_PUB.Add(' Get customer external exposure balance ');
9038
9039 OPEN cust_external_exposure_csr (p_usage_curr(i).usage_curr_code);
9040 FETCH cust_external_exposure_csr INTO l_external_exposure;
9041 IF cust_external_exposure_csr%NOTFOUND
9042 THEN
9043 OE_DEBUG_PUB.Add(' No external exposure balance found');
9044 l_external_exposure := 0;
9045 END IF;
9046 CLOSE cust_external_exposure_csr;
9047 END IF ; -- p_global check
9048
9049 END IF; -- external check
9050 l_cum_external_exposure := l_cum_external_exposure +
9051 NVL(l_external_exposure, 0);
9052
9053 ------------------------AR exposure -------------------------
9054
9055 IF l_open_ar_balance_flag = 'Y'
9056 THEN
9057
9058 IF p_global_exposure_flag = 'Y'
9059 THEN
9060 IF G_debug_flag = 'Y'
9061 THEN
9062 OE_DEBUG_PUB.Add(' Get cust_ar_balance_global ');
9063 END IF;
9064
9065 OPEN cust_ar_balance_global (p_usage_curr(i).usage_curr_code);
9066 FETCH cust_ar_balance_global INTO l_total_from_ar ;
9067
9068 IF cust_ar_balance_global%NOTFOUND
9069 THEN
9070 IF G_debug_flag = 'Y'
9071 THEN
9072 OE_DEBUG_PUB.Add(' No AR balance found');
9073 END IF;
9074
9075 l_total_from_ar := 0 ;
9076 END IF;
9077
9078 CLOSE cust_ar_balance_global;
9079
9080 ELSE
9081 IF G_debug_flag = 'Y'
9082 THEN
9083 OE_DEBUG_PUB.Add(' Get cust_ar_balance ');
9084 END IF;
9085
9086 OPEN cust_ar_balance (p_usage_curr(i).usage_curr_code);
9087 FETCH cust_ar_balance INTO l_total_from_ar ;
9088
9089 IF cust_ar_balance%NOTFOUND
9090 THEN
9091 IF G_debug_flag = 'Y'
9092 THEN
9093 OE_DEBUG_PUB.Add(' No AR balance found');
9094 END IF;
9095
9096 l_total_from_ar := 0 ;
9097 END IF;
9098
9099 CLOSE cust_ar_balance;
9100 end if;
9101 END IF;
9102
9103 IF l_include_risk_flag = 'Y'
9104 THEN
9105 IF p_global_exposure_flag = 'Y'
9106 THEN
9107 IF G_debug_flag = 'Y'
9108 THEN
9109 OE_DEBUG_PUB.Add(' Get cust_pay_risk_global ');
9110 END IF;
9111
9112 OPEN cust_pay_risk_global (p_usage_curr(i).usage_curr_code);
9113 FETCH cust_pay_risk_global INTO l_payments_at_risk;
9114 IF cust_pay_risk_global%NOTFOUND
9115 THEN
9116 l_payments_at_risk := 0 ;
9117 IF G_debug_flag = 'Y'
9118 THEN
9119 OE_DEBUG_PUB.Add(' No Pay at risk found ');
9120 END IF;
9121 END IF;
9122
9123 CLOSE cust_pay_risk_global;
9124 ELSE
9125 IF G_debug_flag = 'Y'
9126 THEN
9127 OE_DEBUG_PUB.Add(' Get cust_pay_risk ');
9128 END IF;
9129
9130 OPEN cust_pay_risk (p_usage_curr(i).usage_curr_code);
9131 FETCH cust_pay_risk INTO l_payments_at_risk;
9132 IF cust_pay_risk%NOTFOUND
9133 THEN
9134 l_payments_at_risk := 0 ;
9135 OE_DEBUG_PUB.Add(' No Pay at risk found ');
9136 END IF;
9137
9138 CLOSE cust_pay_risk;
9139 END IF; -- Global
9140 END IF;
9141
9142 -------------------------------------- BR support ---------------
9143 IF l_open_ar_days > 0
9144 THEN
9145 IF oe_credit_check_util.Check_drawee_exists
9146 (p_cust_account_id => p_customer_id ) = 'Y'
9147 THEN
9148 IF G_debug_flag = 'Y'
9149 THEN
9150 OE_DEBUG_PUB.Add(' Call DRAWEE BR exposure ');
9151 END IF;
9152
9153 IF p_global_exposure_flag = 'Y'
9154 THEN
9155 IF G_debug_flag = 'Y'
9156 THEN
9157 OE_DEBUG_PUB.Add(' Get cust_br_balance_global ');
9158 END IF;
9159
9160 OPEN cust_br_balance_global (p_usage_curr(i).usage_curr_code);
9161 FETCH cust_br_balance_global INTO l_total_from_br ;
9162
9163 IF cust_br_balance_global%NOTFOUND
9164 THEN
9165 IF G_debug_flag = 'Y'
9166 THEN
9167 OE_DEBUG_PUB.Add(' No AR balance found');
9168 END IF;
9169
9170 l_total_from_br := 0 ;
9171 END IF;
9172
9173 CLOSE cust_br_balance_global;
9174
9175 ELSE
9176 IF G_debug_flag = 'Y'
9177 THEN
9178 OE_DEBUG_PUB.Add(' Get cust_br_balance ');
9179 END IF;
9180
9181 OPEN cust_br_balance (p_usage_curr(i).usage_curr_code);
9182 FETCH cust_br_balance INTO l_total_from_br ;
9183
9184 IF cust_br_balance%NOTFOUND
9185 THEN
9186 OE_DEBUG_PUB.Add(' No AR balance found');
9187 l_total_from_br := 0 ;
9188 END IF;
9189
9190 CLOSE cust_br_balance;
9191 end if;
9192 END IF;
9193
9194 IF l_include_risk_flag = 'Y'
9195 THEN
9196 IF p_global_exposure_flag = 'Y'
9197 THEN
9198 IF G_debug_flag = 'Y'
9199 THEN
9200 OE_DEBUG_PUB.Add(' Get cust_pay_risk_global ');
9201 END IF;
9202
9203 OPEN cust_br_pay_risk_global (p_usage_curr(i).usage_curr_code);
9204 FETCH cust_br_pay_risk_global INTO l_payments_at_risk_br;
9205 IF cust_br_pay_risk_global%NOTFOUND
9206 THEN
9207 l_payments_at_risk_br := 0 ;
9208 OE_DEBUG_PUB.Add(' No Pay at risk found ');
9209 END IF;
9210
9211 CLOSE cust_br_pay_risk_global;
9212 ELSE
9213 IF G_debug_flag = 'Y'
9214 THEN
9215 OE_DEBUG_PUB.Add(' Get cust_pay_risk ');
9216 END IF;
9217
9218 OPEN cust_br_pay_risk (p_usage_curr(i).usage_curr_code);
9219 FETCH cust_br_pay_risk INTO l_payments_at_risk_br;
9220 IF cust_br_pay_risk%NOTFOUND
9221 THEN
9222 l_payments_at_risk_br := 0 ;
9223 OE_DEBUG_PUB.Add(' No Pay at risk found ');
9224 END IF;
9225 CLOSE cust_br_pay_risk;
9226 END IF; -- Global
9227 ELSE
9228 IF G_debug_flag = 'Y'
9229 THEN
9230 OE_DEBUG_PUB.Add(' No Drawee check required ');
9231 END IF;
9232
9233 END IF; -- DRAWEE
9234 ELSE
9235 IF G_debug_flag = 'Y'
9236 THEN
9237 OE_DEBUG_PUB.Add(' No Drawee check - NO horizon ' ||
9238 p_credit_check_rule_rec.OPEN_AR_DAYS) ;
9239 END IF;
9240 END IF;
9241
9242 ------------------- end AR exposure --------------------
9243
9244 ------------------- OM Exposure logic ------------------------
9245 -------------------------------------------------------------
9246 IF l_uninvoiced_orders_flag = 'Y'
9247 THEN
9248 BEGIN
9249 IF G_debug_flag = 'Y'
9250 THEN
9251 OE_DEBUG_PUB.Add(' Begin OM Exposure calculation ');
9252 END IF;
9253
9254 IF OE_Commitment_PVT.Do_Commitment_Sequencing
9255 THEN
9256 IF p_global_exposure_flag = 'Y'
9257 THEN
9258 IF G_debug_flag = 'Y'
9259 THEN
9260 OE_DEBUG_PUB.Add(' cust_commitments_global');
9261 END IF;
9262
9263 OPEN cust_commitment_total_global
9264 (p_usage_curr(i).usage_curr_code);
9265 FETCH cust_commitment_total_global
9266 INTO l_total_commitment ;
9267
9268 IF cust_commitment_total_global%NOTFOUND
9269 THEN
9270 l_total_commitment := 0 ;
9271 OE_DEBUG_PUB.Add('No commitment amount found ');
9272 END IF;
9273
9274 CLOSE cust_commitment_total_global ;
9275 ELSE
9276 IF G_debug_flag = 'Y'
9277 THEN
9278 OE_DEBUG_PUB.Add(' cust_commitments ');
9279 END IF;
9280
9281 OPEN customer_commitment_total (p_usage_curr(i).usage_curr_code);
9282 FETCH customer_commitment_total INTO l_total_commitment ;
9283
9284 IF customer_commitment_total%NOTFOUND
9285 THEN
9286 l_total_commitment := 0 ;
9287 OE_DEBUG_PUB.Add('No commitment amount found ');
9288 END IF;
9289
9290 CLOSE customer_commitment_total ;
9291 END IF ; -- Global
9292 END IF; -- Commitment_Sequencing
9293
9294 --
9295 -- Check the l_orders_on_hold_flag.
9296 -- IF Y, process the uninvoiced cursors
9297 -- ELSE process the no hold cursors
9298 --
9299
9300 IF l_orders_on_hold_flag = 'Y'
9301 THEN
9302 IF p_global_exposure_flag = 'Y'
9303 THEN
9304
9305 ----added for Returns
9306 IF l_include_returns_flag='N'
9307 THEN
9308 -----returns are not included
9309
9310 IF G_debug_flag = 'Y'
9311 THEN
9312 OE_DEBUG_PUB.Add(' select cust_uninvoiced_orders_global ');
9313 END IF;
9314
9315 OPEN cust_uninvoiced_orders_global(p_usage_curr(i).usage_curr_code);
9316 FETCH cust_uninvoiced_orders_global INTO l_total_on_order;
9317
9318 IF cust_uninvoiced_orders_global%NOTFOUND
9319 THEN
9320 l_total_on_order := 0 ;
9321 OE_DEBUG_PUB.Add('No Uninvoiced Order amount found ');
9322 END IF;
9323 CLOSE cust_uninvoiced_orders_global;
9324
9325 ELSE
9326 -----returns are included
9327 IF G_debug_flag = 'Y'
9328 THEN
9329 OE_DEBUG_PUB.Add(' select cust_uninv_orders_global_ret ');
9330 END IF;
9331
9332 OPEN cust_uninv_orders_global_ret(p_usage_curr(i).usage_curr_code);
9333 FETCH cust_uninv_orders_global_ret INTO l_total_on_order;
9334
9335 IF cust_uninv_orders_global_ret%NOTFOUND
9336 THEN
9337 l_total_on_order := 0 ;
9338 OE_DEBUG_PUB.Add('No Uninvoiced Order amount found ');
9339 END IF;
9340
9341 CLOSE cust_uninv_orders_global_ret;
9342
9343 END IF; ---end for checking if returns are included
9344
9345 ELSE
9346
9347 ----added for Returns
9348 IF l_include_returns_flag='N'
9349 THEN
9350 -----returns are not included
9351 IF G_debug_flag = 'Y'
9352 THEN
9353 OE_DEBUG_PUB.Add(' select cust_uninvoiced_orders ');
9354 END IF;
9355
9356 OPEN cust_uninvoiced_orders(p_usage_curr(i).usage_curr_code);
9357 FETCH cust_uninvoiced_orders INTO l_total_on_order;
9358
9359 IF cust_uninvoiced_orders%NOTFOUND
9360 THEN
9361 l_total_on_order := 0 ;
9362 OE_DEBUG_PUB.Add('No Uninvoiced Order amount found ');
9363 END IF;
9364
9365 CLOSE cust_uninvoiced_orders;
9366
9367 ELSE
9368 -----returns are included
9369 IF G_debug_flag = 'Y'
9370 THEN
9371 OE_DEBUG_PUB.Add(' select cust_uninv_orders_ret ');
9372 END IF;
9373
9374 OPEN cust_uninv_orders_ret(p_usage_curr(i).usage_curr_code);
9375 FETCH cust_uninv_orders_ret INTO l_total_on_order;
9376
9377 IF cust_uninv_orders_ret%NOTFOUND
9378 THEN
9379 l_total_on_order := 0 ;
9380 OE_DEBUG_PUB.Add('No Uninvoiced Order amount found ');
9381 END IF;
9382
9383 CLOSE cust_uninv_orders_ret;
9384
9385 END IF; -----end of checking if returns are included
9386 END IF ; --- Global
9387
9388 IF l_freight_charges_flag ='Y'
9389 THEN
9390 IF p_global_exposure_flag = 'Y'
9391 THEN
9392
9393 ----added for Returns
9394 IF l_include_returns_flag='N'
9395 THEN
9396 -----returns are not included
9397 IF G_debug_flag = 'Y'
9398 THEN
9399 OE_DEBUG_PUB.Add(' cust_uninv_hdr_freight1_global ');
9400 END IF;
9401
9402 OPEN cust_uninv_hdr_freight1_global
9403 (p_usage_curr(i).usage_curr_code);
9404
9405 FETCH cust_uninv_hdr_freight1_global
9406 INTO l_uninvoiced_hdr_freight1;
9407
9408 IF cust_uninv_hdr_freight1_global%NOTFOUND
9409 THEN
9410 l_uninvoiced_hdr_freight1 := 0 ;
9411 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight1 found ');
9412 END IF;
9413
9414 CLOSE cust_uninv_hdr_freight1_global;
9415
9416 ELSE
9417 -----returns are included
9418 IF G_debug_flag = 'Y'
9419 THEN
9420 OE_DEBUG_PUB.Add(' open cust_uninv_hdr_fr1_glb_ret ');
9421 END IF;
9422
9423 OPEN cust_uninv_hdr_fr1_glb_ret
9424 (p_usage_curr(i).usage_curr_code);
9425
9426 FETCH cust_uninv_hdr_fr1_glb_ret
9427 INTO l_uninvoiced_hdr_freight1;
9428
9429 IF cust_uninv_hdr_fr1_glb_ret%NOTFOUND
9430 THEN
9431 l_uninvoiced_hdr_freight1 := 0 ;
9432 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight1 found ');
9433 END IF;
9434
9435 CLOSE cust_uninv_hdr_fr1_glb_ret;
9436
9437 END IF; --end of checking if returns are included
9438
9439 ----added for Returns
9440 IF l_include_returns_flag='N'
9441 THEN
9442 -----returns are not included
9443
9444 IF G_debug_flag = 'Y'
9445 THEN
9446 OE_DEBUG_PUB.Add(' cust_uninv_hdr_freight2_global ');
9447 END IF;
9448
9449
9450 OPEN cust_uninv_hdr_freight2_global
9451 (p_usage_curr(i).usage_curr_code);
9452
9453 FETCH cust_uninv_hdr_freight2_global
9454 INTO l_uninvoiced_hdr_freight2;
9455
9456 IF cust_uninv_hdr_freight2_global%NOTFOUND
9457 THEN
9458 l_uninvoiced_hdr_freight2 := 0 ;
9459 IF G_debug_flag = 'Y'
9460 THEN
9461 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight2 found ');
9462 END IF;
9463 END IF;
9464
9465 CLOSE cust_uninv_hdr_freight2_global ;
9466
9467 ELSE
9468 -----returns are included
9469
9470 IF G_debug_flag = 'Y'
9471 THEN
9472 OE_DEBUG_PUB.Add(' open cust_uninv_hdr_fr2_glb_ret ');
9473 END IF;
9474
9475 OPEN cust_uninv_hdr_fr2_glb_ret
9476 (p_usage_curr(i).usage_curr_code);
9477
9478 FETCH cust_uninv_hdr_fr2_glb_ret
9479 INTO l_uninvoiced_hdr_freight2;
9480
9481 IF cust_uninv_hdr_fr2_glb_ret%NOTFOUND
9482 THEN
9483 l_uninvoiced_hdr_freight2 := 0 ;
9484 IF G_debug_flag = 'Y'
9485 THEN
9486 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight2 found ');
9487 END IF;
9488 END IF;
9489
9490 CLOSE cust_uninv_hdr_fr2_glb_ret;
9491
9492 END IF; ----end of checking if returns are included
9493
9494 ELSE
9495
9496 ----added for Returns
9497 IF l_include_returns_flag='N'
9498 THEN
9499 -----returns are not included
9500
9501 IF G_debug_flag = 'Y'
9502 THEN
9503 OE_DEBUG_PUB.Add(' cust_uninv_hdr_freight1 ');
9504 END IF;
9505
9506 OPEN cust_uninv_hdr_freight1(p_usage_curr(i).usage_curr_code);
9507 FETCH cust_uninv_hdr_freight1 INTO l_uninvoiced_hdr_freight1;
9508
9509 IF cust_uninv_hdr_freight1%NOTFOUND
9510 THEN
9511 l_uninvoiced_hdr_freight1 := 0 ;
9512 IF G_debug_flag = 'Y'
9513 THEN
9514 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight1 found ');
9515 END IF;
9516 END IF;
9517
9518 CLOSE cust_uninv_hdr_freight1;
9519
9520 IF G_debug_flag = 'Y'
9521 THEN
9522 OE_DEBUG_PUB.Add(' cust_uninv_hdr_freight2 ');
9523 END IF;
9524
9525 OPEN cust_uninv_hdr_freight2(p_usage_curr(i).usage_curr_code);
9526 FETCH cust_uninv_hdr_freight2 INTO l_uninvoiced_hdr_freight2;
9527
9528 IF cust_uninv_hdr_freight2%NOTFOUND
9529 THEN
9530 l_uninvoiced_hdr_freight2 := 0 ;
9531 IF G_debug_flag = 'Y'
9532 THEN
9533 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight2 found ');
9534 END IF;
9535 END IF;
9536 CLOSE cust_uninv_hdr_freight2;
9537
9538 ELSE
9539 -----returns are included
9540
9541 IF G_debug_flag = 'Y'
9542 THEN
9543 OE_DEBUG_PUB.Add(' open cust_uninv_hdr_freight1_ret ');
9544 END IF;
9545
9546 OPEN cust_uninv_hdr_freight1_ret(p_usage_curr(i).usage_curr_code);
9547 FETCH cust_uninv_hdr_freight1_ret INTO l_uninvoiced_hdr_freight1;
9548
9549 IF cust_uninv_hdr_freight1_ret%NOTFOUND
9550 THEN
9551 l_uninvoiced_hdr_freight1 := 0 ;
9552 IF G_debug_flag = 'Y'
9553 THEN
9554 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight1 found ');
9555 END IF;
9556 END IF;
9557
9558 CLOSE cust_uninv_hdr_freight1_ret;
9559
9560 IF G_debug_flag = 'Y'
9561 THEN
9562 OE_DEBUG_PUB.Add(' open cust_uninv_hdr_freight2_ret ');
9563 END IF;
9564
9565 OPEN cust_uninv_hdr_freight2_ret(p_usage_curr(i).usage_curr_code);
9566 FETCH cust_uninv_hdr_freight2_ret INTO l_uninvoiced_hdr_freight2;
9567
9568 IF cust_uninv_hdr_freight2_ret%NOTFOUND
9569 THEN
9570 l_uninvoiced_hdr_freight2 := 0 ;
9571 IF G_debug_flag = 'Y'
9572 THEN
9573 OE_DEBUG_PUB.Add('No Uninvoiced Order Freight2 found ');
9574 END IF;
9575 END IF;
9576 CLOSE cust_uninv_hdr_freight2_ret;
9577
9578 END IF; -----end of checking if returns are included
9579
9580 END IF ; --- Global
9581
9582 END IF; -- freight charges
9583
9584
9585 ELSE -- Do not include orders on hold
9586 -- l_orders_on_hold_flag <> 'Y'
9587
9588 IF p_global_exposure_flag = 'Y'
9589 THEN
9590
9591 ----added for Returns
9592 IF l_include_returns_flag='N'
9593 THEN
9594 -----returns are not included
9595
9596 IF G_debug_flag = 'Y'
9597 THEN
9598 OE_DEBUG_PUB.Add(' cust_orders_not_on_hold_global ');
9599 END IF;
9600
9601 OPEN cust_orders_not_on_hold_global
9602 (p_usage_curr(i).usage_curr_code);
9603 FETCH cust_orders_not_on_hold_global
9604 INTO l_total_no_hold;
9605
9606 IF cust_orders_not_on_hold_global%NOTFOUND
9607 THEN
9608 l_total_no_hold := 0 ;
9609 OE_DEBUG_PUB.Add('No Orders not on hold amount found ');
9610 END IF;
9611
9612 CLOSE cust_orders_not_on_hold_global ;
9613
9614 -- If the l_need_exposure_details flag enabled, get the
9615 -- OM amount on hold
9616 IF l_need_exposure_details = 'Y' THEN
9617 IF G_debug_flag = 'Y' THEN
9618 OE_DEBUG_PUB.Add(' cust_orders_on_hold_global ');
9619 END IF;
9620 OPEN cust_orders_on_hold_global(p_usage_curr(i).usage_curr_code);
9621 FETCH cust_orders_on_hold_global
9622 INTO l_total_on_hold;
9623
9624 IF cust_orders_on_hold_global%NOTFOUND THEN
9625 l_total_on_hold := 0 ;
9626 OE_DEBUG_PUB.Add('No global orders on hold amount found ');
9627 END IF;
9628 CLOSE cust_orders_on_hold_global ;
9629 END IF;
9630
9631 ELSE
9632 -----returns are included
9633
9634 IF G_debug_flag = 'Y'
9635 THEN
9636 OE_DEBUG_PUB.Add(' open cust_ord_not_on_hold_glb_ret ');
9637 END IF;
9638
9639 OPEN cust_ord_not_on_hold_glb_ret
9640 (p_usage_curr(i).usage_curr_code);
9641 FETCH cust_ord_not_on_hold_glb_ret
9642 INTO l_total_no_hold;
9643
9644 IF cust_ord_not_on_hold_glb_ret%NOTFOUND
9645 THEN
9646 l_total_no_hold := 0 ;
9647 OE_DEBUG_PUB.Add('No Orders not on hold amount found ');
9648 END IF;
9649
9650 CLOSE cust_ord_not_on_hold_glb_ret ;
9651
9652 -- If the l_need_exposure_details flag enabled, get the
9653 -- OM amount on hold
9654 IF l_need_exposure_details = 'Y' THEN
9655 IF G_debug_flag = 'Y' THEN
9656 OE_DEBUG_PUB.Add(' cust_ord_on_hold_glb_ret ');
9657 END IF;
9658 OPEN cust_ord_on_hold_glb_ret(p_usage_curr(i).usage_curr_code);
9659 FETCH cust_ord_on_hold_glb_ret
9660 INTO l_total_on_hold;
9661
9662 IF cust_ord_on_hold_glb_ret%NOTFOUND THEN
9663 l_total_on_hold := 0 ;
9664 OE_DEBUG_PUB.Add('No return global orders on hold amount found ');
9665 END IF;
9666 CLOSE cust_ord_on_hold_glb_ret ;
9667 END IF;
9668
9669 END IF; -----end of checking if returns are included
9670
9671 IF l_freight_charges_flag ='Y'
9672 THEN
9673 --
9674 -- Get header freight if the site is the same as the given site
9675 -- or the site belong to the same customer as the given site
9676 -- if the credit level is CUSTOMER.
9677 --
9678
9679 ----added for Returns
9680 IF l_include_returns_flag='N'
9681 THEN
9682 -----returns are not included
9683
9684 IF G_debug_flag = 'Y'
9685 THEN
9686 OE_DEBUG_PUB.Add(' cust_no_hold_hdr_freight1_glb ');
9687 END IF;
9688
9689 OPEN cust_no_hold_hdr_freight1_glb
9690 (p_usage_curr(i).usage_curr_code);
9691
9692 FETCH cust_no_hold_hdr_freight1_glb
9693 INTO l_no_hold_hdr_freight1;
9694
9695 IF cust_no_hold_hdr_freight1_glb%NOTFOUND
9696 THEN
9697 l_no_hold_hdr_freight1 := 0 ;
9698 IF G_debug_flag = 'Y'
9699 THEN
9700 OE_DEBUG_PUB.Add('No orders without hold freight1 amount found ');
9701 END IF;
9702 END IF;
9703
9704 CLOSE cust_no_hold_hdr_freight1_glb ;
9705
9706 IF G_debug_flag = 'Y'
9707 THEN
9708 OE_DEBUG_PUB.Add(' cust_no_hold_hdr_freight2_glb ');
9709 END IF;
9710
9711 OPEN cust_no_hold_hdr_freight2_glb
9712 (p_usage_curr(i).usage_curr_code);
9713
9714 FETCH cust_no_hold_hdr_freight2_glb
9715 INTO l_no_hold_hdr_freight2;
9716
9717 IF cust_no_hold_hdr_freight2_glb%NOTFOUND
9718 THEN
9719 l_hold_hdr_freight2 := 0 ;
9720 IF G_debug_flag = 'Y'
9721 THEN
9722 OE_DEBUG_PUB.Add('No orders without hold freight2 amount found');
9723 END IF;
9724 END IF;
9725 CLOSE cust_no_hold_hdr_freight2_glb ;
9726
9727 -- If the l_need_exposure_details flag enabled, get the
9728 -- OM amount on hold
9729 IF l_need_exposure_details = 'Y' THEN
9730 IF G_debug_flag = 'Y' THEN
9731 OE_DEBUG_PUB.Add(' cust_hold_hdr_freight1_glb ');
9732 END IF;
9733
9734 OPEN cust_hold_hdr_freight1_glb
9735 (p_usage_curr(i).usage_curr_code);
9736 FETCH cust_hold_hdr_freight1_glb
9737 INTO l_hold_hdr_freight1;
9738
9739 IF cust_hold_hdr_freight1_glb%NOTFOUND THEN
9740 l_hold_hdr_freight1 := 0 ;
9741 OE_DEBUG_PUB.Add
9742 ('No orders on hold with freight1 amount found ');
9743 END IF;
9744
9745 CLOSE cust_hold_hdr_freight1_glb;
9746
9747 -- get header freight2 on hold
9748 IF G_debug_flag = 'Y' THEN
9749 OE_DEBUG_PUB.Add(' cust_hold_hdr_freight2_glb ');
9750 END IF;
9751
9752 OPEN cust_hold_hdr_freight2_glb
9753 (p_usage_curr(i).usage_curr_code);
9754 FETCH cust_hold_hdr_freight2_glb
9755 INTO l_hold_hdr_freight2;
9756
9757 IF cust_hold_hdr_freight2_glb%NOTFOUND THEN
9758 l_hold_hdr_freight2 := 0 ;
9759 OE_DEBUG_PUB.Add
9760 ('No orders on hold with freight2 amount found ');
9761 END IF;
9762
9763 CLOSE cust_hold_hdr_freight2_glb;
9764 END IF;
9765 ELSE
9766
9767 -----returns are included
9768
9769 IF G_debug_flag = 'Y'
9770 THEN
9771 OE_DEBUG_PUB.Add('open cust_no_hold_hdr_fr1_glb_ret ');
9772 END IF;
9773
9774 OPEN cust_no_hold_hdr_fr1_glb_ret
9775 (p_usage_curr(i).usage_curr_code);
9776
9777 FETCH cust_no_hold_hdr_fr1_glb_ret
9778 INTO l_no_hold_hdr_freight1;
9779
9780 IF cust_no_hold_hdr_fr1_glb_ret%NOTFOUND
9781 THEN
9782 l_no_hold_hdr_freight1 := 0 ;
9783 IF G_debug_flag = 'Y'
9784 THEN
9785 OE_DEBUG_PUB.Add('No orders without hold freight1 amount found ');
9786 END IF;
9787 END IF;
9788
9789 CLOSE cust_no_hold_hdr_fr1_glb_ret ;
9790
9791 IF G_debug_flag = 'Y'
9792 THEN
9793 OE_DEBUG_PUB.Add('open cust_no_hold_hdr_fr2_glb_ret ');
9794 END IF;
9795
9796 OPEN cust_no_hold_hdr_fr2_glb_ret
9797 (p_usage_curr(i).usage_curr_code);
9798
9799 FETCH cust_no_hold_hdr_fr2_glb_ret
9800 INTO l_no_hold_hdr_freight2;
9801
9802 IF cust_no_hold_hdr_fr2_glb_ret%NOTFOUND
9803 THEN
9804 l_hold_hdr_freight2 := 0 ;
9805 IF G_debug_flag = 'Y'
9806 THEN
9807 OE_DEBUG_PUB.Add('No orders without hold freight2 amount found');
9808 END IF;
9809 END IF;
9810 CLOSE cust_no_hold_hdr_fr2_glb_ret ;
9811
9812 -- If the l_need_exposure_details flag enabled, get the
9813 -- OM amount on hold
9814 IF l_need_exposure_details = 'Y' THEN
9815 IF G_debug_flag = 'Y' THEN
9816 OE_DEBUG_PUB.Add(' cust_hold_hdr_fr1_glb_ret ');
9817 END IF;
9818
9819 OPEN cust_hold_hdr_fr1_glb_ret
9820 (p_usage_curr(i).usage_curr_code);
9821 FETCH cust_hold_hdr_fr1_glb_ret
9822 INTO l_hold_hdr_freight1;
9823
9824 IF cust_hold_hdr_fr1_glb_ret%NOTFOUND THEN
9825 l_hold_hdr_freight1 := 0 ;
9826 OE_DEBUG_PUB.Add
9827 ('No orders on hold with freight1 amount found ');
9828 END IF;
9829
9830 CLOSE cust_hold_hdr_fr1_glb_ret;
9831
9832 -- get header freight2 on hold
9833 IF G_debug_flag = 'Y' THEN
9834 OE_DEBUG_PUB.Add(' cust_hold_hdr_fr2_glb_ret ');
9835 END IF;
9836
9837 OPEN cust_hold_hdr_fr2_glb_ret
9838 (p_usage_curr(i).usage_curr_code);
9839 FETCH cust_hold_hdr_fr2_glb_ret
9840 INTO l_hold_hdr_freight2;
9841
9842 IF cust_hold_hdr_fr2_glb_ret%NOTFOUND THEN
9843 l_hold_hdr_freight2 := 0 ;
9844 OE_DEBUG_PUB.Add
9845 ('No orders on hold with freight2 amount found ');
9846 END IF;
9847
9848 CLOSE cust_hold_hdr_fr2_glb_ret;
9849 END IF;
9850
9851 END IF; ---end of checking if returns are included
9852
9853 END IF; -- freight = Y
9854
9855 ELSE -- uninvoiced orders not on hold - Non global
9856
9857 ----added for Returns
9858 IF l_include_returns_flag = 'N'
9859 THEN
9860 -----returns are not included
9861
9862 IF G_debug_flag = 'Y'
9863 THEN
9864 OE_DEBUG_PUB.Add(' cust_orders_not_on_hold ');
9865 END IF;
9866
9867 OPEN cust_orders_not_on_hold (p_usage_curr(i).usage_curr_code);
9868 FETCH cust_orders_not_on_hold INTO l_total_no_hold;
9869
9870 IF cust_orders_not_on_hold%NOTFOUND
9871 THEN
9872 l_total_no_hold := 0 ;
9873 IF G_debug_flag = 'Y'
9874 THEN
9875 OE_DEBUG_PUB.Add('No orders not on hold amount found ');
9876 END IF;
9877 END IF;
9878
9879 CLOSE cust_orders_not_on_hold;
9880
9881 -- If the l_need_exposure_details flag enabled, get the
9882 -- OM amount on hold
9883 IF l_need_exposure_details = 'Y' THEN
9884 IF G_debug_flag = 'Y' THEN
9885 OE_DEBUG_PUB.Add(' cust_orders_on_hold ');
9886 END IF;
9887
9888 OPEN cust_orders_on_hold (p_usage_curr(i).usage_curr_code);
9889 FETCH cust_orders_on_hold INTO l_total_on_hold;
9890
9891 IF cust_orders_on_hold%NOTFOUND THEN
9892 l_total_on_hold := 0 ;
9893 IF G_debug_flag = 'Y' THEN
9894 OE_DEBUG_PUB.Add('No customer orders on hold amount found ');
9895 END IF;
9896 END IF;
9897 CLOSE cust_orders_on_hold;
9898 END IF;
9899
9900 ELSE
9901 -----returns are not included
9902
9903 IF G_debug_flag = 'Y'
9904 THEN
9905 OE_DEBUG_PUB.Add(' cust_ord_not_on_hold_ret ');
9906 END IF;
9907
9908 OPEN cust_ord_not_on_hold_ret (p_usage_curr(i).usage_curr_code);
9909 FETCH cust_ord_not_on_hold_ret INTO l_total_no_hold;
9910
9911 IF cust_ord_not_on_hold_ret%NOTFOUND
9912 THEN
9913 l_total_no_hold := 0 ;
9914 IF G_debug_flag = 'Y'
9915 THEN
9916 OE_DEBUG_PUB.Add('No orders not on hold amount found ');
9917 END IF;
9918 END IF;
9919
9920 CLOSE cust_ord_not_on_hold_ret;
9921
9922 -- If the l_need_exposure_details flag enabled, get the
9923 -- OM amount on hold
9924 IF l_need_exposure_details = 'Y' THEN
9925 IF G_debug_flag = 'Y' THEN
9926 OE_DEBUG_PUB.Add(' cust_ord_on_hold_ret ');
9927 END IF;
9928
9929 OPEN cust_ord_on_hold_ret (p_usage_curr(i).usage_curr_code);
9930 FETCH cust_ord_on_hold_ret INTO l_total_on_hold;
9931
9932 IF cust_ord_on_hold_ret%NOTFOUND THEN
9933 l_total_on_hold := 0 ;
9934 IF G_debug_flag = 'Y' THEN
9935 OE_DEBUG_PUB.Add('No customer orders on hold amount found ');
9936 END IF;
9937 END IF;
9938 CLOSE cust_ord_on_hold_ret;
9939 END IF;
9940
9941 END IF; -----end of checking if returns are included
9942
9943 IF l_freight_charges_flag ='Y'
9944 THEN
9945 --
9946 -- Get header freight if the site is the same as the given site
9947 -- or the site belong to the same customer as the given site
9948 -- if the credit level is CUSTOMER.
9949 --
9950 ----added for Returns
9951 IF l_include_returns_flag='N'
9952 THEN
9953 -----returns are not included
9954
9955 IF G_debug_flag = 'Y'
9956 THEN
9957 OE_DEBUG_PUB.Add(' cust_no_hold_hdr_freight1 ');
9958 END IF;
9959
9960 OPEN cust_no_hold_hdr_freight1(p_usage_curr(i).usage_curr_code);
9961 FETCH cust_no_hold_hdr_freight1 INTO l_no_hold_hdr_freight1;
9962
9963 IF cust_no_hold_hdr_freight1%NOTFOUND
9964 THEN
9965 l_no_hold_hdr_freight1 := 0 ;
9966 IF G_debug_flag = 'Y'
9967 THEN
9968 OE_DEBUG_PUB.Add('No orders without hold freight1 amount found ');
9969 END IF;
9970 END IF;
9971
9972 CLOSE cust_no_hold_hdr_freight1;
9973
9974 IF G_debug_flag = 'Y'
9975 THEN
9976 OE_DEBUG_PUB.Add(' cust_no_hold_hdr_freight2 ');
9977 END IF;
9978
9979 OPEN cust_no_hold_hdr_freight2(p_usage_curr(i).usage_curr_code);
9980 FETCH cust_no_hold_hdr_freight2 INTO l_no_hold_hdr_freight2;
9981
9982 IF cust_no_hold_hdr_freight2%NOTFOUND
9983 THEN
9984 l_no_hold_hdr_freight2 := 0 ;
9985 IF G_debug_flag = 'Y'
9986 THEN
9987 OE_DEBUG_PUB.Add('No orders without hold freight2 amount found');
9988 END IF;
9989 END IF;
9990 CLOSE cust_no_hold_hdr_freight2;
9991
9992 -- If the l_need_exposure_details flag enabled, get the
9993 -- OM amount on hold
9994 IF l_need_exposure_details = 'Y' THEN
9995 --
9996 -- Get cust on hold header freight1
9997 --
9998 IF G_debug_flag = 'Y' THEN
9999 OE_DEBUG_PUB.Add(' cust_hold_hdr_freight1 ');
10000 END IF;
10001
10002 OPEN cust_hold_hdr_freight1(p_usage_curr(i).usage_curr_code);
10003 FETCH cust_hold_hdr_freight1 INTO l_hold_hdr_freight1;
10004
10005 IF cust_hold_hdr_freight1%NOTFOUND THEN
10006 l_hold_hdr_freight1 := 0 ;
10007 IF G_debug_flag = 'Y' THEN
10008 OE_DEBUG_PUB.Add('No orders with hold freight1 amount found ');
10009 END IF;
10010 END IF;
10011
10012 CLOSE cust_hold_hdr_freight1;
10013 --
10014 -- Get cust on hold header freight2
10015 --
10016 IF G_debug_flag = 'Y' THEN
10017 OE_DEBUG_PUB.Add(' cust_hold_hdr_freight2 ');
10018 END IF;
10019
10020 OPEN cust_hold_hdr_freight2(p_usage_curr(i).usage_curr_code);
10021 FETCH cust_hold_hdr_freight2 INTO l_hold_hdr_freight2;
10022
10023 IF cust_hold_hdr_freight2%NOTFOUND THEN
10024 l_hold_hdr_freight2 := 0 ;
10025 IF G_debug_flag = 'Y' THEN
10026 OE_DEBUG_PUB.Add('No orders with hold freight2 amount found ');
10027 END IF;
10028 END IF;
10029
10030 CLOSE cust_hold_hdr_freight2;
10031 END IF; -- need details
10032
10033 ELSE
10034 -----returns are included
10035
10036 IF G_debug_flag = 'Y'
10037 THEN
10038 OE_DEBUG_PUB.Add(' cust_no_hold_hdr_freight1_ret ');
10039 END IF;
10040
10041 OPEN cust_no_hold_hdr_freight1_ret(p_usage_curr(i).usage_curr_code);
10042 FETCH cust_no_hold_hdr_freight1_ret INTO l_no_hold_hdr_freight1;
10043
10044 IF cust_no_hold_hdr_freight1_ret%NOTFOUND
10045 THEN
10046 l_no_hold_hdr_freight1 := 0 ;
10047 IF G_debug_flag = 'Y'
10048 THEN
10049 OE_DEBUG_PUB.Add('No orders without hold freight1 amount found ');
10050 END IF;
10051 END IF;
10052
10053 CLOSE cust_no_hold_hdr_freight1_ret;
10054
10055 IF G_debug_flag = 'Y'
10056 THEN
10057 OE_DEBUG_PUB.Add('open cust_no_hold_hdr_freight2_ret ');
10058 END IF;
10059
10060 OPEN cust_no_hold_hdr_freight2_ret(p_usage_curr(i).usage_curr_code);
10061 FETCH cust_no_hold_hdr_freight2_ret INTO l_no_hold_hdr_freight2;
10062
10063 IF cust_no_hold_hdr_freight2_ret%NOTFOUND
10064 THEN
10065 l_no_hold_hdr_freight2 := 0 ;
10066 IF G_debug_flag = 'Y'
10067 THEN
10068 OE_DEBUG_PUB.Add('No orders without hold freight2 amount found');
10069 END IF;
10070 END IF;
10071
10072 CLOSE cust_no_hold_hdr_freight2_ret;
10073
10074
10075 -- If the l_need_exposure_details flag enabled, get the
10076 -- OM amount on hold
10077 IF l_need_exposure_details = 'Y' THEN
10078 --
10079 -- Get cust on hold header freight1 with returns
10080 --
10081 IF G_debug_flag = 'Y' THEN
10082 OE_DEBUG_PUB.Add(' cust_hold_hdr_freight1_ret ');
10083 END IF;
10084
10085 OPEN cust_hold_hdr_freight1_ret(p_usage_curr(i).usage_curr_code);
10086 FETCH cust_hold_hdr_freight1_ret INTO l_hold_hdr_freight1;
10087
10088 IF cust_hold_hdr_freight1_ret%NOTFOUND THEN
10089 l_hold_hdr_freight1 := 0 ;
10090 IF G_debug_flag = 'Y' THEN
10091 OE_DEBUG_PUB.Add('No orders with hold freight1 amount found ');
10092 END IF;
10093 END IF;
10094
10095 CLOSE cust_hold_hdr_freight1_ret;
10096 --
10097 -- Get cust on hold header freight2
10098 --
10099 IF G_debug_flag = 'Y' THEN
10100 OE_DEBUG_PUB.Add(' cust_hold_hdr_freight2_ret ');
10101 END IF;
10102
10103 OPEN cust_hold_hdr_freight2_ret(p_usage_curr(i).usage_curr_code);
10104 FETCH cust_hold_hdr_freight2_ret INTO l_hold_hdr_freight2;
10105
10106 IF cust_hold_hdr_freight2_ret%NOTFOUND THEN
10107 l_hold_hdr_freight2 := 0 ;
10108 IF G_debug_flag = 'Y' THEN
10109 OE_DEBUG_PUB.Add('No orders with hold freight2 amount found ');
10110 END IF;
10111 END IF;
10112
10113 CLOSE cust_hold_hdr_freight2_ret;
10114 END IF; -- need details
10115 END IF; ---end of checking if returns are included
10116
10117 END IF; -- include freight charges
10118 END IF; -- is global
10119 END IF; -- Orders on hold
10120
10121 END ;
10122 ELSE
10123 IF G_debug_flag = 'Y'
10124 THEN
10125 OE_DEBUG_PUB.Add(' No OM Exposure calculation ',1);
10126 END IF;
10127 END IF; -- Uninvoiced Orders
10128
10129
10130 ----------------------- End OM Exposure ------------------
10131
10132 l_cum_total_from_ar := l_cum_total_from_ar
10133 + NVL(l_total_from_ar,0)
10134 + NVL(l_total_from_br,0) ;
10135
10136 l_cum_payments_at_risk := l_cum_payments_at_risk
10137 + NVL(l_payments_at_risk,0)
10138 + NVL(l_payments_at_risk_br ,0);
10139
10140 l_cum_total_on_order := l_cum_total_on_order
10141 + NVL(l_total_on_order,0)
10142 + NVL(l_uninvoiced_hdr_freight1,0)
10143 + NVL(l_uninvoiced_hdr_freight2,0);
10144
10145 l_cum_total_no_hold := l_cum_total_no_hold
10146 + NVL(l_total_no_hold,0)
10147 + NVL(l_no_hold_hdr_freight1,0)
10148 + NVL(l_no_hold_hdr_freight2,0);
10149
10150 l_cum_total_on_hold := l_cum_total_on_hold
10151 + NVL(l_total_on_hold,0)
10152 + NVL(l_hold_hdr_freight1,0)
10153 + NVL(l_hold_hdr_freight2,0);
10154
10155 l_cum_total_commitment := l_cum_total_commitment
10156 + NVL(l_total_commitment,0) ;
10157
10158 IF l_orders_on_hold_flag = 'Y' THEN
10159 l_cum_uninv_order_total := l_cum_total_on_order;
10160 ELSE
10161 l_cum_uninv_order_total := l_cum_total_no_hold;
10162 END IF;
10163
10164 l_usage_total_exposure
10165 := NVL(l_cum_total_from_ar,0)
10166 + NVL(l_cum_payments_at_risk,0)
10167 + NVL(l_cum_uninv_order_total,0)
10168 - NVL(l_cum_total_commitment,0)
10169 + NVL(l_cum_external_exposure,0) ;
10170
10171 --
10172 -- Set the detail output variables only when detail is selected.
10173 --
10174 IF l_need_exposure_details = 'Y' THEN
10175 -- Add hold amount to order amount if hold flag is not set
10176 -- because the uninvoiced order amount is not available.
10177 IF l_orders_on_hold_flag = 'Y' THEN
10178 l_cum_order_amount := l_cum_uninv_order_total -
10179 NVL(l_cum_total_commitment,0);
10180 ELSE
10181 l_cum_order_amount := l_cum_uninv_order_total
10182 - NVL(l_cum_total_commitment,0)
10183 + l_cum_total_on_hold;
10184 END IF;
10185
10186 l_cum_order_hold_amount := l_cum_total_on_hold;
10187 l_cum_ar_amount := NVL(l_cum_total_from_ar,0) +
10188 NVL(l_cum_payments_at_risk,0) ;
10189 END IF;
10190
10191 IF G_debug_flag = 'Y'
10192 THEN
10193
10194 OE_DEBUG_PUB.ADD(' l_usage_total_exposure = '
10195 || l_usage_total_exposure );
10196 OE_DEBUG_PUB.ADD(' l_cum_total_from_ar = '
10197 || l_cum_total_from_ar );
10198 OE_DEBUG_PUB.ADD(' l_total_from_ar = '
10199 || l_total_from_ar);
10200 OE_DEBUG_PUB.ADD(' l_total_from_br = '
10201 || l_total_from_br);
10202 OE_DEBUG_PUB.ADD(' l_cum_payments_at_risk = '
10203 || l_cum_payments_at_risk );
10204 OE_DEBUG_PUB.ADD(' l_payments_at_risk = '
10205 || l_payments_at_risk);
10206 OE_DEBUG_PUB.ADD(' l_payments_at_risk_br = '
10207 || l_payments_at_risk_br);
10208 OE_DEBUG_PUB.ADD(' l_cum_total_on_order = '
10209 || l_cum_total_on_order );
10210 OE_DEBUG_PUB.ADD(' l_total_on_order = '
10211 || l_total_on_order );
10212 OE_DEBUG_PUB.ADD(' l_uninvoiced_hdr_freight1 = '
10213 || l_uninvoiced_hdr_freight1 );
10214 OE_DEBUG_PUB.ADD(' l_uninvoiced_hdr_freight2 = '
10215 || l_uninvoiced_hdr_freight2 );
10216 OE_DEBUG_PUB.ADD(' l_cum_total_commitment = '
10217 || l_cum_total_commitment );
10218 OE_DEBUG_PUB.ADD(' l_total_commitment = '
10219 || l_total_commitment );
10220 OE_DEBUG_PUB.ADD(' l_usage_total_exposure = '
10221 || l_usage_total_exposure );
10222
10223 -- no hold
10224 OE_DEBUG_PUB.ADD(' l_cum_total_no_hold = '
10225 || l_cum_total_no_hold );
10226 OE_DEBUG_PUB.ADD(' l_total_no_hold = '
10227 || l_total_no_hold );
10228 OE_DEBUG_PUB.ADD(' l_no_hold_hdr_freight1 = '
10229 || l_no_hold_hdr_freight1 );
10230 OE_DEBUG_PUB.ADD(' l_no_hold_hdr_freight2 = '
10231 || l_no_hold_hdr_freight2);
10232 -- external
10233 OE_DEBUG_PUB.ADD(' l_external_exposure = '
10234 || l_external_exposure );
10235 OE_DEBUG_PUB.ADD(' l_cum_external_exposure = '
10236 || l_cum_external_exposure );
10237 -- details
10238 OE_DEBUG_PUB.ADD(' l_cum_total_on_hold = '
10239 || l_cum_total_on_hold );
10240 OE_DEBUG_PUB.ADD(' l_total_on_hold = '
10241 || l_total_on_hold );
10242 OE_DEBUG_PUB.ADD(' l_hold_hdr_freight1 = '
10243 || l_hold_hdr_freight1 );
10244 OE_DEBUG_PUB.ADD(' l_hold_hdr_freight2 = '
10245 || l_hold_hdr_freight2);
10246 OE_DEBUG_PUB.ADD(' l_cum_order_amount = '
10247 || l_cum_order_amount );
10248 OE_DEBUG_PUB.ADD(' l_cum_order_hold_amount = '
10249 || l_cum_order_hold_amount );
10250 OE_DEBUG_PUB.ADD(' l_cum_ar_amount = '
10251 || l_cum_ar_amount);
10252
10253 OE_DEBUG_PUB.ADD(' Call currency conversion for exposure ' );
10254 OE_DEBUG_PUB.Add(' GL_CURRENCY = '||
10255 OE_Credit_Engine_GRP.GL_currency );
10256 END IF;
10257
10258
10259 IF OE_Credit_Engine_GRP.GL_currency IS NULL
10260 THEN
10261 OE_DEBUG_PUB.ADD(' Call GET_GL_currency ');
10262
10263 OE_Credit_Engine_GRP.GL_currency :=
10264 OE_CREDIT_CHECK_UTIL.GET_GL_currency ;
10265
10266 OE_DEBUG_PUB.ADD(' GL_CURRENCY after = '
10267 || OE_Credit_Engine_GRP.GL_currency );
10268
10269 END IF;
10270
10271 l_limit_total_exposure :=
10272 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
10273 ( p_amount => l_usage_total_exposure
10274 , p_transactional_currency => p_usage_curr(i).usage_curr_code
10275 , p_limit_currency => p_limit_curr_code
10276 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
10277 , p_conversion_date => SYSDATE
10278 , p_conversion_type => p_credit_check_rule_rec.conversion_type
10279 );
10280
10281 l_total_exposure := NVL(l_total_exposure,0)
10282 + NVL(l_limit_total_exposure,0) ;
10283
10284 IF p_need_exposure_details = 'Y'
10285 THEN
10286 IF G_debug_flag = 'Y'
10287 THEN
10288 oe_debug_pub.add( ' Into p_need_exposure_details ');
10289 END IF;
10290
10291 l_limit_cum_order_amount :=
10292 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
10293 ( p_amount => l_cum_order_amount
10294 , p_transactional_currency => p_usage_curr(i).usage_curr_code
10295 , p_limit_currency => p_limit_curr_code
10296 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
10297 , p_conversion_date => SYSDATE
10298 , p_conversion_type =>
10299 p_credit_check_rule_rec.conversion_type
10300 );
10301
10302
10303 l_limit_cum_order_hold_amount :=
10304 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
10305 ( p_amount =>l_cum_order_hold_amount
10306 , p_transactional_currency => p_usage_curr(i).usage_curr_code
10307 , p_limit_currency => p_limit_curr_code
10308 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
10309 , p_conversion_date => SYSDATE
10310 , p_conversion_type =>
10311 p_credit_check_rule_rec.conversion_type
10312 );
10313
10314 l_limit_cum_ar_amount :=
10315 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
10316 ( p_amount => l_cum_ar_amount
10317 , p_transactional_currency => p_usage_curr(i).usage_curr_code
10318 , p_limit_currency => p_limit_curr_code
10319 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
10320 , p_conversion_date => SYSDATE
10321 , p_conversion_type =>
10322 p_credit_check_rule_rec.conversion_type
10323 );
10324
10325 l_order_amount := l_order_amount +
10326 NVL(l_limit_cum_order_amount,0) ;
10327
10328 l_order_hold_amount := l_order_hold_amount +
10329 NVL(l_limit_cum_order_hold_amount,0) ;
10330
10331 l_ar_amount := l_ar_amount +
10332 NVL(l_limit_cum_ar_amount,0) ;
10333
10334 END IF;
10335
10336 IF G_debug_flag = 'Y'
10337 THEN
10338 OE_DEBUG_PUB.ADD(' l_limit_total_exposure = '
10339 || l_limit_total_exposure );
10340 OE_DEBUG_PUB.ADD(' l_total_exposure = '|| l_total_exposure );
10341 END IF;
10342
10343 l_limit_total_exposure := 0;
10344 l_usage_total_exposure := 0;
10345 l_cum_uninv_order_total := 0;
10346
10347 l_cum_total_on_order := 0;
10348 l_total_on_order := 0;
10349 l_uninvoiced_hdr_freight1 := 0;
10350 l_uninvoiced_hdr_freight2 := 0;
10351
10352 l_cum_total_commitment := 0;
10353 l_total_commitment := 0;
10354
10355 l_cum_payments_at_risk := 0;
10356 l_payments_at_risk := 0;
10357 l_payments_at_risk_br := 0;
10358
10359 l_cum_total_from_ar := 0;
10360 l_total_from_ar := 0;
10361 l_total_from_br := 0;
10362
10363 l_cum_external_exposure := 0;
10364 l_external_exposure := 0;
10365
10366 l_cum_total_no_hold := 0;
10367 l_total_no_hold := 0;
10368 l_no_hold_hdr_freight1 := 0;
10369 l_no_hold_hdr_freight2 := 0;
10370
10371 l_cum_total_on_hold := 0;
10372 l_total_on_hold := 0;
10373 l_hold_hdr_freight1 := 0;
10374 l_hold_hdr_freight2 := 0;
10375
10376 l_cum_order_amount := 0;
10377 l_cum_order_hold_amount := 0 ;
10378 l_cum_ar_amount := 0 ;
10379
10380 l_limit_cum_order_amount := 0;
10381 l_limit_cum_order_hold_amount := 0 ;
10382 l_limit_cum_ar_amount := 0 ;
10383
10384 IF G_debug_flag = 'Y'
10385 THEN
10386 OE_DEBUG_PUB.Add('--------------------------');
10387 OE_DEBUG_PUB.Add(' ');
10388 END IF;
10389
10390 END LOOP ; -- CURRENCY LOOP
10391
10392 ELSE -- SITE
10393 IF G_debug_flag = 'Y'
10394 THEN
10395 OE_DEBUG_PUB.Add('Get_order_Exposure SITE : ',1);
10396 END IF;
10397
10398 l_current_usage_cur := NULL ;
10399
10400 FOR i IN 1..p_usage_curr.count
10401 LOOP
10402 l_current_usage_cur := NULL ;
10403
10404 IF G_debug_flag = 'Y'
10405 THEN
10406 OE_DEBUG_PUB.ADD(' ');
10407 OE_DEBUG_PUB.ADD('############################### ');
10408 OE_DEBUG_PUB.ADD('USAGE CURR = '|| p_usage_curr(i).usage_curr_code );
10409 OE_DEBUG_PUB.ADD('############################### ');
10410 OE_DEBUG_PUB.ADD(' ');
10411 OE_DEBUG_PUB.ADD('l_current_usage_cur = '||
10412 l_current_usage_cur );
10413 OE_DEBUG_PUB.ADD(' ');
10414 OE_DEBUG_PUB.ADD('.');
10415 END IF;
10416
10417 l_current_usage_cur := p_usage_curr(i).usage_curr_code ;
10418
10419 -- get site external exposure
10420 IF l_incl_external_exposure_flag = 'Y'
10421 THEN
10422 OE_DEBUG_PUB.Add(' Get site external exposure balance ');
10423
10424 OPEN site_external_exposure_csr (p_usage_curr(i).usage_curr_code);
10425 FETCH site_external_exposure_csr INTO l_external_exposure;
10426 IF site_external_exposure_csr%NOTFOUND
10427 THEN
10428 OE_DEBUG_PUB.Add(' No external exposure balance found');
10429 l_external_exposure := 0;
10430 END IF;
10431 CLOSE site_external_exposure_csr;
10432 END IF;
10433 l_cum_external_exposure := l_cum_external_exposure +
10434 NVL(l_external_exposure, 0);
10435
10436 IF l_open_ar_balance_flag = 'Y'
10437 THEN
10438 IF G_debug_flag = 'Y'
10439 THEN
10440 OE_DEBUG_PUB.Add(' Get site_ar_balance ');
10441 END IF;
10442
10443 OPEN site_ar_balance (p_usage_curr(i).usage_curr_code);
10444 FETCH site_ar_balance INTO l_total_from_ar;
10445 IF site_ar_balance%NOTFOUND
10446 THEN
10447 l_total_from_ar := 0 ;
10448 OE_DEBUG_PUB.Add(' No site_ar_balance found ');
10449 END IF;
10450
10451 CLOSE site_ar_balance;
10452 END IF;
10453
10454 IF l_include_risk_flag = 'Y'
10455 THEN
10456 IF G_debug_flag = 'Y'
10457 THEN
10458 OE_DEBUG_PUB.Add(' Get site_pay_risk ');
10459 END IF;
10460 OPEN site_pay_risk (p_usage_curr(i).usage_curr_code);
10461 FETCH site_pay_risk INTO l_payments_at_risk;
10462 IF site_pay_risk%NOTFOUND
10463 THEN
10464 l_payments_at_risk := 0 ;
10465 OE_DEBUG_PUB.Add(' No site_pay_risk found ');
10466 END IF;
10467
10468 CLOSE site_pay_risk;
10469 END IF;
10470
10471 l_drawee_site_use_id := NULL ;
10472 ----------------------------- BR ------------------------
10473 IF l_open_ar_balance_flag = 'Y'
10474 THEN
10475 l_drawee_site_use_id :=
10476 oe_credit_check_util.get_drawee_site_use_id ( p_site_use_id);
10477 END IF;
10478
10479 IF G_debug_flag = 'Y'
10480 THEN
10481 OE_DEBUG_PUB.Add(' l_drawee_site_use_id ==> '|| l_drawee_site_use_id );
10482 END IF;
10483
10484 IF l_drawee_site_use_id is NOT NULL
10485 THEN
10486 IF l_open_ar_balance_flag = 'Y'
10487 THEN
10488 IF G_debug_flag = 'Y'
10489 THEN
10490 OE_DEBUG_PUB.Add(' Get site_br_balance ');
10491 END IF;
10492 OPEN site_br_balance (p_usage_curr(i).usage_curr_code);
10493 FETCH site_br_balance INTO l_total_from_br;
10494 IF site_br_balance%NOTFOUND
10495 THEN
10496 l_total_from_br := 0 ;
10497 OE_DEBUG_PUB.Add(' No site_br_balance found ');
10498 END IF;
10499
10500 CLOSE site_br_balance;
10501 END IF;
10502
10503 IF l_include_risk_flag = 'Y'
10504 THEN
10505 IF G_debug_flag = 'Y'
10506 THEN
10507 OE_DEBUG_PUB.Add(' Get site_br_pay_risk ');
10508 END IF;
10509 OPEN site_br_pay_risk (p_usage_curr(i).usage_curr_code);
10510 FETCH site_br_pay_risk INTO l_payments_at_risk_br;
10511 IF site_br_pay_risk%NOTFOUND
10512 THEN
10513 l_payments_at_risk_br := 0 ;
10514 OE_DEBUG_PUB.Add(' No site_pay_risk found ');
10515 END IF;
10516
10517 CLOSE site_br_pay_risk;
10518 END IF; --ar
10519 ELSE
10520 IF G_debug_flag = 'Y'
10521 THEN
10522 OE_DEBUG_PUB.Add(' No site BR required ');
10523 END IF;
10524 END IF;
10525 --vto2
10526 IF l_uninvoiced_orders_flag = 'Y'
10527 THEN
10528 BEGIN
10529 IF G_debug_flag = 'Y'
10530 THEN
10531 OE_DEBUG_PUB.Add(' Begin OM Exposure for site ');
10532 END IF;
10533
10534 IF OE_Commitment_PVT.Do_Commitment_Sequencing THEN
10535 IF G_debug_flag = 'Y'
10536 THEN
10537 OE_DEBUG_PUB.Add(' site_commitments ');
10538 END IF;
10539
10540 OPEN site_commitment_total (p_usage_curr(i).usage_curr_code);
10541 FETCH site_commitment_total INTO l_total_commitment ;
10542 IF site_commitment_total%NOTFOUND
10543 THEN
10544 l_total_commitment := 0 ;
10545 OE_DEBUG_PUB.Add('No site commitments found ');
10546 END IF;
10547
10548 CLOSE site_commitment_total ;
10549 END IF;
10550
10551 IF l_orders_on_hold_flag = 'Y'
10552 THEN
10553
10554 ----added for Returns
10555 IF l_include_returns_flag='N'
10556 THEN
10557 -----returns are not included
10558
10559 IF G_debug_flag = 'Y'
10560 THEN
10561 OE_DEBUG_PUB.Add(' Get site_uninvoiced_orders,site_uninvoiced_orders ');
10562 END IF;
10563
10564 OPEN site_uninvoiced_orders(p_usage_curr(i).usage_curr_code);
10565 FETCH site_uninvoiced_orders INTO l_total_on_order;
10566
10567 IF site_uninvoiced_orders%NOTFOUND
10568 THEN
10569 l_total_on_order := 0 ;
10570 OE_DEBUG_PUB.Add(' No site_uninvoiced_orders found ');
10571 END IF;
10572
10573 CLOSE site_uninvoiced_orders;
10574
10575 ELSE
10576 -----returns are included
10577
10578 IF G_debug_flag = 'Y'
10579 THEN
10580 OE_DEBUG_PUB.Add(' open site_uninvoiced_orders_ret ');
10581 END IF;
10582
10583 OPEN site_uninvoiced_orders_ret(p_usage_curr(i).usage_curr_code);
10584 FETCH site_uninvoiced_orders_ret INTO l_total_on_order;
10585
10586 IF site_uninvoiced_orders_ret%NOTFOUND
10587 THEN
10588 l_total_on_order := 0 ;
10589 OE_DEBUG_PUB.Add(' No site_uninvoiced_orders found ');
10590 END IF;
10591
10592 CLOSE site_uninvoiced_orders_ret;
10593
10594 END IF; ---end of checking if returns are included
10595
10596 IF l_freight_charges_flag ='Y'
10597 THEN
10598
10599 ----added for Returns
10600 IF l_include_returns_flag='N'
10601 THEN
10602 -----returns are not included
10603 IF G_debug_flag = 'Y'
10604 THEN
10605 OE_DEBUG_PUB.Add(' Get site_uninv_hdr_freight1 ');
10606 END IF;
10607
10608 OPEN site_uninv_hdr_freight1(p_usage_curr(i).usage_curr_code);
10609 FETCH site_uninv_hdr_freight1 INTO l_uninvoiced_hdr_freight1;
10610
10611 IF site_uninv_hdr_freight1%NOTFOUND
10612 THEN
10613 l_uninvoiced_hdr_freight1 := 0 ;
10614 OE_DEBUG_PUB.Add(' No site_uninv_hdr_freight1 found ');
10615 END IF;
10616
10617 CLOSE site_uninv_hdr_freight1;
10618
10619 IF G_debug_flag = 'Y'
10620 THEN
10621 OE_DEBUG_PUB.Add(' Get site_uninv_hdr_freight2 ');
10622 END IF;
10623
10624 OPEN site_uninv_hdr_freight2(p_usage_curr(i).usage_curr_code);
10625
10626 FETCH site_uninv_hdr_freight2 INTO l_uninvoiced_hdr_freight2;
10627
10628 IF site_uninv_hdr_freight2%NOTFOUND
10629 THEN
10630 l_uninvoiced_hdr_freight2 := 0 ;
10631 OE_DEBUG_PUB.Add(' No site_uninv_hdr_freight2 found ');
10632 END IF;
10633
10634 CLOSE site_uninv_hdr_freight2;
10635
10636 ELSE
10637 -----returns are included
10638 IF G_debug_flag = 'Y'
10639 THEN
10640 OE_DEBUG_PUB.Add(' Get site_uninv_hdr_freight1_ret ');
10641 END IF;
10642
10643 OPEN site_uninv_hdr_freight1_ret(p_usage_curr(i).usage_curr_code);
10644 FETCH site_uninv_hdr_freight1_ret INTO l_uninvoiced_hdr_freight1;
10645
10646 IF site_uninv_hdr_freight1_ret%NOTFOUND
10647 THEN
10648 l_uninvoiced_hdr_freight1 := 0 ;
10649 OE_DEBUG_PUB.Add(' No site_uninv_hdr_freight1 found ');
10650 END IF;
10651
10652 CLOSE site_uninv_hdr_freight1_ret;
10653
10654 IF G_debug_flag = 'Y'
10655 THEN
10656 OE_DEBUG_PUB.Add(' Get site_uninv_hdr_freight2_ret ');
10657 END IF;
10658
10659 OPEN site_uninv_hdr_freight2_ret(p_usage_curr(i).usage_curr_code);
10660
10661 FETCH site_uninv_hdr_freight2_ret INTO l_uninvoiced_hdr_freight2;
10662
10663 IF site_uninv_hdr_freight2_ret%NOTFOUND
10664 THEN
10665 l_uninvoiced_hdr_freight2 := 0 ;
10666 OE_DEBUG_PUB.Add(' No site_uninv_hdr_freight2_ret found ');
10667 END IF;
10668
10669 CLOSE site_uninv_hdr_freight2_ret;
10670
10671 END IF; ----end of checking if returns are included
10672
10673 END IF; -- freight = Y
10674 ELSE -- do not include orders on hold
10675
10676 ----added for Returns
10677 IF l_include_returns_flag='N'
10678 THEN
10679 -----returns are not included
10680
10681 IF G_debug_flag = 'Y'
10682 THEN
10683 OE_DEBUG_PUB.Add(' Get site_orders_not_on_hold ');
10684 END IF;
10685
10686 OPEN site_orders_not_on_hold (p_usage_curr(i).usage_curr_code);
10687
10688 FETCH site_orders_not_on_hold INTO l_total_no_hold;
10689
10690 IF site_orders_not_on_hold%NOTFOUND
10691 THEN
10692 l_total_no_hold := 0 ;
10693 OE_DEBUG_PUB.Add(' No site orders not on hold found ');
10694 END IF;
10695
10696 CLOSE site_orders_not_on_hold;
10697 -- Get orders on hold amount if need_exposure_details is enabled
10698 IF l_need_exposure_details = 'Y'
10699 THEN
10700 IF G_debug_flag = 'Y'
10701 THEN
10702 OE_DEBUG_PUB.Add(' Get site_orders_on_hold ');
10703 END IF;
10704
10705 OPEN site_orders_on_hold (p_usage_curr(i).usage_curr_code);
10706 FETCH site_orders_on_hold INTO l_total_on_hold;
10707
10708 IF site_orders_on_hold%NOTFOUND
10709 THEN
10710 l_total_on_hold := 0 ;
10711 OE_DEBUG_PUB.Add(' No site orders on hold found ');
10712 END IF;
10713
10714 CLOSE site_orders_on_hold;
10715 END IF;
10716
10717 ELSE
10718 -----returns are included
10719
10720 IF G_debug_flag = 'Y'
10721 THEN
10722 OE_DEBUG_PUB.Add(' Get site_orders_not_on_hold_ret ');
10723 END IF;
10724
10725 OPEN site_orders_not_on_hold_ret (p_usage_curr(i).usage_curr_code);
10726
10727 FETCH site_orders_not_on_hold_ret INTO l_total_no_hold;
10728
10729 IF site_orders_not_on_hold_ret%NOTFOUND
10730 THEN
10731 l_total_no_hold := 0 ;
10732 OE_DEBUG_PUB.Add(' No site orders not on hold found ');
10733 END IF;
10734
10735 CLOSE site_orders_not_on_hold_ret;
10736
10737 -- Get orders on hold amount if need_exposure_details is enabled
10738 IF l_need_exposure_details = 'Y'
10739 THEN
10740 IF G_debug_flag = 'Y'
10741 THEN
10742 OE_DEBUG_PUB.Add(' Get site_orders_on_hold_ret ');
10743 END IF;
10744
10745 OPEN site_orders_on_hold_ret(p_usage_curr(i).usage_curr_code);
10746 FETCH site_orders_on_hold_ret INTO l_total_on_hold;
10747
10748 IF site_orders_on_hold_ret%NOTFOUND
10749 THEN
10750 l_total_on_hold := 0 ;
10751 OE_DEBUG_PUB.Add(' No site orders on hold found ');
10752 END IF;
10753
10754 CLOSE site_orders_on_hold_ret;
10755 END IF;
10756 END IF; ----end of checking of returns are included
10757
10758 IF l_freight_charges_flag ='Y'
10759 THEN
10760 --
10761 -- Get header freight if the site is the same as the given site
10762 -- or the site belong to the same customer as the given site
10763 -- if the credit level is CUSTOMER.
10764 --
10765
10766 ----added for Returns
10767 IF l_include_returns_flag='N'
10768 THEN
10769 -----returns are not included
10770 IF G_debug_flag = 'Y'
10771 THEN
10772 OE_DEBUG_PUB.Add(' Get site_no_hold_hdr_freight1 ');
10773 END IF;
10774
10775 OPEN site_no_hold_hdr_freight1(p_usage_curr(i).usage_curr_code);
10776 FETCH site_no_hold_hdr_freight1 INTO l_no_hold_hdr_freight1;
10777
10778 IF site_no_hold_hdr_freight1%NOTFOUND
10779 THEN
10780 l_no_hold_hdr_freight1 := 0 ;
10781 OE_DEBUG_PUB.Add(' No site_no_hold_hdr_freight1 found ');
10782 END IF;
10783
10784 CLOSE site_no_hold_hdr_freight1;
10785
10786 IF G_debug_flag = 'Y'
10787 THEN
10788 OE_DEBUG_PUB.Add(' Get site_no_hold_hdr_freight2 ');
10789 END IF;
10790
10791 OPEN site_no_hold_hdr_freight2(p_usage_curr(i).usage_curr_code);
10792
10793 FETCH site_no_hold_hdr_freight2 INTO l_no_hold_hdr_freight2;
10794
10795 IF site_no_hold_hdr_freight2%NOTFOUND
10796 THEN
10797 l_no_hold_hdr_freight2 := 0 ;
10798 OE_DEBUG_PUB.Add(' No site_no_hold_hdr_freight2 found ');
10799 END IF;
10800
10801 CLOSE site_no_hold_hdr_freight2;
10802
10803 -- Get orders on hold amount if need_exposure_details is enabled
10804 IF l_need_exposure_details = 'Y'
10805 THEN
10806 IF G_debug_flag = 'Y'
10807 THEN
10808 OE_DEBUG_PUB.Add(' Get site_hold_hdr_freight1 ');
10809 END IF;
10810
10811 OPEN site_hold_hdr_freight1(p_usage_curr(i).usage_curr_code);
10812 FETCH site_hold_hdr_freight1 INTO l_hold_hdr_freight1;
10813
10814 IF site_hold_hdr_freight1%NOTFOUND
10815 THEN
10816 l_hold_hdr_freight1 := 0 ;
10817 OE_DEBUG_PUB.Add(' No site_hold_hdr_freight1 found ');
10818 END IF;
10819
10820 CLOSE site_hold_hdr_freight1;
10821
10822 IF G_debug_flag = 'Y'
10823 THEN
10824 OE_DEBUG_PUB.Add(' Get site_hold_hdr_freight2 ');
10825 END IF;
10826
10827 OPEN site_hold_hdr_freight2(p_usage_curr(i).usage_curr_code);
10828 FETCH site_hold_hdr_freight2 INTO l_hold_hdr_freight2;
10829
10830 IF site_hold_hdr_freight2%NOTFOUND
10831 THEN
10832 l_hold_hdr_freight2 := 0 ;
10833 OE_DEBUG_PUB.Add(' No site_hold_hdr_freight2 found ');
10834 END IF;
10835 CLOSE site_hold_hdr_freight2;
10836 END IF; -- details freight on hold
10837 ELSE
10838 -----returns are included
10839 IF G_debug_flag = 'Y'
10840 THEN
10841 OE_DEBUG_PUB.Add(' Get site_no_hold_hdr_freight1_ret ');
10842 END IF;
10843
10844 OPEN site_no_hold_hdr_freight1_ret(p_usage_curr(i).usage_curr_code);
10845 FETCH site_no_hold_hdr_freight1_ret INTO l_no_hold_hdr_freight1;
10846
10847 IF site_no_hold_hdr_freight1_ret%NOTFOUND
10848 THEN
10849 l_no_hold_hdr_freight1 := 0 ;
10850 OE_DEBUG_PUB.Add(' No site_no_hold_hdr_freight1 found ');
10851 END IF;
10852
10853 CLOSE site_no_hold_hdr_freight1_ret;
10854
10855 IF G_debug_flag = 'Y'
10856 THEN
10857 OE_DEBUG_PUB.Add(' Get site_no_hold_hdr_freight2_ret ');
10858 END IF;
10859
10860 OPEN site_no_hold_hdr_freight2_ret(p_usage_curr(i).usage_curr_code);
10861
10862 FETCH site_no_hold_hdr_freight2_ret INTO l_no_hold_hdr_freight2;
10863
10864 IF site_no_hold_hdr_freight2_ret%NOTFOUND
10865 THEN
10866 l_no_hold_hdr_freight2 := 0 ;
10867 OE_DEBUG_PUB.Add(' No site_no_hold_hdr_freight2_ret found ');
10868 END IF;
10869
10870 CLOSE site_no_hold_hdr_freight2_ret;
10871
10872 -- Get orders on hold amount if need_exposure_details is enabled
10873 IF l_need_exposure_details = 'Y'
10874 THEN
10875 IF G_debug_flag = 'Y'
10876 THEN
10877 OE_DEBUG_PUB.Add(' Get site_hold_hdr_freight1_ret ');
10878 END IF;
10879
10880 OPEN site_hold_hdr_freight1_ret(p_usage_curr(i).usage_curr_code);
10881 FETCH site_hold_hdr_freight1_ret INTO l_hold_hdr_freight1;
10882
10883 IF site_hold_hdr_freight1_ret%NOTFOUND
10884 THEN
10885 l_hold_hdr_freight1 := 0 ;
10886 OE_DEBUG_PUB.Add(' No site_hold_hdr_freight1_ret found ');
10887 END IF;
10888
10889 CLOSE site_hold_hdr_freight1_ret;
10890
10891 IF G_debug_flag = 'Y'
10892 THEN
10893 OE_DEBUG_PUB.Add(' Get site_hold_hdr_freight2_ret ');
10894 END IF;
10895
10896 OPEN site_hold_hdr_freight2_ret(p_usage_curr(i).usage_curr_code);
10897 FETCH site_hold_hdr_freight2_ret INTO l_hold_hdr_freight2;
10898
10899 IF site_hold_hdr_freight2_ret%NOTFOUND
10900 THEN
10901 l_hold_hdr_freight2 := 0 ;
10902 OE_DEBUG_PUB.Add(' No site_hold_hdr_freight2_ret found ');
10903 END IF;
10904 CLOSE site_hold_hdr_freight2_ret;
10905 END IF; -- details freight on hold
10906 END IF; -----end of checking if returns are included
10907 END IF;
10908 END IF; -- Orders on hold
10909 END;
10910 ELSE
10911 IF G_debug_flag = 'Y'
10912 THEN
10913 OE_DEBUG_PUB.Add(' No OM Exposure calculation for site ',1);
10914 END IF;
10915 END IF;
10916
10917 l_cum_total_from_ar := l_cum_total_from_ar + NVL(l_total_from_ar,0) +
10918 NVL(l_total_from_br,0) ;
10919
10920 l_cum_payments_at_risk := l_cum_payments_at_risk
10921 + NVL(l_payments_at_risk,0)
10922 + NVL(l_payments_at_risk_br ,0 );
10923
10924 l_cum_total_on_order := l_cum_total_on_order + NVL(l_total_on_order,0)
10925 + NVL(l_uninvoiced_hdr_freight1,0)
10926 + NVL(l_uninvoiced_hdr_freight2,0);
10927 l_cum_total_on_hold := l_cum_total_on_hold + NVL(l_total_on_hold,0)
10928 + NVL(l_hold_hdr_freight1,0)
10929 + NVL(l_hold_hdr_freight2,0);
10930
10931 l_cum_total_no_hold := l_cum_total_no_hold + NVL(l_total_no_hold,0)
10932 + NVL(l_no_hold_hdr_freight1,0)
10933 + NVL(l_no_hold_hdr_freight2,0);
10934
10935 IF l_orders_on_hold_flag = 'Y' THEN
10936 l_cum_uninv_order_total := l_cum_total_on_order;
10937 ELSE
10938 l_cum_uninv_order_total := l_cum_total_no_hold;
10939 END IF;
10940
10941 l_cum_total_commitment := l_cum_total_commitment +
10942 NVL(l_total_commitment,0);
10943
10944 l_usage_total_exposure := NVL(l_cum_total_from_ar,0)
10945 + NVL(l_cum_payments_at_risk,0)
10946 + NVL(l_cum_uninv_order_total,0)
10947 - NVL(l_cum_total_commitment,0)
10948 + NVL(l_cum_external_exposure,0);
10949
10950 --
10951 -- Set the detail output variables only when detail is selected.
10952 --
10953 IF l_need_exposure_details = 'Y'
10954 THEN
10955 -- Add hold amount to order amount if hold flag is not set
10956 -- because the uninvoiced order amount is not available.
10957 IF l_orders_on_hold_flag = 'Y'
10958 THEN
10959 l_cum_order_amount := l_cum_uninv_order_total -
10960 NVL(l_cum_total_commitment,0);
10961 ELSE
10962 l_cum_order_amount := l_cum_uninv_order_total
10963 - NVL(l_cum_total_commitment,0)
10964 + l_cum_total_on_hold;
10965 END IF;
10966 l_cum_order_hold_amount := l_cum_total_on_hold;
10967 l_cum_ar_amount := NVL(l_cum_total_from_ar,0) +
10968 NVL(l_cum_payments_at_risk,0) ;
10969 END IF;
10970
10971 IF G_debug_flag = 'Y'
10972 THEN
10973
10974 OE_DEBUG_PUB.ADD(' l_usage_total_exposure = '
10975 || l_usage_total_exposure );
10976 OE_DEBUG_PUB.ADD(' l_cum_total_from_ar = '
10977 || l_cum_total_from_ar );
10978 OE_DEBUG_PUB.ADD(' l_total_from_ar = '
10979 || l_total_from_ar);
10980 OE_DEBUG_PUB.ADD(' l_total_from_br = '
10981 || l_total_from_br);
10982 OE_DEBUG_PUB.ADD(' l_cum_payments_at_risk = '
10983 || l_cum_payments_at_risk );
10984 OE_DEBUG_PUB.ADD(' l_payments_at_risk = '
10985 || l_payments_at_risk);
10986 OE_DEBUG_PUB.ADD(' l_payments_at_risk_br = '
10987 || l_payments_at_risk_br);
10988 OE_DEBUG_PUB.ADD(' l_cum_total_on_order = '
10989 || l_cum_total_on_order );
10990 OE_DEBUG_PUB.ADD(' l_total_on_order = '
10991 || l_total_on_order );
10992 OE_DEBUG_PUB.ADD(' l_uninvoiced_hdr_freight1 = '
10993 || l_uninvoiced_hdr_freight1 );
10994 OE_DEBUG_PUB.ADD(' l_uninvoiced_hdr_freight2 = '
10995 || l_uninvoiced_hdr_freight2 );
10996 OE_DEBUG_PUB.ADD(' l_cum_total_commitment = '
10997 || l_cum_total_commitment );
10998 OE_DEBUG_PUB.ADD(' l_total_commitment = '
10999 || l_total_commitment );
11000 OE_DEBUG_PUB.ADD(' l_usage_total_exposure = '
11001 || l_usage_total_exposure );
11002
11003 -- details
11004 OE_DEBUG_PUB.ADD(' l_cum_total_on_hold = '
11005 || l_cum_total_on_hold );
11006 OE_DEBUG_PUB.ADD(' l_total_on_hold = '
11007 || l_total_on_hold );
11008 OE_DEBUG_PUB.ADD(' l_hold_hdr_freight1 = '
11009 || l_hold_hdr_freight1 );
11010 OE_DEBUG_PUB.ADD(' l_hold_hdr_freight2 = '
11011 || l_hold_hdr_freight2);
11012 OE_DEBUG_PUB.ADD(' l_cum_order_amount = '
11013 || l_cum_order_amount );
11014 OE_DEBUG_PUB.ADD(' l_cum_order_hold_amount = '
11015 || l_cum_order_hold_amount );
11016 OE_DEBUG_PUB.ADD(' l_cum_ar_amount = '
11017 || l_cum_ar_amount);
11018
11019 -- external
11020 OE_DEBUG_PUB.ADD(' l_external_exposure = '
11021 || l_external_exposure );
11022 OE_DEBUG_PUB.ADD(' l_cum_external_exposure = '
11023 || l_cum_external_exposure );
11024
11025 -- no holds
11026 OE_DEBUG_PUB.ADD(' l_cum_total_no_hold = '
11027 || l_cum_total_no_hold );
11028 OE_DEBUG_PUB.ADD(' l_total_no_hold = '
11029 || l_total_no_hold );
11030 OE_DEBUG_PUB.ADD(' l_no_hold_hdr_freight1 = '
11031 || l_no_hold_hdr_freight1 );
11032 OE_DEBUG_PUB.ADD(' l_no_hold_hdr_freight2 = '
11033 || l_no_hold_hdr_freight2);
11034
11035 OE_DEBUG_PUB.ADD(' Call currency conversion for exposure ' );
11036
11037 OE_DEBUG_PUB.Add(' GL_CURRENCY = '||
11038 OE_Credit_Engine_GRP.GL_currency );
11039 END IF;
11040
11041 l_limit_total_exposure :=
11042 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
11043 ( p_amount => l_usage_total_exposure
11044 , p_transactional_currency => p_usage_curr(i).usage_curr_code
11045 , p_limit_currency => p_limit_curr_code
11046 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
11047 , p_conversion_date => SYSDATE
11048 , p_conversion_type => p_credit_check_rule_rec.conversion_type
11049 );
11050
11051
11052 l_total_exposure := l_total_exposure + NVL(l_limit_total_exposure,0) ;
11053
11054 IF l_need_exposure_details = 'Y' THEN
11055 IF G_debug_flag = 'Y' THEN
11056 oe_debug_pub.add( ' Into p_need_exposure_details ');
11057 END IF;
11058
11059 l_limit_cum_order_amount :=
11060 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
11061 ( p_amount => l_cum_order_amount
11062 , p_transactional_currency => p_usage_curr(i).usage_curr_code
11063 , p_limit_currency => p_limit_curr_code
11064 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
11065 , p_conversion_date => SYSDATE
11066 , p_conversion_type =>
11067 p_credit_check_rule_rec.conversion_type
11068 );
11069
11070 l_limit_cum_order_hold_amount :=
11071 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
11072 ( p_amount => l_cum_order_hold_amount
11073 , p_transactional_currency => p_usage_curr(i).usage_curr_code
11074 , p_limit_currency => p_limit_curr_code
11075 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
11076 , p_conversion_date => SYSDATE
11077 , p_conversion_type =>
11078 p_credit_check_rule_rec.conversion_type
11079 );
11080 l_limit_cum_ar_amount :=
11081 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
11082 ( p_amount => l_cum_ar_amount
11083 , p_transactional_currency => p_usage_curr(i).usage_curr_code
11084 , p_limit_currency => p_limit_curr_code
11085 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
11086 , p_conversion_date => SYSDATE
11087 , p_conversion_type =>
11088 p_credit_check_rule_rec.conversion_type
11089 );
11090
11091 l_order_amount := l_order_amount +
11092 NVL(l_limit_cum_order_amount,0) ;
11093
11094 l_order_hold_amount := l_order_hold_amount +
11095 NVL(l_limit_cum_order_hold_amount,0) ;
11096
11097 l_ar_amount := l_ar_amount +
11098 NVL(l_limit_cum_ar_amount,0) ;
11099
11100 END IF; -- details
11101
11102 IF G_debug_flag = 'Y'
11103 THEN
11104 OE_DEBUG_PUB.ADD(' l_limit_total_exposure = '
11105 || l_limit_total_exposure );
11106 OE_DEBUG_PUB.ADD(' l_total_exposure = '|| l_total_exposure );
11107 END IF;
11108
11109
11110 l_limit_total_exposure := 0 ;
11111 l_usage_total_exposure := 0 ;
11112 l_cum_total_on_order := 0;
11113 l_cum_total_commitment := 0;
11114 l_total_on_order := 0;
11115 l_uninvoiced_hdr_freight1 := 0;
11116 l_uninvoiced_hdr_freight2 := 0;
11117 l_total_commitment := 0;
11118
11119 l_cum_payments_at_risk := 0;
11120 l_payments_at_risk := 0;
11121 l_payments_at_risk_br := 0;
11122
11123 l_cum_total_from_ar := 0;
11124 l_total_from_ar := 0;
11125 l_total_from_br := 0;
11126
11127 l_external_exposure := 0;
11128 l_cum_external_exposure := 0;
11129
11130 l_hold_hdr_freight1 := 0;
11131 l_hold_hdr_freight2 := 0;
11132 l_total_on_hold := 0;
11133 l_cum_total_on_hold := 0;
11134
11135 l_no_hold_hdr_freight1 := 0;
11136 l_no_hold_hdr_freight2 := 0;
11137 l_total_no_hold := 0;
11138 l_cum_total_no_hold := 0;
11139
11140 l_cum_order_amount := 0;
11141 l_cum_order_hold_amount := 0 ;
11142 l_cum_ar_amount := 0 ;
11143
11144 l_limit_cum_order_amount := 0;
11145 l_limit_cum_order_hold_amount := 0 ;
11146 l_limit_cum_ar_amount := 0 ;
11147
11148 IF G_debug_flag = 'Y'
11149 THEN
11150 OE_DEBUG_PUB.Add(' ');
11151 OE_DEBUG_PUB.Add('=====================================');
11152 OE_DEBUG_PUB.Add(' ');
11153 END IF;
11154
11155 END LOOP; -- currency loop
11156
11157 OE_DEBUG_PUB.ADD('** Out NOCOPY of usage currency loop ' );
11158
11159 END IF;
11160
11161 l_current_usage_cur := NULL;
11162
11163 -- Header ID can be passed as NULL to get the
11164 -- customer exposure
11165
11166 IF p_header_id is NOT NULL
11167 THEN
11168 BEGIN
11169 -- Check the global. Get the current order value fromt the global
11170 -- this global would be set when calculating the transaction amount.
11171
11172 l_limit_current_order :=
11173 NVL(OE_CREDIT_CHECK_UTIL.g_current_order_value,0);
11174
11175 IF G_debug_flag = 'Y'
11176 THEN
11177 OE_DEBUG_PUB.Add(' Current order value is available already = '
11178 || OE_CREDIT_CHECK_UTIL.g_current_order_value );
11179 OE_DEBUG_PUB.Add(' l_limit_current_order = '||
11180 l_limit_current_order );
11181 END IF;
11182 END ; -- p_header_id
11183
11184 ELSE
11185 l_limit_current_order := 0 ;
11186
11187 OE_DEBUG_PUB.Add(' P_header_id is NULL, No current order check ',1);
11188
11189 END IF ; -- p_header_id is NULL
11190
11191 IF G_debug_flag = 'Y'
11192 THEN
11193 OE_DEBUG_PUB.Add(' l_limit_current_order = '|| l_limit_current_order );
11194 OE_DEBUG_PUB.Add(' l_order_amount = '|| l_order_amount);
11195 OE_DEBUG_PUB.Add(' l_order_hold_amount = '|| l_order_hold_amount);
11196 OE_DEBUG_PUB.Add(' l_ar_amount = '|| l_ar_amount);
11197 END IF;
11198
11199 x_total_exposure := NVL(l_total_exposure,0) + NVL(l_limit_current_order,0) ;
11200
11201 IF l_need_exposure_details = 'Y'
11202 THEN
11203 x_order_amount := l_order_amount;
11204 x_order_hold_amount := l_order_hold_amount;
11205 x_ar_amount := l_ar_amount;
11206 END IF;
11207
11208 OE_CREDIT_CHECK_UTIL.g_current_order_value := NULL ;
11209
11210 --bug# 2714553
11211 OE_CREDIT_INTERFACE_UTIL.Get_exposure_amount
11212 ( p_header_id => p_header_id
11213 , p_customer_id => p_customer_id
11214 , p_site_use_id => p_site_use_id
11215 , p_credit_check_rule_rec => p_credit_check_rule_rec
11216 , p_system_parameter_rec => p_system_parameter_rec
11217 , p_credit_level => p_credit_level
11218 , p_limit_curr_code => p_limit_curr_code
11219 , p_usage_curr => p_usage_curr
11220 , p_global_exposure_flag => p_global_exposure_flag
11221 , x_exposure_amount => l_exposure_amount
11222 , x_conversion_status => x_conversion_status
11223 , x_return_status => x_return_status
11224 );
11225
11226 IF G_debug_flag = 'Y'
11227 THEN
11228 OE_DEBUG_PUB.Add('after get_exposure_amount ');
11229 OE_DEBUG_PUB.Add(' x_return_status = '|| x_return_status );
11230 OE_DEBUG_PUB.Add(' l_exposure_amount = '|| l_exposure_amount );
11231 OE_DEBUG_PUB.Add(' err cur tbl count = '|| x_conversion_status.COUNT );
11232 OE_DEBUG_PUB.Add(' l_limit_current_order = '|| l_limit_current_order );
11233 OE_DEBUG_PUB.Add(' l_total_exposure = '|| l_total_exposure );
11234 OE_DEBUG_PUB.Add(' x_total_exposure = '|| x_total_exposure );
11235 END IF;
11236
11237 x_total_exposure := NVL(x_total_exposure,0) + NVL(l_exposure_amount,0) ;
11238
11239 IF x_conversion_status.COUNT <> 0
11240 THEN
11241 FOR f IN 1..x_conversion_status.COUNT
11242 LOOP
11243 IF G_debug_flag = 'Y'
11244 THEN
11245 OE_DEBUG_PUB.ADD('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
11246 OE_DEBUG_PUB.ADD('!!!!! Exchange rate between '||x_conversion_status(f).usage_curr_code
11247 ||' and credit limit currency '
11248 ||p_limit_curr_code
11249 ||' is missing for conversion type '
11250 || NVL(p_credit_check_rule_rec.user_conversion_type,'Corporate'),1);
11251 OE_DEBUG_PUB.ADD('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
11252 END IF;
11253 END LOOP;
11254 ELSIF x_return_status = FND_API.G_RET_STS_ERROR
11255 THEN
11256 RAISE FND_API.G_EXC_ERROR;
11257 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR
11258 THEN
11259 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11260 END IF;
11261 --bug# 2714553
11262
11263 IF G_debug_flag = 'Y'
11264 THEN
11265 OE_DEBUG_PUB.Add(' ');
11266 OE_DEBUG_PUB.Add('XX*****-------------##########-------------------XX' );
11267 OE_DEBUG_PUB.Add(' ');
11268 OE_DEBUG_PUB.Add('Final Total Exposure amount = '|| x_total_exposure,1);
11269 OE_DEBUG_PUB.Add(' ');
11270 OE_DEBUG_PUB.Add('XX-------------- ##########------------------------XX' );
11271 OE_DEBUG_PUB.Add(' ');
11272 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY Get_order_exposure',1);
11273 END IF;
11274
11275 EXCEPTION
11276 WHEN GL_CURRENCY_API.NO_RATE THEN
11277 OE_DEBUG_PUB.ADD('EXCEPTION: GL_CURRENCY_API.NO_RATE in get_order_exp',1);
11278 OE_DEBUG_PUB.ADD('l_current_usage_cur = '||
11279 l_current_usage_cur );
11280 x_conversion_status(1).usage_curr_code := l_current_usage_cur ;
11281
11282 fnd_message.set_name('ONT', 'OE_CONVERSION_ERROR');
11283 OE_DEBUG_PUB.ADD('Exception table added ');
11284 IF cust_external_exposure_csr%ISOPEN THEN
11285 CLOSE cust_external_exposure_csr;
11286 END IF;
11287 IF site_external_exposure_csr%ISOPEN THEN
11288 CLOSE site_external_exposure_csr;
11289 END IF;
11290 WHEN OTHERS THEN
11291 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11292 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
11293 OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, '
11294 Get_order_exposure');
11295 END IF;
11296 IF cust_external_exposure_csr%ISOPEN THEN
11297 CLOSE cust_external_exposure_csr;
11298 END IF;
11299 IF site_external_exposure_csr%ISOPEN THEN
11300 CLOSE site_external_exposure_csr;
11301 END IF;
11302 RAISE;
11303
11304 END Get_order_exposure ;
11305
11306
11307 --========================================================================
11308 -- PROCEDURE : Currency_List
11309 -- Comments : This procedure is used by the credit snapshot report to derive
11310 -- a comma delimited string of currencies defined in credit usage
11311 -- Parameters: c_entity_type IN 'CUSTOMER' or 'SITE'
11312 -- c_entity_id IN Customer_Id or Site_Id
11313 -- c_trx_curr_code IN Transaction Currency
11314 -- l_limit_curr_code OUT NOCOPY Currency Limit used for credit checking
11315 -- Curr_list OUT NOCOPY Comma delimited string of currencies
11316 -- covered by limit currency code
11317 --========================================================================
11318 Procedure currency_list (
11319 c_entity_type IN VARCHAR2
11320 , c_entity_id IN NUMBER
11321 , c_trx_curr_code IN VARCHAR2
11322 , l_limit_curr_code OUT NOCOPY VARCHAR2
11323 , l_default_limit_flag OUT NOCOPY VARCHAR2
11324 , Curr_list OUT NOCOPY VARCHAR2) IS
11325
11326 i NUMBER;
11327 l_return_status NUMBER;
11328 l_CREDIT_CHECK_FLAG VARCHAR2(1);
11329 l_OVERALL_CREDIT_LIMIT NUMBER;
11330 l_TRX_CREDIT_LIMIT NUMBER;
11331 l_include_all_flag VARCHAR2(1);
11332 l_curr_tbl OE_CREDIT_CHECK_UTIL.curr_tbl_type;
11333 l_global_exposure_flag VARCHAR2(1);
11334 l_credit_limit_party_id NUMBER ;
11335 l_use_credit_hierarchy varchar2(1);
11336
11337
11338 Begin
11339
11340 l_limit_curr_code := NULL ;
11341
11342 for i in 1 .. l_curr_tbl.COUNT
11343 LOOP
11344 if i = 1 then null;
11345 else
11346 curr_list := concat(curr_list,',');
11347 end if;
11348 curr_list := concat(curr_list, l_curr_tbl(i).usage_curr_code);
11349 END LOOP;
11350
11351 END Currency_List;
11352
11353
11354
11355 ---========================================================================
11356 -- PROCEDURE : CONVERT_CURRENCY_AMOUNT
11357 -- Comments :
11358 -- 21-Jun-2001 - rajkrish updated with standard dbg messages
11359 ---========================================================================
11360
11361 FUNCTION CONVERT_CURRENCY_AMOUNT
11362 ( p_amount IN NUMBER := 0
11363 , p_transactional_currency IN VARCHAR2
11364 , p_limit_currency IN VARCHAR2
11365 , p_functional_currency IN VARCHAR2
11366 , p_conversion_date IN DATE := SYSDATE
11367 , p_conversion_type IN VARCHAR2 := 'Corporate'
11368 ) RETURN NUMBER
11369 IS
11370
11371 l_converted_amount NUMBER;
11372 l_denominator NUMBER;
11373 l_numerator NUMBER;
11374 l_rate NUMBER;
11375
11376 BEGIN
11377 BEGIN
11378 IF G_debug_flag = 'Y'
11379 THEN
11380 OE_DEBUG_PUB.ADD('OEXUCRCB: IN CONVERT_CURRENCY_AMOUNT ');
11381 OE_DEBUG_PUB.ADD(' ');
11382 OE_DEBUG_PUB.ADD('------------------------------------');
11383 OE_DEBUG_PUB.ADD('p_amount = '|| p_amount );
11384 OE_DEBUG_PUB.ADD('p_transactional_currency = '
11385 || p_transactional_currency );
11386 OE_DEBUG_PUB.ADD('p_limit_currency = '|| p_limit_currency );
11387 OE_DEBUG_PUB.ADD('p_functional_currency = '|| p_functional_currency );
11388 OE_DEBUG_PUB.ADD('p_conversion_date = '|| p_conversion_date );
11389 OE_DEBUG_PUB.ADD('p_conversion_type = '|| p_conversion_type );
11390 OE_DEBUG_PUB.ADD(' ');
11391 OE_DEBUG_PUB.ADD('------------------------------------');
11392 END IF;
11393
11394 -- The conversion amount can be les than or greater than
11395 -- 0. For maounts equal to 0, there is not need for
11396 -- conversion to proceed and call GL API's
11397
11398 IF NVL(p_amount,0) <> 0
11399 THEN
11400 gl_currency_api.convert_closest_amount
11401 ( x_from_currency => p_transactional_currency
11402 , x_to_currency => p_limit_currency
11403 , x_conversion_date => p_conversion_date
11404 , x_conversion_type => p_conversion_type
11405 , x_amount => p_amount
11406 , x_user_rate => NULL
11407 , x_max_roll_days => -1
11408 , x_converted_amount => l_converted_amount
11409 , x_denominator => l_denominator
11410 , x_numerator => l_numerator
11411 , x_rate => l_rate
11412 );
11413
11414 ELSE
11415 l_converted_amount := 0 ;
11416 IF G_debug_flag = 'Y'
11417 THEN
11418 OE_DEBUG_PUB.ADD(' No conversion, amount 0 ');
11419 END IF;
11420 END IF;
11421
11422 IF G_debug_flag = 'Y'
11423 THEN
11424 OE_DEBUG_PUB.ADD('Convert amt using trx curr = '|| l_converted_amount );
11425 END IF;
11426
11427 return l_converted_amount;
11428
11429 EXCEPTION
11430 WHEN GL_CURRENCY_API.NO_RATE THEN
11431
11432 DECLARE
11433 l_functional_amount NUMBER;
11434 BEGIN
11435 IF G_debug_flag = 'Y'
11436 THEN
11437 OE_DEBUG_PUB.ADD(' Convert using functional curr traingulate');
11438 END IF;
11439
11440 gl_currency_api.convert_closest_amount
11441 ( x_from_currency => p_transactional_currency
11442 , x_to_currency => p_functional_currency
11443 , x_conversion_date => p_conversion_date
11444 , x_conversion_type => p_conversion_type
11445 , x_amount => p_amount
11446 , x_user_rate => NULL
11447 , x_max_roll_days => -1
11448 , x_converted_amount => l_functional_amount
11449 , x_denominator => l_denominator
11450 , x_numerator => l_numerator
11451 , x_rate => l_rate
11452 );
11453
11454 gl_currency_api.convert_closest_amount
11455 ( x_from_currency => p_functional_currency
11456 , x_to_currency => p_limit_currency
11457 , x_conversion_date => p_conversion_date
11458 , x_conversion_type => p_conversion_type
11459 , x_amount => l_functional_amount
11460 , x_user_rate => NULL
11461 , x_max_roll_days => -1
11462 , x_converted_amount => l_converted_amount
11463 , x_denominator => l_denominator
11464 , x_numerator => l_numerator
11465 , x_rate => l_rate
11466 );
11467
11468 IF G_debug_flag = 'Y'
11469 THEN
11470 OE_DEBUG_PUB.ADD('Convert amt using functional curr = '
11471 || l_converted_amount );
11472 END IF;
11473 return l_converted_amount;
11474
11475 END;
11476 END;
11477 IF G_debug_flag = 'Y'
11478 THEN
11479 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY CONVERT_CURRENCY_AMOUNT ');
11480 END IF;
11481 END CONVERT_CURRENCY_AMOUNT;
11482
11483 --
11484 --
11485 ------------------------------------------------------------
11486 -- PROCEDURE: SEND_CREDIT_HOLD_NTF
11487 -- COMMENTS:
11488 ------------------------------------------------------------
11489 PROCEDURE SEND_CREDIT_HOLD_NTF
11490 (p_header_rec IN OE_ORDER_PUB.header_rec_type
11491 ,p_credit_hold_level IN OE_CREDIT_CHECK_RULES.credit_hold_level_code%TYPE
11492 ,p_cc_hold_comment IN OE_HOLD_SOURCES.hold_comment%TYPE
11493 ,x_return_status OUT NOCOPY VARCHAR2
11494 )
11495 IS
11496
11497 -- Cursor to get workflow user
11498 CURSOR wfn_to IS
11499 SELECT user_name
11500 FROM fnd_user
11501 WHERE user_id = p_header_rec.created_by ;
11502
11503 -- Cursor to get the order type
11504 CURSOR c_order_type IS
11505 SELECT name
11506 FROM oe_transaction_types_vl
11507 WHERE transaction_type_id = p_header_rec.order_type_id;
11508
11509 l_order_hold_comment VARCHAR2(2000);
11510 l_line_hold_count NUMBER := 0;
11511 l_notification_id NUMBER;
11512 l_wfn_to VARCHAR2(100);
11513 l_order_type VARCHAR2(30) := NULL;
11514 l_msg_count NUMBER;
11515 l_msg_data VARCHAR2(3000) ;
11516
11517 BEGIN
11518 IF G_debug_flag = 'Y'
11519 THEN
11520 oe_debug_pub.ADD('In OE_CREDIT_CHECK_UTIL.Send_Credit_Hold_NTF', 1);
11521 END IF;
11522
11523 -- Initialize return status to success
11524 x_return_status := FND_API.G_RET_STS_SUCCESS;
11525
11526 -- Get notification approver -- Created by
11527
11528 BEGIN
11529 IF G_debug_flag = 'Y'
11530 THEN
11531 oe_debug_pub.ADD('Get the Notification approver ', 2);
11532 END IF;
11533
11534 --Code added for ER 2925718
11535 l_wfn_to := fnd_profile.Value('OE_CC_NTF_RECIPIENT');
11536
11537 IF l_wfn_to IS NULL THEN
11538 --Code added newly is ended for ER 2925718
11539 OPEN wfn_to;
11540 FETCH wfn_to INTO l_wfn_to;
11541 IF wfn_to%NOTFOUND
11542 THEN
11543 l_wfn_to := NUll ;
11544 END IF;
11545 CLOSE wfn_to;
11546 END IF;
11547 END ;
11548
11549 IF G_debug_flag = 'Y'
11550 THEN
11551 oe_debug_pub.ADD(' l_wfn_to = '|| l_wfn_to, 2 );
11552 END IF;
11553
11554 -- Set message attributes and send notification
11555 IF l_wfn_to is not NULL
11556 THEN
11557 BEGIN
11558 IF G_debug_flag = 'Y'
11559 THEN
11560 oe_debug_pub.ADD('Set the order type ', 2);
11561 END IF;
11562
11563 OPEN c_order_type;
11564 FETCH c_order_type INTO l_order_type;
11565 IF c_order_type%NOTFOUND
11566 THEN
11567 l_wfn_to := NUll ;
11568 END IF;
11569 CLOSE c_order_type;
11570 END ;
11571
11572 IF NVL(p_credit_hold_level, 'ORDER') = 'ORDER'
11573 THEN
11574 l_order_hold_comment := p_cc_hold_comment;
11575 l_line_hold_count := NULL;
11576 ELSIF p_credit_hold_level = 'LINE'
11577 THEN
11578 FND_MESSAGE.Set_Name('ONT','OE_CC_HLD_GENERAL_MSG');
11579 l_order_hold_comment := SUBSTR(FND_MESSAGE.GET,1,2000);
11580 l_line_hold_count := OE_CREDIT_CHECK_LINES_PVT.G_line_hold_count;
11581 END IF;
11582
11583 IF G_debug_flag = 'Y'
11584 THEN
11585 oe_debug_pub.ADD(' Before send notification ', 2);
11586 END IF;
11587
11588 l_notification_id := wf_notification.send
11589 ( role => l_wfn_to
11590 , msg_type => OE_GLOBALS.g_wfi_hdr
11591 , msg_name => 'ORDER_CREDIT_HOLDS'
11592 );
11593
11594 IF G_debug_flag = 'Y'
11595 THEN
11596 oe_debug_pub.ADD(' After send notification with ID = '||
11597 l_notification_id, 2 );
11598 END IF;
11599
11600 wf_notification.setattrtext
11601 ( nid => l_notification_id
11602 , aname => 'ORDER_HOLD_COMMENT'
11603 , avalue => l_order_hold_comment
11604 );
11605
11606 wf_notification.setattrtext
11607 ( nid => l_notification_id
11608 , aname => 'ORDER_TYPE'
11609 , avalue => l_order_type
11610 );
11611
11612 wf_notification.setattrnumber
11613 ( nid => l_notification_id
11614 , aname => 'ORDER_NUMBER'
11615 , avalue => p_header_rec.order_number
11616 );
11617
11618 wf_notification.setattrnumber
11619 ( nid => l_notification_id
11620 , aname => 'LINE_HOLD_COUNT'
11621 , avalue => l_line_hold_count
11622 );
11623
11624 --
11625 -- Start: Bug 7476530 Fix (R12.1.1 and R12.2)
11626 --
11627 -- Ensure that the notification subject will be properly constructed.
11628 --
11629
11630 Wf_Notification.Denormalize_Notification(nid => l_notification_id);
11631
11632 -- End : Bug 7476530 Fix
11633
11634
11635 IF G_debug_flag = 'Y'
11636 THEN
11637 oe_debug_pub.ADD('-------Message Attribute Values-------',2);
11638 oe_debug_pub.ADD('l_order_type: '||l_order_type,2);
11639 oe_debug_pub.ADD('l_order_number: '||p_header_rec.order_number,2);
11640 oe_debug_pub.ADD('l_order_hold_comment: '||l_order_hold_comment,2);
11641 oe_debug_pub.ADD('l_line_hold_count: '||l_line_hold_count,2);
11642 oe_debug_pub.ADD('--------------------------------------',2);
11643 END IF;
11644
11645 ELSE
11646 IF G_debug_flag = 'Y'
11647 THEN
11648 oe_debug_pub.ADD('No send notification l_wfn_to = '|| l_wfn_to, 2);
11649 END IF;
11650 END IF;
11651
11652 IF G_debug_flag = 'Y'
11653 THEN
11654 oe_debug_pub.ADD('OEXUCRCB: OUT NOCOPY Send_Credit_Hold_NTF');
11655 END IF;
11656
11657 -- No exception raised as notification send is not considered
11658 -- as a stop for credit checking
11659
11660 EXCEPTION
11661 WHEN OTHERS THEN
11662 BEGIN
11663 x_return_status := FND_API.G_RET_STS_ERROR ;
11664 IF G_debug_flag = 'Y'
11665 THEN
11666 oe_debug_pub.ADD(' EXCEPTION OTHERS IN SEND_NOTIFICATION');
11667 oe_debug_pub.ADD( ' Errm = '|| SUBSTR(sqlerrm,1,200) );
11668 END IF;
11669 OE_MSG_PUB.Count_And_Get
11670 ( p_count => l_msg_count,
11671 p_data => l_msg_data
11672 );
11673 IF G_debug_flag = 'Y'
11674 THEN
11675 oe_debug_pub.ADD(' l_msg_data = ' || l_msg_data );
11676 END IF;
11677 l_msg_data := NULL ;
11678 l_msg_count := NULL ;
11679 END ;
11680 END SEND_CREDIT_HOLD_NTF;
11681
11682 ----------------------------------------------------------------------------
11683 -- PROCEDURE: GET_external_trx_amount PUBLIC
11684 -- COMMENT : Returns the transaction amount in the limit currency given the
11685 -- amount in the transaction currency. If the
11686 -- p_site_use_id IS null, the entire order is considered
11687 -- x_conversion_status provides any currency conversion
11688 -- error.
11689 -- Used for external credit checking API.
11690 -- BUG 4320650 Rounded the External transaction amount
11691 ----------------------------------------------------------------------------
11692 PROCEDURE GET_external_trx_amount
11693 ( p_transaction_curr_code IN VARCHAR2
11694 , p_transaction_amount IN NUMBER
11695 , p_credit_check_rule_rec IN
11696 OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type
11697 , p_system_parameter_rec IN
11698 OE_CREDIT_CHECK_UTIL.OE_systems_param_rec_type
11699 , p_limit_curr_code IN VARCHAR2
11700 , x_amount OUT NOCOPY NUMBER
11701 , x_conversion_status OUT NOCOPY OE_CREDIT_CHECK_UTIL.CURR_TBL_TYPE
11702 , x_return_status OUT NOCOPY VARCHAR2
11703 )
11704 IS
11705 l_limit_order_value NUMBER := 0;
11706 BEGIN
11707
11708 IF G_debug_flag = 'Y'
11709 THEN
11710 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_external_trx_amount');
11711 END IF;
11712
11713 x_return_status := FND_API.G_RET_STS_SUCCESS;
11714 OE_CREDIT_CHECK_UTIL.g_current_order_value := NULL ;
11715
11716 IF G_debug_flag = 'Y'
11717 THEN
11718 OE_DEBUG_PUB.ADD('Order Level Credit Check only');
11719 END IF ;
11720 -- convert amount
11721 BEGIN
11722 IF G_debug_flag = 'Y'
11723 THEN
11724 OE_DEBUG_PUB.Add(' GL_CURRENCY = '|| OE_Credit_Engine_GRP.GL_currency);
11725 OE_DEBUG_PUB.ADD(' Total order amount = '|| p_transaction_amount);
11726 END IF;
11727
11728
11729 l_limit_order_value :=
11730 OE_CREDIT_CHECK_UTIL.CONVERT_CURRENCY_AMOUNT
11731 ( p_amount => p_transaction_amount
11732 , p_transactional_currency => p_transaction_curr_code
11733 , p_limit_currency => p_limit_curr_code
11734 , p_functional_currency => OE_Credit_Engine_GRP.GL_currency
11735 , p_conversion_date => SYSDATE
11736 , p_conversion_type => p_credit_check_rule_rec.conversion_type
11737 );
11738 END ;
11739 -- x_amount := NVL(l_limit_order_value,0);
11740
11741 OE_CREDIT_CHECK_UTIL.Rounded_Amount(p_currency_code => p_limit_curr_code
11742 ,p_unrounded_amount => NVL(l_limit_order_value,0)
11743 ,x_rounded_amount => x_amount);
11744
11745 OE_CREDIT_CHECK_UTIL.g_current_order_value := x_amount ;
11746
11747 IF G_debug_flag = 'Y'
11748 THEN
11749 OE_DEBUG_PUB.Add(' g_current_order_value = '||
11750 OE_CREDIT_CHECK_UTIL.g_current_order_value);
11751 OE_DEBUG_PUB.Add(' Final trx check order amount = '|| x_amount,1 );
11752 OE_DEBUG_PUB.Add(' ====================================');
11753 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY Get_external_trx_amount ');
11754 END IF;
11755
11756 EXCEPTION
11757 WHEN GL_CURRENCY_API.NO_RATE THEN
11758 OE_DEBUG_PUB.ADD('EXCEPTION: GL_CURRENCY_API.NO_RATE ');
11759 x_conversion_status(1).usage_curr_code := p_transaction_curr_code;
11760 fnd_message.set_name('ONT', 'OE_CONVERSION_ERROR');
11761 OE_DEBUG_PUB.ADD('Exception table added ');
11762 WHEN NO_DATA_FOUND THEN
11763 x_amount := 0 ;
11764 OE_DEBUG_PUB.ADD('EXCEPTION: NO_DATA_FOUND ');
11765 WHEN TOO_MANY_ROWS THEN
11766 x_amount := 0 ;
11767 OE_DEBUG_PUB.ADD('EXCEPTION: TOO_MANY_ROWS ');
11768 WHEN OTHERS THEN
11769 G_DBG_MSG := SUBSTRB(sqlerrm,1,200);
11770 OE_DEBUG_PUB.ADD('EXCEPTION = '|| SUBSTRB(sqlerrm,1,200));
11771 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
11772 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
11773 OE_MSG_PUB.Add_Exc_Msg
11774 ( G_PKG_NAME
11775 , 'GET_external_trx_amount'
11776 );
11777 END IF;
11778 RAISE;
11779 END Get_external_trx_amount;
11780
11781
11782 -----------------------------------------------------------------------------
11783 -- PROCEDURE : GET_default_Limit
11784 --------------------------------------------------------------------------------
11785 PROCEDURE GET_default_Limit
11786 ( p_entity_id IN NUMBER
11787 , p_trx_curr_code IN VARCHAR2
11788 , x_limit_curr_code OUT NOCOPY VARCHAR2
11789 , x_trx_limit OUT NOCOPY NUMBER
11790 , x_overall_limit OUT NOCOPY NUMBER
11791 , x_default_limit_flag OUT NOCOPY VARCHAR2
11792 , x_global_exposure_flag OUT NOCOPY VARCHAR2
11793 )
11794 IS
11795
11796 l_credit_usage_rule_set_id NUMBER;
11797 BEGIN
11798 IF G_debug_flag = 'Y'
11799 THEN
11800 OE_DEBUG_PUB.ADD('OEXUCRCB: IN GET_default_Limit ');
11801 END IF;
11802
11803 x_default_limit_flag := 'N' ;
11804 x_limit_curr_code := NULL ;
11805 x_global_exposure_flag := 'N' ;
11806
11807 OE_DEBUG_PUB.ADD(' calling GET_multi_default_Limit ');
11808
11809 GET_multi_default_Limit
11810 ( p_entity_id => p_entity_id
11811 , p_trx_curr_code => p_trx_curr_code
11812 , x_limit_curr_code => x_limit_curr_code
11813 , x_trx_limit => x_trx_limit
11814 , x_overall_limit => x_overall_limit
11815 , x_return_status => x_default_limit_flag
11816 , x_credit_usage_rule_set_id
11817 => l_credit_usage_rule_set_id
11818 , x_global_exposure_flag => x_global_exposure_flag
11819 );
11820
11821 IF G_debug_flag = 'Y'
11822 THEN
11823 OE_DEBUG_PUB.ADD(' Out NOCOPY GET_multi_default_Limit '
11824 || x_default_limit_flag );
11825 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
11826 END IF;
11827
11828 IF x_default_limit_flag = 'Y'
11829 AND x_trx_limit is NULL
11830 AND x_overall_limit is NULL
11831 THEN
11832 x_default_limit_flag := 'N' ;
11833 x_limit_curr_code := NULL ;
11834 OE_DEBUG_PUB.ADD(' Limits NULL ');
11835
11836 END IF;
11837
11838 IF x_limit_curr_code IS NULL
11839 THEN
11840 x_default_limit_flag := 'N' ;
11841 OE_DEBUG_PUB.ADD(' calling GET_single_default_Limit ');
11842 GET_single_default_Limit
11843 ( p_entity_id => p_entity_id
11844 , p_trx_curr_code => p_trx_curr_code
11845 , x_limit_curr_code => x_limit_curr_code
11846 , x_trx_limit => x_trx_limit
11847 , x_overall_limit => x_overall_limit
11848 , x_return_status => x_default_limit_flag
11849 );
11850
11851 IF G_debug_flag = 'Y'
11852 THEN
11853 OE_DEBUG_PUB.ADD(' Out NOCOPY GET_single_default_Limit '
11854 || x_default_limit_flag );
11855 OE_DEBUG_PUB.ADD(' x_limit_curr_code = '|| x_limit_curr_code );
11856 END IF;
11857
11858 END IF;
11859
11860
11861 IF G_debug_flag = 'Y'
11862 THEN
11863 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY GET_default_Limit ' ||
11864 x_default_limit_flag );
11865 END IF;
11866
11867 EXCEPTION
11868 WHEN OTHERS THEN
11869 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
11870 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
11871 THEN
11872 FND_MSG_PUB.Add_Exc_Msg
11873 ( G_PKG_NAME
11874 , ' GET_default_Limit '
11875 );
11876 END IF;
11877 RAISE;
11878
11879 END GET_default_Limit ;
11880
11881
11882 ------------------------------------------------------------------------------
11883 -- PROCEDURE : Get_Limit_Info PUBLIC
11884 -- COMMENT : Returns credit profiles for the
11885 -- a) Customer
11886 -- b) Site
11887 -- c) party level
11888 ------------------------------------------------------------------------------
11889 PROCEDURE get_limit_info (
11890 p_header_id IN NUMBER := NULL
11891 , p_entity_type IN VARCHAR2
11892 , p_entity_id IN NUMBER
11893 , p_cust_account_id IN NUMBER
11894 , p_party_id IN NUMBER
11895 , p_trx_curr_code IN
11896 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
11897 , p_suppress_unused_usages_flag IN VARCHAR2 := 'N'
11898 , p_navigate_to_next_level IN VARCHAR2 := 'Y'
11899 , p_precalc_exposure_used IN VARCHAR2 := 'N'
11900 , x_limit_curr_code OUT NOCOPY
11901 HZ_CREDIT_PROFILE_AMTS.currency_code%TYPE
11902 , x_trx_limit OUT NOCOPY NUMBER
11903 , x_overall_limit OUT NOCOPY NUMBER
11904 , x_include_all_flag OUT NOCOPY VARCHAR2
11905 , x_usage_curr_tbl OUT NOCOPY
11906 OE_CREDIT_CHECK_UTIL.curr_tbl_type
11907 , x_default_limit_flag OUT NOCOPY VARCHAR2
11908 , x_global_exposure_flag OUT NOCOPY VARCHAR2
11909 , x_credit_limit_entity_id OUT NOCOPY NUMBER
11910 , x_credit_check_level OUT NOCOPY VARCHAR2
11911 )
11912 IS
11913
11914
11915 l_Return_status VARCHAR2(1) := NULL ; --bug 4967828
11916 l_suppress_unused_usages_flag VARCHAR2(1) ;
11917 --bug 4212981
11918 l_site_cc_flag VARCHAR2(1);
11919 l_cust_cc_flag VARCHAR2(1);
11920 l_dummy VARCHAR2(1);
11921
11922 BEGIN
11923
11924 x_credit_limit_entity_id := NULL ;
11925 x_credit_check_level := NULL ;
11926 x_limit_curr_code := NULL ;
11927 x_trx_limit := NULL ;
11928 x_overall_limit := NULL ;
11929 x_include_all_flag := 'N' ;
11930 x_default_limit_flag := 'N' ;
11931 x_global_exposure_flag := 'N' ;
11932 l_suppress_unused_usages_flag := p_suppress_unused_usages_flag ;
11933 x_default_limit_flag := 'N' ;
11934
11935 OE_CREDIT_CHECK_UTIL.G_excl_curr_list := NULL ;
11936
11937 IF G_debug_flag = 'Y'
11938 THEN
11939
11940 OE_DEBUG_PUB.ADD('OEXUCRCB: IN get_limit_info', 1);
11941 OE_DEBUG_PUB.ADD(' ---------------------------------------------' );
11942 OE_DEBUG_PUB.ADD('G_ORG_ID ==> '|| G_ORG_ID );
11943 OE_DEBUG_PUB.ADD('P_entity_Type ==> '|| P_entity_Type );
11944 OE_DEBUG_PUB.ADD('P_entity_id ==> '|| P_entity_id );
11945 OE_DEBUG_PUB.ADD('P_party_id ==> '|| P_party_id );
11946 OE_DEBUG_PUB.ADD('p_trx_curr_code ==> '|| p_trx_curr_code );
11947 OE_DEBUG_PUB.ADD('p_navigate_to_next_level ==> '||
11948 p_navigate_to_next_level );
11949
11950 OE_DEBUG_PUB.ADD('p_suppress_unused_usages_flag ==> '||
11951 p_suppress_unused_usages_flag );
11952
11953 OE_DEBUG_PUB.ADD(' ---------------------------------------------' );
11954
11955 OE_DEBUG_PUB.ADD(' Call Get_Multi_Limit ');
11956 END IF;
11957
11958 IF p_entity_type in ('SITE','CUSTOMER')
11959 THEN
11960 Get_Multi_Limit
11961 ( p_entity_type => p_entity_type
11962 , p_entity_id => p_entity_id
11963 , p_trx_curr_code => p_trx_curr_code
11964 , x_limit_curr_code => x_limit_curr_code
11965 , x_trx_limit => x_trx_limit
11966 , x_overall_limit => x_overall_limit
11967 , x_global_exposure_flag => x_global_exposure_flag
11968 --bug 4212981
11969 , x_site_cc_flag => l_site_cc_flag
11970 , x_cust_cc_flag => l_dummy
11971 );
11972
11973 IF G_debug_flag = 'Y'
11974 THEN
11975 OE_DEBUG_PUB.ADD(' Out NOCOPY of Get_Multi_Limit ');
11976 OE_DEBUG_PUB.ADD('x_limit_curr_code ==> '|| x_limit_curr_code );
11977 END IF;
11978
11979 IF x_limit_curr_code IS NOT NULL
11980 THEN
11981
11982 x_credit_limit_entity_id := p_entity_id ;
11983 x_credit_check_level := p_entity_type ;
11984
11985 ELSIF x_limit_curr_code IS NULL
11986 AND p_entity_type = 'SITE'
11987 AND NVL(l_site_cc_flag, 'Y') = 'Y' --bug 4212981 , bug 4582292
11988 THEN
11989 IF G_debug_flag = 'Y'
11990 THEN
11991 OE_DEBUG_PUB.ADD('calling Get_Multi_Limit for CUSTOMER ');
11992 END IF;
11993 Get_Multi_Limit
11994 ( p_entity_type => 'CUSTOMER'
11995 , p_entity_id => p_cust_account_id
11996 , p_trx_curr_code => p_trx_curr_code
11997 , x_limit_curr_code => x_limit_curr_code
11998 , x_trx_limit => x_trx_limit
11999 , x_overall_limit => x_overall_limit
12000 , x_global_exposure_flag => x_global_exposure_flag
12001 --bug 4582292
12002 , x_site_cc_flag => l_dummy
12003 , x_cust_cc_flag => l_cust_cc_flag
12004 );
12005
12006 IF x_limit_curr_code IS NOT NULL
12007 THEN
12008 x_credit_limit_entity_id := p_cust_account_id ;
12009 x_credit_check_level := 'CUSTOMER' ;
12010 END IF;
12011 END IF;
12012 END IF;
12013
12014 OE_DEBUG_PUB.ADD('p_navigate_to_next_level ==> '|| p_navigate_to_next_level );
12015 OE_DEBUG_PUB.ADD('l_site_cc_flag ==> '|| l_site_cc_flag );
12016 OE_DEBUG_PUB.ADD('l_cust_cc_flag ==> '|| l_cust_cc_flag );
12017 OE_DEBUG_PUB.ADD('x_limit_curr_code ==> '|| x_limit_curr_code );
12018 OE_DEBUG_PUB.ADD('l_return_status ==> '|| l_return_status );
12019
12020 --IF p_navigate_to_next_level = 'Y' THEN --bug 5071518 --14505181
12021 IF p_navigate_to_next_level = 'Y' AND --14505181
12022 -- IF --14505181
12023 NVL(l_site_cc_flag, 'Y') = 'Y' AND NVL(l_cust_cc_flag, 'Y') = 'Y' --bug 4212981 , bug4582292, bug 5071518
12024 THEN
12025 -----------------------------------------------------
12026 ------- Party level changes
12027 -----------------------------------------------------
12028 IF p_precalc_exposure_used = 'Y'
12029 THEN
12030 IF OE_CREDIT_CHECK_UTIL.G_crmgmt_installed is NULL
12031 THEN
12032 OE_CREDIT_CHECK_UTIL.G_crmgmt_installed :=
12033 AR_CMGT_CREDIT_REQUEST_API.is_Credit_Management_Installed ;
12034 END IF;
12035
12036 -- Get party limit only if credit management is installed
12037 IF OE_CREDIT_CHECK_UTIL.G_crmgmt_installed
12038 THEN
12039 IF x_limit_curr_code IS NULL
12040 THEN
12041 IF G_debug_flag = 'Y'
12042 THEN
12043 OE_DEBUG_PUB.ADD( 'OEXUCRCB: GET_party_limit ');
12044 END IF;
12045
12046 GET_party_limit
12047 ( p_party_id => p_party_id
12048 , p_trx_curr_code => p_trx_curr_code
12049 , x_limit_curr_code => x_limit_curr_code
12050 , x_trx_limit => x_trx_limit
12051 , x_overall_limit => x_overall_limit
12052 , x_return_status => l_return_status
12053 , x_credit_limit_entity_id => x_credit_limit_entity_id
12054 );
12055
12056 IF G_debug_flag = 'Y'
12057 THEN
12058 OE_DEBUG_PUB.ADD( ' out NOCOPY GET_party_limit ');
12059 OE_DEBUG_PUB.ADD( ' l_return_status ==> '|| l_return_status );
12060 END IF;
12061
12062 IF x_limit_curr_code IS NOT NULL
12063 THEN
12064 x_credit_limit_entity_id := x_credit_limit_entity_id ;
12065 x_credit_check_level := 'PARTY' ;
12066 x_global_exposure_flag := 'Y' ;
12067 END IF;
12068 END IF;
12069 END IF ; -- support party
12070 END IF;
12071 --END IF; --bug 5071518 --14505181
12072
12073 IF x_limit_curr_code IS NULL
12074 AND NVL(l_return_status,'Y') = 'Y' -- bug 4958142
12075 THEN
12076 OE_DEBUG_PUB.ADD( ' calling GET_default_Limit ');
12077 GET_default_Limit
12078 ( p_entity_id => p_entity_id
12079 , p_trx_curr_code => p_trx_curr_code
12080 , x_limit_curr_code => x_limit_curr_code
12081 , x_trx_limit => x_trx_limit
12082 , x_overall_limit => x_overall_limit
12083 , x_default_limit_flag => x_default_limit_flag
12084 , x_global_exposure_flag => x_global_exposure_flag
12085 );
12086
12087 IF x_limit_curr_code IS NOT NULL
12088 THEN
12089 x_credit_limit_entity_id := p_cust_account_id ;
12090 x_credit_check_level := 'CUSTOMER' ;
12091 END IF;
12092 END IF;
12093
12094 -- Start bug 5071518
12095 OE_DEBUG_PUB.ADD(' x_limit_curr_code => '|| x_limit_curr_code );
12096 OE_DEBUG_PUB.ADD(' x_trx_limit => '|| x_trx_limit );
12097 OE_DEBUG_PUB.ADD(' x_overall_limit => '|| x_overall_limit );
12098 OE_DEBUG_PUB.ADD(' x_default_limit_flag => '|| x_default_limit_flag );
12099
12100 END IF; -- navigate
12101
12102 IF x_limit_curr_code IS NULL
12103 THEN
12104 OE_DEBUG_PUB.ADD(' No limits for any level ');
12105
12106 x_trx_limit := NULL ;
12107 x_overall_limit := NULL ;
12108 x_include_all_flag := 'N' ;
12109 x_default_limit_flag := 'N' ;
12110 x_global_exposure_flag := 'N' ;
12111 x_credit_limit_entity_id := NULL ;
12112 x_credit_check_level := NULL ;
12113
12114 ELSE
12115 IF G_debug_flag = 'Y'
12116 THEN
12117 OE_DEBUG_PUB.ADD( ' Calling Get_Usages' );
12118 OE_DEBUG_PUB.ADD('x_limit_curr_code ==> '|| x_limit_curr_code );
12119 OE_DEBUG_PUB.ADD('x_default_limit_flag ==> '|| x_default_limit_flag );
12120 OE_DEBUG_PUB.ADD('x_global_exposure_flag ==> '|| x_global_exposure_flag );
12121 OE_DEBUG_PUB.ADD('x_include_all_flag ==> '|| x_include_all_flag );
12122 OE_DEBUG_PUB.ADD('x_credit_limit_entity_id ==> '||
12123 x_credit_limit_entity_id );
12124 OE_DEBUG_PUB.ADD('x_credit_check_level ==> '||
12125 x_credit_check_level );
12126 END IF;
12127
12128 IF x_credit_check_level = 'PARTY'
12129 THEN
12130 l_suppress_unused_usages_flag := 'N' ;
12131 END IF;
12132
12133 Get_Usages
12134 ( p_entity_type => x_credit_check_level
12135 , p_entity_id => x_credit_limit_entity_id
12136 , p_limit_curr_code => x_limit_curr_code
12137 , p_suppress_unused_usages_flag => l_suppress_unused_usages_flag
12138 , p_default_limit_flag => x_default_limit_flag
12139 , p_global_exposure_flag => x_global_exposure_flag
12140 , x_include_all_flag => x_include_all_flag
12141 , x_usage_curr_tbl => x_usage_curr_tbl
12142 );
12143
12144 IF G_debug_flag = 'Y'
12145 THEN
12146 OE_DEBUG_PUB.ADD( ' Out NOCOPY of Get_Usages ');
12147 END IF;
12148 END IF;
12149
12150 IF G_debug_flag = 'Y'
12151 THEN
12152 OE_DEBUG_PUB.ADD('OEXUCRCB: OUT NOCOPY get_limit_info ',1);
12153 END IF;
12154
12155 EXCEPTION
12156 WHEN OTHERS THEN
12157 G_DBG_MSG := SUBSTR(sqlerrm,1,200);
12158
12159 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
12160 THEN
12161 FND_MSG_PUB.Add_Exc_Msg
12162 ( G_PKG_NAME
12163 , ' get_limit_info '
12164 );
12165 END IF;
12166 RAISE;
12167
12168 END get_limit_info ;
12169
12170 -- Linda
12171 -----------------------------------------------------
12172 -- to get the lookup meaning
12173 ------------------------------------------------------
12174
12175 FUNCTION Get_CC_Lookup_Meaning
12176 (p_lookup_type IN VARCHAR2,
12177 p_lookup_code IN VARCHAR2
12178 )
12179 RETURN VARCHAR2
12180 IS
12181
12182 l_meaning VARCHAR2(80);
12183
12184 BEGIN
12185 SELECT meaning
12186 INTO l_meaning
12187 FROM oe_lookups
12188 WHERE lookup_type = p_lookup_type
12189 AND lookup_code = p_lookup_code;
12190
12191 RETURN (l_meaning);
12192
12193 EXCEPTION
12194 When Others Then
12195 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
12196 THEN
12197 OE_MSG_PUB.Add_Exc_Msg
12198 ( G_PKG_NAME
12199 , 'Get_CC_Lookup_Meaning'
12200 );
12201 END IF;
12202 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12203 END Get_CC_Lookup_Meaning;
12204
12205
12206 END OE_CREDIT_CHECK_UTIL;