DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_REVERSAL_PVT

Source


1 PACKAGE BODY OKL_REVERSAL_PVT AS
2 /* $Header: OKLRREVB.pls 120.10.12020000.2 2012/11/16 06:12:48 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 get_txl_amt is
214   select nvl(amount, 0)
215     from okl_txl_cntrct_lns
216    where id = p_source_id;
217 
218   l_txl_amt number;
219 
220  -- Cursor to get the short_name to be passed as
221  -- the representation code. SLA Uptake
222  -- extended to get the representation based on tcn_id.. MG Uptake
223  CURSOR get_gl_short_name_csr(p_tcn_id NUMBER) IS
224  SELECT rep.representation_code
225    FROM okl_trx_contracts_all o,
226         okl_representations_v rep
227   WHERE o.set_of_books_id = rep.ledger_id
228     AND o.id = p_tcn_id;
229 
230  --Cursor to get the Account Derivation Option.. SLA Uptake
231  CURSOR get_acct_derivation_csr IS
232  SELECT account_derivation
233    FROM okl_sys_acct_opts;
234 
235  --Cursor to get the transaction header id .. SLA Uptake
236  CURSOR get_tcn_id_csr IS
237  SELECT tcn_id
238    FROM okl_txl_cntrct_lns_all
239   WHERE id = p_source_id;
240 
241  -- Cursor to get transaction type name .. SLA Uptake
242  CURSOR get_try_name_csr(p_tcn_id IN NUMBER) IS
243  SELECT t.name
244    FROM okl_trx_types_tl t, okl_trx_contracts_all tcn
245   WHERE tcn.try_id = t.id
246     AND tcn.id = p_tcn_id
247     AND LANGUAGE = 'US';
248 
249  l_account_derivation_option VARCHAR2(10);
250  l_tcn_id                    NUMBER;
251  l_try_name                  VARCHAR2(150);
252  l_gl_short_name             VARCHAR2(20);
253  l_event_id                  NUMBER;
254  l_exist_event_id            NUMBER;
255  l_exist_event_date          DATE;
256  l_accounting_event_id       NUMBER;
257 
258 
259 BEGIN
260 
261 
262    x_return_status := OKL_API.G_RET_STS_SUCCESS;
263 
264 -- Validate Source id and Source Table
265 
266 
267    IF (p_source_table IS NULL OR p_source_table = OKL_API.G_MISS_CHAR) THEN
268        OKL_API.SET_MESSAGE(p_app_name       => g_app_name
269                           ,p_msg_name       => g_required_value
270                           ,p_token1         => g_col_name_token
271                           ,p_token1_value   => 'source_table');
272        x_return_status    := OKL_API.G_RET_STS_ERROR;
273 	   RAISE OKL_API.G_EXCEPTION_ERROR;
274    END IF;
275 
276    IF (p_source_id IS NULL OR p_source_id = OKL_API.G_MISS_NUM) THEN
277        OKL_API.SET_MESSAGE(p_app_name       => g_app_name
278                           ,p_msg_name       => g_required_value
279                           ,p_token1         => g_col_name_token
280                           ,p_token1_value   => 'source_id');
281        x_return_status    := OKL_API.G_RET_STS_ERROR;
282 	   RAISE OKL_API.G_EXCEPTION_ERROR;
283    END IF;
284 
285    IF (p_acct_date IS NULL OR p_acct_date = OKL_API.G_MISS_DATE) THEN
286        OKL_API.SET_MESSAGE(p_app_name       => g_app_name
287                           ,p_msg_name       => g_required_value
288                           ,p_token1         => g_col_name_token
289                           ,p_token1_value   => 'acct_date');
290        x_return_status    := OKL_API.G_RET_STS_ERROR;
291 	   RAISE OKL_API.G_EXCEPTION_ERROR;
292    END IF;
293 
294    l_validate_flag :=
295          OKL_ACCOUNTING_UTIL.VALIDATE_SOURCE_ID_TABLE(p_source_id    => p_source_Id,
296                                                       p_source_table => p_source_table);
297 
298    IF (l_validate_flag = OKL_API.G_FALSE) THEN
299        OKL_API.set_message(p_app_name     => G_APP_NAME,
300 	                   p_msg_name     => 'OKL_INVALID_SOURCE_TBL_ID');
301 
302        RAISE OKL_API.G_EXCEPTION_ERROR;
303 
304    END IF;
305 
306 
307    OKL_ACCOUNTING_UTIL.get_period_info(p_date        => p_acct_date,
308                                        p_period_name => l_period_name,
309                                        p_start_date  => l_start_date,
310                                        p_end_date    => l_end_date);
311 
312    IF (l_period_name IS NULL) THEN
313        OKL_API.set_message(p_app_name     => G_APP_NAME,
314 	                       p_msg_name     => 'OKL_ACCT_PERD_NOT_FOUND',
315 			               p_token1       => 'ACCT_DATE',
316 			               p_token1_value => p_acct_date);
317        RAISE OKL_API.G_EXCEPTION_ERROR;
318    END IF;
319 
320    l_period_status := OKL_ACCOUNTING_UTIL.get_okl_period_status(l_period_name);
321 
322    IF (l_period_status NOT IN ('O','F')) THEN
323        OKL_API.set_message(p_app_name     => G_APP_NAME,
324 	                       p_msg_name     => 'OKL_PERD_INVALID_STATUS',
325      			           p_token1       => 'PERIOD',
326 			               p_token1_value => l_period_name);
327 
328        RAISE OKL_API.G_EXCEPTION_ERROR;
329    END IF;
330 
331 -- If the selected event is already reversed earlier then Abort the processing
332 
333    OPEN check_dist_csr;
334    FETCH check_dist_csr INTO l_dummy_var;
335    IF (check_dist_csr%FOUND) THEN
336        OKL_API.set_message(p_app_name     =>  G_APP_NAME,
337 	                       p_msg_name     => 'OKL_TXN_ALREADY_REVERSED');
338 
339        CLOSE check_dist_csr;
340        RAISE OKL_API.G_EXCEPTION_ERROR;
341    END IF;
342    CLOSE check_dist_csr;
343 
344 
345    OPEN  dist_csr;
346    FETCH dist_csr INTO dist_rec;
347    IF (dist_csr%NOTFOUND) THEN
348      -- check if the txl has any amount. If the line amount is zero, no distributions are created.
349 	 -- The error conditions occurs when the line amt is not zero and there are no distributions.
350 	 -- bug 15881611 .. start
351 	   open get_txl_amt;
352 	   fetch get_txl_amt into l_txl_amt;
353 	   close get_txl_amt;
354 	   if l_txl_amt = 0 then
355 		 close dist_csr;
356 	     return;
357 	   end if;
358 	 -- bug 15881611 .. end
359        -- Santonyr on 14-Feb-2003 Fixed bug 2804913
360        OKL_API.set_message(p_app_name     =>  G_APP_NAME,
361                            p_msg_name     => 'OKL_DIST_NOT_FOUND');
362        CLOSE dist_csr;
363        RAISE OKL_API.G_EXCEPTION_ERROR;
364    END IF;
365 
366    -- SLA uptake changes .. start
367    l_event_id         := NULL;
368    l_exist_event_id   := NULL;
369    l_exist_event_date := NULL;
370 
371    OPEN  get_acct_derivation_csr;
372    FETCH get_acct_derivation_csr INTO l_account_derivation_option;
373    CLOSE get_acct_derivation_csr;
374 
375    IF p_source_table = 'OKL_TXL_CNTRCT_LNS' THEN
376       OPEN  get_tcn_id_csr;
377 	  FETCH get_tcn_id_csr INTO l_tcn_id;
378 	  CLOSE get_tcn_id_csr;
379 
380       OPEN  get_try_name_csr(l_tcn_id);
381       FETCH get_try_name_csr INTO l_try_name;
382 	  CLOSE get_try_name_csr;
383 
384       IF l_try_name IN
385 	  ('Booking','Rebook','Release','Termination','Evergreen','Investor',
386 	   'Asset Disposition', 'Receipt Application','Principal Adjustment',
387 	   'Specific Loss Provision','General Loss Provision','Accrual',
388 	   'Upfront Tax') THEN
389 
390 		 -- changed the cursor to fetch gl short name based on tcn_id .. MG uptake
391 	     OPEN  get_gl_short_name_csr(l_tcn_id);
392 	     FETCH get_gl_short_name_csr INTO l_gl_short_name;
393 	     CLOSE get_gl_short_name_csr;
394 
395 	  -- Verify existence of event.It's possible to have an event raised for one of the
396 	  -- transaction lines before. If event is raised for the same transaction, event type
397 	  -- and event date then re-use it. Do not raise a new event.
398       OKL_XLA_EVENTS_PVT.event_exists(p_api_version        => l_api_version
399                                      ,p_init_msg_list      => l_init_msg_list
400                                      ,x_return_status      => l_return_status
401                                      ,x_msg_count          => l_msg_count
402                                      ,x_msg_data           => l_msg_data
403                                      ,p_tcn_id             => l_tcn_id
404                                      ,p_action_type        => 'REVERSE'
405                                      ,x_event_id           => l_exist_event_id
406                                      ,x_event_date         => l_exist_event_date);
407 
408       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
409          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
410       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
411          RAISE OKL_API.G_EXCEPTION_ERROR;
412       END IF;
413 
414       l_accounting_event_id := l_exist_event_id;
415 
416       IF (NVL(l_exist_event_id,0) = 0 AND
417 	      NVL(l_exist_event_date, trunc(sysdate) + 1) <> p_acct_date) THEN
418 	  -- END of code to be deleted once all teams uptake AE call.
419 
420       l_event_id :=
421         OKL_XLA_EVENTS_PVT.create_event(p_api_version          => l_api_version
422                                        ,p_init_msg_list        => l_init_msg_list
423                                        ,x_return_status        => l_return_status
424                                        ,x_msg_count            => l_msg_count
425                                        ,x_msg_data             => l_msg_data
426                                        ,p_tcn_id               => l_tcn_id
427                                        ,p_gl_date              => p_acct_date
428                                        ,p_action_type          => 'REVERSE'
429                                        ,p_representation_code  => l_gl_short_name
430                                        );
431 
432          IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
433             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
434          ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
435             RAISE OKL_API.G_EXCEPTION_ERROR;
436          END IF;
437 
438          l_accounting_event_id := l_event_id;
439 
440       END IF; -- if l_exist_event_id
441 	  END IF; -- IF l_try_name
442 
443    END IF; -- IF p_source_table
444    -- SLA uptake changes .. end
445    i := 1;
446 
447    LOOP
448 
449 	   -- SLA Uptake modifications.. start
450 		  IF (dist_rec.CR_DR_FLAG IS NULL) THEN
451 		     l_dist_tbl_in(i).CR_DR_FLAG         := NULL;
452              l_dist_tbl_in(i).AMOUNT             := -1 * dist_rec.amount;
453              l_dist_tbl_in(i).ACCOUNTED_AMOUNT   := -1 * dist_rec.accounted_amount;
454           ELSIF (dist_rec.CR_DR_FLAG = 'D') THEN
455              l_dist_tbl_in(i).CR_DR_FLAG         := 'C';
456              l_dist_tbl_in(i).AMOUNT             := dist_rec.amount;
457              l_dist_tbl_in(i).ACCOUNTED_AMOUNT   := dist_rec.accounted_amount;
458           ELSE
459              l_dist_tbl_in(i).CR_DR_FLAG         := 'D';
460              l_dist_tbl_in(i).AMOUNT             := dist_rec.amount;
461              l_dist_tbl_in(i).ACCOUNTED_AMOUNT   := dist_rec.accounted_amount;
462           END IF;
463 	   -- SLA Uptake modifications .. end
464 
465           l_dist_tbl_in(i).CURRENCY_CONVERSION_TYPE := dist_rec.currency_conversion_type;
466           l_dist_tbl_in(i).CODE_COMBINATION_ID      := dist_rec.code_combination_id;
467           l_dist_tbl_in(i).CURRENCY_CODE            := dist_rec.currency_code;
468           l_dist_tbl_in(i).AE_LINE_TYPE             := dist_rec.ae_line_type;
469           l_dist_tbl_in(i).TEMPLATE_ID              := dist_rec.template_id;
470           l_dist_tbl_in(i).SOURCE_ID                := dist_rec.source_id;
471           l_dist_tbl_in(i).SOURCE_TABLE             := dist_rec.source_table;
472           l_dist_tbl_in(i).GL_DATE                  := p_acct_date;
473           l_dist_tbl_in(i).PERCENTAGE               := dist_rec.percentage;
474           l_dist_tbl_in(i).COMMENTS                 := dist_rec.comments;
475           l_dist_tbl_in(i).CURRENCY_CONVERSION_DATE := dist_rec.currency_conversion_date;
476           l_dist_tbl_in(i).CURRENCY_CONVERSION_RATE := dist_rec.currency_conversion_rate;
477           l_dist_tbl_in(i).ATTRIBUTE_CATEGORY       := dist_rec.attribute_category;
478           l_dist_tbl_in(i).ATTRIBUTE1               := dist_rec.attribute1;
479           l_dist_tbl_in(i).ATTRIBUTE2               := dist_rec.attribute2;
480           l_dist_tbl_in(i).ATTRIBUTE3               := dist_rec.attribute3;
481           l_dist_tbl_in(i).ATTRIBUTE4               := dist_rec.attribute4;
482           l_dist_tbl_in(i).ATTRIBUTE5               := dist_rec.attribute5;
483           l_dist_tbl_in(i).ATTRIBUTE6               := dist_rec.attribute6;
484           l_dist_tbl_in(i).ATTRIBUTE7               := dist_rec.attribute7;
485           l_dist_tbl_in(i).ATTRIBUTE8               := dist_rec.attribute8;
486           l_dist_tbl_in(i).ATTRIBUTE9               := dist_rec.attribute9;
487           l_dist_tbl_in(i).ATTRIBUTE10              := dist_rec.attribute10;
488           l_dist_tbl_in(i).ATTRIBUTE11              := dist_rec.attribute11;
489           l_dist_tbl_in(i).ATTRIBUTE12              := dist_rec.attribute12;
490           l_dist_tbl_in(i).ATTRIBUTE13              := dist_rec.attribute13;
491           l_dist_tbl_in(i).ATTRIBUTE14              := dist_rec.attribute14;
492           l_dist_tbl_in(i).ATTRIBUTE15              := dist_rec.attribute15;
493           l_dist_tbl_in(i).AET_ID                   := NULL;
494           l_dist_tbl_in(i).POSTED_YN                := 'Y';
495           l_dist_tbl_in(i).AE_CREATION_ERROR        := NULL;
496           l_dist_tbl_in(i).GL_REVERSAL_FLAG         := 'N';
497           l_dist_tbl_in(i).POST_TO_GL               := dist_rec.post_to_gl;
498           l_dist_tbl_in(i).REVERSE_EVENT_FLAG       := 'Y';
499           l_dist_tbl_in(i).ORIGINAL_DIST_ID         := dist_rec.ID;
500           l_dist_tbl_in(i).ACCOUNTING_EVENT_ID      := l_accounting_event_id;
501 		  -- populate the set of books.
502 		  l_dist_tbl_in(i).set_of_books_id          := dist_rec.set_of_books_id;
503 
504           FETCH dist_csr INTO dist_rec;
505           EXIT WHEN dist_csr%NOTFOUND;
506           i := i + 1;
507 
508    END LOOP;
509 
510    CLOSE dist_csr;
511 
512 -- Start of wraper code generated automatically by Debug code generator for OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs
513   IF(L_DEBUG_ENABLED='Y') THEN
514     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
515     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
516   END IF;
517   IF(IS_DEBUG_PROCEDURE_ON) THEN
518     BEGIN
519         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRREVB.pls call OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs ');
520     END;
521   END IF;
522 
523    OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs(p_api_version      => l_api_version,
524                                                 p_init_msg_list    => p_init_msg_list,
525                                                 x_return_status    => l_return_status,
526                                                 x_msg_count        => x_msg_count,
527                                                 x_msg_data         => x_msg_data,
528                                                 p_tabv_tbl         => l_dist_tbl_in,
529                                                 x_tabv_tbl         => l_dist_tbl_out);
530   IF(IS_DEBUG_PROCEDURE_ON) THEN
531     BEGIN
532         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRREVB.pls call OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs ');
533     END;
534   END IF;
535 -- End of wraper code generated automatically by Debug code generator for OKL_TRNS_ACC_DSTRS_PUB.insert_trns_acc_dstrs
536 
537 
538    x_return_status := l_return_status;
539 
540 EXCEPTION
541 
542     WHEN OKL_API.G_EXCEPTION_ERROR THEN
543 
544            x_return_status := OKL_API.G_RET_STS_ERROR;
545 
546     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
547 
548            x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
549 
550     WHEN OTHERS THEN
551 
552            x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
553 
554 
555 END REVERSE_ENTRIES;
556 
557 
558 
559 PROCEDURE REVERSE_ENTRIES(p_api_version                IN         NUMBER,
560                           p_init_msg_list              IN         VARCHAR2,
561                           x_return_status              OUT        NOCOPY VARCHAR2,
562                           x_msg_count                  OUT        NOCOPY NUMBER,
563                           x_msg_data                   OUT        NOCOPY VARCHAR2,
564                           p_source_table               IN         VARCHAR2,
565 			  p_acct_date                  IN         DATE,
566 		          p_source_id_tbl              IN         SOURCE_ID_TBL_TYPE)
567 IS
568 
569   l_api_version                 CONSTANT NUMBER := 1;
570   l_api_name                    CONSTANT VARCHAR2(30) := 'REVERSE_ENTRIES';
571   l_return_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
572   l_overall_status              VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
573   i                             NUMBER := 0;
574   l_msg_count                   NUMBER := 0;
575   l_msg_data                    VARCHAR2(2000);
576 
577 
578 BEGIN
579 
580     IF (p_source_id_tbl.COUNT > 0) THEN
581 
582         i := p_source_id_tbl.FIRST;
583 
584         LOOP
585 
586           REVERSE_ENTRIES(p_api_version      => 1.0,
587                           p_init_msg_list    => OKL_API.G_FALSE,
588                           x_return_status    => l_return_status,
589                           x_msg_count        => l_msg_count,
590                           x_msg_data         => l_msg_data,
591                           p_source_id        => p_source_id_tbl(i),
592 			  p_source_table     => p_source_table,
593 			  p_acct_date        => p_acct_date);
594 
595 	  IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
596 	      IF (l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR) THEN
597 		  l_overall_status := l_return_status;
598 	      END IF;
599 	  END IF;
600 
601 
602           EXIT WHEN (i = p_source_id_tbl.LAST);
603           i := p_source_id_tbl.NEXT(i);
604 
605 
606         END LOOP;
607 
608     END IF;
609 
610 
611     x_return_status := l_overall_status;
612     x_msg_data      := l_msg_data;
613     x_msg_count     := l_msg_count;
614 
615 
616 END REVERSE_ENTRIES;
617 
618 
619 
620 PROCEDURE SUBMIT_PERIOD_REVERSAL(p_api_version         IN         NUMBER,
621                                  p_init_msg_list       IN         VARCHAR2,
622                                  x_return_status       OUT        NOCOPY VARCHAR2,
623                                  x_msg_count           OUT        NOCOPY NUMBER,
624                                  x_msg_data            OUT        NOCOPY VARCHAR2,
625                                  p_period              IN         VARCHAR2,
626                                  x_request_id          OUT NOCOPY        NUMBER)
627 IS
628 
629    l_api_version          CONSTANT NUMBER := 1.0;
630    l_api_name             CONSTANT VARCHAR2(30) := 'SUBMIT_PERIOD_REVERSAL';
631    l_return_status        VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
632    l_init_msg_list        VARCHAR2(20) DEFAULT Okl_Api.G_FALSE;
633    l_msg_count            NUMBER;
634    l_msg_data             VARCHAR2(2000);
635 
636 BEGIN
637 
638    x_return_status := OKL_API.G_RET_STS_SUCCESS;
639 
640    l_return_status := OKL_API.START_ACTIVITY(l_api_name,
641                                             G_PKG_NAME,
642                                             p_init_msg_list,
643                                             l_api_version,
644                                             p_api_version,
645                                             '_PVT',
646                                             x_return_status);
647    IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
648       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
649    ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
650       RAISE OKL_API.G_EXCEPTION_ERROR;
651    END IF;
652 
653     -- check for period name before submitting the request.
654    IF (p_period IS NULL) OR (p_period = Okl_Api.G_MISS_CHAR) THEN
655       Okc_Api.set_message('OKC', G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Period Name');
656       RAISE Okl_Api.G_EXCEPTION_ERROR;
657    END IF;
658 
659    -- Submit Concurrent Program Request for interest calculation
660 
661    FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
662    x_request_id := FND_REQUEST.SUBMIT_REQUEST
663          (application    => 'OKL',
664           program        => 'PERIOD_REVERSAL',
665           description    => 'Period Reversal',
666           argument1      =>  p_period);
667 
668    IF x_request_id = 0 THEN
669        Okc_Api.set_message(p_app_name => 'OFA',
670             p_msg_name => 'FA_DEPRN_TAX_ERROR',
671             p_token1   => 'REQUEST_ID',
672             p_token1_value => x_request_id);
673        RAISE okl_api.g_exception_error;
674 
675    END IF;
676 
677    OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
678 
679 EXCEPTION
680 
681   WHEN OKL_API.G_EXCEPTION_ERROR THEN
682       x_return_status := OKL_API.HANDLE_EXCEPTIONS
683       (
684         l_api_name,
685         G_PKG_NAME,
686         'OKL_API.G_RET_STS_ERROR',
687         x_msg_count,
688         x_msg_data,
689         '_PVT'
690       );
691   WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
692       x_return_status := OKL_API.HANDLE_EXCEPTIONS
693       (
694         l_api_name,
695         G_PKG_NAME,
696         'OKL_API.G_RET_STS_UNEXP_ERROR',
697         x_msg_count,
698         x_msg_data,
699         '_PVT'
700       );
701   WHEN OTHERS THEN
702       x_return_status := OKL_API.HANDLE_EXCEPTIONS
703       (
704         l_api_name,
705         G_PKG_NAME,
706         'OTHERS',
707         x_msg_count,
708         x_msg_data,
709         '_PVT'
710       );
711 
712 
713 END SUBMIT_PERIOD_REVERSAL;
714 
715 
716 END OKL_REVERSAL_PVT;