[Home] [Help]
PACKAGE BODY: APPS.FII_AR_PAID_REC_DTL_PKG
Source
1 PACKAGE BODY fii_ar_paid_rec_dtl_pkg AS
2 /* $Header: FIIARDBIPRDB.pls 120.26 2007/07/03 20:21:34 mmanasse ship $ */
3
4 PROCEDURE get_paid_rec_dtl(
5 p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL,
6 p_paid_rec_dtl_sql OUT NOCOPY VARCHAR2,
7 p_paid_rec_dtl_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL
8 ) IS
9
10 sqlstmt VARCHAR2(24000); -- Variable that stores the final SQL query
11 l_viewby_id VARCHAR2(240); -- Variable to store the viewby_id based on viewby selected in the report
12 l_view_by VARCHAR2(240); -- Variable to store the viewby based on viewby selected in the report
13 l_collector_where VARCHAR2(240); -- Variable to store the dynamic collector filter
14 l_customer_where VARCHAR2(240); -- Variable to store the dynamic customer filter
15 l_customer_acc_where VARCHAR2(240); -- Variable to store the dynamic customer account filter
16 l_child_party_where VARCHAR2(240); -- Variable to store the dynamic party id filter
17 l_cust_acc_drill VARCHAR2(1000); -- Variable to store drill parameter to view report at customer account level
18 l_cust_drill VARCHAR2(1000); -- Variable to store self-drill parameter to view report to explore child nodes
19 l_inv_drill VARCHAR2(1000); -- Variable to store drill parameter for Invoice column
20 l_dm_drill VARCHAR2(1000); -- Variable to store drill parameter for Debit Memo column
21 l_cb_drill VARCHAR2(1000); -- Variable to store drill parameter for Chargeback column
22 l_unapp_drill VARCHAR2(1000); -- Variable to store drill parameter for Unapplied column
23 l_viewby_drill VARCHAR2(1000); -- Variable to store drill parameter for View By column
24 l_amt_inv_drill VARCHAR2(1000); -- Variable to store drill parameter for Invoice column
25 l_amt_dm_drill VARCHAR2(1000); -- Variable to store drill parameter for Debit Memo column
26 l_amt_cb_drill VARCHAR2(1000); -- Variable to store drill parameter for Chargeback column
27 l_amt_unapp_drill VARCHAR2(1000); -- Variable to store drill parameter for Unapplied column
28 l_global_start_date VARCHAR2(240); -- Variable to store the globla start date
29 l_viewby VARCHAR2(240); -- Variable to store the view by column description clause
30 l_group_by VARCHAR2(240); -- Variable to store the group by clause
31 l_order_by VARCHAR2(240); -- Variable to store the order by clause
32 l_order_by_util VARCHAR2(240); -- Variable to store the order by clause returned from util pkg
33 l_order_column VARCHAR2(100); -- Variable to store the order by column
34 l_col_curr_suffix VARCHAR2(100); -- Variable to store the suffix for columns based on currency
35 l_sysdate VARCHAR2(20); -- Variable to store sysdate for sending it to child report
36
37 BEGIN
38
39 -- Reads the parameters from the parameter portlet
40 fii_ar_util_pkg.get_parameters(p_page_parameter_tbl);
41
42 --Logic for sorting
43 l_order_by_util := fii_ar_util_pkg.g_order_by;
44
45 IF instr(substr(l_order_by_util,-3), 'ASC') <> 0 THEN
46 -- Ascending order sorting on any column
47 l_order_by := '&ORDER_BY_CLAUSE';
48 ELSIF instr(l_order_by_util, 'FII_AR_PAID_AMT DESC') <> 0 THEN
49 -- Default sorting
50 l_order_by := 'ORDER BY NVL(FII_AR_PAID_AMT, -999999999) DESC';
51 ELSIF instr(l_order_by_util, 'DATE') <> 0 THEN
52 -- Descending order sorting on Date column
53 l_order_by := '&ORDER_BY_CLAUSE';
54 ELSIF instr(l_order_by_util, 'BINARY') <> 0 THEN
55 -- Descending order sorting on Text column
56 l_order_column := substr(l_order_by_util, instr(l_order_by_util, 'FII'), instr(l_order_by_util, ',') - instr(l_order_by_util, 'FII'));
57 l_order_by := 'ORDER BY NVL(' || l_order_column || ', '' '') DESC';
58 ELSE
59 -- Descending order sorting on Amount column
60 l_order_column := substr(l_order_by_util,1,instr(l_order_by_util, ' DESC'));
61 l_order_by := 'ORDER BY NVL('|| l_order_column ||', -999999999) DESC';
62 END IF;
63
64 l_col_curr_suffix := fii_ar_util_pkg.g_col_curr_suffix;
65
66 SELECT TO_CHAR(TRUNC(sysdate),'DD/MM/YYYY') INTO l_sysdate FROM dual;
67
68 -- Constructing the pmv sql query
69 sqlstmt := '
70 SELECT
71 hzca.account_number FII_AR_ACCT_NUM,
72 FII_AR_TRAN_NUM,
73 lk.meaning FII_AR_TRAN_CLASS,
74 ractt.DESCRIPTION FII_AR_TRAN_TYPE,
75 FII_AR_TRAN_DATE,
76 FII_AR_GL_DATE,
77 FII_AR_FIRST_DUE_DATE,
78 FII_AR_TRAN_AMT,
79 FII_AR_ORIG_AMT,
80 FII_AR_PAID_AMT,
81 FII_AR_ADJUST_AMT,
82 FII_AR_BALANCE_AMT,
83 FII_AR_DISC_TAKEN_AMT,
84 ratt.description FII_AR_TERMS,
85 rabs.description FII_AR_SOURCE,
86 decode(FII_AR_TRAN_CLASS, ''INV'',
87 ''pFunctionName=ARBPA_TM_REAL_PREVIEW&retainBN=Y&retainAM=Y&addBreadCrumb=Y&TermsSequenceNumber=1&CustomerTrxId=''
88 || customer_trx_id || ''&pParamIds=Y'', '''') FII_AR_TRAN_NUM_DRILL,
89 decode(lk.lookup_code,''PMT'','''',''pFunctionName=FII_AR_SCHD_PMT_DISCNT&FII_AR_CUST_TRX_ID='' || customer_trx_id ||
90 ''&FII_AR_TRAN_NUM=FII_AR_TRAN_NUM&FII_CURRENCIES='||'''||FII_AR_TRAN_CURR||'''||'&BIS_PMV_DRILL_CODE_FII_AR_CUST_ACCOUNT=FII_AR_ACCT_NUM&pParamIds=Y'') FII_AR_FIRST_DUE_DATE_DRILL,
91 ''pFunctionName=FII_AR_APP_RCT_DTL&TRX_NUM='' || customer_trx_id || ''&BIS_PMV_DRILL_CODE_FII_AR_CASH_RECEIPT_ID=''
92 || :CASH_RECEIPT_ID || ''&pParamIds=Y'' FII_AR_PAID_AMT_DRILL,
93 decode(FII_AR_BALANCE_AMT, NULL, '''', ''AS_OF_DATE=' || l_sysdate || '&pFunctionName=FII_AR_INV_ACT_HISTORY&FII_AR_CUST_TRX_ID=''
94 || outer_inner_query.customer_trx_id || ''&FII_AR_TRAN_NUM=FII_AR_TRAN_NUM&FII_AR_TRAN_CLASS='' || outer_inner_query.FII_AR_TRAN_CLASS
95 || ''&BIS_PMV_DRILL_CODE_FII_AR_ACCOUNT_NUM=FII_AR_ACCT_NUM&FII_AR_TRAN_CURR=FII_AR_TRAN_CURR&pParamIds=Y'') FII_AR_BALANCE_AMT_DRILL,
96 decode(outer_inner_query.order_ref_number, NULL, '''',
97 ''pFunctionName=ONT_PORTAL_ORDERDETAILS&HeaderId='' || (select ooh.header_id
98 from oe_order_headers_all ooh
99 where outer_inner_query.order_ref_number = to_char(ooh.order_number) )) FII_AR_SOURCE_DRILL,
100 sum(FII_AR_ORIG_AMT) over() FII_AR_GT_ORIG_AMT,
101 sum(FII_AR_PAID_AMT) over() FII_AR_GT_PAID_AMT,
102 sum(FII_AR_ADJUST_AMT) over() FII_AR_GT_ADJUST_AMT,
103 sum(FII_AR_BALANCE_AMT) over() FII_AR_GT_BALANCE_AMT,
104 sum(FII_AR_DISC_TAKEN_AMT) over() FII_AR_GT_DISC_TAKEN_AMT
105 FROM
106 (
107 SELECT
108 inner_query.customer_trx_id, max(inner_query.cust_trx_type_id) cust_trx_type_id, max(inner_query.term_id) term_id,
109 max(inner_query.batch_source_id) batch_source_id,max(inner_query.bill_to_customer_id)bill_to_customer_id,
110 max(inner_query.order_ref_number) order_ref_number,
111 max(inner_query.invoice_currency_code) invoice_currency_code,
112 max(FII_AR_TRAN_NUM) FII_AR_TRAN_NUM,
113 max(FII_AR_TRAN_CLASS) FII_AR_TRAN_CLASS,
114 max(inner_query.org_id) org_id,
115 max(FII_AR_TRAN_DATE) FII_AR_TRAN_DATE,
116 max(FII_AR_GL_DATE) FII_AR_GL_DATE,
117 max(FII_AR_FIRST_DUE_DATE) FII_AR_FIRST_DUE_DATE,
118 max(inner_query.invoice_currency_code) || '' '' || to_char(sum(FII_AR_TRAN_AMT),''999,999,999,999'') FII_AR_TRAN_AMT,
119 sum(FII_AR_ORIG_AMT) FII_AR_ORIG_AMT,
120 SUM(fII_AR_PAID_AMT) FII_AR_PAID_AMT,
121 sum(FII_AR_ADJUST_AMT) FII_AR_ADJUST_AMT,
122 sum(FII_AR_BALANCE_AMT) FII_AR_BALANCE_AMT,
123 sum(FII_AR_DISC_TAKEN_AMT) FII_AR_DISC_TAKEN_AMT,
124 max(inner_query.invoice_currency_code) FII_AR_TRAN_CURR
125 FROM
126 (
127 SELECT
128 f.customer_trx_id, f.org_id, f.cust_trx_type_id, f.term_id, f.batch_source_id, f.bill_to_customer_id,
129 f.invoice_currency_code,
130 f.order_ref_number order_ref_number,
131 f.transaction_number FII_AR_TRAN_NUM,
132 f.class FII_AR_TRAN_CLASS,
133 f.TRX_DATE FII_AR_TRAN_DATE,
134 f.GL_DATE FII_AR_GL_DATE,
135 min(f.DUE_DATE) FII_AR_FIRST_DUE_DATE,
136 sum(f.amount_due_original_trx) FII_AR_TRAN_AMT,
137 sum(f.amount_due_original' || l_col_curr_suffix || ') FII_AR_ORIG_AMT,
138 sum(h.amount_applied_trx' || l_col_curr_suffix || ') FII_AR_PAID_AMT,
139 NULL FII_AR_ADJUST_AMT,
140 NULL FII_AR_BALANCE_AMT,
141 sum(f.earned_discount_amount' || l_col_curr_suffix || ') + sum(f.unearned_discount_amount' || l_col_curr_suffix || ') FII_AR_DISC_TAKEN_AMT
142 FROM
143 fii_ar_pmt_schedules_f f,
144 (select h1.applied_customer_trx_id, sum(h1.amount_applied_trx_prim) amount_applied_trx_prim,
145 sum(h1.amount_applied_trx_sec) amount_applied_trx_sec
146 from fii_ar_receipts_f h1
147 where h1.cash_receipt_id = :CASH_RECEIPT_ID
148 and h1.application_status = ''APP''
149 and h1.filter_date <= :ASOF_DATE
150 and h1.applied_customer_trx_id IS NOT NULL
151 group by h1.applied_customer_trx_id) h
152 WHERE
153 f.customer_trx_id = h.applied_customer_trx_id
154 AND f.filter_date <= :ASOF_DATE
155 GROUP BY f.customer_trx_id, f.order_ref_number, f.bill_to_customer_id, f.transaction_number, f.class, f.org_id,
156 f.cust_trx_type_id, f.TRX_DATE, f.GL_DATE, f.invoice_currency_code, f.term_id, f.batch_source_id
157 UNION ALL
158 SELECT
159 f.customer_trx_id, f.org_id, f.cust_trx_type_id, f.term_id, f.batch_source_id, f.bill_to_customer_id,
160 f.invoice_currency_code,
161 f.order_ref_number order_ref_number,
162 f.transaction_number FII_AR_TRAN_NUM,
163 f.class FII_AR_TRAN_CLASS,
164 f.TRX_DATE FII_AR_TRAN_DATE,
165 f.GL_DATE FII_AR_GL_DATE,
166 min(f.DUE_DATE) FII_AR_FIRST_DUE_DATE,
167 sum(f.amount_due_original_trx) FII_AR_TRAN_AMT,
168 sum(f.amount_due_original' || l_col_curr_suffix || ') FII_AR_ORIG_AMT,
169 sum(h.amount_applied_trx' || l_col_curr_suffix || ') FII_AR_PAID_AMT,
170 NULL FII_AR_ADJUST_AMT,
171 NULL FII_AR_BALANCE_AMT,
172 sum(f.earned_discount_amount' || l_col_curr_suffix || ') + sum(f.unearned_discount_amount' || l_col_curr_suffix || ') FII_AR_DISC_TAKEN_AMT
173 FROM
174 fii_ar_pmt_schedules_f f,
175 (select h1.payment_schedule_id, sum(h1.amount_applied_trx_prim) amount_applied_trx_prim,
176 sum(h1.amount_applied_trx_sec) amount_applied_trx_sec
177 from fii_ar_receipts_f h1
178 where h1.cash_receipt_id = :CASH_RECEIPT_ID
179 and h1.application_status = ''APP''
180 and h1.filter_date <= :ASOF_DATE
181 and h1.applied_customer_trx_id IS NULL
182 group by h1.payment_schedule_id) h
183 WHERE
184 f.payment_schedule_id = h.payment_schedule_id
185 AND f.filter_date <= :ASOF_DATE
186 GROUP BY f.customer_trx_id, f.order_ref_number, f.bill_to_customer_id, f.transaction_number, f.class, f.org_id,
187 f.cust_trx_type_id, f.TRX_DATE, f.GL_DATE, f.invoice_currency_code, f.term_id, f.batch_source_id
188 UNION ALL
189 SELECT
190 f.customer_trx_id, NULL org_id, NULL cust_trx_type_id, NULL term_id, NULL batch_source_id, NULL bill_to_customer_id,
191 NULL invoice_currency_code,
192 NULL order_ref_number,
193 NULL FII_AR_TRAN_NUM,
194 NULL FII_AR_TRAN_CLASS,
195 NULL FII_AR_TRAN_DATE,
196 NULL FII_AR_GL_DATE,
197 NULL FII_AR_FIRST_DUE_DATE,
198 NULL FII_AR_TRAN_AMT,
199 NULL FII_AR_ORIG_AMT,
200 NULL FII_AR_PAID_AMT,
201 decode(ag.adjustment_id, NULL, NULL, sum(ag.current_bucket_1_amount' || l_col_curr_suffix || ')
202 + sum(ag.current_bucket_2_amount' || l_col_curr_suffix || ')
203 + sum(ag.current_bucket_3_amount' || l_col_curr_suffix || ')
204 + sum(ag.past_due_bucket_1_amount' || l_col_curr_suffix || ')
205 + sum(ag.past_due_bucket_2_amount' || l_col_curr_suffix || ')
206 + sum(ag.past_due_bucket_3_amount' || l_col_curr_suffix || ')
207 + sum(ag.past_due_bucket_4_amount' || l_col_curr_suffix || ')
208 + sum(ag.past_due_bucket_5_amount' || l_col_curr_suffix || ')
209 + sum(ag.past_due_bucket_6_amount' || l_col_curr_suffix || ')
210 + sum(ag.past_due_bucket_7_amount' || l_col_curr_suffix || ')) FII_AR_ADJUST_AMT,
211 decode(f.class, ''CM'', sum(ag.on_acct_credit_amount' || l_col_curr_suffix || '),
212 sum(ag.current_bucket_1_amount' || l_col_curr_suffix || '
213 + ag.current_bucket_2_amount' || l_col_curr_suffix || '
214 + ag.current_bucket_3_amount' || l_col_curr_suffix || '
215 + ag.past_due_bucket_1_amount' || l_col_curr_suffix || '
216 + ag.past_due_bucket_2_amount' || l_col_curr_suffix || '
217 + ag.past_due_bucket_3_amount' || l_col_curr_suffix || '
218 + ag.past_due_bucket_4_amount' || l_col_curr_suffix || '
219 + ag.past_due_bucket_5_amount' || l_col_curr_suffix || '
220 + ag.past_due_bucket_6_amount' || l_col_curr_suffix || '
221 + ag.past_due_bucket_7_amount' || l_col_curr_suffix || ')) FII_AR_BALANCE_AMT,
222 NULL FII_AR_DISC_TAKEN_AMT
223 FROM
224 fii_ar_pmt_schedules_f f,
225 fii_ar_aging_receivables ag,
226 (select h1.applied_customer_trx_id
227 from fii_ar_receipts_f h1
228 where h1.cash_receipt_id = :CASH_RECEIPT_ID
229 and h1.application_status = ''APP''
230 and h1.filter_date <= :ASOF_DATE
231 and h1.applied_customer_trx_id IS NOT NULL
232 group by h1.applied_customer_trx_id) h
233
234 WHERE
235 f.customer_trx_id = h.applied_customer_trx_id
236 AND ag.event_date <= :ASOF_DATE
237 AND f.payment_schedule_id = ag.payment_schedule_id
238 AND f.filter_date <= :ASOF_DATE
239 GROUP BY f.customer_trx_id, ag.adjustment_id, f.class
240 UNION ALL
241 SELECT
242 f.customer_trx_id, NULL org_id, NULL cust_trx_type_id, NULL term_id, NULL batch_source_id, NULL bill_to_customer_id,
243 NULL invoice_currency_code,
244 NULL order_ref_number,
245 NULL FII_AR_TRAN_NUM,
246 NULL FII_AR_TRAN_CLASS,
247 NULL FII_AR_TRAN_DATE,
248 NULL FII_AR_GL_DATE,
249 NULL FII_AR_FIRST_DUE_DATE,
250 NULL FII_AR_TRAN_AMT,
251 NULL FII_AR_ORIG_AMT,
252 NULL FII_AR_PAID_AMT,
253 decode(ag.adjustment_id, NULL, NULL, sum(ag.current_bucket_1_amount' || l_col_curr_suffix || ')
254 + sum(ag.current_bucket_2_amount' || l_col_curr_suffix || ')
255 + sum(ag.current_bucket_3_amount' || l_col_curr_suffix || ')
256 + sum(ag.past_due_bucket_1_amount' || l_col_curr_suffix || ')
257 + sum(ag.past_due_bucket_2_amount' || l_col_curr_suffix || ')
258 + sum(ag.past_due_bucket_3_amount' || l_col_curr_suffix || ')
259 + sum(ag.past_due_bucket_4_amount' || l_col_curr_suffix || ')
260 + sum(ag.past_due_bucket_5_amount' || l_col_curr_suffix || ')
261 + sum(ag.past_due_bucket_6_amount' || l_col_curr_suffix || ')
262 + sum(ag.past_due_bucket_7_amount' || l_col_curr_suffix || ')) FII_AR_ADJUST_AMT,
263 decode(f.class, ''CM'', sum(ag.on_acct_credit_amount' || l_col_curr_suffix || '),
264 sum(ag.current_bucket_1_amount' || l_col_curr_suffix || '
265 + ag.current_bucket_2_amount' || l_col_curr_suffix || '
266 + ag.current_bucket_3_amount' || l_col_curr_suffix || '
267 + ag.past_due_bucket_1_amount' || l_col_curr_suffix || '
268 + ag.past_due_bucket_2_amount' || l_col_curr_suffix || '
269 + ag.past_due_bucket_3_amount' || l_col_curr_suffix || '
270 + ag.past_due_bucket_4_amount' || l_col_curr_suffix || '
271 + ag.past_due_bucket_5_amount' || l_col_curr_suffix || '
272 + ag.past_due_bucket_6_amount' || l_col_curr_suffix || '
273 + ag.past_due_bucket_7_amount' || l_col_curr_suffix || ')) FII_AR_BALANCE_AMT,
274 NULL FII_AR_DISC_TAKEN_AMT
275 FROM
276 fii_ar_pmt_schedules_f f,
277 fii_ar_aging_receivables ag,
278 (select h1.payment_schedule_id
279 from fii_ar_receipts_f h1
280 where h1.cash_receipt_id = :CASH_RECEIPT_ID
281 and h1.application_status = ''APP''
282 and h1.filter_date <= :ASOF_DATE
283 and h1.applied_customer_trx_id IS NULL
284 group by h1.payment_schedule_id) h
285 WHERE
286 f.payment_schedule_id = h.payment_schedule_id
287 AND ag.event_date <= :ASOF_DATE
288 AND f.payment_schedule_id = ag.payment_schedule_id
289 AND f.filter_date <= :ASOF_DATE
290 GROUP BY f.customer_trx_id, ag.adjustment_id, f.class
291 ) inner_query
292 GROUP BY inner_query.customer_trx_id
293 )outer_inner_query,
294 ar_lookups lk,
295 ra_cust_trx_types_all ractt,
296 ra_terms_tl ratt,
297 ra_batch_sources_all rabs,
298 hz_cust_accounts hzca
299 WHERE
300 outer_inner_query.FII_AR_TRAN_CLASS = lk.lookup_code
301 AND lk.lookup_type= ''INV/CM/ADJ''
302 AND outer_inner_query.cust_trx_type_id = ractt.cust_trx_type_id(+)
303 AND outer_inner_query.FII_AR_TRAN_CLASS = ractt.type(+)
304 AND outer_inner_query.org_id = ractt.org_id(+)
305 AND outer_inner_query.term_id = ratt.term_id(+)
306 AND ratt.language(+) = USERENV(''LANG'')
307 AND outer_inner_query.batch_source_id = rabs.batch_source_id(+)
308 AND outer_inner_query.org_id = rabs.org_id(+)
309 AND outer_inner_query.bill_to_customer_id = hzca.cust_account_id
310 ' || l_order_by;
311
312 -- Calling the bind_variable API
313 fii_ar_util_pkg.bind_variable(
314 p_sqlstmt => sqlstmt,
315 p_page_parameter_tbl => p_page_parameter_tbl,
316 p_sql_output => p_paid_rec_dtl_sql,
317 p_bind_output_table => p_paid_rec_dtl_output
318 );
319
320 END get_paid_rec_dtl;
321
322 END fii_ar_paid_rec_dtl_pkg;
323