[Home] [Help]
PACKAGE BODY: APPS.OKL_MISC_TRANS_PVT
Source
1 PACKAGE BODY OKL_MISC_TRANS_PVT AS
2 /* $Header: OKLRMSCB.pls 120.7 2008/01/17 10:13:59 veramach noship $ */
3 -- Start of wraper code generated automatically by Debug code generator
4 L_MODULE VARCHAR2(40) := 'LEASE.ACCOUNTING.TRANSACTIONS';
5 L_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6 L_LEVEL_PROCEDURE NUMBER;
7 IS_DEBUG_PROCEDURE_ON BOOLEAN;
8 -- End of wraper code generated automatically by Debug code generator
9
10 -- Function to check if the distributions have gone to Accounting or GL
11
12 -- Added by Santonyr on 26-Jul-2004 for the bug 3772490
13
14 SUBTYPE asev_rec_type IS Okl_Acct_Sources_Pvt.asev_rec_type;
15 SUBTYPE asev_tbl_type IS Okl_Acct_Sources_Pvt.asev_tbl_type;
16
17
18 FUNCTION CHECK_DIST(p_source_id IN NUMBER,
19 p_source_table IN VARCHAR2)
20
21 RETURN NUMBER
22
23
24 IS
25
26 l_posted_yn VARCHAR2(1);
27 l_gl_transfer_flag VARCHAR2(1);
28
29 CURSOR dist_csr(v_source_id NUMBER,
30 v_source_table VARCHAR2) IS
31 SELECT POSTED_YN
32 FROM OKL_TRNS_ACC_DSTRS
33 WHERE source_id = v_source_id
34 AND source_table = v_source_table;
35
36
37 CURSOR aeh_csr(v_source_id NUMBER,
38 v_source_table VARCHAR2) IS
39
40 SELECT gl_transfer_flag
41 FROM OKL_AE_HEADERS aeh, OKL_ACCOUNTING_EVENTS aet
42 WHERE aeh.accounting_event_id = aet.accounting_event_id
43 AND aet.source_id = v_source_id
44 AND aet.source_table = v_source_table;
45
46 BEGIN
47
48 OPEN dist_csr(p_source_id, p_source_table);
49 FETCH dist_csr INTO l_posted_yn;
50 IF (dist_csr%NOTFOUND) THEN -- Distributions do not exist
51 CLOSE dist_csr;
52 RETURN 0;
53 END IF;
54 CLOSE dist_csr;
55
56 IF (l_posted_yn = 'N') THEN -- Distributions exist and are not posted to AE
57 RETURN 1;
58 ELSIF (l_posted_yn = 'Y') THEN -- Posted
59 OPEN aeh_csr(p_source_id, p_source_table);
60 FETCH aeh_csr INTO l_gl_transfer_flag;
61 CLOSE aeh_csr;
62 IF (l_gl_transfer_flag <> 'N') THEN
63 RETURN 3; -- Gone to GL
64 ELSE
65 RETURN 2; -- Not Gone to GL
66 END IF;
67 END IF;
68
69 END CHECK_DIST;
70
71
72
73 PROCEDURE DELETE_DIST_AE(p_flag IN VARCHAR2,
74 p_source_id IN NUMBER,
75 p_source_table IN VARCHAR2,
76 x_return_status OUT NOCOPY VARCHAR2)
77
78 IS
79
80 CURSOR dist_csr(v_source_id NUMBER, v_source_table VARCHAR2) IS
81 SELECT ID
82 FROM OKL_TRNS_ACC_DSTRS
83 WHERE source_id = v_source_id
84 AND source_table = v_source_table;
85
86 CURSOR aet_csr(v_source_id NUMBER, v_source_table VARCHAR2) IS
87 SELECT accounting_event_id
88 FROM OKL_ACCOUNTING_EVENTS
89 WHERE source_id = v_source_id
90 AND source_table = v_source_table;
91
92 l_dist_tbl TABV_TBL_TYPE;
93 l_aetv_rec OKL_ACCT_EVENT_PUB.AETV_REC_TYPE;
94 i NUMBER := 0;
95 l_api_version NUMBER := 1.0;
96 l_init_msg_list VARCHAR2(1) := OKL_API.G_FALSE;
97 l_msg_count NUMBER := 0;
98 l_msg_data VARCHAR2(2000);
99 l_id NUMBER;
100 l_aet_id NUMBER;
101
102 -- Added by Santonyr on 26-Jul-2004 for the bug 3772490
103
104 CURSOR src_csr(v_source_id NUMBER, v_source_table VARCHAR2) IS
105 SELECT ID
106 FROM OKL_ACCT_SOURCES
107 WHERE source_id = v_source_id
108 AND source_table = v_source_table;
109
110 -- Added by Santonyr on 26-Jul-2004 for the bug 3772490
111
112 l_asev_rec ASEV_REC_TYPE;
113 x_asev_rec ASEV_REC_TYPE;
114
115
116 BEGIN
117
118 x_return_status := OKL_API.G_RET_STS_SUCCESS;
119
120 IF (p_flag = 'DIST') THEN
121
122 OPEN dist_csr(p_source_id, p_source_table);
123 LOOP
124 FETCH dist_csr INTO l_id;
125 EXIT WHEN dist_csr%NOTFOUND;
126 i := i + 1;
127 l_dist_tbl(i).ID := l_id;
128 END LOOP;
129
130 CLOSE dist_csr;
131
132 IF (l_dist_tbl.COUNT > 0) THEN
133
134 -- Start of wraper code generated automatically by Debug code generator for Okl_Trns_Acc_Dstrs_Pub.delete_trns_acc_dstrs
135 IF(L_DEBUG_ENABLED='Y') THEN
136 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
137 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
138 END IF;
139 IF(IS_DEBUG_PROCEDURE_ON) THEN
140 BEGIN
141 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRMSCB.pls call Okl_Trns_Acc_Dstrs_Pub.delete_trns_acc_dstrs ');
142 END;
143 END IF;
144 Okl_Trns_Acc_Dstrs_Pub.delete_trns_acc_dstrs(p_api_version => l_api_version
145 ,p_init_msg_list => l_init_msg_list
146 ,x_return_status => x_return_status
147 ,x_msg_count => l_msg_count
148 ,x_msg_data => l_msg_data
149 ,p_tabv_tbl => l_dist_tbl);
150 IF(IS_DEBUG_PROCEDURE_ON) THEN
151 BEGIN
152 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRMSCB.pls call Okl_Trns_Acc_Dstrs_Pub.delete_trns_acc_dstrs ');
153 END;
154 END IF;
155 -- End of wraper code generated automatically by Debug code generator for Okl_Trns_Acc_Dstrs_Pub.delete_trns_acc_dstrs
156
157 END IF;
158
159
160 OPEN src_csr(p_source_id, p_source_table);
161 FETCH src_csr INTO l_id;
162 CLOSE src_csr;
163
164 l_asev_rec.ID :=l_id;
165
166 -- Start of wraper code generated automatically by Debug code generator for Okl_Trns_Acc_Dstrs_Pub.delete_trns_acc_dstrs
167 IF(IS_DEBUG_PROCEDURE_ON) THEN
168 BEGIN
169 Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRTDTB.pls call Okl_Acct_Sources_Pvt.delete_acct_sources ');
170 END;
171 END IF;
172
173
174 Okl_Acct_Sources_Pvt.delete_acct_sources (
175 p_api_version => l_api_version
176 ,p_init_msg_list => l_init_msg_list
177 ,x_return_status => x_return_status
178 ,x_msg_count => l_msg_count
179 ,x_msg_data => l_msg_data
180 ,p_asev_rec => l_asev_rec);
181
182 IF(IS_DEBUG_PROCEDURE_ON) THEN
183 BEGIN
184 Okl_Debug_Pub.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRTDTB.pls call Okl_Acct_Sources_Pvt.delete_acct_sources ');
185 END;
186 END IF;
187 -- End of wraper code generated automatically by Debug code generator for Okl_Trns_Acc_Dstrs_Pub.delete_trns_acc_dstrs
188
189
190
191 END IF;
192
193
194 IF (p_flag = 'AE') THEN
195
196 OPEN aet_csr(p_source_id, p_source_table);
197 FETCH aet_csr INTO l_aet_id;
198 CLOSE aet_csr;
199
200 l_aetv_rec.accounting_event_ID := l_aet_id;
201
202 -- Start of wraper code generated automatically by Debug code generator for Okl_Acct_Event_Pub.delete_acct_event
203 IF(IS_DEBUG_PROCEDURE_ON) THEN
204 BEGIN
205 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRMSCB.pls call Okl_Acct_Event_Pub.delete_acct_event ');
206 END;
207 END IF;
208 Okl_Acct_Event_Pub.delete_acct_event(p_api_version => l_api_version
209 ,p_init_msg_list => l_init_msg_list
210 ,x_return_status => x_return_status
211 ,x_msg_count => l_msg_count
212 ,x_msg_data => l_msg_data
213 ,p_aetv_rec => l_aetv_rec);
214 IF(IS_DEBUG_PROCEDURE_ON) THEN
215 BEGIN
216 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRMSCB.pls call Okl_Acct_Event_Pub.delete_acct_event ');
217 END;
218 END IF;
219 -- End of wraper code generated automatically by Debug code generator for Okl_Acct_Event_Pub.delete_acct_event
220
221
222 END IF;
223
224 END DELETE_DIST_AE;
225
226 -- Added by Santonyr on 03-Dec-2002
227 -- This procedure makes sure that the sum of transaction line
228 -- amount is not greater than transaction amount.
229
230
231 PROCEDURE Validate_Amount (p_tclv_rec IN tclv_rec_type,
232 p_mode IN VARCHAR2,
233 x_return_status OUT NOCOPY VARCHAR2)
234 IS
235
236 -- Cursor to fetch trx amount
237
238 CURSOR trx_amt_csr (l_trx_id NUMBER) IS
239 SELECT AMOUNT
240 FROM OKL_TRX_CONTRACTS
241 WHERE ID = l_trx_id;
242
243 -- Cursor to fetch trx line amount
244 CURSOR txl_amt_in_csr (l_trx_id NUMBER) IS
245 SELECT SUM(AMOUNT) SUM_AMOUNT
246 FROM OKL_TXL_CNTRCT_LNS
247 WHERE TCN_ID = l_trx_id;
248
249 -- Cursor to fetch trx line amount
250 CURSOR txl_amt_up_csr (l_trx_id NUMBER, l_txl_id NUMBER) IS
251 SELECT SUM(AMOUNT) SUM_AMOUNT
252 FROM OKL_TXL_CNTRCT_LNS
253 WHERE TCN_ID = l_trx_id AND
254 ID <> l_txl_id;
255
256
257 l_trx_amt NUMBER := 0;
258 l_sum_txl_amt NUMBER := 0;
259
260 BEGIN
261
262 x_return_status := OKL_API.G_RET_STS_SUCCESS;
263
264 -- Fetch trx amount
265 FOR trx_amt_rec IN trx_amt_csr (p_tclv_rec.TCN_ID) LOOP
266 l_trx_amt := NVL(trx_amt_rec.AMOUNT, 0);
267 END LOOP;
268
269 IF p_mode = 'I' THEN
270
271 -- Fetch trx line amount for insert mode
272
273 FOR txl_amt_in_rec IN txl_amt_in_csr (p_tclv_rec.TCN_ID) LOOP
274 l_sum_txl_amt := NVL(txl_amt_in_rec.SUM_AMOUNT, 0);
275 END LOOP;
276
277 ELSE
278
279 -- Fetch trx line amount for update mode
280
281 FOR txl_amt_up_rec IN txl_amt_up_csr (p_tclv_rec.TCN_ID, p_tclv_rec.ID) LOOP
282 l_sum_txl_amt := NVL(txl_amt_up_rec.SUM_AMOUNT, 0);
283 END LOOP;
284
285 END IF;
286
287 -- Return Error status if sum of trx line amount is greater than trx amount.
288
289 IF (l_sum_txl_amt + NVL(p_tclv_rec.AMOUNT, 0) )> l_trx_amt THEN
290 x_return_status := OKL_API.G_RET_STS_ERROR;
291 END IF;
292
293 END Validate_Amount;
294
295
296 PROCEDURE CREATE_MISC_DSTR_LINE(p_api_version IN NUMBER,
297 p_init_msg_list IN VARCHAR2,
298 x_return_status OUT NOCOPY VARCHAR2,
299 x_msg_count OUT NOCOPY NUMBER,
300 x_msg_data OUT NOCOPY VARCHAR2,
301 p_tclv_rec IN tclv_rec_type,
302 x_tclv_rec OUT NOCOPY tclv_rec_type)
303 IS
304
305 CURSOR tcn_csr(v_tcn_id NUMBER) IS
306 SELECT tsu_code
307 FROM OKL_TRX_CONTRACTS
308 WHERE ID = v_tcn_id;
309
310 CURSOR tcl_csr(v_tcl_id NUMBER) IS
311 SELECT avl_id,
312 sty_id,
313 description,
314 amount
315 FROM OKL_TXL_CNTRCT_LNS
316 WHERE ID = v_tcl_id;
317
318
319 l_api_name CONSTANT VARCHAR2(40) := 'CREATE_MISC_DSTR_LINE';
320 l_api_version CONSTANT NUMBER := 1.0;
321 l_tab_api_version CONSTANT NUMBER := 1.0;
322
323 l_init_msg_list VARCHAR2(1) := OKL_API.G_FALSE;
324 l_msg_count NUMBER := 0;
325 l_msg_data VARCHAR2(2000);
326 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
327
328 l_tclv_rec_in TCLV_REC_TYPE ;
329 l_tclv_rec_out TCLV_REC_TYPE;
330 l_tabv_tbl OKL_TRNS_ACC_DSTRS_PUB.TABV_TBL_TYPE;
331 l_old_avl_id NUMBER := NULL;
332 l_source_table OKL_TRNS_ACC_DSTRS.source_table%TYPE := 'OKL_TXL_CNTRCT_LNS';
333 i NUMBER := 0;
334 l_tsu_code OKL_TRX_CONTRACTS.TSU_CODE%TYPE;
335
336 l_check_status NUMBER;
337 l_avl_id NUMBER;
338 l_sty_id NUMBER;
339 l_description OKL_TXL_CNTRCT_LNS.DESCRIPTION%TYPE;
340 l_amount NUMBER;
341
342
343
344
345 BEGIN
346
347 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
348 G_PKG_NAME,
349 p_init_msg_list,
350 l_api_version,
351 p_api_version,
352 '_PVT',
353 x_return_status);
354 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
355 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
356 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
357 RAISE OKL_API.G_EXCEPTION_ERROR;
358 END IF;
359
360 l_tclv_rec_in := p_tclv_rec;
361
362 OPEN tcn_csr(l_tclv_rec_in.TCN_ID);
363 FETCH tcn_csr INTO l_tsu_code;
364 CLOSE tcn_csr;
365
366 IF (l_tsu_code = 'CANCELED') THEN
367
368 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
369 p_msg_name => 'OKL_TRX_CANCELED');
370
371 RAISE OKL_API.G_EXCEPTION_ERROR;
372
373 END IF;
374
375 IF (l_tclv_rec_in.Amount IS NULL) OR
376 (l_tclv_rec_in.Amount = OKL_API.G_MISS_NUM) OR
377 (l_tclv_rec_in.Amount = 0) THEN
378 OKL_API.SET_MESSAGE(p_app_name => 'OKC'
379 ,p_msg_name => g_required_value
380 ,p_token1 => g_col_name_token
381 ,p_token1_value => 'AMOUNT');
382 RAISE OKL_API.G_EXCEPTION_ERROR;
383 END IF;
384
385
386 IF (l_tclv_rec_in.ID = OKL_API.G_MISS_NUM) OR
387 (l_tclv_rec_in.ID IS NULL) THEN -- Create Mode
388
389 l_tclv_rec_in.TCL_TYPE := 'MAE';
390
391 l_tclv_rec_in.amount := okl_accounting_util.cross_currency_round_amount
392 (p_amount => l_tclv_rec_in.amount,
393 p_currency_code => l_tclv_rec_in.currency_code);
394
395
396 Validate_Amount (p_tclv_rec => l_tclv_rec_in,
397 p_mode => 'I',
398 x_return_status => l_return_status);
399
400 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
401 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
402 p_msg_name => 'OKL_TRX_AMT_GT_LINE_AMT');
403 RAISE OKL_API.G_EXCEPTION_ERROR;
404
405 END IF;
406
407
408 -- Start of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_cntrct_lines
409 IF(L_DEBUG_ENABLED='Y') THEN
410 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
411 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
412 END IF;
413 IF(IS_DEBUG_PROCEDURE_ON) THEN
414 BEGIN
415 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRMSCB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_cntrct_lines ');
416 END;
417 END IF;
418 OKL_TRX_CONTRACTS_PUB.create_trx_cntrct_lines(p_api_version => l_api_version,
419 p_init_msg_list => l_init_msg_list,
420 x_return_status => l_return_status,
421 x_msg_count => l_msg_count,
422 x_msg_data => l_msg_data,
423 p_tclv_rec => l_tclv_rec_in,
424 x_tclv_rec => l_tclv_rec_out);
425 IF(IS_DEBUG_PROCEDURE_ON) THEN
426 BEGIN
427 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRMSCB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_cntrct_lines ');
428 END;
429 END IF;
430 -- End of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_cntrct_lines
431
432 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
433
434 IF (l_tclv_rec_in.AVL_ID IS NOT NULL) AND
435 (l_tclv_rec_in.AVL_ID <> OKL_API.G_MISS_NUM) THEN
436
437 CREATE_DIST_LINE(p_tclv_rec => l_tclv_rec_out,
438 x_return_status => l_return_status);
439
440 -- SAntonyr Added to fix 2804913
441 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
442 RAISE OKL_API.G_EXCEPTION_ERROR;
443 END IF;
444
445
446 END IF;
447
448 END IF;
449
450 ELSE -- Update Mode
451
452 -- Determine what has changed
453
454 OPEN tcl_csr(l_tclv_rec_in.ID);
455 FETCH tcl_csr INTO
456 l_avl_id,
457 l_sty_id,
458 l_description,
459 l_amount;
460 CLOSE tcl_csr;
461
462
463 l_tclv_rec_in.amount := okl_accounting_util.cross_currency_round_amount
464 (p_amount => l_tclv_rec_in.amount,
465 p_currency_code => l_tclv_rec_in.currency_code);
466
467
468 Validate_Amount (p_tclv_rec => l_tclv_rec_in,
469 p_mode => 'U',
470 x_return_status => l_return_status);
471
472 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
473 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
474 p_msg_name => 'OKL_TRX_AMT_GT_LINE_AMT');
475 RAISE OKL_API.G_EXCEPTION_ERROR;
476
477 END IF;
478
479
480
481 -- Update has to be done anyway
482
483 -- Start of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.update_trx_cntrct_lines
484 IF(IS_DEBUG_PROCEDURE_ON) THEN
485 BEGIN
486 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRMSCB.pls call OKL_TRX_CONTRACTS_PUB.update_trx_cntrct_lines ');
487 END;
488 END IF;
489 OKL_TRX_CONTRACTS_PUB.update_trx_cntrct_lines(p_api_version => l_api_version,
490 p_init_msg_list => l_init_msg_list,
491 x_return_status => l_return_status,
492 x_msg_count => l_msg_count,
493 x_msg_data => l_msg_data,
494 p_tclv_rec => l_tclv_rec_in,
495 x_tclv_rec => l_tclv_rec_out);
496 IF(IS_DEBUG_PROCEDURE_ON) THEN
497 BEGIN
498 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRMSCB.pls call OKL_TRX_CONTRACTS_PUB.update_trx_cntrct_lines ');
499 END;
500 END IF;
501 -- End of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.update_trx_cntrct_lines
502
503 IF (nvl(l_tclv_rec_in.avl_id,OKL_API.G_MISS_NUM) <> nvl(l_avl_id,OKL_API.G_MISS_NUM)) OR
504 (nvl(l_tclv_rec_in.sty_id,OKL_API.G_MISS_NUM) <> nvl(l_sty_id,OKL_API.G_MISS_NUM)) OR
505 (nvl(l_tclv_rec_in.amount,OKL_API.G_MISS_NUM) <> nvl(l_amount,OKL_API.G_MISS_NUM)) THEN
506 -- Significant Changed
507
508
509 l_check_status := CHECK_DIST(p_source_id => l_tclv_rec_in.ID,
510 p_source_table => l_source_table);
511
512 IF (l_check_status = 1) OR (l_check_status = 2) THEN
513 -- Delete from Distributions
514 DELETE_DIST_AE(p_flag => 'DIST',
515 p_source_id => l_tclv_rec_in.ID,
516 p_source_table => l_source_table,
517 x_return_status => l_return_status);
518
519 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
520 RAISE OKL_API.G_EXCEPTION_ERROR;
521 END IF;
522
523 END IF;
524
525 IF (l_check_status = 2) THEN
526 -- delete from AE
527 DELETE_DIST_AE(p_flag => 'AE',
528 p_source_id => l_tclv_rec_in.ID,
529 p_source_table => l_source_table,
530 x_return_status => l_return_status);
531
532 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
533 RAISE OKL_API.G_EXCEPTION_ERROR;
534 END IF;
535
536 END IF;
537
538
539 IF (l_check_status = 3) THEN
540 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
541 p_msg_name => 'OKL_AE_GONE_TO_GL');
542 RAISE OKL_API.G_EXCEPTION_ERROR;
543 END IF;
544
545 -- Now create distributions if template is specified.
546
547 IF ((l_tclv_rec_in.AVL_ID IS NOT NULL) AND
548 (l_tclv_rec_in.AVL_ID <> OKL_API.G_MISS_NUM)) THEN
549
550 CREATE_DIST_LINE(p_tclv_rec => l_tclv_rec_out,
551 x_return_status => l_return_status);
552
553 -- SAntonyr Added to fix 2804913
554 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
555 RAISE OKL_API.G_EXCEPTION_ERROR;
556 END IF;
557
558 END IF;
559
560
561 END IF; -- Of something significant changed
562
563 END IF; -- Of Update Mode
564
565 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
566
567 x_return_status := l_return_status;
568 x_tclv_rec := l_tclv_rec_out;
569
570 EXCEPTION
571
572 WHEN OKL_API.G_EXCEPTION_ERROR THEN
573 x_return_status := OKL_API.HANDLE_EXCEPTIONS
574 (
575 l_api_name,
576 G_PKG_NAME,
577 'OKL_API.G_RET_STS_ERROR',
578 x_msg_count,
579 x_msg_data,
580 '_PVT'
581 );
582 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
583 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
584 (
585 l_api_name,
586 G_PKG_NAME,
587 'OKL_API.G_RET_STS_UNEXP_ERROR',
588 x_msg_count,
589 x_msg_data,
590 '_PVT'
591 );
592 WHEN OTHERS THEN
593 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
594 (
595 l_api_name,
596 G_PKG_NAME,
597 'OTHERS',
598 x_msg_count,
599 x_msg_data,
600 '_PVT'
601 );
602
603
604
605 END CREATE_MISC_DSTR_LINE;
606
607
608 PROCEDURE CREATE_DIST_LINE(p_tclv_rec IN TCLV_REC_TYPE,
609 x_return_status OUT NOCOPY VARCHAR2)
610
611
612 IS
613
614 CURSOR tcn_csr(v_tcn_id NUMBER) IS
615 SELECT trunc(date_transaction_occurred),
616 -- Added by Santonyr on 22-Nov-2002 Multi-Currency
617 currency_code,
618 currency_conversion_type,
619 currency_conversion_rate,
620 currency_conversion_date
621 FROM OKL_TRX_CONTRACTS
622 WHERE ID = v_tcn_id;
623
624 CURSOR prod_csr(v_aes_id NUMBER) IS
625 SELECT ID
626 FROM OKL_PRODUCTS_V
627 WHERE aes_id = v_aes_id;
628
629 -- Added by Santonyr on 30-Jul-2003 to fix the bug 2941805
630
631 CURSOR khr_prod_csr(v_khr_id NUMBER) IS
632 SELECT PDT_ID
633 FROM OKL_K_HEADERS
634 WHERE id = v_khr_id;
635
636 CURSOR avl_csr(v_template_id NUMBER) IS
637 SELECT sty_id,
638 try_id,
639 aes_id,
640 syt_code,
641 -- Added by HKPATEL for bug# 2943310
642 inv_code,
643 -- Added code ends here
644 fac_code,
645 advance_arrears,
646 memo_yn,
647 prior_year_yn,
648 factoring_synd_flag
649 FROM OKL_AE_TEMPLATES
650 WHERE id = v_template_id;
651
652 CURSOR org_csr IS
653 SELECT mo_global.get_current_org_id()
654 from dual;
655
656 l_org_id NUMBER;
657
658 Cursor sales_csr(v_khr_id NUMBER) IS
659 SELECT ct.object1_id1 id
660 from okc_contacts ct,
661 okc_contact_sources csrc,
662 okc_k_party_roles_b pty,
663 okc_k_headers_b chr
664 where ct.cpl_id = pty.id
665 and ct.cro_code = csrc.cro_code
666 and ct.jtot_object1_code = csrc.jtot_object_code
667 and ct.dnz_chr_id = chr.id
668 and pty.rle_code = csrc.rle_code
669 and csrc.cro_code = 'SALESPERSON'
670 and csrc.rle_code = 'LESSOR'
671 and csrc.buy_or_sell = chr.buy_or_sell
672 and pty.dnz_chr_id = chr.id
673 and pty.chr_id = chr.id
674 and chr.id = v_khr_id;
675
676 l_sales_rep OKC_CONTACTS.object1_id1%TYPE;
677
678 CURSOR trx_csr IS
679 SELECT cust_trx_type_id
680 FROM ra_cust_trx_types
681 WHERE name = 'Invoice-OKL';
682
683 l_trx_type NUMBER;
684
685 Cursor Billto_csr(v_khr_id NUMBER) IS
686 SELECT object1_id1 cust_acct_site_id
687 FROM okc_rules_b rul
688 WHERE rul.rule_information_category = 'BTO'
689 and exists (select '1'
690 from okc_rule_groups_b rgp
691 where rgp.id = rul.rgp_id
692 and rgp.rgd_code = 'LABILL'
693 and rgp.chr_id = rul.dnz_chr_id
694 and rgp.chr_id = v_khr_id );
695
696 l_ar_site_use OKC_RULES_B.object1_id1%TYPE;
697
698
699 l_functional_curr OKL_TRNS_ACC_DSTRS.CURRENCY_CODE%TYPE;
700
701 l_template_name OKL_AE_TEMPLATES.NAME%TYPE;
702 l_source_table OKL_TRNS_ACC_DSTRS.source_table%TYPE := 'OKL_TXL_CNTRCT_LNS';
703 l_accounting_date DATE;
704
705 -- Added by Santonyr on 22-Nov-2002 Multi-Currency
706 l_currency_code okl_trx_contracts.currency_code%TYPE;
707 l_currency_conversion_type okl_trx_contracts.currency_conversion_type%TYPE;
708 l_currency_conversion_rate okl_trx_contracts.currency_conversion_rate%TYPE;
709 l_currency_conversion_date okl_trx_contracts.currency_conversion_date%TYPE;
710
711 l_dist_api_version CONSTANT NUMBER := 1.0;
712 l_aes_id NUMBER;
713
714 l_init_msg_list VARCHAR2(1) := OKL_API.G_FALSE;
715 l_msg_count NUMBER := 0;
716 l_msg_data VARCHAR2(2000);
717 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
718 l_template_id NUMBER ;
719
720 l_dist_info_rec OKL_ACCOUNT_DIST_PUB.DIST_INFO_REC_TYPE;
721 l_tmpl_identify_rec OKL_ACCOUNT_DIST_PUB.TMPL_IDENTIFY_REC_TYPE;
722 l_ctxt_val_tbl OKL_ACCOUNT_DIST_PUB.CTXT_VAL_TBL_TYPE;
723 l_template_tbl OKL_TMPT_SET_PUB.AVLV_TBL_TYPE;
724 l_amount_tbl OKL_ACCOUNT_DIST_PUB.AMOUNT_TBL_TYPE;
725 l_acc_gen_primary_key_tbl OKL_ACCOUNT_DIST_PUB.ACC_GEN_PRIMARY_KEY;
726
727
728
729 BEGIN
730
731 l_template_id := p_tclv_rec.avl_id;
732
733 OPEN tcn_csr(p_tclv_rec.tcn_id);
734 FETCH tcn_csr
735 INTO l_accounting_date,
736 -- Added by Santonyr on 22-Nov-2002 Multi-Currency
737 l_currency_code,
738 l_currency_conversion_type,
739 l_currency_conversion_rate,
740 l_currency_conversion_date;
741
742 IF (tcn_csr%NOTFOUND) THEN
743 OKL_API.SET_MESSAGE(p_app_name => g_app_name
744 ,p_msg_name => g_invalid_value
745 ,p_token1 => g_col_name_token
746 ,p_token1_value => 'TCN_ID');
747
748 CLOSE tcn_csr;
749 RAISE OKL_API.G_EXCEPTION_ERROR;
750 END IF;
751
752 CLOSE tcn_csr;
753
754 -- Since we want do not want to create a new signature for accounting procedure for Misc
755 -- the following round about way is adopted. We already know the Template, so we are trying
756 -- to get all the parameters for the template from template table. These parameters will
757 -- in turn be passed to the accounting engine, which will identify the same template....
758
759 OPEN avl_csr(l_template_id);
760 FETCH avl_csr INTO
761 l_tmpl_identify_rec.STREAM_TYPE_ID,
762 l_tmpl_identify_rec.TRANSACTION_TYPE_ID,
763 l_aes_id,
764 l_tmpl_identify_rec.SYNDICATION_CODE,
765 -- Added by HKPATEL for Bug# 2943310
766 l_tmpl_identify_rec.INVESTOR_CODE,
767 -- Added code ends here
768 l_tmpl_identify_rec.FACTORING_CODE,
769 l_tmpl_identify_rec.ADVANCE_ARREARS,
770 l_tmpl_identify_rec.MEMO_YN,
771 l_tmpl_identify_rec.PRIOR_YEAR_YN,
772 l_tmpl_identify_rec.FACTORING_SYND_FLAG;
773 CLOSE avl_csr;
774
775 -- The following cursor may return multiple records, but we are interest in only one record
776
777 /*
778 OPEN prod_csr(l_aes_id);
779 FETCH prod_csr INTO l_tmpl_identify_rec.PRODUCT_ID;
780 CLOSE prod_csr;
781
782 */
783
784 -- Added by Santonyr on 30-Jul-2003 to fix the bug 2941805
785
786 OPEN khr_prod_csr(p_tclv_rec.khr_id);
787 FETCH khr_prod_csr INTO l_tmpl_identify_rec.PRODUCT_ID;
788 CLOSE khr_prod_csr;
789
790 -- Populate the Account Generator Parameters
791
792 OPEN org_csr;
793 FETCH org_csr INTO l_org_id;
794 CLOSE org_csr;
795
796 OPEN sales_csr(p_tclv_rec.khr_id);
797 FETCH sales_csr INTO l_sales_rep;
798 CLOSE sales_csr;
799
800 OPEN trx_csr;
801 FETCH trx_csr INTO l_trx_type;
802 CLOSE trx_csr;
803
804 OPEN billto_csr(p_tclv_rec.khr_id);
805 FETCH billto_csr INTO l_ar_site_use;
806 CLOSE billto_csr;
807
808 l_acc_gen_primary_key_tbl(1).source_table := 'FINANCIALS_SYSTEM_PARAMETERS';
809 l_acc_gen_primary_key_tbl(1).primary_key_column := l_org_id;
810 l_acc_gen_primary_key_tbl(2).source_table := 'JTF_RS_SALESREPS_MO_V';
811 l_acc_gen_primary_key_tbl(2).primary_key_column := l_sales_rep;
812 l_acc_gen_primary_key_tbl(3).source_table := 'AR_SITE_USES_V';
813 l_acc_gen_primary_key_tbl(3).primary_key_column := l_ar_site_use;
814 l_acc_gen_primary_key_tbl(4).source_table := 'RA_CUST_TRX_TYPES';
815 l_acc_gen_primary_key_tbl(4).primary_key_column := l_trx_type;
816
817
818 -- l_functional_curr := OKL_ACCOUNTING_UTIL.GET_FUNC_CURR_CODE;
819
820 l_dist_info_rec.SOURCE_ID := p_tclv_rec.ID;
821 l_dist_info_rec.SOURCE_TABLE := l_source_table;
822 l_dist_info_rec.ACCOUNTING_DATE := l_accounting_date;
823 l_dist_info_rec.GL_REVERSAL_FLAG := 'N';
824 l_dist_info_rec.POST_TO_GL := 'Y';
825 l_dist_info_rec.AMOUNT := p_tclv_rec.AMOUNT;
826 -- l_dist_info_rec.CURRENCY_CODE := l_functional_curr;
827
828
829 -- Added by Santonyr on 22-Nov-2002 Multi-Currency
830 l_dist_info_rec.CURRENCY_CODE := l_currency_code;
831 l_dist_info_rec.CURRENCY_CONVERSION_TYPE := l_currency_conversion_type;
832 l_dist_info_rec.CURRENCY_CONVERSION_RATE := l_currency_conversion_rate;
833 l_dist_info_rec.CURRENCY_CONVERSION_DATE := l_currency_conversion_date;
834
835 -- Start of wraper code generated automatically by Debug code generator for OKL_ACCOUNT_DIST_PUB.CREATE_ACCOUNTING_DIST
836 IF(L_DEBUG_ENABLED='Y') THEN
837 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
838 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
839 END IF;
840 IF(IS_DEBUG_PROCEDURE_ON) THEN
841 BEGIN
842 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRMSCB.pls call OKL_ACCOUNT_DIST_PUB.CREATE_ACCOUNTING_DIST ');
843 END;
844 END IF;
845 OKL_ACCOUNT_DIST_PUB.CREATE_ACCOUNTING_DIST(p_api_version => l_dist_api_version,
846 p_init_msg_list => l_init_msg_list,
847 x_return_status => l_return_status,
848 x_msg_count => l_msg_count,
849 x_msg_data => l_msg_data,
850 p_tmpl_identify_rec => l_tmpl_identify_rec,
851 p_dist_info_rec => l_dist_info_Rec,
852 p_ctxt_val_tbl => l_ctxt_val_tbl,
853 p_acc_gen_primary_key_tbl => l_acc_gen_primary_key_tbl,
854 x_template_tbl => l_template_tbl,
855 x_amount_tbl => l_amount_tbl);
856 IF(IS_DEBUG_PROCEDURE_ON) THEN
857 BEGIN
858 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRMSCB.pls call OKL_ACCOUNT_DIST_PUB.CREATE_ACCOUNTING_DIST ');
859 END;
860 END IF;
861 -- End of wraper code generated automatically by Debug code generator for OKL_ACCOUNT_DIST_PUB.CREATE_ACCOUNTING_DIST
862
863 x_return_status := l_return_status;
864
865 END CREATE_DIST_LINE;
866
867
868 -----------------------------------------------------------------------------
869 -- PROCEDURE populate_jrnl_lines
870 -----------------------------------------------------------------------------
871 -- Start of comments
872 --
873 -- Procedure Name : populate_jrnl_lines
874 -- Description : This procedure copies the jrnl line attributes from
875 -- : jrnl_line_rec to tclv_rec
876 -- Business Rules :
877 -- Parameters :
878 -- Version : 1.0
879 -- History : 10-JUN-2004 RABHUPAT Created
880 -- End of comments
881
882 PROCEDURE populate_jrnl_lines(p_tcn_id IN NUMBER,
883 p_khr_id IN NUMBER,
884 p_currency_code IN VARCHAR2,
885 p_jrnl_line_rec IN jrnl_line_rec_type,
886 x_tclv_rec OUT NOCOPY okl_trx_contracts_pvt.tclv_rec_type) IS
887
888 l_tclv_rec okl_trx_contracts_pvt.tclv_rec_type;
889 l_prog_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||' populate_jrnl_lines ';
890 BEGIN
891 IF(p_jrnl_line_rec.id IS NOT NULL) THEN
892 l_tclv_rec.id := p_jrnl_line_rec.id;
893 END IF;
894 l_tclv_rec.khr_id := p_khr_id;
895 l_tclv_rec.line_number := p_jrnl_line_rec.line_number;
896 l_tclv_rec.tcn_id := p_tcn_id;
897 l_tclv_rec.description := p_jrnl_line_rec.description;
898 l_tclv_rec.avl_id := p_jrnl_line_rec.avl_id;
899 l_tclv_rec.sty_id := p_jrnl_line_rec.sty_id;
900 l_tclv_rec.currency_code := p_currency_code;
901 l_tclv_rec.amount := p_jrnl_line_rec.amount;
902 -- return the populated record
903 x_tclv_rec := l_tclv_rec;
904
905 END populate_jrnl_lines;
906
907 -----------------------------------------------------------------------------
908 -- PROCEDURE populate_jrnl_lines
909 -----------------------------------------------------------------------------
910 -- Start of comments
911 --
912 -- Procedure Name : populate_jrnl_hdr
913 -- Description : This procedure copies the journal header attributes from
914 -- : jrnl_hdr_rec to tcnv_rec
915 -- Business Rules :
916 -- Parameters :
917 -- Version : 1.0
918 -- History : 10-JUN-2004 RABHUPAT Created
919 -- End of comments
920
921 PROCEDURE populate_jrnl_hdr(p_jrnl_hdr_rec IN jrnl_hdr_rec_type,
922 x_tcnv_rec OUT NOCOPY okl_trans_contracts_pvt.tcnv_rec_type) IS
923
924 l_tcnv_rec okl_trans_contracts_pvt.tcnv_rec_type;
925 l_prog_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||' populate_jrnl_hdr ';
926
927 l_transaction_date okl_trx_contracts.transaction_date%TYPE := okl_api.g_miss_date;
928
929 CURSOR c_transaction_date(
930 cp_khr_id okl_trx_contracts.khr_id%TYPE,
931 cp_trx_number okl_trx_contracts.trx_number%TYPE
932 ) IS
933 SELECT transaction_date
934 FROM okl_trx_contracts
935 WHERE khr_id = cp_khr_id
936 AND trx_number = cp_trx_number;
937
938 BEGIN
939
940 -- assign the values to the tcnv_rec_type
941 l_tcnv_rec.khr_id := p_jrnl_hdr_rec.khr_id;
942 l_tcnv_rec.pdt_id := p_jrnl_hdr_rec.pdt_id;
943 l_tcnv_rec.amount := p_jrnl_hdr_rec.amount;
944 l_tcnv_rec.tsu_code := p_jrnl_hdr_rec.tsu_code;
945 l_tcnv_rec.currency_code := p_jrnl_hdr_rec.currency_code;
946 l_tcnv_rec.trx_number := p_jrnl_hdr_rec.trx_number;
947 l_tcnv_rec.description := p_jrnl_hdr_rec.description;
948 l_tcnv_rec.date_transaction_occurred := p_jrnl_hdr_rec.date_transaction_occurred;
949 -- return the populated record
950 IF l_tcnv_rec.tsu_code = 'CANCELED' THEN
951
952 OPEN c_transaction_date(p_jrnl_hdr_rec.khr_id,p_jrnl_hdr_rec.trx_number);
953 FETCH c_transaction_date INTO l_transaction_date;
954 CLOSE c_transaction_date;
955 l_tcnv_rec.transaction_date := l_transaction_date;
956 END IF;
957 x_tcnv_rec := l_tcnv_rec;
958
959 END populate_jrnl_hdr;
960
961 -----------------------------------------------------------------------------
962 -- PROCEDURE create_misc_transaction
963 -----------------------------------------------------------------------------
964 -- Start of comments
965 --
966 -- Procedure Name : create_misc_transaction
967 -- Description : This procedure creates the manual journal header, lines
968 -- Business Rules :
969 -- Parameters :
970 -- Version : 1.0
971 -- History : 10-JUN-2004 RABHUPAT Created
972 -- End of comments
973
974 PROCEDURE create_misc_transaction(p_api_version IN NUMBER,
975 p_init_msg_list IN VARCHAR2,
976 x_return_status OUT NOCOPY VARCHAR2,
977 x_msg_count OUT NOCOPY NUMBER,
978 x_msg_data OUT NOCOPY VARCHAR2,
979 p_jrnl_hdr_rec IN jrnl_hdr_rec_type,
980 p_jrnl_line_tbl IN jrnl_line_tbl_type,
981 x_jrnl_hdr_rec OUT NOCOPY jrnl_hdr_rec_type) IS
982
983 l_prog_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||'create_misc_transaction';
984
985 l_tcnv_rec okl_trans_contracts_pvt.tcnv_rec_type;
986 lx_tcnv_rec okl_trans_contracts_pvt.tcnv_rec_type;
987
988 l_tclv_rec okl_trx_contracts_pvt.tclv_rec_type;
989 lx_tclv_rec okl_trx_contracts_pvt.tclv_rec_type;
990
991 lx_return_status VARCHAR2(1);
992
993 BEGIN
994
995 IF p_init_msg_list = G_TRUE THEN
996 FND_MSG_PUB.initialize;
997 END IF;
998
999 -- populate the journal header record
1000 populate_jrnl_hdr(p_jrnl_hdr_rec => p_jrnl_hdr_rec,
1001 x_tcnv_rec => l_tcnv_rec);
1002
1003 -- call the public api to create the manual journal header
1004 okl_trans_contracts_pub.create_trx_contracts(p_api_version => p_api_version,
1005 p_init_msg_list => p_init_msg_list,
1006 x_return_status => lx_return_status,
1007 x_msg_count => x_msg_count,
1008 x_msg_data => x_msg_data,
1009 p_tcnv_rec => l_tcnv_rec,
1010 x_tcnv_rec => lx_tcnv_rec);
1011
1012 IF lx_return_status = G_RET_STS_UNEXP_ERROR THEN
1013 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1014 ELSIF lx_return_status = G_RET_STS_ERROR THEN
1015 RAISE OKL_API.G_EXCEPTION_ERROR;
1016 END IF;
1017 -- create journal lines for the header created above
1018 IF(p_jrnl_line_tbl.COUNT > 0) THEN
1019 FOR i IN p_jrnl_line_tbl.FIRST .. p_jrnl_line_tbl.LAST LOOP
1020 IF(p_jrnl_line_tbl.EXISTS(i)) THEN
1021 -- populate the journal line record.
1022 populate_jrnl_lines(p_tcn_id => lx_tcnv_rec.id,
1023 p_khr_id => lx_tcnv_rec.khr_id,
1024 p_currency_code => lx_tcnv_rec.currency_code,
1025 p_jrnl_line_rec => p_jrnl_line_tbl(i),
1026 x_tclv_rec => l_tclv_rec);
1027 -- use the populated record to create journal lines
1028 okl_misc_trans_pub.create_misc_dstr_line(p_api_version => G_API_VERSION,
1029 p_init_msg_list => G_FALSE,
1030 x_return_status => lx_return_status,
1031 x_msg_count => x_msg_count,
1032 x_msg_data => x_msg_data,
1033 p_tclv_rec => l_tclv_rec,
1034 x_tclv_rec => lx_tclv_rec);
1035
1036 IF lx_return_status = G_RET_STS_UNEXP_ERROR THEN
1037 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1038 ELSIF lx_return_status = G_RET_STS_ERROR THEN
1039 RAISE OKL_API.G_EXCEPTION_ERROR;
1040 END IF;
1041 END IF; -- end of exists condition
1042 END LOOP; -- end of journal line table loop
1043 END IF; -- end of condition check for journal lines
1044
1045 -- populate the record to be returned
1046 x_jrnl_hdr_rec := p_jrnl_hdr_rec;
1047 -- update the columns which are updated
1048 x_jrnl_hdr_rec.id := lx_tcnv_rec.id;
1049 x_jrnl_hdr_rec.tsu_code := lx_tcnv_rec.tsu_code;
1050 -- added by zrehman on 14-Dec-2006 as part of Bug#5707931
1051 x_jrnl_hdr_rec.trx_number := lx_tcnv_rec.trx_number;
1052
1053 -- return the status
1054 x_return_status := lx_return_status;
1055
1056 EXCEPTION
1057
1058 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1059 fnd_msg_pub.count_and_get(p_count => x_msg_count,
1060 p_data => x_msg_data);
1061 x_return_status := G_RET_STS_ERROR;
1062
1063 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1064 fnd_msg_pub.count_and_get(p_count => x_msg_count,
1065 p_data => x_msg_data);
1066 x_return_status := G_RET_STS_UNEXP_ERROR;
1067
1068 WHEN OTHERS THEN
1069 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1070 p_msg_name => G_DB_ERROR,
1071 p_token1 => G_PROG_NAME_TOKEN,
1072 p_token1_value => l_prog_name,
1073 p_token2 => G_SQLCODE_TOKEN,
1074 p_token2_value => sqlcode,
1075 p_token3 => G_SQLERRM_TOKEN,
1076 p_token3_value => sqlerrm);
1077 x_return_status := G_RET_STS_UNEXP_ERROR;
1078
1079 END create_misc_transaction;
1080
1081 -----------------------------------------------------------------------------
1082 -- PROCEDURE update_misc_transaction
1083 -----------------------------------------------------------------------------
1084 -- Start of comments
1085 --
1086 -- Procedure Name : update_misc_transaction
1087 -- Description : This procedure updates the manual journal header, creates/updates lines
1088 -- Business Rules :
1089 -- Parameters :
1090 -- Version : 1.0
1091 -- History : 10-JUN-2004 RABHUPAT Created
1092 -- End of comments
1093
1094 PROCEDURE update_misc_transaction(p_api_version IN NUMBER,
1095 p_init_msg_list IN VARCHAR2,
1096 x_return_status OUT NOCOPY VARCHAR2,
1097 x_msg_count OUT NOCOPY NUMBER,
1098 x_msg_data OUT NOCOPY VARCHAR2,
1099 p_jrnl_hdr_rec IN jrnl_hdr_rec_type,
1100 p_jrnl_line_tbl IN jrnl_line_tbl_type) IS
1101
1102 l_prog_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||'update_misc_transaction';
1103
1104 l_tcnv_rec okl_trans_contracts_pvt.tcnv_rec_type;
1105 lx_tcnv_rec okl_trans_contracts_pvt.tcnv_rec_type;
1106
1107 l_tclv_rec okl_trx_contracts_pvt.tclv_rec_type;
1108 lx_tclv_rec okl_trx_contracts_pvt.tclv_rec_type;
1109
1110 lx_return_status VARCHAR2(1);
1111
1112 BEGIN
1113
1114 IF p_init_msg_list = G_TRUE THEN
1115 FND_MSG_PUB.initialize;
1116 END IF;
1117
1118
1119 -- populate the journal header record
1120 populate_jrnl_hdr(p_jrnl_hdr_rec => p_jrnl_hdr_rec,
1121 x_tcnv_rec => l_tcnv_rec);
1122 l_tcnv_rec.id := p_jrnl_hdr_rec.id;
1123 -- call the public api to update the manual journal header
1124 okl_trans_contracts_pub.update_trx_contracts(p_api_version => p_api_version,
1125 p_init_msg_list => p_init_msg_list,
1126 x_return_status => lx_return_status,
1127 x_msg_count => x_msg_count,
1128 x_msg_data => x_msg_data,
1129 p_tcnv_rec => l_tcnv_rec,
1130 x_tcnv_rec => lx_tcnv_rec);
1131
1132 IF lx_return_status = G_RET_STS_UNEXP_ERROR THEN
1133 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1134 ELSIF lx_return_status = G_RET_STS_ERROR THEN
1135 RAISE OKL_API.G_EXCEPTION_ERROR;
1136 END IF;
1137 -- create journal lines for the header created above
1138 IF(p_jrnl_line_tbl.COUNT > 0) THEN
1139 FOR i IN p_jrnl_line_tbl.FIRST .. p_jrnl_line_tbl.LAST LOOP
1140 IF(p_jrnl_line_tbl.EXISTS(i)) THEN
1141 -- populate the journal line record.
1142 populate_jrnl_lines(p_tcn_id => lx_tcnv_rec.id,
1143 p_khr_id => lx_tcnv_rec.khr_id,
1144 p_currency_code => lx_tcnv_rec.currency_code,
1145 p_jrnl_line_rec => p_jrnl_line_tbl(i),
1146 x_tclv_rec => l_tclv_rec);
1147 -- use the populated record to create journal lines
1148 okl_misc_trans_pub.create_misc_dstr_line(p_api_version => G_API_VERSION,
1149 p_init_msg_list => G_FALSE,
1150 x_return_status => lx_return_status,
1151 x_msg_count => x_msg_count,
1152 x_msg_data => x_msg_data,
1153 p_tclv_rec => l_tclv_rec,
1154 x_tclv_rec => lx_tclv_rec);
1155
1156 IF lx_return_status = G_RET_STS_UNEXP_ERROR THEN
1157 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1158 ELSIF lx_return_status = G_RET_STS_ERROR THEN
1159 RAISE OKL_API.G_EXCEPTION_ERROR;
1160 END IF;
1161 END IF; -- end of exists condition
1162 END LOOP; -- end of journal line table loop
1163 END IF; -- end of condition check for journal lines
1164
1165 x_return_status := lx_return_status;
1166
1167 EXCEPTION
1168
1169 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1170 fnd_msg_pub.count_and_get(p_count => x_msg_count,
1171 p_data => x_msg_data);
1172 x_return_status := G_RET_STS_ERROR;
1173
1174 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1175 fnd_msg_pub.count_and_get(p_count => x_msg_count,
1176 p_data => x_msg_data);
1177 x_return_status := G_RET_STS_UNEXP_ERROR;
1178
1179 WHEN OTHERS THEN
1180 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1181 p_msg_name => G_DB_ERROR,
1182 p_token1 => G_PROG_NAME_TOKEN,
1183 p_token1_value => l_prog_name,
1184 p_token2 => G_SQLCODE_TOKEN,
1185 p_token2_value => sqlcode,
1186 p_token3 => G_SQLERRM_TOKEN,
1187 p_token3_value => sqlerrm);
1188 x_return_status := G_RET_STS_UNEXP_ERROR;
1189
1190 END update_misc_transaction;
1191
1192
1193
1194 END OKL_MISC_TRANS_PVT;