[Home] [Help]
PACKAGE BODY: APPS.FII_AR_OPEN_REC_PDUE
Source
1 PACKAGE BODY FII_AR_OPEN_REC_PDUE AS
2 /* $Header: FIIARDBIPDB.pls 120.15 2007/05/15 20:51:17 vkazhipu ship $ */
3
4
5
6 PROCEDURE get_rec_pdue (
7 p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL,
8 open_rec_sql OUT NOCOPY VARCHAR2,
9 open_rec_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
10 IS
11
12 l_party_where VARCHAR2(250);
13 l_parent_party_where VARCHAR2(250);
14 l_collector_where VARCHAR2(250);
15 l_cust_acct_where VARCHAR2(250);
16 l_cust_self_drill VARCHAR2(500);
17 l_past_due_rec_drill VARCHAR2(500);
18 l_open_rec_drill VARCHAR2(500);
19 l_select VARCHAR2(10000);
20 l_group_by VARCHAR2(100) := NULL;
21 l_order_by VARCHAR2(250);
22 l_order_column VARCHAR2(250);
23 l_self VARCHAR2(25);
24 l_party_select VARCHAR2(50);
25 l_party_groupby VARCHAR2(50);
26 l_gt_hint varchar2(500);
27 BEGIN
28
29 fii_ar_util_pkg.reset_globals;
30 fii_ar_util_pkg.get_parameters(p_page_parameter_tbl);
31 fii_ar_util_pkg.populate_summary_gt_tables;
32
33
34
35 l_gt_hint := ' leading(gt) cardinality(gt 1) ';
36
37 /* Dynamically generating the where clause for PARTY_ID*/
38 IF (fii_ar_util_pkg.g_party_id <> '-111' OR
39 fii_ar_util_pkg.g_view_by = 'CUSTOMER+FII_CUSTOMERS') THEN
40 l_party_where := ' AND f.party_id = t.party_id ';
41 END IF;
42
43 /* Dynamically generating the where clause for PARENT_PARTY_ID */
44 IF(fii_ar_util_pkg.g_view_by = 'CUSTOMER+FII_CUSTOMERS') THEN
45 l_parent_party_where := 'AND f.parent_party_id = t.parent_party_id ';
46 END IF;
47
48 /* Dynamically generating the where clause for COLLECTOR_ID*/
49 IF (fii_ar_util_pkg.g_collector_id <> '-111' OR
50 fii_ar_util_pkg.g_view_by = 'FII_COLLECTOR+FII_COLLECTOR') THEN
51 l_collector_where := 'AND f.collector_id = t.collector_id ';
52 END IF;
53
54 l_party_select := ' ';
55 l_party_groupby := ' ';
56
57 /* Drills */
58 IF (fii_ar_util_pkg.g_view_by = 'CUSTOMER+FII_CUSTOMERS' AND fii_ar_util_pkg.g_is_hierarchical_flag='Y') THEN
59
60 l_self := ' t.is_self_flag,';
61
62 l_past_due_rec_drill:=
63 ' DECODE(FII_AR_PDUE_REC,0,'''',DECODE(inline_view.is_self_flag, ''Y'',''pFunctionName=FII_AR_PDUE_REC_DTL&pParamIds=Y&VIEW_BY_NAME=VIEW_BY_ID'',DECODE(inline_view.is_leaf_flag, ''Y'' ,
64 ''pFunctionName=FII_AR_PDUE_REC_DTL&pParamIds=Y&VIEW_BY_NAME=VIEW_BY_ID'', ''pFunctionName=FII_AR_OPEN_REC_PDUE&VIEW_BY_NAME=VIEW_BY_ID
65 &VIEW_BY=CUSTOMER+FII_CUSTOMER_ACCOUNTS&pParamIds=Y''))) ';
66
67 l_open_rec_drill :=
68 ' DECODE(FII_AR_OPEN_REC,0,'''',DECODE(inline_view.is_self_flag, ''Y'',''pFunctionName=FII_AR_OPEN_REC_DTL&pParamIds=Y&VIEW_BY_NAME=VIEW_BY_ID'',DECODE(inline_view.is_leaf_flag, ''Y'' ,
69 ''pFunctionName=FII_AR_OPEN_REC_DTL&pParamIds=Y&VIEW_BY_NAME=VIEW_BY_ID'', ''pFunctionName=FII_AR_OPEN_REC_SUMMARY&VIEW_BY_NAME=VIEW_BY_ID
70 &VIEW_BY=CUSTOMER+FII_CUSTOMER_ACCOUNTS&pParamIds=Y''))) ';
71
72 /* Drills to children on Customer dimension */
73 l_cust_self_drill :=' DECODE(inline_view.is_self_flag,''Y'','''', DECODE(inline_view.is_leaf_flag, ''Y'','''',''pFunctionName=FII_AR_OPEN_REC_PDUE&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=VIEW_BY&pParamIds=Y'')) ';
74
75 l_group_by := ' inline_view.is_self_flag,inline_view.viewby,inline_view.is_leaf_flag,inline_view.viewby_id ';
76
77 ELSIF (fii_ar_util_pkg.g_view_by= 'FII_COLLECTOR+FII_COLLECTOR'
78 OR fii_ar_util_pkg.g_view_by = 'ORGANIZATION+FII_OPERATING_UNITS' ) THEN
79 IF (fii_ar_util_pkg.g_party_id <> '-111') THEN
80 /* Calls Open Receivables: Percent Past Due - View by Customer Account*/
81 l_past_due_rec_drill := ' DECODE(FII_AR_PDUE_REC,0,'''',''pFunctionName=FII_AR_OPEN_REC_PDUE&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=CUSTOMER+FII_CUSTOMER_ACCOUNTS&pParamIds=Y'') ';
82
83 /* Calls Open Receivables Summary - View by Customer Account*/
84 l_open_rec_drill := ' DECODE(FII_AR_OPEN_REC,0,'''',''pFunctionName=FII_AR_OPEN_REC_SUMMARY&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=CUSTOMER+FII_CUSTOMER_ACCOUNTS&pParamIds=Y'') ';
85 ELSE
86 /* Calls Open Receivables: Percent Past Due - View by Customer*/
87 l_past_due_rec_drill := ' DECODE(FII_AR_PDUE_REC,0,'''',''pFunctionName=FII_AR_OPEN_REC_PDUE&VIEW_BY_NAME=VIEW_BY_ID&pParamIds=Y'') ';
88
89 /* Calls Open Receivables Summary - View by Customer*/
90 l_open_rec_drill := ' DECODE(FII_AR_OPEN_REC,0,'''',''pFunctionName=FII_AR_OPEN_REC_SUMMARY&VIEW_BY_NAME=VIEW_BY_ID&pParamIds=Y'') ';
91
92
93 END IF;
94 l_cust_self_drill := ''' ''';
95 l_group_by := 'inline_view.viewby, inline_view.viewby_id ';
96
97 ELSIF (fii_ar_util_pkg.g_view_by = 'CUSTOMER+FII_CUSTOMER_ACCOUNTS') THEN
98 l_gt_hint := ' leading(gt.gt) cardinality(gt.gt 1) ';
99 l_party_select := ' t.party_id party_id, ';
100 l_party_groupby := ',t.party_id ';
101
102 /* Dynamically generating the where clause for Customer Account */
103 l_cust_acct_where := 'AND f.cust_account_id = t.cust_account_id';
104
105 /* Calls Past Due Receivales Detail report */
106 l_past_due_rec_drill := '
107 DECODE(FII_AR_PDUE_REC,0,'''',''pFunctionName=FII_AR_PDUE_REC_DTL&BIS_PMV_DRILL_CODE_CUSTOMER+FII_CUSTOMERS=''||party_id||''&FII_AR_CUST_ACCOUNT=VIEWBYID&pParamIds=Y'') ';
108
109 /* Calls Open Receivables Detail report */
110 l_open_rec_drill := '
111 DECODE(FII_AR_OPEN_REC,0,'''',''pFunctionName=FII_AR_OPEN_REC_DTL&BIS_PMV_DRILL_CODE_CUSTOMER+FII_CUSTOMERS=''||party_id||''&FII_AR_CUST_ACCOUNT=VIEWBYID&pParamIds=Y'') ';
112
113 l_cust_self_drill := ''' ''';
114
115 l_group_by := 'inline_view.viewby,
116 inline_view.viewby_id,inline_view.party_id ';
117
118 ELSE
119
120 /* Calls Past Due Receivales Detail report */
121 l_past_due_rec_drill := ' DECODE(FII_AR_PDUE_REC,0,'''',''pFunctionName=FII_AR_PDUE_REC_DTL&FII_AR_CUST_ACCOUNT=VIEWBYID&pParamIds=Y'') ';
122
123 /* Calls Open Receivables Detail report */
124 l_open_rec_drill := ' DECODE(FII_AR_OPEN_REC,0,'''',''pFunctionName=FII_AR_OPEN_REC_DTL&FII_AR_CUST_ACCOUNT=VIEWBYID&pParamIds=Y'') ';
125 l_cust_self_drill := ''' ''';
126
127 l_group_by := 'inline_view.viewby, inline_view.viewby_id ';
128 END IF;
129
130
131 IF INSTR(fii_ar_util_pkg.g_order_by,',') <> 0 THEN
132 l_order_by := 'ORDER BY NVL(FII_AR_PERC_OPEN_REC, -999999999) DESC';
133
134 ELSIF instr(fii_ar_util_pkg.g_order_by, ' DESC') <> 0 THEN
135 l_order_column := substr(fii_ar_util_pkg.g_order_by,1,instr(fii_ar_util_pkg.g_order_by, ' DESC'));
136 l_order_by := 'ORDER BY NVL('|| l_order_column ||', -999999999) DESC';
137 ELSE
138 l_order_by := '&ORDER_BY_CLAUSE';
139 END IF;
140
141
142 l_select :=
143 ' SELECT inline_view.viewby viewby,
144 viewby_id VIEWBYID,
145 (FII_AR_PRIOR_PDUE_REC/NULLIF(abs(FII_AR_PRIOR_OPEN_REC),0))*100 FII_AR_PERC_PRIOR_OPEN_REC,
146 (FII_AR_PDUE_REC/NULLIF(abs(FII_AR_OPEN_REC),0))*100 FII_AR_PERC_OPEN_REC_G,
147 (FII_AR_PDUE_REC/NULLIF(abs(FII_AR_OPEN_REC),0))*100 FII_AR_PERC_OPEN_REC,
148 FII_AR_PDUE_REC,
149 FII_AR_OPEN_REC,
150 FII_AR_PRIOR_PDUE_REC,
151 FII_AR_PRIOR_OPEN_REC,
152 '||l_open_rec_drill||' FII_AR_OPEN_REC_DRILL,
153 '||l_past_due_rec_drill||' FII_AR_PDUE_REC_DRILL,
154 '||l_cust_self_drill||' FII_AR_CUST_SELF_DRILL,
155 SUM(FII_AR_PDUE_REC) over() FII_AR_PDUE_REC_GT,
156 SUM(FII_AR_OPEN_REC) over() FII_AR_OPEN_REC_GT,
157 CASE WHEN SUM(FII_AR_OPEN_REC) over() = 0 THEN NULL
158 ELSE (SUM(FII_AR_PDUE_REC) over()/SUM(FII_AR_OPEN_REC) over()) *100 END FII_AR_PERC_OPEN_REC_GT
159 FROM (
160 SELECT /*+ INDEX(f FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv_N1)*/
161 t.is_leaf_flag,
162 '||l_self||'
163 t.viewby viewby,
164 viewby_code viewby_id ,
165 '||l_party_select||'
166 SUM(DECODE(t.report_date, :ASOF_DATE , past_due_open_amount , NULL ) ) FII_AR_PDUE_REC,
167 SUM(DECODE(t.report_date, :ASOF_DATE, total_open_amount, NULL ) ) FII_AR_OPEN_REC,
168 SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE, past_due_open_amount, NULL ) ) FII_AR_PRIOR_PDUE_REC,
169 SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE, total_open_amount, NULL ) ) FII_AR_PRIOR_OPEN_REC
170 FROM FII_AR_NET_REC'||fii_ar_util_pkg.g_cust_suffix ||'_mv'|| fii_ar_util_pkg.g_curr_suffix ||' f,
171 ( SELECT /*+ no_merge '||l_gt_hint|| ' */ *
172 FROM fii_time_structures cal, '||fii_ar_util_pkg.get_from_statement||' gt
173 WHERE report_date in (:ASOF_DATE, :PREVIOUS_ASOF_DATE)
174 AND bitand(cal.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
175 AND ' ||fii_ar_util_pkg.get_where_statement||' ) t
176 WHERE f.time_id = t.time_id
177 AND f.period_type_id = t.period_type_id
178 AND f.org_id = t.org_id
179 AND '||fii_ar_util_pkg.get_mv_where_statement||' '||l_parent_party_where||l_party_where||l_collector_where|| l_cust_acct_where||'
180 GROUP BY '||l_self||' t.is_leaf_flag, t.viewby, viewby_code'||l_party_groupby||') inline_view
181 GROUP BY '||l_group_by||', FII_AR_OPEN_REC,FII_AR_PDUE_REC, FII_AR_PRIOR_OPEN_REC, FII_AR_PRIOR_PDUE_REC
182 '||l_order_by||' ';
183
184 fii_ar_util_pkg.bind_variable(l_select, p_page_parameter_tbl, open_rec_sql, open_rec_output);
185
186 END get_rec_pdue;
187
188 END FII_AR_OPEN_REC_PDUE;
189