DBA Data[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;