DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_REVERSAL_PVT

Source


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