[Home] [Help]
PACKAGE BODY: APPS.OKL_REVERSAL_PVT
Source
1 PACKAGE BODY OKL_REVERSAL_PVT AS
2 /* $Header: OKLRREVB.pls 120.8.12010000.3 2008/11/12 10:47:30 racheruv ship $ */
3
4 -- Start of wraper code generated automatically by Debug code generator
5
6 L_MODULE VARCHAR2(40) := 'LEASE.ACCOUNTING.REVERSAL';
7 L_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
8 L_LEVEL_PROCEDURE NUMBER;
9 IS_DEBUG_PROCEDURE_ON BOOLEAN;
10
11 -- End of wraper code generated automatically by Debug code generator
12
13 -- Record type for printing the report
14
15 TYPE PROCESS_REC_TYPE IS RECORD
16 (Contract_NUMBER VARCHAR2(90),
17 Transaction_type VARCHAR2(78),
18 Transaction_number VARCHAR2(45),
19 Transaction_date VARCHAR2(36),
20 Transaction_Line_number VARCHAR2(21),
21 Amount VARCHAR2(54),
22 Org_accounting_date VARCHAR2(36),
23 Reversal_Accounting_Date VARCHAR2(36));
24
25 l_contract_num_len NUMBER:=30;
26 l_transaction_type_len NUMBER:=26;
27 l_transaction_num_len NUMBER:=15;
28 l_transaction_date_len NUMBER:=12;
29 l_transaction_line_num_len NUMBER:=7;
30 l_amount_len NUMBER:=18;
31 l_accounting_date_len NUMBER:=12;
32 l_rev_acc_date_len NUMBER:=12;
33
34
35
36
37 --- Function to get the proper length depending upon the data to be printed.
38
39 FUNCTION GET_PROPER_LENGTH(p_input_data IN VARCHAR2,
40 p_input_length IN NUMBER,
41 p_input_type IN VARCHAR2)
42 RETURN VARCHAR2
43
44 IS
45
46 x_return_data VARCHAR2(1000);
47
48 BEGIN
49
50 IF (p_input_type = 'TITLE') THEN
51 IF (p_input_data IS NOT NULL) THEN
52 x_return_data := RPAD(SUBSTR(ltrim(rtrim(p_input_data)),1,p_input_length),p_input_length,' ');
53 ELSE
54 x_return_data := RPAD(' ',p_input_length,' ');
55 END IF;
56 ELSE
57 IF (p_input_data IS NOT NULL) THEN
58 IF (length(p_input_data) > p_input_length) THEN
59 x_return_data := RPAD('*',p_input_length,'*');
60 ELSE
61 x_return_data := RPAD(p_input_data,p_input_length,' ');
62 END IF;
63 ELSE
64 x_return_data := RPAD(' ',p_input_length,' ');
65 END IF;
66 END IF;
67
68 RETURN x_return_data;
69
70 END GET_PROPER_LENGTH;
71
72
73
74
75
76
77 PROCEDURE REVERSE_ENTRIES(p_errbuf OUT NOCOPY VARCHAR2,
78 p_retcode OUT NOCOPY NUMBER,
79 p_period IN VARCHAR2)
80 IS
81
82 BEGIN
83 --Stubbed out this procedure for Bug 5707866 (SLA Uptake of periodic reversal concurrent program).
84
85 FND_MESSAGE.SET_NAME( application =>g_app_name ,
86 NAME => 'OKL_OBS_PERD_REV_PRG' );
87 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
88
89 END REVERSE_ENTRIES;
90
91
92
93 PROCEDURE REVERSE_ENTRIES(p_api_version IN NUMBER,
94 p_init_msg_list IN VARCHAR2,
95 x_return_status OUT NOCOPY VARCHAR2,
96 x_msg_count OUT NOCOPY NUMBER,
97 x_msg_data OUT NOCOPY VARCHAR2,
98 p_source_id IN NUMBER,
99 p_source_table IN VARCHAR2,
100 p_acct_date IN DATE)
101 IS
102
103 TYPE ref_cursor IS REF CURSOR;
104 src_csr ref_cursor;
105
106
107 l_set_of_books_id NUMBER;
108 l_org_id NUMBER;
109 l_period_name GL_PERIODS_V.period_name%TYPE;
110 l_closing_status GL_PERIOD_STATUSES_V.closing_status%TYPE;
111
112 l_new_description OKL_AE_HEADERS.DESCRIPTION%TYPE;
113
114 l_dist_tbl_in OKL_TRNS_ACC_DSTRS_PUB.tabv_tbl_type;
115 l_dist_tbl_out OKL_TRNS_ACC_DSTRS_PUB.tabv_tbl_type;
116
117 i NUMBER := 1;
118 j NUMBER := 0;
119 l_line_number NUMBER := 0;
120 l_validate_flag VARCHAR2(1);
121
122 l_return_status VARCHAR2(1);
123 l_api_name VARCHAR2(30) := 'REVERSE_ENTRIES';
124 l_init_msg_list VARCHAR2(1);
125 l_msg_count NUMBER;
126 l_msg_data VARCHAR2(2000);
127 l_api_version NUMBER := 1.0;
128 l_application_id NUMBER := 101; -- This should be changed to 540
129 l_dummy_var VARCHAR2(1);
130 l_string VARCHAR2(500);
131 l_event_number NUMBER := 0;
132 l_start_date DATE;
133 l_end_date DATE;
134 l_period_status GL_PERIOD_STATUSES_V.CLOSING_STATUS%TYPE;
135
136
137
138 CURSOR prdst_csr(v_period_name VARCHAR2) IS
139 SELECT prdst.closing_status
140 FROM GL_PERIOD_STATUSES_V prdst
141 WHERE prdst.ledger_id = OKL_ACCOUNTING_UTIL.get_set_of_books_id
142 AND prdst.period_name = v_period_name
143 AND prdst.APPLICATION_ID = l_application_id;
144
145 CURSOR check_dist_csr
146 IS
147 SELECT 'x'
148 FROM OKL_TRNS_ACC_DSTRS
149 WHERE source_id = p_source_id
150 AND source_table = p_source_table
151 AND REVERSE_EVENT_FLAG = 'Y';
152
153
154 CURSOR dist_csr IS
155 SELECT ID
156 ,CURRENCY_CONVERSION_TYPE
157 ,SET_OF_BOOKS_ID
158 ,CR_DR_FLAG
159 ,CODE_COMBINATION_ID
160 ,ORG_ID
161 ,CURRENCY_CODE
162 ,AE_LINE_TYPE
163 ,TEMPLATE_ID
164 ,SOURCE_ID
165 ,SOURCE_TABLE
166 ,OBJECT_VERSION_NUMBER
167 ,AMOUNT
168 ,ACCOUNTED_AMOUNT
169 ,GL_DATE
170 ,PERCENTAGE
171 ,COMMENTS
172 ,POST_REQUEST_ID
173 ,CURRENCY_CONVERSION_DATE
174 ,CURRENCY_CONVERSION_RATE
175 ,REQUEST_ID
176 ,PROGRAM_APPLICATION_ID
177 ,PROGRAM_ID
178 ,PROGRAM_UPDATE_DATE
179 ,ATTRIBUTE_CATEGORY
180 ,ATTRIBUTE1
181 ,ATTRIBUTE2
182 ,ATTRIBUTE3
183 ,ATTRIBUTE4
184 ,ATTRIBUTE5
185 ,ATTRIBUTE6
186 ,ATTRIBUTE7
187 ,ATTRIBUTE8
188 ,ATTRIBUTE9
189 ,ATTRIBUTE10
190 ,ATTRIBUTE11
191 ,ATTRIBUTE12
192 ,ATTRIBUTE13
193 ,ATTRIBUTE14
194 ,ATTRIBUTE15
195 ,CREATED_BY
196 ,CREATION_DATE
197 ,LAST_UPDATED_BY
198 ,LAST_UPDATE_DATE
199 ,LAST_UPDATE_LOGIN
200 ,AET_ID
201 ,POSTED_YN
202 ,AE_CREATION_ERROR
203 ,GL_REVERSAL_FLAG
204 ,POST_TO_GL
205 ,REVERSE_EVENT_FLAG
206 ,ORIGINAL_DIST_ID
207 FROM OKL_TRNS_ACC_DSTRS
208 WHERE source_table = p_source_table
209 AND source_id = p_source_id;
210
211 dist_rec dist_csr%ROWTYPE;
212
213 -- Cursor to get the short_name to be passed as
214 -- the representation code. SLA Uptake
215 -- extended to get the representation based on tcn_id.. MG Uptake
216 CURSOR get_gl_short_name_csr(p_tcn_id NUMBER) IS
217 SELECT rep.representation_code
218 FROM okl_trx_contracts_all o,
219 okl_representations_v rep
220 WHERE o.set_of_books_id = rep.ledger_id
221 AND o.id = p_tcn_id;
222
223 --Cursor to get the Account Derivation Option.. SLA Uptake
224 CURSOR get_acct_derivation_csr IS
225 SELECT account_derivation
226 FROM okl_sys_acct_opts;
227
228 --Cursor to get the transaction header id .. SLA Uptake
229 CURSOR get_tcn_id_csr IS
230 SELECT tcn_id
231 FROM okl_txl_cntrct_lns_all
232 WHERE id = p_source_id;
233
234 -- Cursor to get transaction type name .. SLA Uptake
235 CURSOR get_try_name_csr(p_tcn_id IN NUMBER) IS
236 SELECT t.name
237 FROM okl_trx_types_tl t, okl_trx_contracts_all tcn
238 WHERE tcn.try_id = t.id
239 AND tcn.id = p_tcn_id
240 AND LANGUAGE = 'US';
241
242 l_account_derivation_option VARCHAR2(10);
243 l_tcn_id NUMBER;
244 l_try_name VARCHAR2(150);
245 l_gl_short_name VARCHAR2(20);
246 l_event_id NUMBER;
247 l_exist_event_id NUMBER;
248 l_exist_event_date DATE;
249 l_accounting_event_id NUMBER;
250
251
252 BEGIN
253
254
255 x_return_status := OKL_API.G_RET_STS_SUCCESS;
256
257 -- Validate Source id and Source Table
258
259
260 IF (p_source_table IS NULL OR p_source_table = OKL_API.G_MISS_CHAR) THEN
261 OKL_API.SET_MESSAGE(p_app_name => g_app_name
262 ,p_msg_name => g_required_value
263 ,p_token1 => g_col_name_token
264 ,p_token1_value => 'source_table');
265 x_return_status := OKL_API.G_RET_STS_ERROR;
266 RAISE OKL_API.G_EXCEPTION_ERROR;
267 END IF;
268
269 IF (p_source_id IS NULL OR p_source_id = OKL_API.G_MISS_NUM) THEN
270 OKL_API.SET_MESSAGE(p_app_name => g_app_name
271 ,p_msg_name => g_required_value
272 ,p_token1 => g_col_name_token
273 ,p_token1_value => 'source_id');
274 x_return_status := OKL_API.G_RET_STS_ERROR;
275 RAISE OKL_API.G_EXCEPTION_ERROR;
276 END IF;
277
278 IF (p_acct_date IS NULL OR p_acct_date = OKL_API.G_MISS_DATE) THEN
279 OKL_API.SET_MESSAGE(p_app_name => g_app_name
280 ,p_msg_name => g_required_value
281 ,p_token1 => g_col_name_token
282 ,p_token1_value => 'acct_date');
283 x_return_status := OKL_API.G_RET_STS_ERROR;
284 RAISE OKL_API.G_EXCEPTION_ERROR;
285 END IF;
286
287 l_validate_flag :=
288 OKL_ACCOUNTING_UTIL.VALIDATE_SOURCE_ID_TABLE(p_source_id => p_source_Id,
289 p_source_table => p_source_table);
290
291 IF (l_validate_flag = OKL_API.G_FALSE) THEN
292 OKL_API.set_message(p_app_name => G_APP_NAME,
293 p_msg_name => 'OKL_INVALID_SOURCE_TBL_ID');
294
295 RAISE OKL_API.G_EXCEPTION_ERROR;
296
297 END IF;
298
299
300 OKL_ACCOUNTING_UTIL.get_period_info(p_date => p_acct_date,
301 p_period_name => l_period_name,
302 p_start_date => l_start_date,
303 p_end_date => l_end_date);
304
305 IF (l_period_name IS NULL) THEN
306 OKL_API.set_message(p_app_name => G_APP_NAME,
307 p_msg_name => 'OKL_ACCT_PERD_NOT_FOUND',
308 p_token1 => 'ACCT_DATE',
309 p_token1_value => p_acct_date);
310 RAISE OKL_API.G_EXCEPTION_ERROR;
311 END IF;
312
313 l_period_status := OKL_ACCOUNTING_UTIL.get_okl_period_status(l_period_name);
314
315 IF (l_period_status NOT IN ('O','F')) THEN
316 OKL_API.set_message(p_app_name => G_APP_NAME,
317 p_msg_name => 'OKL_PERD_INVALID_STATUS',
318 p_token1 => 'PERIOD',
319 p_token1_value => l_period_name);
320
321 RAISE OKL_API.G_EXCEPTION_ERROR;
322 END IF;
323
324 -- If the selected event is already reversed earlier then Abort the processing
325
326 OPEN check_dist_csr;
327 FETCH check_dist_csr INTO l_dummy_var;
328 IF (check_dist_csr%FOUND) THEN
329 OKL_API.set_message(p_app_name => G_APP_NAME,
330 p_msg_name => 'OKL_TXN_ALREADY_REVERSED');
331
332 CLOSE check_dist_csr;
333 RAISE OKL_API.G_EXCEPTION_ERROR;
334 END IF;
335 CLOSE check_dist_csr;
336
337
338 OPEN dist_csr;
339 FETCH dist_csr INTO dist_rec;
340 IF (dist_csr%NOTFOUND) THEN
341 -- Santonyr on 14-Feb-2003 Fixed bug 2804913
342 OKL_API.set_message(p_app_name => G_APP_NAME,
343 p_msg_name => 'OKL_DIST_NOT_FOUND');
344 CLOSE dist_csr;
345 RAISE OKL_API.G_EXCEPTION_ERROR;
346 END IF;
347
348 -- SLA uptake changes .. start
349 l_event_id := NULL;
350 l_exist_event_id := NULL;
351 l_exist_event_date := NULL;
352
353 OPEN get_acct_derivation_csr;
354 FETCH get_acct_derivation_csr INTO l_account_derivation_option;
355 CLOSE get_acct_derivation_csr;
356
357 IF p_source_table = 'OKL_TXL_CNTRCT_LNS' THEN
358 OPEN get_tcn_id_csr;
359 FETCH get_tcn_id_csr INTO l_tcn_id;
360 CLOSE get_tcn_id_csr;
361
362 OPEN get_try_name_csr(l_tcn_id);
363 FETCH get_try_name_csr INTO l_try_name;
364 CLOSE get_try_name_csr;
365
366 IF l_try_name IN
367 ('Booking','Rebook','Release','Termination','Evergreen','Investor',
368 'Asset Disposition', 'Receipt Application','Principal Adjustment',
369 'Specific Loss Provision','General Loss Provision','Accrual',
370 'Upfront Tax') THEN
371
372 -- changed the cursor to fetch gl short name based on tcn_id .. MG uptake
373 OPEN get_gl_short_name_csr(l_tcn_id);
374 FETCH get_gl_short_name_csr INTO l_gl_short_name;
375 CLOSE get_gl_short_name_csr;
376
377 -- Verify existence of event.It's possible to have an event raised for one of the
378 -- transaction lines before. If event is raised for the same transaction, event type
379 -- and event date then re-use it. Do not raise a new event.
380 OKL_XLA_EVENTS_PVT.event_exists(p_api_version => l_api_version
381 ,p_init_msg_list => l_init_msg_list
382 ,x_return_status => l_return_status
383 ,x_msg_count => l_msg_count
384 ,x_msg_data => l_msg_data
385 ,p_tcn_id => l_tcn_id
386 ,p_action_type => 'REVERSE'
387 ,x_event_id => l_exist_event_id
388 ,x_event_date => l_exist_event_date);
389
390 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
391 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
392 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
393 RAISE OKL_API.G_EXCEPTION_ERROR;
394 END IF;
395
396 l_accounting_event_id := l_exist_event_id;
397
398 IF (NVL(l_exist_event_id,0) = 0 AND
399 NVL(l_exist_event_date, trunc(sysdate) + 1) <> p_acct_date) THEN
400 -- END of code to be deleted once all teams uptake AE call.
401
402 l_event_id :=
403 OKL_XLA_EVENTS_PVT.create_event(p_api_version => l_api_version
404 ,p_init_msg_list => l_init_msg_list
405 ,x_return_status => l_return_status
406 ,x_msg_count => l_msg_count
407 ,x_msg_data => l_msg_data
408 ,p_tcn_id => l_tcn_id
409 ,p_gl_date => p_acct_date
410 ,p_action_type => 'REVERSE'
411 ,p_representation_code => l_gl_short_name
412 );
413
414 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
415 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
416 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
417 RAISE OKL_API.G_EXCEPTION_ERROR;
418 END IF;
419
420 l_accounting_event_id := l_event_id;
421
422 END IF; -- if l_exist_event_id
423 END IF; -- IF l_try_name
424
425 END IF; -- IF p_source_table
426 -- SLA uptake changes .. end
427 i := 1;
428
429 LOOP
430
431 -- SLA Uptake modifications.. start
432 IF (dist_rec.CR_DR_FLAG IS NULL) THEN
433 l_dist_tbl_in(i).CR_DR_FLAG := NULL;
434 l_dist_tbl_in(i).AMOUNT := -1 * dist_rec.amount;
435 l_dist_tbl_in(i).ACCOUNTED_AMOUNT := -1 * dist_rec.accounted_amount;
436 ELSIF (dist_rec.CR_DR_FLAG = 'D') THEN
437 l_dist_tbl_in(i).CR_DR_FLAG := 'C';
438 l_dist_tbl_in(i).AMOUNT := dist_rec.amount;
439 l_dist_tbl_in(i).ACCOUNTED_AMOUNT := dist_rec.accounted_amount;
440 ELSE
441 l_dist_tbl_in(i).CR_DR_FLAG := 'D';
442 l_dist_tbl_in(i).AMOUNT := dist_rec.amount;
443 l_dist_tbl_in(i).ACCOUNTED_AMOUNT := dist_rec.accounted_amount;
444 END IF;
445 -- SLA Uptake modifications .. end
446
447 l_dist_tbl_in(i).CURRENCY_CONVERSION_TYPE := dist_rec.currency_conversion_type;
448 l_dist_tbl_in(i).CODE_COMBINATION_ID := dist_rec.code_combination_id;
449 l_dist_tbl_in(i).CURRENCY_CODE := dist_rec.currency_code;
450 l_dist_tbl_in(i).AE_LINE_TYPE := dist_rec.ae_line_type;
451 l_dist_tbl_in(i).TEMPLATE_ID := dist_rec.template_id;
452 l_dist_tbl_in(i).SOURCE_ID := dist_rec.source_id;
453 l_dist_tbl_in(i).SOURCE_TABLE := dist_rec.source_table;
454 l_dist_tbl_in(i).GL_DATE := p_acct_date;
455 l_dist_tbl_in(i).PERCENTAGE := dist_rec.percentage;
456 l_dist_tbl_in(i).COMMENTS := dist_rec.comments;
457 l_dist_tbl_in(i).CURRENCY_CONVERSION_DATE := dist_rec.currency_conversion_date;
458 l_dist_tbl_in(i).CURRENCY_CONVERSION_RATE := dist_rec.currency_conversion_rate;
459 l_dist_tbl_in(i).ATTRIBUTE_CATEGORY := dist_rec.attribute_category;
460 l_dist_tbl_in(i).ATTRIBUTE1 := dist_rec.attribute1;
461 l_dist_tbl_in(i).ATTRIBUTE2 := dist_rec.attribute2;
462 l_dist_tbl_in(i).ATTRIBUTE3 := dist_rec.attribute3;
463 l_dist_tbl_in(i).ATTRIBUTE4 := dist_rec.attribute4;
464 l_dist_tbl_in(i).ATTRIBUTE5 := dist_rec.attribute5;
465 l_dist_tbl_in(i).ATTRIBUTE6 := dist_rec.attribute6;
466 l_dist_tbl_in(i).ATTRIBUTE7 := dist_rec.attribute7;
467 l_dist_tbl_in(i).ATTRIBUTE8 := dist_rec.attribute8;
468 l_dist_tbl_in(i).ATTRIBUTE9 := dist_rec.attribute9;
469 l_dist_tbl_in(i).ATTRIBUTE10 := dist_rec.attribute10;
470 l_dist_tbl_in(i).ATTRIBUTE11 := dist_rec.attribute11;
471 l_dist_tbl_in(i).ATTRIBUTE12 := dist_rec.attribute12;
472 l_dist_tbl_in(i).ATTRIBUTE13 := dist_rec.attribute13;
473 l_dist_tbl_in(i).ATTRIBUTE14 := dist_rec.attribute14;
474 l_dist_tbl_in(i).ATTRIBUTE15 := dist_rec.attribute15;
475 l_dist_tbl_in(i).AET_ID := NULL;
476 l_dist_tbl_in(i).POSTED_YN := 'Y';
477 l_dist_tbl_in(i).AE_CREATION_ERROR := NULL;
478 l_dist_tbl_in(i).GL_REVERSAL_FLAG := 'N';
479 l_dist_tbl_in(i).POST_TO_GL := dist_rec.post_to_gl;
480 l_dist_tbl_in(i).REVERSE_EVENT_FLAG := 'Y';
481 l_dist_tbl_in(i).ORIGINAL_DIST_ID := dist_rec.ID;
482 l_dist_tbl_in(i).ACCOUNTING_EVENT_ID := l_accounting_event_id;
483 -- populate the set of books.
484 l_dist_tbl_in(i).set_of_books_id := dist_rec.set_of_books_id;
485
486 FETCH dist_csr INTO dist_rec;
487 EXIT WHEN dist_csr%NOTFOUND;
488 i := i + 1;
489
490 END LOOP;
491
492 CLOSE dist_csr;
493
494 -- Start of wraper code generated automatically by Debug code generator for OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs
495 IF(L_DEBUG_ENABLED='Y') THEN
496 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
497 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
498 END IF;
499 IF(IS_DEBUG_PROCEDURE_ON) THEN
500 BEGIN
501 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRREVB.pls call OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs ');
502 END;
503 END IF;
504
505 OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs(p_api_version => l_api_version,
506 p_init_msg_list => p_init_msg_list,
507 x_return_status => l_return_status,
508 x_msg_count => x_msg_count,
509 x_msg_data => x_msg_data,
510 p_tabv_tbl => l_dist_tbl_in,
511 x_tabv_tbl => l_dist_tbl_out);
512 IF(IS_DEBUG_PROCEDURE_ON) THEN
513 BEGIN
514 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRREVB.pls call OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs ');
515 END;
516 END IF;
517 -- End of wraper code generated automatically by Debug code generator for OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs
518
519
520 x_return_status := l_return_status;
521
522 EXCEPTION
523
524 WHEN OKL_API.G_EXCEPTION_ERROR THEN
525
526 x_return_status := OKL_API.G_RET_STS_ERROR;
527
528 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
529
530 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
531
532 WHEN OTHERS THEN
533
534 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
535
536
537 END REVERSE_ENTRIES;
538
539
540
541 PROCEDURE REVERSE_ENTRIES(p_api_version IN NUMBER,
542 p_init_msg_list IN VARCHAR2,
543 x_return_status OUT NOCOPY VARCHAR2,
544 x_msg_count OUT NOCOPY NUMBER,
545 x_msg_data OUT NOCOPY VARCHAR2,
546 p_source_table IN VARCHAR2,
547 p_acct_date IN DATE,
548 p_source_id_tbl IN SOURCE_ID_TBL_TYPE)
549 IS
550
551 l_api_version CONSTANT NUMBER := 1;
552 l_api_name CONSTANT VARCHAR2(30) := 'REVERSE_ENTRIES';
553 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
554 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
555 i NUMBER := 0;
556 l_msg_count NUMBER := 0;
557 l_msg_data VARCHAR2(2000);
558
559
560 BEGIN
561
562 IF (p_source_id_tbl.COUNT > 0) THEN
563
564 i := p_source_id_tbl.FIRST;
565
566 LOOP
567
568 REVERSE_ENTRIES(p_api_version => 1.0,
569 p_init_msg_list => OKL_API.G_FALSE,
570 x_return_status => l_return_status,
571 x_msg_count => l_msg_count,
572 x_msg_data => l_msg_data,
573 p_source_id => p_source_id_tbl(i),
574 p_source_table => p_source_table,
575 p_acct_date => p_acct_date);
576
577 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
578 IF (l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
579 l_overall_status := l_return_status;
580 END IF;
581 END IF;
582
583
584 EXIT WHEN (i = p_source_id_tbl.LAST);
585 i := p_source_id_tbl.NEXT(i);
586
587
588 END LOOP;
589
590 END IF;
591
592
593 x_return_status := l_overall_status;
594 x_msg_data := l_msg_data;
595 x_msg_count := l_msg_count;
596
597
598 END REVERSE_ENTRIES;
599
600
601
602 PROCEDURE SUBMIT_PERIOD_REVERSAL(p_api_version IN NUMBER,
603 p_init_msg_list IN VARCHAR2,
604 x_return_status OUT NOCOPY VARCHAR2,
605 x_msg_count OUT NOCOPY NUMBER,
606 x_msg_data OUT NOCOPY VARCHAR2,
607 p_period IN VARCHAR2,
608 x_request_id OUT NOCOPY NUMBER)
609 IS
610
611 l_api_version CONSTANT NUMBER := 1.0;
612 l_api_name CONSTANT VARCHAR2(30) := 'SUBMIT_PERIOD_REVERSAL';
613 l_return_status VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
614 l_init_msg_list VARCHAR2(20) DEFAULT Okl_Api.G_FALSE;
615 l_msg_count NUMBER;
616 l_msg_data VARCHAR2(2000);
617
618 BEGIN
619
620 x_return_status := OKL_API.G_RET_STS_SUCCESS;
621
622 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
623 G_PKG_NAME,
624 p_init_msg_list,
625 l_api_version,
626 p_api_version,
627 '_PVT',
628 x_return_status);
629 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
630 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
631 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
632 RAISE OKL_API.G_EXCEPTION_ERROR;
633 END IF;
634
635 -- check for period name before submitting the request.
636 IF (p_period IS NULL) OR (p_period = Okl_Api.G_MISS_CHAR) THEN
637 Okc_Api.set_message('OKC', G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Period Name');
638 RAISE Okl_Api.G_EXCEPTION_ERROR;
639 END IF;
640
641 -- Submit Concurrent Program Request for interest calculation
642
643 FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
644 x_request_id := FND_REQUEST.SUBMIT_REQUEST
645 (application => 'OKL',
646 program => 'PERIOD_REVERSAL',
647 description => 'Period Reversal',
648 argument1 => p_period);
649
650 IF x_request_id = 0 THEN
651 Okc_Api.set_message(p_app_name => 'OFA',
652 p_msg_name => 'FA_DEPRN_TAX_ERROR',
653 p_token1 => 'REQUEST_ID',
654 p_token1_value => x_request_id);
655 RAISE okl_api.g_exception_error;
656
657 END IF;
658
659 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
660
661 EXCEPTION
662
663 WHEN OKL_API.G_EXCEPTION_ERROR THEN
664 x_return_status := OKL_API.HANDLE_EXCEPTIONS
665 (
666 l_api_name,
667 G_PKG_NAME,
668 'OKL_API.G_RET_STS_ERROR',
669 x_msg_count,
670 x_msg_data,
671 '_PVT'
672 );
673 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
674 x_return_status := OKL_API.HANDLE_EXCEPTIONS
675 (
676 l_api_name,
677 G_PKG_NAME,
678 'OKL_API.G_RET_STS_UNEXP_ERROR',
679 x_msg_count,
680 x_msg_data,
681 '_PVT'
682 );
683 WHEN OTHERS THEN
684 x_return_status := OKL_API.HANDLE_EXCEPTIONS
685 (
686 l_api_name,
687 G_PKG_NAME,
688 'OTHERS',
689 x_msg_count,
690 x_msg_data,
691 '_PVT'
692 );
693
694
695 END SUBMIT_PERIOD_REVERSAL;
696
697
698 END OKL_REVERSAL_PVT;