[Home] [Help]
PACKAGE BODY: APPS.OKL_MULTI_GAAP_PVT
Source
1 PACKAGE BODY OKL_MULTI_GAAP_PVT AS
2 /* $Header: OKLRGAPB.pls 120.12.12010000.3 2008/11/20 07:32:48 racheruv ship $ */
3
4 -- Function to return the asset category to be used in the report
5 FUNCTION GET_CATEGORY_NAME(p_category_id IN NUMBER) RETURN VARCHAR2 IS
6
7 l_category_name VARCHAR2(2000);
8
9 -- cursor to get get category name
10 CURSOR category_name_csr(p_category_id NUMBER) IS
11 SELECT CONCATENATED_SEGMENTS
12 FROM FA_CATEGORIES_B_KFV
13 WHERE category_id = p_category_id;
14
15 BEGIN
16 OPEN category_name_csr(p_category_id);
17 FETCH category_name_csr INTO l_category_name;
18 IF category_name_csr%NOTFOUND THEN
19 -- store SQL error message on message stack for caller
20 OKL_API.set_message(p_app_name => G_APP_NAME,
21 p_msg_name => G_NO_MATCHING_RECORD,
22 p_token1 => G_COL_NAME_TOKEN,
23 p_token1_value => 'p_category_id');
24 RAISE OKL_API.G_EXCEPTION_ERROR;
25 END IF;
26 CLOSE category_name_csr;
27
28 RETURN l_category_name;
29
30 EXCEPTION
31 WHEN OKL_API.G_EXCEPTION_ERROR THEN
32 IF category_name_csr%ISOPEN THEN
33 CLOSE category_name_csr;
34 END IF;
35
36 RETURN NULL;
37
38 WHEN OTHERS THEN
39 IF category_name_csr%ISOPEN THEN
40 CLOSE category_name_csr;
41 END IF;
42
43 RETURN NULL;
44
45 END GET_CATEGORY_NAME;
46
47 -- Function to check whether contract is a multi gaap contract.
48 FUNCTION CHECK_MULTI_GAAP(p_khr_id IN NUMBER) RETURN VARCHAR2 IS
49
50 -- cursor to check whether contract is a multi gaap contract.
51 CURSOR check_multi_gaap(p_ctr_id NUMBER) IS
52 SELECT 'Y' FROM OKL_K_HEADERS khr
53 WHERE khr.id = p_ctr_id
54 AND khr.multi_gaap_yn = 'Y';
55
56 l_flag_value VARCHAR2(1) :='N';
57
58 BEGIN
59
60 OPEN check_multi_gaap(p_khr_id);
61 FETCH check_multi_gaap INTO l_flag_value;
62 IF check_multi_gaap%NOTFOUND THEN
63 -- if value in column is NULl return N
64 l_flag_value := 'N';
65 END IF;
66 CLOSE check_multi_gaap;
67
68 RETURN l_flag_value;
69
70 EXCEPTION
71
72 WHEN OTHERS THEN
73 IF check_multi_gaap%ISOPEN THEN
74 CLOSE check_multi_gaap;
75 END IF;
76 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
77 ,p_msg_name => G_UNEXPECTED_ERROR
78 ,p_token1 => G_SQLCODE_TOKEN
79 ,p_token1_value => SQLCODE
80 ,p_token2 => G_SQLERRM_TOKEN
81 ,p_token2_value => SQLERRM);
82
83 RETURN NULL;
84
85 END CHECK_MULTI_GAAP;
86
87 PROCEDURE GET_TEMPLATE_LINES(p_pdt_name IN VARCHAR2
88 ,p_sty_name IN VARCHAR2
89 ,p_accrual_activity IN VARCHAR2
90 ,x_ae_lines_tbl OUT NOCOPY ae_lines_tbl_type) IS
91 --start changed by abhsaxen for Bug#617448
92 CURSOR get_ae_lines(p_product VARCHAR2, p_stream_type VARCHAR2, p_memo_yn VARCHAR2) IS
93 SELECT code_combination_id,
94 ae_line_type,
95 crd_code
96 FROM OKL_AE_TMPT_LNES
97 WHERE avl_id IN (SELECT avl.id
98 FROM okl_ae_templates avl,okl_trx_types_v try,okl_strm_type_v sty
99 WHERE aes_id IN
100 (SELECT avl.aes_id FROM okl_products_v WHERE avl.name = p_product)
101 AND try.name = 'Accrual'
102 AND sty.name= p_stream_type
103 AND avl.sty_id = sty.id
104 AND avl.try_id = try.id
105 AND avl.memo_yn= p_memo_yn
106 AND avl.prior_year_yn is NULL
107 AND avl.factoring_synd_flag IS NULL);
108 --end changed by abhsaxen for Bug#6174484
109 /* SELECT code_combination_id,
110 ae_line_type,
111 crd_code
112 FROM OKL_AE_TMPT_LNES
113 WHERE avl_id IN (SELECT id
114 FROM okl_Ae_templates_uv
115 WHERE aes_id IN
116 (SELECT aes_id FROM okl_products_v WHERE name = p_product)
117 AND try_name = 'Accrual'
118 AND sty_name = p_stream_type
119 AND memo_yn = p_memo_yn
120 AND prior_year_yn is NULL
121 AND FACTORING_SYND_FLAG IS NULL);
122 */ -- commenting for later use in securitization
123 --and NVL(FACTORING_SYND_FLAG,'xxx') = NVL(p_fac_synd,'xxx'));
124
125 l_memo_yn VARCHAR2(1);
126 l_pdt_name VARCHAR2(2000) := p_pdt_name;
127 l_sty_name VARCHAR2(2000) := p_sty_name;
128 x get_ae_lines%ROWTYPE;
129
130 BEGIN
131 IF p_accrual_activity = 'ACCRUAL' THEN
132 l_memo_yn := 'N';
133 ELSIF p_accrual_activity = 'NON-ACCRUAL' THEN
134 l_memo_yn := 'Y';
135 END IF;
136
137 OPEN get_ae_lines(l_pdt_name,l_sty_name,l_memo_yn);
138 LOOP
139 FETCH get_ae_lines INTO x;
140 IF get_ae_lines%FOUND THEN
141 x_ae_lines_tbl(get_ae_lines%ROWCOUNT).ccid := x.code_combination_id;
142 x_ae_lines_tbl(get_ae_lines%ROWCOUNT).line_type := x.ae_line_type;
143 x_ae_lines_tbl(get_ae_lines%ROWCOUNT).crd_code := x.crd_code;
144 END IF;
145 EXIT WHEN get_ae_lines%NOTFOUND;
146 END LOOP;
147 CLOSE get_ae_lines;
148
149 EXCEPTION
150 WHEN OTHERS THEN
151 IF get_ae_lines%ISOPEN THEN
152 CLOSE get_ae_lines;
153 END IF;
154
155 OKL_API.SET_MESSAGE( p_app_name => G_APP_NAME
156 ,p_msg_name => G_UNEXPECTED_ERROR
157 ,p_token1 => G_SQLCODE_TOKEN
158 ,p_token1_value => SQLCODE
159 ,p_token2 => G_SQLERRM_TOKEN
160 ,p_token2_value => SQLERRM);
161
162
163
164 END GET_TEMPLATE_LINES;
165
166 -- Function to call the MULTI GAAP Procedure
167 FUNCTION SUBMIT_MULTI_GAAP(
168 x_return_status OUT NOCOPY VARCHAR2,
169 x_msg_count OUT NOCOPY NUMBER,
170 x_msg_data OUT NOCOPY VARCHAR2,
171 p_api_version IN NUMBER,
172 p_date_from IN DATE,
173 p_date_to IN DATE,
174 p_batch_name IN VARCHAR2 ) RETURN NUMBER IS
175
176 x_request_id NUMBER;
177 l_return_status VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
178 l_msg_count NUMBER;
179 l_msg_data VARCHAR2(2000);
180 l_api_name VARCHAR2(2000) := 'SUBMIT_MULTI_GAAP';
181 l_api_version CONSTANT NUMBER := 1.0;
182 l_init_msg_list VARCHAR2(20) DEFAULT Okl_Api.G_FALSE;
183 l_date_from VARCHAR2(2000);
184 l_date_to VARCHAR2(2000);
185 BEGIN
186 -- Set save point
187 l_return_status := Okl_Api.START_ACTIVITY(l_api_name
188 ,G_PKG_NAME
189 ,l_init_msg_list
190 ,l_api_version
191 ,p_api_version
192 ,'_PVT'
193 ,l_return_status);
194 IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
195 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
196 ELSIF (l_return_Status = Okl_Api.G_RET_STS_ERROR) THEN
197 RAISE Okl_Api.G_EXCEPTION_ERROR;
198 END IF;
199
200 -- validate period from date
201 IF (p_date_from IS NULL OR p_date_from = Okl_Api.G_MISS_DATE) THEN
202 Okl_Api.SET_MESSAGE(p_app_name => g_app_name,
203 p_msg_name => 'OKL_MGP_PERIOD_FROM_ERROR');
204 RAISE Okl_Api.G_EXCEPTION_ERROR;
205 ELSE
206 l_date_from := FND_DATE.DATE_TO_CANONICAL(p_date_from);
207 END IF;
208
209 -- validate period to date
210 IF (p_date_to IS NULL OR p_date_from = Okl_Api.G_MISS_DATE) THEN
211 Okl_Api.SET_MESSAGE(p_app_name => g_app_name,
212 p_msg_name => 'OKL_MGP_PERIOD_TO_ERROR');
213 RAISE Okl_Api.G_EXCEPTION_ERROR;
214 ELSE
215 l_date_to := FND_DATE.DATE_TO_CANONICAL(p_date_to);
216 END IF;
217
218 -- Submit Concurrent Program Request
219 FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
220 x_request_id := FND_REQUEST.SUBMIT_REQUEST(application => 'OKL',
221 program => 'OKLGAPCALC',
222 argument1 => l_date_from,
223 argument2 => l_date_to,
224 argument3 => p_batch_name);
225
226 IF x_request_id = 0 THEN
227 -- Handle submission error
228 -- Raise Error if the request has not been submitted successfully.
229 Okl_Api.SET_MESSAGE(G_APP_NAME, 'OKL_ERROR_SUB_CONC_PROG', 'CONC_PROG', 'Multi GAAP Adjustment Support');
230 RAISE Okl_Api.G_EXCEPTION_ERROR;
231 ELSE
232 --set return status
233 x_return_status := l_return_status;
234 RETURN x_request_id;
235 END IF;
236
237 EXCEPTION
238 WHEN Okl_Api.G_EXCEPTION_ERROR THEN
239 x_return_status := Okl_Api.HANDLE_EXCEPTIONS(l_api_name
240 ,g_pkg_name
241 ,'OKL_API.G_RET_STS_ERROR'
242 ,x_msg_count
243 ,x_msg_data
244 ,'_PVT');
245 RETURN x_request_id;
246 WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
247 x_return_status := Okl_Api.HANDLE_EXCEPTIONS(l_api_name
248 ,g_pkg_name
249 ,'OKL_API.G_RET_STS_UNEXP_ERROR'
250 ,x_msg_count
251 ,x_msg_data
252 ,'_PVT');
253 RETURN x_request_id;
254 WHEN OTHERS THEN
255 x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
256 (l_api_name,
257 G_PKG_NAME,
258 'OTHERS',
259 x_msg_count,
260 x_msg_data,
261 '_PVT');
262 RETURN x_request_id;
263 END SUBMIT_MULTI_GAAP;
264
265
266 PROCEDURE MULTI_GAAP_SUPPORT(errbuf OUT NOCOPY VARCHAR2
267 ,retcode OUT NOCOPY NUMBER
268 ,p_period_from IN VARCHAR2
269 ,p_period_to IN VARCHAR2
270 ,p_batch_name IN VARCHAR2) IS
271
272 -- declare local variables
273 l_contract_id OKL_K_HEADERS_FULL_V.id%TYPE;
274 l_contract_number OKL_K_HEADERS_FULL_V.contract_number%TYPE;
275 l_product_id OKL_K_HEADERS_FULL_V.pdt_id%TYPE;
276 l_product_name OKL_PRODUCTS_V.name%TYPE;
277 l_rep_product_id OKL_PRODUCTS_V.reporting_pdt_id%TYPE;
278 l_rep_product_name OKL_PRODUCTS_V.name%TYPE;
279 l_deal_type OKL_K_HEADERS.DEAL_TYPE%TYPE;
280 l_rep_deal_type OKL_K_HEADERS_FULL_V.deal_type%TYPE;
281 l_currency_code OKL_TRX_CONTRACTS.currency_code%TYPE;
282 l_sob_id OKL_SYS_ACCT_OPTS.set_of_books_id%TYPE;
283 l_book_type_code OKL_TXD_ASSETS_V.tax_book%TYPE;
284 l_contract_currency OKC_K_HEADERS_B.currency_code%TYPE;
285 l_api_name CONSTANT VARCHAR2(2000) := 'MULTI_GAAP_SUPPORT';
286 l_api_version CONSTANT NUMBER := 1.0;
287 p_api_version CONSTANT NUMBER := 1.0;
288 l_sob_name VARCHAR2(2000);
289 l_cr_dr_flag VARCHAR2(2000);
290 l_concat_desc VARCHAR2(2000);
291 l_fac_synd_flag VARCHAR2(2000);
292 l_init_msg_list VARCHAR2(2000) := OKL_API.G_FALSE;
293 l_msg_data VARCHAR2(2000);
294 l_org_name VARCHAR2(2000);
295 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
296 l_msg_count NUMBER;
297 l_org_id NUMBER;
298 l_contract_error_count NUMBER := 1;
299 l_count NUMBER := 1;
300 l_count2 NUMBER := 1;
301 l_count3 NUMBER := 1;
302 l_sysdate DATE := SYSDATE;
303 l_period_from DATE := FND_DATE.CANONICAL_TO_DATE(p_period_from);
304 l_period_to DATE := FND_DATE.CANONICAL_TO_DATE(p_period_to);
305 l_ae_lines_tbl ae_lines_tbl_type;
306 l_asset_deprn_tbl asset_deprn_tbl_type;
307 l_report_deprn_tbl asset_deprn_tbl_type;
308 l_outer_error_msg_tbl Okl_Accounting_Util.Error_Message_Type;
309 l_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
310 l_pdt_parameters_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
311 l_rep_summary_tbl rep_prd_summary_tbl_type;
312
313 -- cursor to select the contracts eligible for multi-gaap
314 CURSOR gaap_contracts_csr IS
315 SELECT khr.id khr_id,
316 chr.contract_number,
317 pdt.id pdt_id,
318 pdt.name pdt_name,
319 pdt.reporting_pdt_id,
320 khr.deal_type,
321 chr.currency_code
322 FROM OKC_K_HEADERS_B chr, OKL_K_HEADERS khr, OKL_PRODUCTS pdt
323 WHERE chr.id = khr.id
324 AND chr.scs_code = 'LEASE'
325 AND chr.sts_code IN ('BOOKED','EVERGREEN') -- Bug 3448049. removed approved and under revision statuses
326 AND khr.pdt_id = pdt.id
327 AND khr.multi_gaap_yn = 'Y'
328 ORDER BY pdt_name;
329
330 -- cursor to identify income accrued/non-accrued
331 -- Bug 3498903. Added language clause.
332 CURSOR accrual_trx_csr(p_khr_id NUMBER,p_date_from DATE,p_date_to DATE) IS
333 SELECT stytl.name stream_type,
334 decode(trx.accrual_activity,'NON-ACCRUAL','NON-ACCRUAL','ACCRUAL') accrual_activity,
335 sum(txl.amount) total_amount
336 FROM okl_trx_contracts trx, okl_txl_cntrct_lns txl, okl_strm_type_tl stytl
337 WHERE trx.khr_id = p_khr_id
338 --Fixed Bug 5707866 SLA Uptake Project by nikshah, changed tsu_code to PROCESSED from ENTERED
339 AND trx.tsu_code = 'PROCESSED'
340 --rkuttiya added for 12.1.1 Multi GAAP
341 AND trx.representation_type = 'PRIMARY'
342 --
343 AND trx.tcn_type='ACL'
344 AND trx.accrual_activity in ('ACCRUAL','NON-ACCRUAL','CATCH-UP')
345 AND trx.date_transaction_occurred BETWEEN p_date_from AND p_date_to
346 AND trx.id = txl.tcn_id
347 AND txl.sty_id = stytl.id
348 AND stytl.language = USERENV('LANG')
349 GROUP BY stytl.name, decode(trx.accrual_activity,'NON-ACCRUAL','NON-ACCRUAL','ACCRUAL');
350
351 -- cursor to identify depreciation booked/rolled back
352 CURSOR local_deprn_csr(p_khr_id NUMBER, p_start_date DATE, p_end_date DATE) IS
353 SELECT fad.asset_category_id,
354 decode(trx.accrual_activity,'NON-ACCRUAL','NON-ACCRUAL','ACCRUAL') accrual_activity,
355 SUM(fds.deprn_amount) deprn_amount
356 FROM
357 OKL_TRX_CONTRACTS trx,
358 OKC_K_ITEMS cli,
359 OKC_K_LINES_B cle,
360 OKC_LINE_STYLES_B cls,
361 FA_BOOKS fab,
362 FA_ADDITIONS_B fad,
363 FA_BOOK_CONTROLS fbc,
364 FA_CATEGORIES_B fcb,
365 FA_DEPRN_SUMMARY fds,
366 FA_DEPRN_PERIODS fdp,
367 FA_CALENDAR_PERIODS fcp
368 WHERE trx.khr_id = p_khr_id
369 --Fixed Bug 5707866 SLA Uptake Project by nikshah, changed tsu_code to PROCESSED from ENTERED
370 AND trx.tsu_code = 'PROCESSED'
371 --rkuttiya added for 12.1.1 Multi GAAP Project
372 AND trx.representation_type = 'PRIMARY'
373 --
374 AND trx.tcn_type = 'ACL'
375 AND trx.accrual_activity IN ('ACCRUAL','CATCH-UP','NON-ACCRUAL')
376 AND trx.khr_id = cle.dnz_chr_id
377 AND cle.id = cli.cle_id
378 AND cli.dnz_chr_id = cle.dnz_chr_id
379 AND cle.lse_id = cls.id
380 AND cls.lty_code = 'FIXED_ASSET'
381 AND fad.asset_id = TO_NUMBER(cli.object1_id1)
382 AND fad.asset_category_id = fcb.category_id
383 AND fad.asset_id = fab.asset_id
384 AND fab.book_type_code = fbc.book_type_code
385 AND fab.transaction_header_id_out is null
386 AND NVL(fbc.date_ineffective,sysdate+1) > sysdate
387 AND fbc.book_class = 'CORPORATE'
388 AND fds.asset_id = fad.asset_id
389 AND fds.book_type_code = fab.book_type_code
390 AND fds.book_type_code = fdp.book_type_code
391 AND fds.period_counter = fdp.period_counter
392 AND fdp.period_name = fcp.period_name
393 AND fcp.start_date BETWEEN p_start_date AND p_end_date
394 AND fcp.end_date BETWEEN p_start_date AND p_end_date
395 AND trx.date_accrual BETWEEN p_start_date and p_end_date
396 GROUP BY fad.asset_category_id,decode(trx.accrual_activity,'NON-ACCRUAL','NON-ACCRUAL','ACCRUAL');
397
398 -- cursor to select reporting stream amounts to be accrued
399 --Bug# 2753128. Adding currency code to cursor.
400 --Bug# 2870483. Adding say_code='CURR' to cursor to restrict query to only current stream amounts and not history.
401 -- Bug 3498903. Added language clause.
402 CURSOR reporting_streams_csr(p_khr_id NUMBER, p_accrue_from_date DATE, p_accrue_till_date DATE) IS
403 SELECT stytl.name stream_type,
404 sty.accrual_yn,
405 chr.currency_code,
406 ABS(SUM(ste.amount)) total_amount
407 FROM OKL_STRM_TYPE_TL stytl,
408 OKL_STRM_TYPE_B sty,
409 OKL_STREAMS stm,
410 OKL_STRM_ELEMENTS ste,
411 OKL_PROD_STRM_TYPES psty,
412 OKL_K_HEADERS khr,
413 OKC_K_HEADERS_B chr,
414 OKL_PRODUCTS pdt
415 WHERE stm.khr_id = p_khr_id
416 AND khr.id = chr.id
417 AND khr.id = stm.khr_id
418 AND stm.active_yn = 'N'
419 AND stm.purpose_code = 'REPORT'
420 AND stm.say_code='CURR'
421 AND stm.sty_id = stytl.id
422 AND stytl.id = sty.id
423 AND stytl.language = USERENV('LANG')
424 AND stytl.id = psty.sty_id
425 AND psty.pdt_id = pdt.reporting_pdt_id
426 AND pdt.id = khr.pdt_id
427 AND psty.accrual_yn = 'Y'
428 AND stm.id = ste.stm_id
429 AND ste.stream_element_date BETWEEN p_accrue_from_date AND p_accrue_till_date
430 GROUP BY stytl.name, sty.accrual_yn, chr.currency_code;
431
432 -- cursor to ascertain reporting depreciation to be booked
433 CURSOR reporting_deprn_csr(p_khr_id NUMBER, p_start_date DATE, p_end_date DATE, p_book_type_code VARCHAR2) IS
434 SELECT fad.asset_category_id,
435 SUM(fds.deprn_amount) deprn_amount
436 FROM
437 OKC_K_ITEMS cli,
438 OKC_K_LINES_B cle,
439 OKC_LINE_STYLES_B cls,
440 FA_BOOKS fab,
441 FA_ADDITIONS_B fad,
442 FA_BOOK_CONTROLS fbc,
443 FA_CATEGORIES_B fcb,
444 FA_DEPRN_SUMMARY fds,
445 FA_DEPRN_PERIODS fdp,
446 FA_CALENDAR_PERIODS fcp
447 WHERE cle.dnz_chr_id = p_khr_id
448 AND cle.id = cli.cle_id
449 AND cli.dnz_chr_id = cle.dnz_chr_id
450 AND cle.lse_id = cls.id
451 AND cls.lty_code = 'FIXED_ASSET'
452 AND fad.asset_id = TO_NUMBER(cli.object1_id1)
453 AND fad.asset_category_id = fcb.category_id
454 AND fad.asset_id = fab.asset_id
455 AND fab.book_type_code = p_book_type_code
456 AND fab.book_type_code = fbc.book_type_code
457 AND fab.transaction_header_id_out is null
458 AND NVL(fbc.date_ineffective,sysdate+1) > sysdate
459 AND fbc.book_class = 'TAX'
460 AND fds.asset_id = fad.asset_id
461 AND fds.book_type_code = fab.book_type_code
462 AND fds.book_type_code = fdp.book_type_code
463 AND fds.period_counter = fdp.period_counter
464 AND fdp.period_name = fcp.period_name
465 AND fcp.start_date BETWEEN p_start_date AND p_end_date
466 AND fcp.end_date BETWEEN p_start_date AND p_end_date
467 GROUP BY fad.asset_category_id;
468
469 -- cursor to select income accrued/non-accrued grouped by product and stream type
470 -- grouping by currency code for bug# 2753128
471 -- Bug 3498903. Added language clause.
472 CURSOR product_summary_csr(p_from_date DATE, p_to_date DATE) IS
473 SELECT pdt.name product_name,
474 chr.currency_code,
475 stytl.name stream_type,
476 decode(trx.accrual_activity,'NON-ACCRUAL','NON-ACCRUAL','ACCRUAL') accrual_activity,
477 SUM(txl.amount) total_amount
478 FROM OKL_STRM_TYPE_TL stytl,
479 OKL_K_HEADERS khr,
480 OKC_K_HEADERS_B chr,
481 OKL_PRODUCTS pdt,
482 OKL_TRX_CONTRACTS trx,
483 OKL_TXL_CNTRCT_LNS txl
484 WHERE chr.id = khr.id
485 AND pdt.id = khr.pdt_id
486 AND khr.multi_gaap_yn = 'Y'
487 AND khr.id = trx.khr_id
488 --Fixed Bug 5707866 SLA Uptake Project by nikshah, changed tsu_code to PROCESSED from ENTERED
489 AND trx.tsu_code = 'PROCESSED'
490 --rkuttiya added for 12.1.1 Multi GAAP
491 AND representation_type = 'PRIMARY'
492 --
493 AND trx.tcn_type='ACL'
494 AND trx.accrual_activity in ('ACCRUAL','NON-ACCRUAL','CATCH-UP')
495 AND trx.date_transaction_occurred BETWEEN p_from_date AND p_to_date
496 AND trx.id = txl.tcn_id
497 AND txl.sty_id = stytl.id
498 AND stytl.language = USERENV('LANG')
499 GROUP BY pdt.name, chr.currency_code, stytl.name,decode(trx.accrual_activity,'NON-ACCRUAL','NON-ACCRUAL','ACCRUAL');
500
501 -- Cursor to get org name
502 CURSOR org_name_csr(p_org_id NUMBER) IS
503 SELECT name
504 FROM hr_operating_units
505 WHERE organization_id = p_org_id;
506
507 -- Cursor to check override status
508 CURSOR override_status_csr(p_khr_id NUMBER) IS
509 SELECT generate_accrual_override_yn
510 FROM okl_k_headers
511 WHERE id = p_khr_id;
512
513 TYPE contract_error_tbl_type IS TABLE OF okl_k_headers_full_v.CONTRACT_NUMBER%TYPE
514 INDEX BY BINARY_INTEGER;
515
516 TYPE gaap_contracts_rec_type IS RECORD(
517 contract_id OKL_K_HEADERS_FULL_V.ID%TYPE,
518 contract_number OKL_K_HEADERS_FULL_V.CONTRACT_NUMBER%TYPE,
519 product_id OKL_K_HEADERS_FULL_V.PDT_ID%TYPE,
520 product_name OKL_PRODUCTS_V.NAME%TYPE,
521 rep_product_id OKL_K_HEADERS_FULL_V.PDT_ID%TYPE,
522 deal_type OKL_K_HEADERS_FULL_V.DEAL_TYPE%TYPE,
523 khr_currency_code OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE);
524
525 TYPE gaap_contracts_tbl_type IS TABLE OF gaap_contracts_rec_type
526 INDEX BY BINARY_INTEGER;
527
528 l_gaap_contracts_tbl gaap_contracts_tbl_type; -- Bug# 3020763
529 l_product_summary product_summary_csr%ROWTYPE;
530 l_contract_error_tbl contract_error_tbl_type;
531
532 -- get the secondary rep method .. bug 7584164
533 cursor get_sec_rep_method is
534 select secondary_rep_method
535 from okl_sys_acct_opts;
536
537 l_sec_rep_method okl_sys_acct_opts.secondary_rep_method%TYPE;
538
539 BEGIN
540
541 -- get the accounting method for secondary representation
542 open get_sec_rep_method;
543 fetch get_sec_rep_method into l_sec_rep_method;
544 close get_sec_rep_method;
545
546 -- Find set of books id
547 l_sob_id := Okl_Accounting_Util.GET_SET_OF_BOOKS_ID;
548 IF (l_sob_id IS NULL) THEN
549 Okl_Api.set_message(p_app_name => g_app_name,
550 p_msg_name => 'OKL_AGN_SOB_ID_ERROR');
551 RAISE Okl_Api.G_EXCEPTION_ERROR;
552 END IF;
553
554 -- Find set of books name
555 l_sob_name := Okl_Accounting_Util.GET_SET_OF_BOOKS_NAME(l_sob_id);
556
557 -- Find org name for report
558 l_org_id := mo_global.get_current_org_id();
559 IF l_org_id IS NULL THEN
560 -- store SQL error message on message stack for caller
561 okl_api.set_message(p_app_name => G_APP_NAME,
562 p_msg_name => G_INVALID_VALUE,
563 p_token1 => G_COL_NAME_TOKEN,
564 p_token1_value => 'ORG_ID');
565 RAISE OKL_API.G_EXCEPTION_ERROR;
566 END IF;
567
568 OPEN org_name_csr(l_org_id);
569 FETCH org_name_csr INTO l_org_name;
570 IF org_name_csr%NOTFOUND THEN
571 CLOSE org_name_csr;
572 -- store SQL error message on message stack for caller
573 okl_api.set_message(p_app_name => G_APP_NAME,
574 p_msg_name => G_NO_MATCHING_RECORD,
575 p_token1 => G_COL_NAME_TOKEN,
576 p_token1_value => 'ORG_ID');
577 RAISE OKL_API.G_EXCEPTION_ERROR;
578 END IF;
579 CLOSE org_name_csr;
580
581 -- Find the reporting asset book
582 l_book_type_code := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
583 -- verify the reporting book only for secondary rep method of 'Report'. Bug 7584164
584 IF (l_book_type_code IS NULL and l_sec_rep_method = 'REPORT') THEN
585 Okl_Api.set_message(p_app_name => g_app_name,
586 p_msg_name => 'OKL_MGP_ASSET_BOOK_ERROR');
587 RAISE Okl_Api.G_EXCEPTION_ERROR;
588 END IF;
589
590 -- Find functional currency code for the set of books id
591 l_currency_code := Okl_Accounting_Util.GET_FUNC_CURR_CODE;
592 IF (l_currency_code IS NULL) THEN
593 Okl_Api.set_message(p_app_name => g_app_name,
594 p_msg_name => 'OKL_AGN_CURR_CODE_ERROR');
595 RAISE Okl_Api.G_EXCEPTION_ERROR;
596 END IF;
597
598 -- Create report header
599 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL', 'OKL_MGP_REP_TITLE'));
600 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL', 'OKL_MGP_REP_TITLE_UNDERLINE'));
601 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
602 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_SOB_TITLE')
603 ||' '||RPAD(l_sob_name, 65)
604 ||FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_OU_TITLE')
605 ||' '||l_org_name);
606 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_PROG_DATE_TITLE')
607 ||' '||RPAD(l_sysdate, 61)||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_RPT_DATE_RANGE')
608 ||' '||l_period_from||' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_RPT_TO_FIELD')
609 ||' '||l_period_to);
610 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_CURR_TITLE')
611 ||' '||RPAD(l_currency_code,58)||FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_BATCH_NAME')
612 ||' '||p_batch_name);
613 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
614
615 -- if the secondary representation method is not report abort the run. Bug 7584164
616 if l_sec_rep_method <> 'REPORT' then
617 fnd_file.put_line(FND_FILE.OUTPUT, FND_MESSAGE.GET_STRING('OKL','OKL_SEC_REP_METHOD') ||' '||
618 OKL_ACCOUNTING_UTIL.GET_LOOKUP_MEANING('OKL_SEC_REP_METHOD',l_sec_rep_method,540,0));
619 fnd_file.put_line(FND_FILE.OUTPUT, FND_MESSAGE.GET_STRING('OKL','OKL_SEC_REP_METHOD_INVALID'));
620 return;
621 end if;
622
623 -- process contracts
624 FOR i IN gaap_contracts_csr
625 LOOP
626 l_gaap_contracts_tbl(gaap_contracts_csr%ROWCOUNT).contract_id := i.khr_id;
627 l_gaap_contracts_tbl(gaap_contracts_csr%ROWCOUNT).contract_number := i.contract_number;
628 l_gaap_contracts_tbl(gaap_contracts_csr%ROWCOUNT).product_id := i.pdt_id;
629 l_gaap_contracts_tbl(gaap_contracts_csr%ROWCOUNT).rep_product_id := i.reporting_pdt_id;
630 l_gaap_contracts_tbl(gaap_contracts_csr%ROWCOUNT).product_name := i.pdt_name;
631 l_gaap_contracts_tbl(gaap_contracts_csr%ROWCOUNT).deal_type := i.deal_type;
632 l_gaap_contracts_tbl(gaap_contracts_csr%ROWCOUNT).khr_currency_code := i.currency_code;
633 END LOOP;
634
635 IF l_gaap_contracts_tbl.COUNT > 0 THEN
636 FOR x IN l_gaap_contracts_tbl.FIRST..l_gaap_contracts_tbl.LAST
637 LOOP
638
639 l_contract_id := l_gaap_contracts_tbl(x).contract_id;
640 l_contract_number := l_gaap_contracts_tbl(x).contract_number;
641 l_product_id := l_gaap_contracts_tbl(x).product_id;
642 l_rep_product_id := l_gaap_contracts_tbl(x).rep_product_id;
643 l_product_name := l_gaap_contracts_tbl(x).product_name;
644 l_deal_type := l_gaap_contracts_tbl(x).deal_type;
645 l_contract_currency := l_gaap_contracts_tbl(x).khr_currency_code;
646
647 DECLARE
648 -- Declare local variables which need to be re-initialized to null for each contract
649 l_error_msg_tbl Okl_Accounting_Util.Error_Message_Type;
650 l_accrual_activity OKL_TRX_CONTRACTS.ACCRUAL_ACTIVITY%TYPE;
651 l_deprn_accrual_activity OKL_TRX_CONTRACTS.ACCRUAL_ACTIVITY%TYPE;
652 l_record_status VARCHAR2(10);
653 l_record_status2 VARCHAR2(10);
654 l_record_status3 VARCHAR2(10);
655 l_contract_verified VARCHAR2(3);
656 l_rule_result VARCHAR2(1);
657 l_no_data_found BOOLEAN;
658 l_override_status VARCHAR2(1);
659
660 BEGIN
661
662 -- create report body content
663 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
664 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_CTR_NUM_TITLE')||': '||l_contract_number);
665 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||': '||l_contract_currency);
666 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_LOCAL_PRODUCT')||': '||l_product_name);
667 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_LOCAL_BK_CLASS')||': '||OKL_ACCOUNTING_UTIL.GET_LOOKUP_MEANING('OKL_BOOK_CLASS',l_deal_type,540,0));
668 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REVERSE_REVENUE')||':');
669 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_STY_TYPE'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACTIVITY'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_TITLE'),20));
670 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_STY_LINE'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACT_LINE'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_LINE'),20));
671
672 -- For each contract identify the income accrued or non-accrued
673 FOR x IN accrual_trx_csr(l_contract_id,l_period_from, l_period_to)
674 LOOP
675 -- Print the accrual/non-accrual data onto the report file for audit trail
676 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(x.stream_type,35)||RPAD(x.accrual_activity,15)||LPAD(x.total_amount,20));
677 END LOOP;
678 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
679 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REVERSE_DEPR')||':');
680 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||': '||l_currency_code);
681 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_PROMPT'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACTIVITY'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_TITLE'),20));
682 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_UNDERLINE'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACT_LINE'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_LINE'),20));
683
684 -- Open cursor local_deprn_csr
685 FOR i IN local_deprn_csr(l_contract_id, l_period_from, l_period_to)
686 LOOP
687
688 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(GET_CATEGORY_NAME(i.asset_category_id),35)||RPAD(Okl_Accounting_Util.Get_Lookup_Meaning('OKL_ACCRUAL_ACTIVITY',i.accrual_activity),15)||LPAD(NVL(i.deprn_amount,0),20));
689
690 IF l_asset_deprn_tbl.COUNT > 0 THEN
691 l_record_status := 'NOT-ADDED';
692 -- records exist in the pl/sql table
693 FOR x IN l_asset_deprn_tbl.FIRST..l_asset_deprn_tbl.LAST
694 LOOP
695 IF l_record_status <> 'ADDED' THEN
696 IF l_asset_deprn_tbl(x).category_name = GET_CATEGORY_NAME(i.asset_category_id) THEN
697 --asset category is the same
698 IF i.accrual_activity = 'ACCRUAL' THEN
699
700 l_asset_deprn_tbl(x).deprn_amount := l_asset_deprn_tbl(x).deprn_amount + i.deprn_amount;
701 l_record_status := 'ADDED';
702 ELSIF i.accrual_activity = 'NON-ACCRUAL' THEN
703
704 l_asset_deprn_tbl(x).deprn_amount := l_asset_deprn_tbl(x).deprn_amount - i.deprn_amount;
705 l_record_status := 'ADDED';
706 END IF;
707 END IF;
708 END IF;
709 END LOOP;
710
711 IF l_record_status <> 'ADDED' THEN
712 -- category is not the same, create a new record
713 l_asset_deprn_tbl(l_count).category_name := get_category_name(i.asset_category_id);
714 IF i.accrual_activity = 'NON-ACCRUAL' THEN
715 l_asset_deprn_tbl(l_count).deprn_amount := 0 - i.deprn_amount;
716 ELSE
717 l_asset_deprn_tbl(l_count).deprn_amount := i.deprn_amount;
718 END IF;
719 l_count := l_count+1;
720 l_record_status := 'ADDED';
721 END IF;
722 ELSE
723 -- no records in table, so create first record
724 l_asset_deprn_tbl(l_count).category_name := get_category_name(i.asset_category_id);
725 IF i.accrual_activity = 'NON-ACCRUAL' THEN
726 l_asset_deprn_tbl(l_count).deprn_amount := 0 - i.deprn_amount;
727 ELSE
728 l_asset_deprn_tbl(l_count).deprn_amount := i.deprn_amount;
729 END IF;
730 l_count := l_count+1;
731 END IF;
732 END LOOP;
733 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
734
735 l_pdtv_rec.id := l_rep_product_id;
736 OKL_SETUPPRODUCTS_PUB.Getpdt_parameters
737 (p_api_version => l_api_version,
738 p_init_msg_list => l_init_msg_list,
739 x_return_status => l_return_status,
740 x_no_data_found => l_no_data_found,
741 x_msg_count => l_msg_count,
742 x_msg_data => l_msg_data,
743 p_pdtv_rec => l_pdtv_rec,
744 p_pdt_parameter_rec => l_pdt_parameters_rec);
745 -- store the highest degree of error
746 IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
747 IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
748 Okl_Api.set_message(p_app_name => g_app_name,
749 p_msg_name => 'OKL_MGP_REP_PDT_ERROR',
750 p_token1 => 'PRODUCT_NAME',
751 p_token1_value => l_product_name);
752
753 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
754 ELSIF (l_return_Status = Okl_Api.G_RET_STS_ERROR) THEN
755 Okl_Api.set_message(p_app_name => g_app_name,
756 p_msg_name => 'OKL_MGP_REP_PDT_ERROR',
757 p_token1 => 'PRODUCT_NAME',
758 p_token1_value => l_product_name);
759 RAISE OKL_API.G_EXCEPTION_ERROR;
760 END IF;
761 END IF;
762
763 -- Bug# 2824234. Adding currency code for reporting streams.
764 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||': '||l_contract_currency);
765 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REPORT_PRODUCT')||': '||l_pdt_parameters_rec.name);
766 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REPORT_BK_CLASS')||': '||OKL_ACCOUNTING_UTIL.GET_LOOKUP_MEANING('OKL_BOOK_CLASS',l_pdt_parameters_rec.deal_type,540,0));
767 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_ACCOUNT_REVENUE')||':');
768 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_STY_TYPE'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACTIVITY'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_TITLE'),20));
769 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_STY_LINE'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACT_LINE'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_LINE'),20));
770
771 l_contract_verified := 'NO';
772
773 -- open reporting streams cursor
774 FOR j IN reporting_streams_csr(l_contract_id, l_period_from, l_period_to)
775 LOOP
776 -- ER 2872216 Need to validate contract against accrual rule only if
777 -- stream type is subject to accrual rule. Validation done only once for contract
778 IF l_contract_verified = 'NO' THEN
779 -- Bug 4054047
780 IF j.accrual_yn = 'ACRL_WITH_RULE' THEN
781 OKL_GENERATE_ACCRUALS_PUB.VALIDATE_ACCRUAL_RULE
782 (x_return_status => l_return_status
783 ,x_msg_count => l_msg_count
784 ,x_msg_data => l_msg_data
785 ,x_result => l_rule_result
786 ,p_ctr_id => l_contract_id);
787 -- store the highest degree of error
788 IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
789 IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
790 Okl_Api.set_message(p_app_name => g_app_name,
791 p_msg_name => 'OKL_AGN_RULE_VALD_ERROR',
792 p_token1 => 'CONTRACT_NUMBER',
793 p_token1_value => l_contract_number);
794 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
795 ELSIF (l_return_Status = Okl_Api.G_RET_STS_ERROR) THEN
796 Okl_Api.set_message(p_app_name => g_app_name,
797 p_msg_name => 'OKL_AGN_RULE_VALD_ERROR',
798 p_token1 => 'CONTRACT_NUMBER',
799 p_token1_value => l_contract_number);
800 RAISE OKL_API.G_EXCEPTION_ERROR;
801 END IF;
802 END IF;
803
804 IF l_rule_result = 'Y' THEN
805 l_accrual_activity := 'ACCRUAL';
806 ELSIF l_rule_result = 'N' THEN
807 l_accrual_activity := 'NON-ACCRUAL';
808 ELSE
809 Okl_Api.set_message(p_app_name => g_app_name,
810 p_msg_name => 'OKL_AGN_RULE_VALD_ERROR',
811 p_token1 => 'CONTRACT_NUMBER',
812 p_token1_value => l_contract_number);
813 RAISE OKL_API.G_EXCEPTION_ERROR;
814 END IF;
815
816 -- get override status
817 OPEN override_status_csr(l_contract_id);
818 FETCH override_status_csr INTO l_override_status;
819 CLOSE override_status_csr;
820
821 -- check override status
822 IF l_override_status = 'Y' THEN
823 l_accrual_activity := 'NON-ACCRUAL';
824 END IF;
825 l_contract_verified := 'YES';
826
827 -- need to store original accrual activity for depreciation reporting
828 l_deprn_accrual_activity := l_accrual_activity;
829 -- Bug 4054047
830 ELSIF j.accrual_yn = 'ACRL_WITHOUT_RULE' THEN
831 l_accrual_activity := 'ACCRUAL';
832 l_contract_verified := 'YES';
833 ELSE
834 -- store SQL error message on message stack for caller
835 okl_api.set_message(p_app_name => G_APP_NAME,
836 p_msg_name => G_INVALID_VALUE,
837 p_token1 => G_COL_NAME_TOKEN,
838 p_token1_value => 'ACCRUAL_YN');
839 RAISE OKL_API.G_EXCEPTION_ERROR;
840
841 END IF; --IF j.accrual_yn = 'Y' THEN
842
843 ELSIF l_contract_verified = 'YES' THEN
844 -- Bug 4054047
845 IF j.accrual_yn = 'ACRL_WITH_RULE' THEN
846 IF l_rule_result = 'Y' THEN
847 l_accrual_activity := 'ACCRUAL';
848 ELSIF l_rule_result = 'N' THEN
849 l_accrual_activity := 'NON-ACCRUAL';
850 ELSE
851 Okl_Api.set_message(p_app_name => g_app_name,
852 p_msg_name => 'OKL_AGN_RULE_VALD_ERROR',
853 p_token1 => 'CONTRACT_NUMBER',
854 p_token1_value => l_contract_number);
855 RAISE OKL_API.G_EXCEPTION_ERROR;
856 END IF;
857 -- check override status
858 IF l_override_status = 'Y' THEN
859 l_accrual_activity := 'NON-ACCRUAL';
860 END IF;
861 -- Bug 4054047
862 ELSIF j.accrual_yn = 'ACRL_WITHOUT_RULE' THEN
863 l_accrual_activity := 'ACCRUAL';
864
865 ELSE
866 -- store SQL error message on message stack for caller
867 okl_api.set_message(p_app_name => G_APP_NAME,
868 p_msg_name => G_INVALID_VALUE,
869 p_token1 => G_COL_NAME_TOKEN,
870 p_token1_value => 'ACCRUAL_YN');
871 RAISE OKL_API.G_EXCEPTION_ERROR;
872
873 END IF; --IF j.accrual_yn='Y'
874 END IF; --IF l_contract_verified = 'NO' THEN
875
876 -- Print the accrual/non-accrual data onto the report file
877 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(j.stream_type,35)||
878 RPAD(Okl_Accounting_Util.Get_Lookup_Meaning('OKL_ACCRUAL_ACTIVITY',l_accrual_activity),15)||
879 LPAD(j.total_amount,20));
880
881 IF l_rep_summary_tbl.COUNT > 0 THEN
882 l_record_status3 := 'NOT-ADDED';
883
884 -- records exist in the pl/sql table
885 FOR k IN l_rep_summary_tbl.FIRST..l_rep_summary_tbl.LAST
886 LOOP
887 IF l_record_status3 <> 'ADDED' THEN
888 IF l_rep_summary_tbl(k).product_name = l_pdt_parameters_rec.name THEN
889 --product is the same
890 IF l_rep_summary_tbl(k).stream_type = j.stream_type THEN
891 -- stream type is the same
892 IF l_rep_summary_tbl(k).currency_code = j.currency_code THEN
893 -- currency code is the same
894 IF l_rep_summary_tbl(k).accrual_activity = l_accrual_activity THEN
895 --accrual activity is the same
896 l_rep_summary_tbl(k).total_amount := l_rep_summary_tbl(k).total_amount + j.total_amount;
897 l_record_status3 := 'ADDED';
898 END IF;
899 END IF;
900 END IF;
901 END IF;
902 END IF; -- IF l_record_status3 <> 'ADDED' THEN
903 END LOOP;
904
905 IF l_record_status3 <> 'ADDED' THEN
906 l_rep_summary_tbl(l_count3).product_name := l_pdt_parameters_rec.name;
907 l_rep_summary_tbl(l_count3).stream_type := j.stream_type;
908 --Bug# 2753128. Adding currency code.
909 l_rep_summary_tbl(l_count3).currency_code := j.currency_code;
910 l_rep_summary_tbl(l_count3).accrual_activity := l_accrual_activity;
911 l_rep_summary_tbl(l_count3).total_amount := j.total_amount;
912 l_count3 := l_count3+1;
913 l_record_status3 := 'ADDED';
914 END IF;
915
916 ELSE
917 -- no records in table, so create first record
918 l_rep_summary_tbl(l_count3).product_name := l_pdt_parameters_rec.name;
919 l_rep_summary_tbl(l_count3).stream_type := j.stream_type;
920 --Bug# 2753128. Adding currency code.
921 l_rep_summary_tbl(l_count3).currency_code := j.currency_code;
922 l_rep_summary_tbl(l_count3).accrual_activity := l_accrual_activity;
923 l_rep_summary_tbl(l_count3).total_amount := j.total_amount;
924 l_count3 := l_count3+1;
925 END IF; -- IF l_rep_summary_tbl.COUNT > 0 THEN
926 END LOOP;
927
928 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
929 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_MGP_ACCOUNT_DEPR')||':');
930 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||': '||l_currency_code);
931 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_PROMPT'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACTIVITY'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_TITLE'),20));
932 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_UNDERLINE'),35)||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_ACT_LINE'),15)||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_LINE'),20));
933
934 --open reporting deprn cursor
935 FOR i IN reporting_deprn_csr(l_contract_id, l_period_from, l_period_to, l_book_type_code)
936 LOOP
937
938 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' '||RPAD(NVL(GET_CATEGORY_NAME(i.asset_category_id),' '),35)||RPAD(Okl_Accounting_Util.Get_Lookup_Meaning('OKL_ACCRUAL_ACTIVITY',l_deprn_accrual_activity),15)||LPAD(NVL(i.deprn_amount,0),20));
939
940 IF l_report_deprn_tbl.COUNT > 0 THEN
941 l_record_status2 := 'NOT-ADDED';
942 -- records exist in the pl/sql table
943 FOR z IN l_report_deprn_tbl.FIRST..l_report_deprn_tbl.LAST
944 LOOP
945 IF l_record_status2 <> 'ADDED' THEN
946 IF l_report_deprn_tbl(z).category_name = GET_CATEGORY_NAME(i.asset_category_id) THEN
947 --asset category is the same
948 IF l_deprn_accrual_activity = 'ACCRUAL' THEN
949 l_report_deprn_tbl(z).deprn_amount := l_report_deprn_tbl(z).deprn_amount + i.deprn_amount;
950 l_record_status2 := 'ADDED';
951 ELSIF l_deprn_accrual_activity = 'NON-ACCRUAL' THEN
952 l_report_deprn_tbl(z).deprn_amount := l_report_deprn_tbl(z).deprn_amount - i.deprn_amount;
953 l_record_status2 := 'ADDED';
954 END IF; -- IF l.accrual_activity = 'CATCH-UP' THEN
955 END IF;
956 END IF; -- IF record status
957 END LOOP;
958 IF l_record_status2 <> 'ADDED' THEN
959 -- category is not the same, create a new record
960 l_report_deprn_tbl(l_count2).category_name := get_category_name(i.asset_category_id);
961 IF l_deprn_accrual_activity = 'NON-ACCRUAL' THEN
962 l_report_deprn_tbl(l_count2).deprn_amount := 0 - i.deprn_amount;
963 ELSE
964 l_report_deprn_tbl(l_count2).deprn_amount := i.deprn_amount;
965 END IF;
966 l_count2 := l_count2+1;
967 l_record_status2 := 'ADDED';
968 END IF;
969 ELSE
970 -- no records in table, so create first record
971 l_report_deprn_tbl(l_count2).category_name := get_category_name(i.asset_category_id);
972 IF l_deprn_accrual_activity = 'NON-ACCRUAL' THEN
973 l_report_deprn_tbl(l_count2).deprn_amount := 0 - i.deprn_amount;
974 ELSE
975 l_report_deprn_tbl(l_count2).deprn_amount := i.deprn_amount;
976 END IF;
977 l_count2 := l_count2+1;
978 END IF;
979 END LOOP; --FOR i IN local_deprn_csr(l_contract_id)
980 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
981
982
983 EXCEPTION
984 WHEN Okl_Api.G_EXCEPTION_ERROR THEN
985 l_return_status := Okl_Api.G_RET_STS_ERROR;
986 -- Select the contract for error reporting
987 l_contract_error_tbl(l_contract_error_count) := l_contract_number;
988 l_contract_error_count := l_contract_error_count + 1;
989 FND_FILE.PUT_LINE(FND_FILE.LOG,l_contract_number||', '||
990 FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_ERROR_STATUS')||' '||
991 l_return_status);
992 Okl_Accounting_Util.GET_ERROR_MESSAGE(l_error_msg_tbl);
993 IF (l_error_msg_tbl.COUNT > 0) THEN
994 FOR i IN l_error_msg_tbl.FIRST..l_error_msg_tbl.LAST
995 LOOP
996 IF l_error_msg_tbl(i) IS NOT NULL THEN
997 FND_FILE.PUT_LINE(FND_FILE.LOG,l_error_msg_tbl(i));
998 END IF;
999 END LOOP;
1000 END IF;
1001
1002 WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1003 -- Select the contract for error reporting
1004 l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1005
1006 -- Select the contract for error reporting
1007 l_contract_error_tbl(l_contract_error_count) := l_contract_number;
1008 l_contract_error_count := l_contract_error_count + 1;
1009 FND_FILE.PUT_LINE(FND_FILE.LOG,l_contract_number||', '||
1010 FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_ERROR_STATUS')||' '||
1011 l_return_status);
1012 Okl_Accounting_Util.GET_ERROR_MESSAGE(l_error_msg_tbl);
1013 IF (l_error_msg_tbl.COUNT > 0) THEN
1014 FOR i IN l_error_msg_tbl.FIRST..l_error_msg_tbl.LAST
1015 LOOP
1016 IF l_error_msg_tbl(i) IS NOT NULL THEN
1017 FND_FILE.PUT_LINE(FND_FILE.LOG,l_error_msg_tbl(i));
1018 END IF;
1019 END LOOP;
1020 END IF;
1021
1022 WHEN OTHERS THEN
1023 IF override_status_csr%ISOPEN THEN
1024 CLOSE override_status_csr;
1025 END IF;
1026
1027 -- Select the contract for error reporting
1028 l_return_status := Okl_Api.G_RET_STS_ERROR;
1029 -- Select the contract for error reporting
1030 l_contract_error_tbl(l_contract_error_count) := l_contract_number;
1031 l_contract_error_count := l_contract_error_count + 1;
1032 FND_FILE.PUT_LINE(FND_FILE.LOG,l_contract_number||', '||
1033 FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_ERROR_STATUS')||' '||
1034 l_return_status);
1035 Okl_Accounting_Util.GET_ERROR_MESSAGE(l_error_msg_tbl);
1036 IF (l_error_msg_tbl.COUNT > 0) THEN
1037 FOR i IN l_error_msg_tbl.FIRST..l_error_msg_tbl.LAST
1038 LOOP
1039 IF l_error_msg_tbl(i) IS NOT NULL THEN
1040 FND_FILE.PUT_LINE(FND_FILE.LOG,l_error_msg_tbl(i));
1041 END IF;
1042 END LOOP;
1043 END IF;
1044
1045 END;
1046
1047 END LOOP;
1048 END IF;
1049
1050 -- Print summary for each product onto the report
1051 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1052 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1053 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_LOCAL_PRD_SUMRY')||':');
1054 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1055
1056
1057 -- Print summary for each product onto the report
1058 OPEN product_summary_csr(l_period_from, l_period_to);
1059 LOOP
1060 EXIT WHEN product_summary_csr%NOTFOUND;
1061 FETCH product_summary_csr INTO l_product_summary;
1062 IF product_summary_csr%FOUND THEN
1063 l_product_name := l_product_summary.product_name;
1064 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_PRD_NAME')||' : '||l_product_summary.product_name);
1065 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_STY_TYPE')||' : '||l_product_summary.stream_type);
1066 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||' : '||l_product_summary.currency_code);
1067 IF l_product_summary.accrual_activity = 'ACCRUAL' THEN
1068 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_AMT_ACCRUED')||' : '||l_product_summary.total_amount);
1069 ELSIF l_product_summary.accrual_activity = 'NON-ACCRUAL' THEN
1070 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_AMT_NON_ACCRUED')||' : '||l_product_summary.total_amount);
1071 END IF;
1072
1073 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_ACCOUNTS'));
1074 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_ACCOUNTS_LINE'));
1075 GET_TEMPLATE_LINES(l_product_summary.product_name
1076 ,l_product_summary.stream_type
1077 ,l_product_summary.accrual_activity
1078 ,l_ae_lines_tbl);
1079 IF l_ae_lines_tbl.COUNT >0 THEN
1080 FOR i IN l_ae_lines_tbl.FIRST..l_ae_lines_tbl.LAST
1081 LOOP
1082 l_concat_desc := okl_accounting_util.get_concat_segments(l_ae_lines_tbl(i).ccid);
1083 l_cr_dr_flag := OKL_ACCOUNTING_UTIL.GET_LOOKUP_MEANING('CR_DR',l_ae_lines_tbl(i).crd_code,101,101);
1084 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, l_cr_dr_flag||' '||l_ae_lines_tbl(i).line_type||' '||l_concat_desc);
1085 END LOOP;
1086 END IF;
1087 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1088 END IF;
1089 END LOOP;
1090
1091 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1092 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1093 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REPORT_PRD_SUMRY')||':');
1094 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1095
1096 -- Print reporting summary for each product
1097 IF l_rep_summary_tbl.COUNT > 0 THEN
1098 FOR i IN l_rep_summary_tbl.FIRST..l_rep_summary_tbl.LAST
1099 LOOP
1100 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_PRD_NAME')||' : '||l_rep_summary_tbl(i).product_name);
1101 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REP_STY_TYPE')||' : '||l_rep_summary_tbl(i).stream_type);
1102 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||' : '||l_rep_summary_tbl(i).currency_code);
1103 IF l_rep_summary_tbl(i).accrual_activity = 'ACCRUAL' THEN
1104 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_AMT_ACCOUNT')||' : '||l_rep_summary_tbl(i).total_amount);
1105 ELSIF l_rep_summary_tbl(i).accrual_activity = 'NON-ACCRUAL' THEN
1106 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_AMT_NON_ACCOUNT')||' : '||l_rep_summary_tbl(i).total_amount);
1107 END IF;
1108 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_ACCOUNTS'));
1109 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_ACCOUNTS_LINE'));
1110 GET_TEMPLATE_LINES(l_rep_summary_tbl(i).product_name
1111 ,l_rep_summary_tbl(i).stream_type
1112 ,l_rep_summary_tbl(i).accrual_activity
1113 ,l_ae_lines_tbl);
1114 IF l_ae_lines_tbl.COUNT >0 THEN
1115 FOR i IN l_ae_lines_tbl.FIRST..l_ae_lines_tbl.LAST
1116 LOOP
1117 l_concat_desc := okl_accounting_util.get_concat_segments(l_ae_lines_tbl(i).ccid);
1118 l_cr_dr_flag := OKL_ACCOUNTING_UTIL.GET_LOOKUP_MEANING('CR_DR',l_ae_lines_tbl(i).crd_code,101,101);
1119 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, l_cr_dr_flag||' '||l_ae_lines_tbl(i).line_type||' '||l_concat_desc);
1120 END LOOP;
1121 END IF;
1122 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1123 END LOOP;
1124 END IF;
1125
1126 -- print local depreciation summary
1127 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1128 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_LOCAL_DEPR_SUMRY'));
1129 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1130 -- Create Report Content
1131 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||': '||l_currency_code);
1132 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_PROMPT'),35)
1133 ||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_ACTIVITY'),23)
1134 ||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_TITLE'),18));
1135
1136 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_UNDERLINE'),35)
1137 ||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_ACTIVITY_UNDERLINE'),23)
1138 ||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_LINE'),18));
1139
1140 IF l_asset_deprn_tbl.COUNT > 0 THEN
1141 FOR j IN l_asset_deprn_tbl.FIRST..l_asset_deprn_tbl.LAST
1142 LOOP
1143 IF SIGN(l_asset_deprn_tbl(j).deprn_amount) = -1 THEN
1144 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(l_asset_deprn_tbl(j).category_name,35)||
1145 RPAD(Okl_Accounting_Util.Get_Lookup_Meaning('OKL_ACCRUAL_ACTIVITY','NON-ACCRUAL'),23)||
1146 LPAD(ABS(l_asset_deprn_tbl(j).deprn_amount),18));
1147 ELSE
1148 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(l_asset_deprn_tbl(j).category_name,35)||
1149 RPAD(Okl_Accounting_Util.Get_Lookup_Meaning('OKL_ACCRUAL_ACTIVITY','ACCRUAL'),23)||
1150 LPAD(ABS(l_asset_deprn_tbl(j).deprn_amount),18));
1151 END IF;
1152 END LOOP;
1153 END IF;
1154
1155 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1156 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1157 -- print reporting depreciation summary
1158 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_MGP_REPORT_DEPR_SUMRY'));
1159 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1160 -- Create Report Content
1161 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CURRENCY')||': '||l_currency_code);
1162 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_PROMPT'),35)
1163 ||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_ACTIVITY'),23)
1164 ||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_TITLE'),18));
1165
1166 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_AST_CAT_UNDERLINE'),35)
1167 ||RPAD(FND_MESSAGE.GET_STRING('OKL','OKL_ADA_RPT_ACTIVITY_UNDERLINE'),23)
1168 ||LPAD(FND_MESSAGE.GET_STRING('OKL','OKL_GLP_RPT_AMT_LINE'),18));
1169
1170 IF l_report_deprn_tbl.COUNT > 0 THEN
1171 FOR k IN l_report_deprn_tbl.FIRST..l_report_deprn_tbl.LAST
1172 LOOP
1173 IF SIGN(l_report_deprn_tbl(k).deprn_amount) = -1 THEN
1174 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(l_report_deprn_tbl(k).category_name,35)||
1175 RPAD(Okl_Accounting_Util.Get_Lookup_Meaning('OKL_ACCRUAL_ACTIVITY','NON-ACCRUAL'),23)||
1176 LPAD(ABS(l_report_deprn_tbl(k).deprn_amount),18));
1177 ELSE
1178 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,RPAD(l_report_deprn_tbl(k).category_name,35)||
1179 RPAD(Okl_Accounting_Util.Get_Lookup_Meaning('OKL_ACCRUAL_ACTIVITY','ACCRUAL'),23)||
1180 LPAD(ABS(l_report_deprn_tbl(k).deprn_amount),18));
1181 END IF;
1182 END LOOP;
1183 END IF;
1184
1185 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1186 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CNTRCT_ERROR_TITLE'));
1187 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_CNT_ERR_UNDERLINE'));
1188 IF l_contract_error_tbl.COUNT > 0 THEN
1189 FOR x IN l_contract_error_tbl.FIRST..l_contract_error_tbl.LAST
1190 LOOP
1191 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,l_contract_error_tbl(x));
1192 END LOOP;
1193 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1194 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_ADD_INFO'));
1195 END IF;
1196
1197 retcode := 0;
1198 l_return_status := OKL_API.G_RET_STS_SUCCESS;
1199
1200 EXCEPTION
1201 WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1202 l_return_status := Okl_Api.G_RET_STS_ERROR;
1203
1204 -- print the error message in the log file
1205 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'');
1206 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_PROGRAM_ERROR'));
1207 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_PROGRAM_STATUS')
1208 ||' '||l_return_status);
1209 Okl_Accounting_Util.GET_ERROR_MESSAGE(l_outer_error_msg_tbl);
1210 IF (l_outer_error_msg_tbl.COUNT > 0) THEN
1211 FOR i IN l_outer_error_msg_tbl.FIRST..l_outer_error_msg_tbl.LAST
1212 LOOP
1213 IF l_outer_error_msg_tbl(i) IS NOT NULL THEN
1214 FND_FILE.PUT_LINE(FND_FILE.LOG, l_outer_error_msg_tbl(i));
1215 END IF;
1216 END LOOP;
1217 END IF;
1218 retcode := 0;
1219
1220 WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1221 l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1222
1223 -- print the error message in the log file
1224 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_PROGRAM_STATUS')
1225 ||' '||l_return_status);
1226 Okl_Accounting_Util.GET_ERROR_MESSAGE(l_outer_error_msg_tbl);
1227 IF (l_outer_error_msg_tbl.COUNT > 0) THEN
1228 FOR i IN l_outer_error_msg_tbl.FIRST..l_outer_error_msg_tbl.LAST
1229 LOOP
1230 IF l_outer_error_msg_tbl(i) IS NOT NULL THEN
1231 FND_FILE.PUT_LINE(FND_FILE.LOG, l_outer_error_msg_tbl(i));
1232 END IF;
1233 END LOOP;
1234 END IF;
1235
1236 retcode := 2;
1237
1238 WHEN OTHERS THEN
1239
1240 IF org_name_csr%ISOPEN THEN
1241 CLOSE org_name_csr;
1242 END IF;
1243
1244 l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1245
1246 -- print the error message in the log file
1247 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET_STRING('OKL','OKL_AGN_RPT_PROGRAM_STATUS')
1248 ||' '||l_return_status);
1249 Okl_Accounting_Util.GET_ERROR_MESSAGE(l_outer_error_msg_tbl);
1250 IF (l_outer_error_msg_tbl.COUNT > 0) THEN
1251 FOR i IN l_outer_error_msg_tbl.FIRST..l_outer_error_msg_tbl.LAST
1252 LOOP
1253 IF l_outer_error_msg_tbl(i) IS NOT NULL THEN
1254 FND_FILE.PUT_LINE(FND_FILE.LOG, l_outer_error_msg_tbl(i));
1255 END IF;
1256 END LOOP;
1257 END IF;
1258
1259 errbuf := SQLERRM;
1260 retcode := 2;
1261
1262
1263 END MULTI_GAAP_SUPPORT;
1264
1265 END OKL_MULTI_GAAP_PVT;