[Home] [Help]
PACKAGE BODY: APPS.FII_PSI_JE_DTL_PKG
Source
1 PACKAGE BODY FII_PSI_JE_DTL_PKG AS
2 /* $Header: FIIPSIJEDTLB.pls 120.9 2006/08/22 07:35:00 wywong noship $ */
3
4
5 g_carryfwd_msg VARCHAR2(240) := fnd_message.get_string('FII','FII_PSI_CARRYFWD');
6
7 PROCEDURE GET_ENCUM_JRNL (
8 p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL,
9 jrnl_dtl_sql OUT NOCOPY VARCHAR2,
10 jrnl_dtl_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
11 IS
12 sqlstmt VARCHAR2(14000);
13 l_company_where VARCHAR2(1000); -- To store company id dynamic where clause
14 l_cost_center_where VARCHAR2(1000); -- To store cost center dynamic where clause
15 l_fud1_where VARCHAR2(1000); -- To store user dim 1 dynamic where clause
16 l_fud2_where VARCHAR2(1000); -- To store user dim 2 dynamic where clause
17 l_category_where VARCHAR2(1000); -- To store category dynamic where clause
18 l_enc_category_where VARCHAR2(1000); -- To store category dynamic where clause
19
20
21 BEGIN
22
23 FII_EA_UTIL_PKG.reset_globals;
24 FII_EA_UTIL_PKG.get_parameters(p_page_parameter_tbl=>p_page_parameter_tbl);
25
26 /* Preparing Dynamic where clauses for PMV sql */
27
28 l_category_where := ' AND f.natural_account_id = &FINANCIAL ITEM+GL_FII_FIN_ITEM ';
29 l_enc_category_where := ' AND f.fin_category_id = &FINANCIAL ITEM+GL_FII_FIN_ITEM ';
30 l_company_where := ' f.company_id = &FII_COMPANIES+FII_COMPANIES ';
31 l_cost_center_where := ' AND f.cost_center_id = &ORGANIZATION+HRI_CL_ORGCC ';
32
33 l_fud1_where := REPLACE(fii_ea_util_pkg.get_fud1_for_detail, 'fud1_id', 'user_dim1_id');
34 l_fud2_where := REPLACE(fii_ea_util_pkg.get_fud2_for_detail, 'fud2_id', 'user_dim2_id');
35
36 SELECT report_date_julian INTO fii_ea_util_pkg.g_curr_per_start_id
37 FROM fii_time_day
38 WHERE report_date = fii_ea_util_pkg.g_curr_per_start;
39
40 SELECT report_date_julian INTO fii_ea_util_pkg.g_as_of_date_id
41 FROM fii_time_day
42 WHERE report_date = fii_ea_util_pkg.g_as_of_date;
43
44 /* For a Purchase Order, gl_je_lines.reference_2 and gl_je_lines.reference_4 store po_header_id and po_number respectively.
45 We join between gl_je_lines and po_distributions_all on po_header_id to fetch po_release_id (to be passed in PO drill).
46 While joining, we are using outer join since all encumbrance entries may not come through PO. */
47
48 /* Bug 4586540. Since jln.reference_2 can also have alphanumeric values, using TO_NUMBER directly was leading to
49 'invalid number' error due to failure of TO_NUMBER function to convert alphanumeric values to numbers. So perf
50 team suggested to use TRANSLATE and TO_NUMBER functions together. */
51
52 /* PMV SQL */
53
54 sqlstmt :=
55 ' SELECT
56 inline_view.FII_PSI_JOURNAL_NAME FII_PSI_JOURNAL_NAME,
57 inline_view.FII_PSI_CURRENCY FII_PSI_CURRENCY,
58 inline_view.FII_PSI_ENTERED_AMOUNT FII_PSI_ENTERED_AMOUNT,
59 inline_view.FII_PSI_NET_AMOUNT FII_PSI_NET_AMOUNT,
60 inline_view.FII_PSI_JOURNAL_DATE FII_PSI_JOURNAL_DATE,
61 inline_view.FII_PSI_DOC_NUMBER FII_PSI_DOC_NUMBER,
62 inline_view.FII_PSI_CATEGORY FII_PSI_CATEGORY,
63 inline_view.FII_PSI_DESCRIPTION FII_PSI_DESCRIPTION,
64 inline_view.FII_PSI_SOURCE FII_PSI_SOURCE,
65 inline_view.FII_PSI_GT_NET_AMOUNT FII_PSI_GT_NET_AMOUNT,
66 DECODE(inline_view.FII_PSI_CATEGORY, ''Purchases'', DECODE(inline_view.FII_PSI_DOC_NUMBER,NULL,'''',
67 ''pFunctionName=FII_EA_POA_DRILL&PoHeaderId='' || PO_HEADER_ID ||
68 ''&PoReleaseId='' || PO_RELEASE_ID || ''&addBreadCrumb=Y&retainAM=Y'')) FII_PSI_DOC_NUMBER_DRILL
69 FROM
70 (SELECT
71 f.name FII_PSI_JOURNAL_NAME,
72 f.currency_code FII_PSI_CURRENCY,
73 SUM(NVL(jln.entered_cr, 0) - NVL(jln.entered_dr, 0))*-1 FII_PSI_ENTERED_AMOUNT,
74 SUM(NVL(jln.accounted_cr, 0) - NVL(jln.accounted_dr, 0))*-1 FII_PSI_NET_AMOUNT,
75 jln.effective_date FII_PSI_JOURNAL_DATE,
76 jln.reference_4 FII_PSI_DOC_NUMBER,
77 f.je_category FII_PSI_CATEGORY,
78 f.description FII_PSI_DESCRIPTION,
79 jes.user_je_source_name FII_PSI_SOURCE,
80 DECODE(LENGTH(TRANSLATE(jln.reference_2,''0''||TRANSLATE(jln.reference_2,''a0123456789'',''a''),''0''))
81 -LENGTH(jln.reference_2),
82 0, TO_NUMBER(jln.reference_2),
83 NULL) PO_HEADER_ID,
84 NULL PO_RELEASE_ID,
85 (SUM(SUM(NVL(jln.accounted_cr, 0) -NVL(jln.accounted_dr,0))) OVER()) *-1 FII_PSI_GT_NET_AMOUNT
86 FROM gl_je_headers f,
87 gl_je_lines jln,
88 fii_gl_processed_header_ids fgl,
89 gl_je_sources_tl jes
90 WHERE f.je_header_id = fgl.je_header_id
91 AND f.je_header_id = jln.je_header_id
92 AND f.je_source = jes.je_source_name
93 AND f.actual_flag = ''E''
94 AND jes.language = userenv(''LANG'')
95 AND jln.effective_date BETWEEN :CURR_PERIOD_START AND :ASOF_DATE
96 AND jln.code_combination_id IN ( SELECT f.code_combination_id
97 FROM fii_gl_ccid_dimensions f
98 WHERE '||l_company_where||'
99 '||l_cost_center_where||'
100 '||l_category_where||'
101 '||l_fud1_where||'
102 '||l_fud2_where||'
103 )
104 GROUP BY f.je_header_id, f.name, jln.effective_date, jln.reference_4, f.currency_code,
105 f.je_category, f.description, jes.user_je_source_name, jln.reference_2
106
107 UNION ALL
108
109 SELECT '''||g_carryfwd_msg||''' FII_PSI_JOURNAL_NAME,
110 functional_currency FII_PSI_CURRENCY,
111 SUM(NVL(obligated_amount_prim, 0) + NVL(committed_amount_prim, 0)+ NVL(other_amount_prim, 0))*-1 FII_PSI_ENTERED_AMOUNT,
112 SUM(NVL(obligated_amount_prim, 0) + NVL(committed_amount_prim, 0)+ NVL(other_amount_prim, 0))*-1 FII_PSI_NET_AMOUNT,
113 posted_date FII_PSI_JOURNAL_DATE,
114 NULL FII_PSI_DOC_NUMBER,
115 NULL FII_PSI_CATEGORY,
116 '''||g_carryfwd_msg||''' FII_PSI_DESCRIPTION,
117 NULL FII_PSI_SOURCE,
118 NULL PO_HEADER_ID,
119 NULL PO_RELEASE_ID,
120 (SUM(SUM(NVL(obligated_amount_prim, 0) + NVL(committed_amount_prim, 0)+ NVL(other_amount_prim, 0))) OVER())*-1 FII_PSI_GT_NET_AMOUNT
121
122 FROM fii_gl_enc_carryfwd_f f
123
124 WHERE '||l_company_where||l_cost_center_where||l_enc_category_where||l_fud1_where||l_fud2_where||'
125 AND f.time_id between :CURR_PERIOD_START_ID AND :ASOF_DATE_ID
126 GROUP BY functional_currency,posted_date ) inline_view
127
128 ORDER BY FII_PSI_JOURNAL_DATE DESC';
129
130
131 -- Attach bind parameters
132
133 FII_EA_UTIL_PKG.bind_variable(
134 p_sqlstmt=>sqlstmt,
135 p_page_parameter_tbl=>p_page_parameter_tbl,
136 p_sql_output=>jrnl_dtl_sql,
137 p_bind_output_table=>jrnl_dtl_output);
138
139 END GET_ENCUM_JRNL;
140
141 --***********************************--
142
143 /* Code for Budget Journal Entry Details Report */
144
145 PROCEDURE GET_BUDGET_JRNL (
146 p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL,
147 jrnl_dtl_sql OUT NOCOPY VARCHAR2,
148 jrnl_dtl_output OUT NOCOPY BIS_QUERY_ATTRIBUTES_TBL)
149 IS
150 l_prim_global_curr VARCHAR2(20);
151 l_sec_global_curr VARCHAR2(20);
152 sqlstmt VARCHAR2(14000);
153 l_ledger_where VARCHAR2(1000);
154 l_company_where VARCHAR2(1000); -- To store company id dynamic where clause
155 l_cost_center_where VARCHAR2(1000); -- To store cost center dynamic where clause
156 l_fud1_where VARCHAR2(1000); -- To store user dim 1 dynamic where clause
157 l_fud2_where VARCHAR2(1000); -- To store user dim 2 dynamic where clause
158 l_category_where VARCHAR2(1000); -- To store category dynamic where clause
159
160 l_industry_profile VARCHAR2(1);
161 l_budget_source VARCHAR2(15);
162 l_currency_where VARCHAR2(1000) := NULL;
163
164 BEGIN
165
166 FII_EA_UTIL_PKG.reset_globals;
167 FII_EA_UTIL_PKG.get_parameters(p_page_parameter_tbl=>p_page_parameter_tbl);
168
169 /* Preparing Dynamic where clauses for PMV sql */
170
171 l_category_where := ' AND f.natural_account_id = &FINANCIAL ITEM+GL_FII_FIN_ITEM ';
172 l_company_where := ' f.company_id = &FII_COMPANIES+FII_COMPANIES ';
173 l_cost_center_where := ' AND f.cost_center_id = &ORGANIZATION+HRI_CL_ORGCC ';
174
175 l_fud1_where := REPLACE(fii_ea_util_pkg.get_fud1_for_detail, 'fud1_id', 'user_dim1_id');
176 l_fud2_where := REPLACE(fii_ea_util_pkg.get_fud2_for_detail, 'fud2_id', 'user_dim2_id');
177
178 l_prim_global_curr := BIS_COMMON_PARAMETERS.get_currency_code;
179 l_sec_global_curr := BIS_COMMON_PARAMETERS.get_secondary_currency_code;
180
181 /* Bugfix 5470346
182 - If industry = 'G', add: currency_code = primary currency
183 and currency code != 'STAT'
184 - If budget source = 'GL', add: currency_code in (primary, secondary currency)
185 and currency_code != 'STAT' */
186 -- Find out if this is commercial or government install
187 l_industry_profile := FND_PROFILE.value('INDUSTRY');
188
189 -- Find out the source of budget
190 l_budget_source := FND_PROFILE.value('FII_BUDGET_SOURCE');
191
192 -- Set currency where clause depends on industry and budget source profile
193 IF (l_industry_profile = 'G') THEN
194 l_currency_where := ' AND f.currency_code = '''||l_prim_global_curr||'''
195 AND f.currency_code != ''STAT''';
196 ELSIF (l_budget_source = 'GL') THEN
197 l_currency_where := ' AND f.currency_code IN ('''||l_prim_global_curr||''',
198 '''||l_sec_global_curr||''')
199 AND f.currency_code != ''STAT''';
200 END IF;
201
202 /* PMV SQL */
203 sqlstmt :=
204 ' SELECT
205 inline_view.FII_PSI_JOURNAL_NAME FII_PSI_JOURNAL_NAME,
206 inline_view.FII_PSI_CURRENCY FII_PSI_CURRENCY,
207 inline_view.FII_PSI_ENTERED_AMOUNT FII_PSI_ENTERED_AMOUNT,
208 inline_view.FII_PSI_LINE_AMOUNT FII_PSI_LINE_AMOUNT,
209 inline_view.FII_PSI_JOURNAL_DATE FII_PSI_JOURNAL_DATE,
210 inline_view.FII_PSI_DOC_NUMBER FII_PSI_DOC_NUMBER,
211 inline_view.FII_PSI_CATEGORY FII_PSI_CATEGORY,
212 inline_view.FII_PSI_DESCRIPTION FII_PSI_DESCRIPTION,
213 inline_view.FII_PSI_SOURCE FII_PSI_SOURCE,
214 inline_view.FII_PSI_GT_LINE_AMOUNT FII_PSI_GT_LINE_AMOUNT
215 FROM
216 (SELECT
217 f.name FII_PSI_JOURNAL_NAME,
218 f.currency_code FII_PSI_CURRENCY,
219 SUM(NVL(jln.entered_cr, 0) - NVL(jln.entered_dr, 0))*-1 FII_PSI_ENTERED_AMOUNT,
220 SUM(NVL(jln.accounted_cr, 0) - NVL(jln.accounted_dr, 0))*-1 FII_PSI_LINE_AMOUNT,
221 jln.effective_date FII_PSI_JOURNAL_DATE,
222 jln.reference_4 FII_PSI_DOC_NUMBER,
223 f.je_category FII_PSI_CATEGORY,
224 f.description FII_PSI_DESCRIPTION,
225 jes.user_je_source_name FII_PSI_SOURCE,
226 (SUM(SUM(NVL(jln.accounted_cr, 0) -NVL(jln.accounted_dr,0))) OVER())*-1 FII_PSI_GT_LINE_AMOUNT
227
228 FROM gl_je_headers f,
229 gl_je_lines jln,
230 gl_je_sources_tl jes,
231 gl_ledgers_public_v sob,
232 gl_periods per,
233 fii_slg_budget_asgns slba
234 WHERE f.je_header_id = jln.je_header_id
235 AND f.je_source = jes.je_source_name
236 AND f.actual_flag = ''B''
237 AND f.status = ''P''
238 AND sob.ledger_id = f.ledger_id
239 AND per.period_set_name = sob.period_set_name
240 AND f.posted_date between per.start_date and per.end_date
241 AND per.adjustment_period_flag = ''N''
242 AND per.period_type = sob.accounted_period_type
243 AND jes.language = userenv(''LANG'')
244 AND jln.effective_date BETWEEN :CURR_PERIOD_START AND :ASOF_DATE
245 AND f.budget_version_id = slba.budget_version_id '||l_currency_where||'
246 AND jln.code_combination_id IN ( SELECT f.code_combination_id
247 FROM fii_gl_ccid_dimensions f
248 WHERE '||l_company_where||l_cost_center_where||l_category_where
249 ||l_fud1_where||l_fud2_where||'
250 )
251 GROUP BY f.je_header_id, f.name, jln.effective_date, jln.reference_4, f.currency_code,
252 f.je_category, f.description, jes.user_je_source_name
253
254 UNION ALL
255
256 SELECT '''||g_carryfwd_msg||''' FII_PSI_JOURNAL_NAME,
257 sob.currency_code FII_PSI_CURRENCY,
258 SUM(NVL(b.begin_balance_cr,0) - NVL(b.begin_balance_dr,0))*-1 FII_PSI_ENTERED_AMOUNT,
259 SUM(NVL(b.begin_balance_cr,0) - NVL(b.begin_balance_dr,0))*-1 FII_PSI_LINE_AMOUNT,
260 p.start_date FII_PSI_JOURNAL_DATE,
261 NULL FII_PSI_DOC_NUMBER,
262 NULL FII_PSI_CATEGORY,
263 '''||g_carryfwd_msg||''' FII_PSI_DESCRIPTION,
264 NULL FII_PSI_SOURCE,
265 (SUM(SUM(NVL(b.begin_balance_cr,0) - NVL(b.begin_balance_dr,0))) OVER())*-1 FII_GT_PSI_LINE_AMOUNT
266
267 FROM FII_SOURCE_LEDGER_GROUPS fslg,
268 FII_SLG_ASSIGNMENTS slga,
269 FII_SLG_BUDGET_ASGNS slba,
270 FII_GL_CCID_DIMENSIONS f,
271 FII_FIN_CAT_TYPE_ASSGNS fcta,
272 GL_BALANCES b,
273 GL_PERIODS p,
274 GL_LEDGERS_PUBLIC_V sob
275
276 WHERE fslg.usage_code = ''DBI''
277 AND slga.source_ledger_group_id = fslg.source_ledger_group_id
278 AND slba.source_ledger_group_id = slga.source_ledger_group_id
279 AND slba.ledger_id = slga.ledger_id
280 AND sob.ledger_id = slba.ledger_id
281 AND p.period_set_name = sob.period_set_name
282 AND p.period_type = sob.accounted_period_type
283 AND p.period_num = 1
284 AND p.start_date BETWEEN :CURR_PERIOD_START AND :ASOF_DATE
285 AND b.actual_flag = ''B''
286 AND b.period_name = p.period_name
287 AND b.ledger_id = slga.ledger_id
288 AND b.budget_version_id = slba.budget_version_id
289 AND b.currency_code = '''||l_prim_global_curr||'''
290 AND b.currency_code != ''STAT''
291 AND (b.begin_balance_dr <> 0 OR b.begin_balance_cr <> 0)
292 AND b.code_combination_id = f.code_combination_id
293 AND '||l_company_where||l_cost_center_where||l_category_where||l_fud1_where||l_fud2_where||'
294 AND (f.company_id = slga.bal_seg_value_id OR
295 slga.bal_seg_value_id = -1)
296 AND f.chart_of_accounts_id = slga.chart_of_accounts_id
297 AND fcta.fin_category_id = f.natural_account_id
298 AND fcta.fin_cat_type_code = ''OE''
299
300 GROUP BY sob.currency_code, p.start_date ) inline_view
301
302 ORDER BY FII_PSI_JOURNAL_DATE DESC';
303
304
305
306
307 -- Attach bind parameters
308
309 FII_EA_UTIL_PKG.bind_variable(
310 p_sqlstmt=>sqlstmt,
311 p_page_parameter_tbl=>p_page_parameter_tbl,
312 p_sql_output=>jrnl_dtl_sql,
313 p_bind_output_table=>jrnl_dtl_output);
314
315 END GET_BUDGET_JRNL;
316
317 END FII_PSI_JE_DTL_PKG;
318