1: PACKAGE BODY IEX_COLL_IND_PUB AS
2: /* $Header: iexpmtib.pls 120.1 2010/12/24 09:27:43 snuthala noship $ */
3:
4: G_PKG_NAME CONSTANT VARCHAR2(30) := 'IEX_COLL_IND_PUB';
5: G_FILE_NAME CONSTANT VARCHAR2(12) := 'iexpmtib.pls';
1: PACKAGE BODY IEX_COLL_IND_PUB AS
2: /* $Header: iexpmtib.pls 120.1 2010/12/24 09:27:43 snuthala noship $ */
3:
4: G_PKG_NAME CONSTANT VARCHAR2(30) := 'IEX_COLL_IND_PUB';
5: G_FILE_NAME CONSTANT VARCHAR2(12) := 'iexpmtib.pls';
6: G_APPL_ID NUMBER;
7: G_LOGIN_ID NUMBER;
8: G_PROGRAM_ID NUMBER;
34: mo_global.set_policy_context('S',p_org_id);
35:
36: GET_COMMON(p_org_id);
37:
38: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_currency_code = ' ||g_base_currency_code);
39: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_precision = ' ||g_base_precision);
40: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_min_acc_unit = ' ||g_base_min_acc_unit);
41: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - p_org_id = ' ||p_org_id);
42:
35:
36: GET_COMMON(p_org_id);
37:
38: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_currency_code = ' ||g_base_currency_code);
39: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_precision = ' ||g_base_precision);
40: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_min_acc_unit = ' ||g_base_min_acc_unit);
41: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - p_org_id = ' ||p_org_id);
42:
43: IF p_party_id IS NOT NULL THEN
36: GET_COMMON(p_org_id);
37:
38: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_currency_code = ' ||g_base_currency_code);
39: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_precision = ' ||g_base_precision);
40: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_min_acc_unit = ' ||g_base_min_acc_unit);
41: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - p_org_id = ' ||p_org_id);
42:
43: IF p_party_id IS NOT NULL THEN
44: SELECT SUM(DECODE(prof_amt.overall_credit_limit, NULL, NULL,
37:
38: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_currency_code = ' ||g_base_currency_code);
39: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_precision = ' ||g_base_precision);
40: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - g_base_min_acc_unit = ' ||g_base_min_acc_unit);
41: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_true_dso - p_org_id = ' ||p_org_id);
42:
43: IF p_party_id IS NOT NULL THEN
44: SELECT SUM(DECODE(prof_amt.overall_credit_limit, NULL, NULL,
45: gl_currency_api.convert_amount_sql(prof_amt.currency_code,g_base_currency_code,
86: RETURN l_char_val;
87:
88: EXCEPTION
89: when others then
90: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_credit_limit - Exception = ' ||SQLERRM);
91: RETURN(0);
92:
93: END GET_CREDIT_LIMIT;
94:
115: IF p_party_id IS NOT NULL THEN
116: SELECT sum
117: (
118: (
119: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
120: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
121: nvl(ps.acctd_amount_due_remaining, 0)
122: ) *
123: (ps.due_date - ps.trx_date)
116: SELECT sum
117: (
118: (
119: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
120: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
121: nvl(ps.acctd_amount_due_remaining, 0)
122: ) *
123: (ps.due_date - ps.trx_date)
124: ) /
122: ) *
123: (ps.due_date - ps.trx_date)
124: ) /
125: sum (
126: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
127: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
128: nvl(ps.acctd_amount_due_remaining, 0)
129: )
130: INTO l_wtd_days_terms
123: (ps.due_date - ps.trx_date)
124: ) /
125: sum (
126: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
127: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
128: nvl(ps.acctd_amount_due_remaining, 0)
129: )
130: INTO l_wtd_days_terms
131: FROM ar_payment_schedules ps, hz_cust_accounts ca
137: ELSIF p_cust_account_id IS NOT NULL THEN
138: SELECT sum
139: (
140: (
141: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
142: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
143: nvl(ps.acctd_amount_due_remaining, 0)
144: ) *
145: (ps.due_date - ps.trx_date)
138: SELECT sum
139: (
140: (
141: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
142: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
143: nvl(ps.acctd_amount_due_remaining, 0)
144: ) *
145: (ps.due_date - ps.trx_date)
146: ) /
144: ) *
145: (ps.due_date - ps.trx_date)
146: ) /
147: sum (
148: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
149: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
150: nvl(ps.acctd_amount_due_remaining, 0)
151: )
152: INTO l_wtd_days_terms
145: (ps.due_date - ps.trx_date)
146: ) /
147: sum (
148: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
149: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
150: nvl(ps.acctd_amount_due_remaining, 0)
151: )
152: INTO l_wtd_days_terms
153: FROM ar_payment_schedules ps
158: ELSIF p_customer_site_use_id IS NOT NULL THEN
159: SELECT sum
160: (
161: (
162: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
163: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
164: nvl(ps.acctd_amount_due_remaining, 0)
165: ) *
166: (ps.due_date - ps.trx_date)
159: SELECT sum
160: (
161: (
162: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
163: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
164: nvl(ps.acctd_amount_due_remaining, 0)
165: ) *
166: (ps.due_date - ps.trx_date)
167: ) /
165: ) *
166: (ps.due_date - ps.trx_date)
167: ) /
168: sum (
169: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
170: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
171: nvl(ps.acctd_amount_due_remaining, 0)
172: )
173: INTO l_wtd_days_terms
166: (ps.due_date - ps.trx_date)
167: ) /
168: sum (
169: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
170: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
171: nvl(ps.acctd_amount_due_remaining, 0)
172: )
173: INTO l_wtd_days_terms
174: FROM ar_payment_schedules ps
183: RETURN l_char_val;
184:
185: EXCEPTION
186: when others then
187: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_wtd_days_terms - Exception = ' ||SQLERRM);
188: RETURN(TO_CHAR(0));
189: END GET_WTD_DAYS_TERMS;
190:
191: FUNCTION GET_WTD_DAYS_LATE(p_party_id IN NUMBER,
209: IF p_party_id IS NOT NULL THEN
210: SELECT sum
211: (
212: (
213: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
214: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
215: nvl(ps.acctd_amount_due_remaining, 0)
216: ) *
217: (TRUNC(sysdate) - ps.due_date)
210: SELECT sum
211: (
212: (
213: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
214: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
215: nvl(ps.acctd_amount_due_remaining, 0)
216: ) *
217: (TRUNC(sysdate) - ps.due_date)
218: ) /
216: ) *
217: (TRUNC(sysdate) - ps.due_date)
218: ) /
219: sum (
220: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
221: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
222: nvl(ps.acctd_amount_due_remaining, 0)
223: )
224: INTO l_wtd_days_late
217: (TRUNC(sysdate) - ps.due_date)
218: ) /
219: sum (
220: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
221: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
222: nvl(ps.acctd_amount_due_remaining, 0)
223: )
224: INTO l_wtd_days_late
225: FROM ar_payment_schedules ps, hz_cust_accounts ca
232: ELSIF p_cust_account_id IS NOT NULL THEN
233: SELECT sum
234: (
235: (
236: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
237: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
238: nvl(ps.acctd_amount_due_remaining, 0)
239: ) *
240: (TRUNC(sysdate) - ps.due_date)
233: SELECT sum
234: (
235: (
236: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
237: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
238: nvl(ps.acctd_amount_due_remaining, 0)
239: ) *
240: (TRUNC(sysdate) - ps.due_date)
241: ) /
239: ) *
240: (TRUNC(sysdate) - ps.due_date)
241: ) /
242: sum (
243: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
244: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
245: nvl(ps.acctd_amount_due_remaining, 0)
246: )
247: INTO l_wtd_days_late
240: (TRUNC(sysdate) - ps.due_date)
241: ) /
242: sum (
243: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
244: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
245: nvl(ps.acctd_amount_due_remaining, 0)
246: )
247: INTO l_wtd_days_late
248: FROM ar_payment_schedules ps
254: ELSIF p_customer_site_use_id IS NOT NULL THEN
255: SELECT sum
256: (
257: (
258: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
259: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
260: nvl(ps.acctd_amount_due_remaining, 0)
261: ) *
262: (TRUNC(sysdate) - ps.due_date)
255: SELECT sum
256: (
257: (
258: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
259: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
260: nvl(ps.acctd_amount_due_remaining, 0)
261: ) *
262: (TRUNC(sysdate) - ps.due_date)
263: ) /
261: ) *
262: (TRUNC(sysdate) - ps.due_date)
263: ) /
264: sum (
265: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
266: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
267: nvl(ps.acctd_amount_due_remaining, 0)
268: )
269: INTO l_wtd_days_late
262: (TRUNC(sysdate) - ps.due_date)
263: ) /
264: sum (
265: IEX_COLL_IND.GET_APPS_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) -
266: IEX_COLL_IND.GET_ADJ_TOTAL(ps.payment_schedule_id, TRUNC(sysdate)) +
267: nvl(ps.acctd_amount_due_remaining, 0)
268: )
269: INTO l_wtd_days_late
270: FROM ar_payment_schedules ps
280: RETURN l_char_val;
281:
282: EXCEPTION
283: when others then
284: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_wtd_days_late - Exception = ' ||SQLERRM);
285: RETURN(TO_CHAR(0));
286: END GET_WTD_DAYS_LATE;
287:
288: FUNCTION GET_TRUE_DSO(p_party_id IN NUMBER,
319:
320: l_sales := COMP_TOT_REC(TRUNC(add_months(sysdate, -12)), TRUNC(sysdate),
321: p_party_id, p_cust_account_id, p_customer_site_use_id);
322:
323: l_beg_ar := IEX_COLL_IND.COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(add_months(sysdate, -12)) - 1,
324: p_party_id, p_cust_account_id, p_customer_site_use_id);
325:
326: l_end_ar := IEX_COLL_IND.COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(sysdate),
327: p_party_id, p_cust_account_id, p_customer_site_use_id);
322:
323: l_beg_ar := IEX_COLL_IND.COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(add_months(sysdate, -12)) - 1,
324: p_party_id, p_cust_account_id, p_customer_site_use_id);
325:
326: l_end_ar := IEX_COLL_IND.COMP_REM_REC(to_date('01/01/1952','MM/DD/YYYY'), TRUNC(sysdate),
327: p_party_id, p_cust_account_id, p_customer_site_use_id);
328:
329: iex_debug_pub.logmessage (' IEX_COLL_DSO_PUB.get_true_dso - l_sales = ' ||l_sales);
330: iex_debug_pub.logmessage (' IEX_COLL_DSO_PUB.get_true_dso - l_beg_ar = ' ||l_beg_ar);
374: g_base_currency_code,
375: nvl(ps.exchange_rate,1),
376: g_base_precision,
377: g_base_min_acc_unit) +
378: IEX_COLL_IND.GET_ADJ_FOR_TOT_REC(ps.payment_schedule_id,p_end_date))
379: INTO l_tot_rec
380: FROM ar_payment_schedules ps,
381: hz_cust_accounts ca
382: WHERE ps.class in ('INV', 'DM', 'CB', 'DEP' )
390: g_base_currency_code,
391: nvl(ps.exchange_rate,1),
392: g_base_precision,
393: g_base_min_acc_unit) +
394: IEX_COLL_IND.GET_ADJ_FOR_TOT_REC(ps.payment_schedule_id,p_end_date))
395: INTO l_tot_rec
396: FROM ar_payment_schedules ps
397: WHERE ps.class in ('INV', 'DM', 'CB', 'DEP' )
398: AND ps.payment_schedule_id <> -1
404: g_base_currency_code,
405: nvl(ps.exchange_rate,1),
406: g_base_precision,
407: g_base_min_acc_unit) +
408: IEX_COLL_IND.GET_ADJ_FOR_TOT_REC(ps.payment_schedule_id,p_end_date))
409: INTO l_tot_rec
410: FROM ar_payment_schedules ps
411: WHERE ps.class in ('INV', 'DM', 'CB', 'DEP' )
412: AND ps.payment_schedule_id <> -1
436: where
437: gll.ledger_id = sp.set_of_books_id
438: and gll.currency_code = c.currency_code;
439:
440: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_currency_code = ' ||g_base_currency_code);
441: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_precision = ' ||g_base_precision);
442: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_min_acc_unit = ' ||g_base_min_acc_unit);
443:
444:
437: gll.ledger_id = sp.set_of_books_id
438: and gll.currency_code = c.currency_code;
439:
440: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_currency_code = ' ||g_base_currency_code);
441: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_precision = ' ||g_base_precision);
442: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_min_acc_unit = ' ||g_base_min_acc_unit);
443:
444:
445: exception
438: and gll.currency_code = c.currency_code;
439:
440: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_currency_code = ' ||g_base_currency_code);
441: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_precision = ' ||g_base_precision);
442: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.get_common - g_base_min_acc_unit = ' ||g_base_min_acc_unit);
443:
444:
445: exception
446: when others then
443:
444:
445: exception
446: when others then
447: iex_debug_pub.logmessage (' IEX_COLL_IND_PUB.main selection - Exception = ' ||SQLERRM);
448: null;
449:
450: end GET_COMMON;
451:
459: l_char_val VARCHAR2(1000);
460:
461: BEGIN
462:
463: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES Start ');
464: mo_global.set_policy_context('S',p_org_id);
465:
466: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: Calling GET_COMMON with org_id: ' || p_org_id);
467: GET_COMMON(p_org_id);
462:
463: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES Start ');
464: mo_global.set_policy_context('S',p_org_id);
465:
466: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: Calling GET_COMMON with org_id: ' || p_org_id);
467: GET_COMMON(p_org_id);
468: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: After Calling GET_COMMON');
469:
470: l_sales := COMP_TOT_REC(TRUNC(add_months(sysdate, -12)), TRUNC(sysdate),
464: mo_global.set_policy_context('S',p_org_id);
465:
466: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: Calling GET_COMMON with org_id: ' || p_org_id);
467: GET_COMMON(p_org_id);
468: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: After Calling GET_COMMON');
469:
470: l_sales := COMP_TOT_REC(TRUNC(add_months(sysdate, -12)), TRUNC(sysdate),
471: p_party_id, p_cust_account_id, p_customer_site_use_id);
472:
469:
470: l_sales := COMP_TOT_REC(TRUNC(add_months(sysdate, -12)), TRUNC(sysdate),
471: p_party_id, p_cust_account_id, p_customer_site_use_id);
472:
473: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: l_sales: ' || l_sales);
474: l_num_val := NVL(l_sales, 0);
475: l_char_val := RTRIM(TO_CHAR(l_num_val, fnd_currency.get_format_mask(g_base_currency_code, 50)));
476: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: l_char_val: ' || l_char_val);
477: RETURN l_char_val;
472:
473: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: l_sales: ' || l_sales);
474: l_num_val := NVL(l_sales, 0);
475: l_char_val := RTRIM(TO_CHAR(l_num_val, fnd_currency.get_format_mask(g_base_currency_code, 50)));
476: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: l_char_val: ' || l_char_val);
477: RETURN l_char_val;
478: exception
479: when others then
480: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES - Exception = ' ||SQLERRM);
476: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES: l_char_val: ' || l_char_val);
477: RETURN l_char_val;
478: exception
479: when others then
480: iex_debug_pub.logmessage ('IEX_COLL_IND_PUB.GET_SALES - Exception = ' ||SQLERRM);
481: null;
482: END GET_SALES;
483: --End for bug 10091833 gnramasa 22nd Sep 10
484:
481: null;
482: END GET_SALES;
483: --End for bug 10091833 gnramasa 22nd Sep 10
484:
485: END IEX_COLL_IND_PUB;