DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_TRL_PUB_PKG

Source


1 PACKAGE BODY ZX_TRL_PUB_PKG AS
2 /* $Header: zxrwlnrepsrvpubb.pls 120.40 2006/09/22 22:56:08 nipatel ship $ */
3 
4   g_current_runtime_level           NUMBER;
5   g_level_statement       CONSTANT  NUMBER  := FND_LOG.LEVEL_STATEMENT;
6   g_level_procedure       CONSTANT  NUMBER  := FND_LOG.LEVEL_PROCEDURE;
7   g_level_event           CONSTANT  NUMBER  := FND_LOG.LEVEL_EVENT;
8   g_level_unexpected      CONSTANT  NUMBER  := FND_LOG.LEVEL_UNEXPECTED;
9   g_level_error           CONSTANT  NUMBER  := FND_LOG.LEVEL_ERROR;
10 
11 /* ===========================================================================*
12  | PROCEDURE Manage_TaxLines: It will Create, update, delete and cancel tax   |
13  |                            lines and summary  tax lines in the tax         |
14  |                            repository                                      |
15  * ===========================================================================*/
16 
17   PROCEDURE Manage_TaxLines
18        (x_return_status      OUT NOCOPY VARCHAR2,
19         p_event_class_rec IN            ZX_API_PUB.EVENT_CLASS_REC_TYPE) IS
20 
21     l_error_buffer                 VARCHAR2(100);
22     l_msg_context_info_rec         ZX_API_PUB.CONTEXT_INFO_REC_TYPE;
23 
24   BEGIN
25     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
26 
27     IF (g_level_procedure >= g_current_runtime_level ) THEN
28       FND_LOG.STRING(g_level_procedure,
29                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.BEGIN',
30                      'ZX_TRL_PUB_PKG: Manage_TaxLines (+)');
31     END IF;
32 
33     --  Initialize API return status to success
34     x_return_status := FND_API.G_RET_STS_SUCCESS;
35 
36     --
37     -- bug#4893261- populate message structure
38     --
39     l_msg_context_info_rec.application_id :=
40               p_event_class_rec.application_id;
41     l_msg_context_info_rec.entity_code :=
42               p_event_class_rec.entity_code;
43     l_msg_context_info_rec.event_class_code :=
44               p_event_class_rec.event_class_code;
45     l_msg_context_info_rec.trx_id :=
46               p_event_class_rec.trx_id;
47     l_msg_context_info_rec.trx_line_id := NULL;
48     l_msg_context_info_rec.trx_level_type := NULL;
49     l_msg_context_info_rec.summary_tax_line_number := NULL;
50     l_msg_context_info_rec.tax_line_id := NULL;
51     l_msg_context_info_rec.trx_line_dist_id := NULL;
52 
53 
54     -- p_event_class_rec.TAX_EVENT_TYPE_CODE can be null if there is a transaction with only
55     -- header and no lines (e.g. where all tax lines for the document need to be deleted) or
56     -- when a transaction in the batch has errors and so the transaction was not selected in
57     -- c_lines loop of service types pkg. Hence we should not raise error if the
58     -- p_event_class_rec.TAX_EVENT_TYPE_CODE IS NULL.
59     /*
60     IF p_event_class_rec.TAX_EVENT_TYPE_CODE IS NULL THEN
61       x_return_status := FND_API.G_RET_STS_ERROR;
62       FND_MESSAGE.SET_NAME('ZX','ZX_TRL_NULL_VALUES');
63       ZX_API_PUB.add_msg(l_msg_context_info_rec);
64       RETURN;
65     END IF;
66     */
67 
68     -- bug fix 5417887:
69     -- g_update_event_process_flag being Y means it is either a single update
70     -- document or a update batch process.
71     --
72     -- during the summary tax line creation, still make use of the
73     -- following flags in the p_event_class_rec:
74     -- summarization_flag,  retain_summ_tax_line_id_flag
75     -- the ASSUMPTION here is:
76     -- NO CROSS EVENT_CLASS_CODE DOCUMENTS EXISTS IN THE BATCH!!!
77     -- When situation changes in the future, need to revisit the code and make
78     -- necessary changes.
79 
80     IF ZX_GLOBAL_STRUCTURES_PKG.g_update_event_process_flag = 'Y' THEN
81 
82         /*
83          * no longer needed for UPDATE case
84          *
85          * ZX_TRL_MANAGE_TAX_PKG.Update_Synchronize_Taxlines
86          *                   (x_return_status => x_return_status);
87          *
88          */
89 
90       ZX_TRL_MANAGE_TAX_PKG.Delete_Detail_Lines
91                             (x_return_status   => x_return_status ,
92                              p_event_class_rec => p_event_class_rec);
93 
94       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
95         IF (g_level_error >= g_current_runtime_level ) THEN
96           FND_LOG.STRING(g_level_error,
97                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
98                  'Incorrect return_status after calling ' ||
99                  'ZX_TRL_MANAGE_TAX_PKG.Delete_Detail_Lines()');
100           FND_LOG.STRING(g_level_error,
101                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
102                  'RETURN_STATUS = ' || x_return_status);
103           FND_LOG.STRING(g_level_error,
104                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
105                  'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
106         END IF;
107         RETURN;
108       END IF;
109 
110       -- for summarization_flag <>'Y', only recreate the detail tax lines
111       IF p_event_class_rec.summarization_flag <> 'Y' THEN
112 
113         ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines (
114             p_event_class_rec => p_event_class_rec,
115             x_return_status => x_return_status);
116 
117         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
118           IF (g_level_error >= g_current_runtime_level ) THEN
119             FND_LOG.STRING(g_level_error,
120                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
121                    'Incorrect return_status after calling ' ||
122                    'ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines()');
123             FND_LOG.STRING(g_level_error,
124                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
125                    'RETURN_STATUS = ' || x_return_status);
126             FND_LOG.STRING(g_level_error,
127                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
128                    'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
129           END IF;
130           RETURN;
131         END IF;
132 
133       ELSE --p_event_class_rec.summarization_flag = 'Y'
134 
135         -- Preserve old summary_tax_line_id in g_detail_tax_lines_gt (for UPDATE
136         -- case) if the same summarization criteria exist in zx_lines_summary
137         --
138         IF p_event_class_rec.retain_summ_tax_line_id_flag = 'Y' THEN
139 
140           ZX_TRL_MANAGE_TAX_PKG.update_exist_summary_line_id (
141                             p_event_class_rec => p_event_class_rec,
142                             x_return_status   => x_return_status);
143 
144           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
145             IF (g_level_error >= g_current_runtime_level ) THEN
146               FND_LOG.STRING(g_level_error,
147                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
148                      'Incorrect return_status after calling ' ||
149                      'ZX_TRL_MANAGE_TAX_PKG.update_exist_summary_line_id()');
150               FND_LOG.STRING(g_level_error,
151                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
152                      'RETURN_STATUS = ' || x_return_status);
153               FND_LOG.STRING(g_level_error,
154                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
155                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
156             END IF;
157             RETURN;
158           END IF;
159         END IF;
160 
161         ZX_TRL_MANAGE_TAX_PKG.Delete_Summary_Lines
162                           (x_return_status   => x_return_status,
163                            p_event_class_rec => p_event_class_rec);
164 
165         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
166           IF (g_level_error >= g_current_runtime_level ) THEN
167             FND_LOG.STRING(g_level_error,
168                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
169                    'Incorrect return_status after calling ' ||
170                    'ZX_TRL_MANAGE_TAX_PKG.Delete_Summary_Lines()');
171             FND_LOG.STRING(g_level_error,
172                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
173                    'RETURN_STATUS = ' || x_return_status);
174             FND_LOG.STRING(g_level_error,
175                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
176                    'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
177           END IF;
178           RETURN;
179         END IF;
180 
181         -- recreate the summary tax lines and detail tax lines
182 
183         IF p_event_class_rec.retain_summ_tax_line_id_flag = 'N' THEN
184 
185         -- for update tax event, AP will pass in all the trx lines,
186         -- that is, all the tax lines will be in the zx_detail_tax_lines_gt.
187         -- so if not retain summary_tax_line_id, it is treated same as
188         -- created case.
189 
190           ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt (
191               p_event_class_rec => p_event_class_rec,
192               x_return_status   => x_return_status );
193 
194           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
195             IF (g_level_error >= g_current_runtime_level ) THEN
196               FND_LOG.STRING(g_level_error,
197                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
198                      'Incorrect return_status after calling ' ||
199                      'ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt()');
200               FND_LOG.STRING(g_level_error,
201                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
202                      'RETURN_STATUS = ' || x_return_status);
203               FND_LOG.STRING(g_level_error,
204                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
205                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
206             END IF;
207             RETURN;
208           END IF;
209 
210 
211           ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines (
212               p_event_class_rec => p_event_class_rec,
213               x_return_status => x_return_status);
214 
215           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
216             IF (g_level_error >= g_current_runtime_level ) THEN
217               FND_LOG.STRING(g_level_error,
218                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
219                      'Incorrect return_status after calling ' ||
220                      'ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines()');
221               FND_LOG.STRING(g_level_error,
222                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
223                      'RETURN_STATUS = ' || x_return_status);
224               FND_LOG.STRING(g_level_error,
225                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
226                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
227             END IF;
228             RETURN;
229           END IF;
230 
231         ELSE
232         -- For retain_summary_tax_line_id ='Y'
233 
234           ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines (
235               p_event_class_rec => p_event_class_rec,
236               x_return_status => x_return_status);
237 
238           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
239             IF (g_level_error >= g_current_runtime_level ) THEN
240               FND_LOG.STRING(g_level_error,
241                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
242                      'Incorrect return_status after calling ' ||
243                      'ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines()');
244               FND_LOG.STRING(g_level_error,
245                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
246                      'RETURN_STATUS = ' || x_return_status);
247               FND_LOG.STRING(g_level_error,
248                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
249                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
250             END IF;
251             RETURN;
252           END IF;
253 
254           ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_upd_evnt (
255               p_event_class_rec => p_event_class_rec,
256               x_return_status   => x_return_status );
257 
258           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
259             IF (g_level_error >= g_current_runtime_level ) THEN
260               FND_LOG.STRING(g_level_error,
261                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
262                      'Incorrect return_status after calling ' ||
263                      'ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt()');
264               FND_LOG.STRING(g_level_error,
265                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
266                      'RETURN_STATUS = ' || x_return_status);
267               FND_LOG.STRING(g_level_error,
268                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
269                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
270             END IF;
271             RETURN;
272           END IF;
273 
274         END IF; -- p_event_class_rec.retain_summ_tax_line_id_flag = 'N'
275 
276       END IF; -- p_event_class_rec.summarization_flag <> 'Y'
277 
278 
279       ZX_TRL_MANAGE_TAX_PKG.Delete_Loose_Tax_Distributions
280                           (x_return_status   => x_return_status,
281                            p_event_class_rec => p_event_class_rec);
282 
283       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
284         IF (g_level_error >= g_current_runtime_level ) THEN
285           FND_LOG.STRING(g_level_error,
286                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
287                  'Incorrect return_status after calling ' ||
288                  'ZX_TRL_MANAGE_TAX_PKG.Delete_Loose_Tax_Distributions()');
289           FND_LOG.STRING(g_level_error,
290                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
291                  'RETURN_STATUS = ' || x_return_status);
292           FND_LOG.STRING(g_level_error,
293                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
294                  'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
295         END IF;
296         RETURN;
297       END IF;
298 
299     ELSIF (p_event_class_rec.TAX_EVENT_TYPE_CODE = 'CREATE') THEN
303         -- for create tax event, summary tax line created based on
300 
301       IF p_event_class_rec.summarization_flag = 'Y' THEN
302 
304         -- zx_detail_tax_lines_gt, dump detail tax lines from gt to zx_lines
305         -- called after summary lines created for performance consideration.
306         --
307         ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt (
308             p_event_class_rec => p_event_class_rec,
309             x_return_status   => x_return_status );
310 
311         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
312           IF (g_level_error >= g_current_runtime_level ) THEN
313             FND_LOG.STRING(g_level_error,
314                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
315                    'Incorrect return_status after calling ' ||
316                    'ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt()');
317             FND_LOG.STRING(g_level_error,
318                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
319                    'RETURN_STATUS = ' || x_return_status);
320             FND_LOG.STRING(g_level_error,
321                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
322                    'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
323           END IF;
324           RETURN;
325         END IF;
326 
327       END IF;
328 
329       -- Dump detail tax lines from gt to zx_lines
330       ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines (
331         p_event_class_rec => p_event_class_rec,
332         x_return_status => x_return_status);
333 
334       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
335         IF (g_level_error >= g_current_runtime_level ) THEN
336           FND_LOG.STRING(g_level_error,
337                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
338                  'Incorrect return_status after calling ' ||
339                  'ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines()');
340           FND_LOG.STRING(g_level_error,
341                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
342                  'RETURN_STATUS = ' || x_return_status);
343           FND_LOG.STRING(g_level_error,
344                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
345                  'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
346         END IF;
347         RETURN;
348       END IF;
349 
350     -- bug fix 5417887
351     --ELSIF (p_event_class_rec.tax_event_type_code ='UPDATE' OR
352     --       p_event_class_rec.tax_event_type_code ='OVERRIDE_TAX' ) THEN
353     ELSIF  p_event_class_rec.tax_event_type_code ='OVERRIDE_TAX' THEN
354 
355         /*
356          * no longer needed for UPDATE case
357          *
358          * ZX_TRL_MANAGE_TAX_PKG.Update_Synchronize_Taxlines
359          *                   (x_return_status => x_return_status);
360          *
361          */
362 
363       ZX_TRL_MANAGE_TAX_PKG.Delete_Detail_Lines
364                             (x_return_status   => x_return_status ,
365                              p_event_class_rec => p_event_class_rec);
366 
367       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
368         IF (g_level_error >= g_current_runtime_level ) THEN
369           FND_LOG.STRING(g_level_error,
370                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
371                  'Incorrect return_status after calling ' ||
372                  'ZX_TRL_MANAGE_TAX_PKG.Delete_Detail_Lines()');
373           FND_LOG.STRING(g_level_error,
374                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
375                  'RETURN_STATUS = ' || x_return_status);
376           FND_LOG.STRING(g_level_error,
377                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
378                  'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
379         END IF;
380         RETURN;
381       END IF;
382 
383       -- for summarization_flag <>'Y', only recreate the detail tax lines
384       IF p_event_class_rec.summarization_flag <> 'Y' THEN
385 
386         ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines (
387             p_event_class_rec => p_event_class_rec,
388             x_return_status => x_return_status);
389 
390         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
391           IF (g_level_error >= g_current_runtime_level ) THEN
392             FND_LOG.STRING(g_level_error,
393                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
394                    'Incorrect return_status after calling ' ||
395                    'ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines()');
396             FND_LOG.STRING(g_level_error,
397                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
398                    'RETURN_STATUS = ' || x_return_status);
399             FND_LOG.STRING(g_level_error,
400                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
401                    'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
402           END IF;
403           RETURN;
404         END IF;
405 
406       ELSE --p_event_class_rec.summarization_flag = 'Y'
407 
408         -- Preserve old summary_tax_line_id in g_detail_tax_lines_gt (for UPDATE
409         -- case) if the same summarization criteria exist in zx_lines_summary
410         --
411         IF p_event_class_rec.retain_summ_tax_line_id_flag = 'Y' THEN
412 
413           ZX_TRL_MANAGE_TAX_PKG.update_exist_summary_line_id (
414                             p_event_class_rec => p_event_class_rec,
415                             x_return_status   => x_return_status);
416 
417           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
418             IF (g_level_error >= g_current_runtime_level ) THEN
419               FND_LOG.STRING(g_level_error,
420                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
421                      'Incorrect return_status after calling ' ||
422                      'ZX_TRL_MANAGE_TAX_PKG.update_exist_summary_line_id()');
423               FND_LOG.STRING(g_level_error,
427                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
424                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
425                      'RETURN_STATUS = ' || x_return_status);
426               FND_LOG.STRING(g_level_error,
428                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
429             END IF;
430             RETURN;
431           END IF;
432         END IF;
433 
434         ZX_TRL_MANAGE_TAX_PKG.Delete_Summary_Lines
435                           (x_return_status   => x_return_status,
436                            p_event_class_rec => p_event_class_rec);
437 
438         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
439           IF (g_level_error >= g_current_runtime_level ) THEN
440             FND_LOG.STRING(g_level_error,
441                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
442                    'Incorrect return_status after calling ' ||
443                    'ZX_TRL_MANAGE_TAX_PKG.Delete_Summary_Lines()');
444             FND_LOG.STRING(g_level_error,
445                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
446                    'RETURN_STATUS = ' || x_return_status);
447             FND_LOG.STRING(g_level_error,
448                    'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
449                    'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
450           END IF;
451           RETURN;
452         END IF;
453 
454        /* -- commented out for bug fix 5417887
455         -- recreate the summary tax lines and detail tax lines
456 
457         IF p_event_class_rec.tax_event_type_code = 'UPDATE'
458           AND p_event_class_rec.retain_summ_tax_line_id_flag = 'N'
459         THEN
460         -- for update tax event, AP will pass in all the trx lines,
461         -- that is, all the tax lines will be in the zx_detail_tax_lines_gt.
462         -- so if not retain summary_tax_line_id, it is treated same as
463         -- created case.
464 
465           ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt (
466               p_event_class_rec => p_event_class_rec,
467               x_return_status   => x_return_status );
468 
469           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
470             IF (g_level_error >= g_current_runtime_level ) THEN
471               FND_LOG.STRING(g_level_error,
472                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
473                      'Incorrect return_status after calling ' ||
474                      'ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt()');
475               FND_LOG.STRING(g_level_error,
476                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
477                      'RETURN_STATUS = ' || x_return_status);
478               FND_LOG.STRING(g_level_error,
479                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
480                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
481             END IF;
482             RETURN;
483           END IF;
484 
485 
486           ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines (
487               p_event_class_rec => p_event_class_rec,
488               x_return_status => x_return_status);
489 
490           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
491             IF (g_level_error >= g_current_runtime_level ) THEN
492               FND_LOG.STRING(g_level_error,
493                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
494                      'Incorrect return_status after calling ' ||
495                      'ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines()');
496               FND_LOG.STRING(g_level_error,
497                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
498                      'RETURN_STATUS = ' || x_return_status);
499               FND_LOG.STRING(g_level_error,
500                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
501                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
502             END IF;
503             RETURN;
504           END IF;
505 
506         ELSE
507         -- For tax_event_type of UPDATE and retain_summary_tax_line_id ='Y'
508         -- or tax_event_type of OVERRIDE_TAX
509 
510         -- commented out for bug fix 5417887 end */
511 
512           ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines (
513               p_event_class_rec => p_event_class_rec,
514               x_return_status => x_return_status);
515 
516           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
517             IF (g_level_error >= g_current_runtime_level ) THEN
518               FND_LOG.STRING(g_level_error,
519                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
520                      'Incorrect return_status after calling ' ||
521                      'ZX_TRL_MANAGE_TAX_PKG.Create_Detail_Lines()');
522               FND_LOG.STRING(g_level_error,
523                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
524                      'RETURN_STATUS = ' || x_return_status);
525               FND_LOG.STRING(g_level_error,
526                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
527                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
528             END IF;
529             RETURN;
530           END IF;
531 
532           ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_upd_evnt (
533               p_event_class_rec => p_event_class_rec,
534               x_return_status   => x_return_status );
535 
536           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
537             IF (g_level_error >= g_current_runtime_level ) THEN
538               FND_LOG.STRING(g_level_error,
539                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
540                      'Incorrect return_status after calling ' ||
541                      'ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_crt_evnt()');
542               FND_LOG.STRING(g_level_error,
543                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
547                      'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
544                      'RETURN_STATUS = ' || x_return_status);
545               FND_LOG.STRING(g_level_error,
546                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
548             END IF;
549             RETURN;
550           END IF;
551 
552        -- bug fix 5417887
553        -- END IF; -- p_event_class_rec.tax_event_type_code = 'UPDATE'
554 
555       END IF; -- p_event_class_rec.summarization_flag <> 'Y'
556 
557 
558       ZX_TRL_MANAGE_TAX_PKG.Delete_Loose_Tax_Distributions
559                           (x_return_status   => x_return_status,
560                            p_event_class_rec => p_event_class_rec);
561 
562       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
563         IF (g_level_error >= g_current_runtime_level ) THEN
564           FND_LOG.STRING(g_level_error,
565                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
566                  'Incorrect return_status after calling ' ||
567                  'ZX_TRL_MANAGE_TAX_PKG.Delete_Loose_Tax_Distributions()');
568           FND_LOG.STRING(g_level_error,
569                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
570                  'RETURN_STATUS = ' || x_return_status);
571           FND_LOG.STRING(g_level_error,
572                  'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
573                  'ZX_TRL_PUB_PKG.Manage_TaxLines(-)');
574         END IF;
575         RETURN;
576       END IF;
577 
578     END IF;      -- tax_event_type_code
579 
580     IF (g_level_procedure >= g_current_runtime_level ) THEN
581 
582       FND_LOG.STRING(g_level_procedure,
583                     'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines.END',
584                     'ZX_TRL_PUB_PKG: Manage_TaxLines (-)'||x_return_status);
585     END IF;
586 
587   EXCEPTION
588     WHEN OTHERS THEN
589       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
590       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
591 
592       IF (g_level_unexpected >= g_current_runtime_level ) THEN
593         FND_LOG.STRING(g_level_unexpected,
594                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxLines',
595                         l_error_buffer);
596       END IF;
597 
598   END Manage_TaxLines;
599 
600 
601 /*============================================================================*
602  | PROCEDURE Document_Level_Changes: It will Delete / Cancel / Purge tax lines |
603  |                                   from the tax repository                   |
604  *============================================================================*/
605 
606   PROCEDURE Document_Level_Changes
607        (x_return_status             OUT NOCOPY VARCHAR2,
608         p_event_class_rec        IN     ZX_API_PUB.EVENT_CLASS_REC_TYPE,
609         p_tax_hold_released_code IN     ZX_API_PUB.VALIDATION_STATUS_TBL_TYPE) IS
610 
611     l_return_status VARCHAR2(1);
612 
613     --TRANSACTION TABLE HAS A NUMBER OF TRANSACTIONS TO BE PROCESSED. BASED ON THE EVENTS ,
614     --APPROPRIATE PROCEDURES WOULD BE CALLED. ZX_LINES TABLE MUST HAVE
615     --TRANSACTION LINES FOR THE GIVEN TRANSACTION FOR FURTHER PROCESSING.
616     l_error_buffer   VARCHAR2(100);
617 
618   BEGIN
619     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
620 
621     IF (g_level_procedure >= g_current_runtime_level ) THEN
622       FND_LOG.STRING(g_level_procedure,
623                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Document_Level_Changes.BEGIN',
624                      'ZX_TRL_PUB_PKG: Document_Level_Changes (+)');
625     END IF;
626 
627     --  Initialize API return status to success
628     x_return_status := FND_API.G_RET_STS_SUCCESS;
629 
630     IF (p_event_class_rec.TAX_EVENT_TYPE_CODE = 'DELETE') THEN
631 
632       ZX_TRL_MANAGE_TAX_PKG.DELETE_TRANSACTION
633                         (x_return_status   => l_return_status    ,
634                          p_event_class_rec => p_event_class_rec);
635 
636     ELSIF (p_event_class_rec.TAX_EVENT_TYPE_CODE = 'PURGE') THEN
637 
638       ZX_TRL_MANAGE_TAX_PKG.PURGE_TRANSACTION
639                         (x_return_status   => l_return_status,
640                          p_event_class_rec => p_event_class_rec);
641 
642     ELSIF (p_event_class_rec.TAX_EVENT_TYPE_CODE = 'CANCEL') THEN
643 
644       ZX_TRL_MANAGE_TAX_PKG.CANCEL_TRANSACTION
645                         (x_return_status   => l_return_status,
646                          p_event_class_rec => p_event_class_rec);
647 
648     -- begin bug fix 3339364
649     ELSIF (p_event_class_rec.TAX_EVENT_TYPE_CODE = 'RELEASE_TAX_HOLD') THEN
650 
651       ZX_TRL_MANAGE_TAX_PKG.RELEASE_DOCUMENT_TAX_HOLD
652                         (x_return_status   => l_return_status,
653                          p_event_class_rec => p_event_class_rec,
654                          p_tax_hold_released_code => p_tax_hold_released_code
655                          );
656 
657     -- end bug fix 3339364
658     END IF;
659 
660     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
661       RAISE FND_API.G_EXC_ERROR;
662     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
663       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
664     END IF;
665 
666     IF (g_level_procedure >= g_current_runtime_level ) THEN
667       FND_LOG.STRING(g_level_procedure,
668                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Document_Level_Changes.END',
669                      'ZX_TRL_PUB_PKG: Document_Level_Changes (-)'||x_return_status);
670     END IF;
671 
672   EXCEPTION
673     WHEN FND_API.G_EXC_ERROR THEN
674       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
675       IF (g_level_unexpected >= g_current_runtime_level ) THEN
676         FND_LOG.STRING(g_level_unexpected,
677                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Document_Level_Changes',
678                        'Return Status = ' || x_return_status);
679       END IF;
680 
681     WHEN OTHERS THEN
682       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
683       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
684 
685       IF (g_level_unexpected >= g_current_runtime_level ) THEN
686         FND_LOG.STRING(g_level_unexpected,
687                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Document_Level_Changes',
688                         l_error_buffer);
689       END IF;
690 
691   END Document_Level_Changes;
692 
693 /* ===========================================================================*
694  | PROCEDURE Synchronize_TaxLines : updates transaction information in the tax|
695  |                                  repository                                |
696  * ===========================================================================*/
697 
698   PROCEDURE Synchronize_TaxLines
699        (x_return_status    OUT   NOCOPY VARCHAR2) IS
700 
701     l_return_status  VARCHAR2(1);
702     l_error_buffer   VARCHAR2(100);
703 
704   BEGIN
705     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
706 
707     IF (g_level_procedure >= g_current_runtime_level ) THEN
708       FND_LOG.STRING(g_level_procedure,
709                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Synchronize_TaxLines.BEGIN',
710                      'ZX_TRL_PUB_PKG: Synchronize_TaxLines (+)');
711     END IF;
712 
713     --  Initialize API return status to success
714     x_return_status := FND_API.G_RET_STS_SUCCESS;
715 
716     /****** no longer needed  ***********
717      *ZX_TRL_MANAGE_TAX_PKG.Update_Transaction_Info
718      *                  (x_return_status    =>  l_return_status);
719      *
720      *************************************/
721 
722 
723     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
724       RAISE FND_API.G_EXC_ERROR;
725     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
726       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
727     END IF;
728 
729     IF (g_level_procedure >= g_current_runtime_level ) THEN
730       FND_LOG.STRING(g_level_procedure,
731                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Synchronize_TaxLines.END',
732                      'ZX_TRL_PUB_PKG: Synchronize_TaxLines (-)'||x_return_status);
733     END IF;
734 
735   EXCEPTION
736     WHEN FND_API.G_EXC_ERROR THEN
737       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
738       IF (g_level_unexpected >= g_current_runtime_level ) THEN
739         FND_LOG.STRING(g_level_unexpected,
740                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Synchronize_TaxLines',
741                        'Return Status = ' || x_return_status);
742       END IF;
743 
744     WHEN OTHERS THEN
745       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
746       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
747 
748       IF (g_level_unexpected >= g_current_runtime_level ) THEN
749         FND_LOG.STRING(g_level_unexpected,
750                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Synchronize_TaxLines',
751                         l_error_buffer);
752       END IF;
753 
754   END Synchronize_TaxLines;
755 
756 /* ===========================================================================*
757  | PROCEDURE Mark_Tax_Lines_Delete  : Marks the tax lines as delete.          |
758  * ===========================================================================*/
759 
760   PROCEDURE Mark_Tax_Lines_Delete
761        (x_return_status           OUT NOCOPY VARCHAR2,
762         p_transaction_line_rec IN            ZX_API_PUB.TRANSACTION_LINE_REC_TYPE) IS
763 
764     l_return_status VARCHAR2(1);
765     l_error_buffer  VARCHAR2(100);
766 
767   BEGIN
768     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
769 
770     IF (g_level_procedure >= g_current_runtime_level ) THEN
771       FND_LOG.STRING(g_level_procedure,
772                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Mark_Tax_Lines_Delete.BEGIN',
773                      'ZX_TRL_PUB_PKG: Mark_Tax_Lines_Delete (+)');
774     END IF;
775 
776     --  Initialize API return status to success
777     x_return_status := FND_API.G_RET_STS_SUCCESS;
778 
779     ZX_TRL_MANAGE_TAX_PKG.Mark_Detail_Tax_Lines_Delete
780                       (x_return_status        => l_return_status ,
781                        p_transaction_line_rec => p_transaction_line_rec);
782 
783 
784     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
785       RAISE FND_API.G_EXC_ERROR;
786     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
787       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
788     END IF;
789 
790     IF (g_level_procedure >= g_current_runtime_level ) THEN
791       FND_LOG.STRING(g_level_procedure,
792                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Mark_Tax_Lines_Delete.END',
793                      'ZX_TRL_PUB_PKG.Mark_Tax_Lines_Delete (-)'||x_return_status);
794     END IF;
795 
796   EXCEPTION
797     WHEN FND_API.G_EXC_ERROR THEN
798       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
799       IF (g_level_unexpected >= g_current_runtime_level ) THEN
800         FND_LOG.STRING(g_level_unexpected,
801                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Mark_Tax_Lines_Delete',
802                        'Return Status = ' || x_return_status);
803       END IF;
804 
805     WHEN OTHERS THEN
806       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
807       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
808 
809       IF (g_level_unexpected >= g_current_runtime_level ) THEN
810         FND_LOG.STRING(g_level_unexpected,
811                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Mark_Tax_Lines_Delete',
812                         l_error_buffer);
813       END IF;
814 
815   END Mark_Tax_Lines_Delete;
816 
817 /*============================================================================*
818  | PROCEDURE Manage_TaxDistributions: It will create, update, delete tax      |
819  |                                    distributions lines and update tax lines|
820  |                                    and summary tax lines in the            |
821  |                                    tax repository.                         |
822  |============================================================================*/
823 
824   PROCEDURE Manage_TaxDistributions
825        (x_return_status      OUT NOCOPY VARCHAR2,
826         p_event_class_rec IN            ZX_API_PUB.EVENT_CLASS_REC_TYPE) IS
827 
828     l_return_status  VARCHAR2(1);
829     l_error_buffer  VARCHAR2(100);
830     l_msg_context_info_rec         ZX_API_PUB.CONTEXT_INFO_REC_TYPE
831 ;
832 
833 
834   BEGIN
835     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
836 
837     IF (g_level_procedure >= g_current_runtime_level ) THEN
838       FND_LOG.STRING(g_level_procedure,
839                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxDistributions.BEGIN',
840                      'ZX_TRL_PUB_PKG: Manage_TaxDistributions (+)');
841     END IF;
842 
843     --  Initialize API return status to success
844     x_return_status := FND_API.G_RET_STS_SUCCESS;
845 
846     --
847     -- bug#4893261- populate message structure
848     --
849     l_msg_context_info_rec.application_id :=
850               p_event_class_rec.application_id;
851     l_msg_context_info_rec.entity_code :=
852               p_event_class_rec.entity_code;
853     l_msg_context_info_rec.event_class_code :=
854               p_event_class_rec.event_class_code;
855     l_msg_context_info_rec.trx_id := NULL;
856    --         p_event_class_rec.trx_id;
857     l_msg_context_info_rec.trx_line_id := NULL;
858     l_msg_context_info_rec.trx_level_type := NULL;
859     l_msg_context_info_rec.summary_tax_line_number := NULL;
860     l_msg_context_info_rec.tax_line_id := NULL;
861     l_msg_context_info_rec.trx_line_dist_id := NULL;
862 
863 
864     IF (p_event_class_rec.tax_event_type_code <> 'OVERRIDE_TAX_DISTRIBUTIONS') THEN
865     -- bugfix 5551973
866     -- this part handles the tax event type of DISTRIBUTE and RE-DISTRIBUTE
867     -- If separate logic is required for any other events, it should be handled separetely.
868 
869       -- the call to ZX_TRL_MANAGE_TAX_PKG.Delete_dist_Marked_For_Delete is needed
870       -- only for re-distribute event. make this call conditional later on
871       ZX_TRL_MANAGE_TAX_PKG.Delete_dist_Marked_For_Delete
872                           (x_return_status   => l_return_status ,
873                            p_event_class_rec => p_event_class_rec);
874 
875 
876       IF (l_return_status= FND_API.G_RET_STS_SUCCESS) THEN
877         ZX_TRL_MANAGE_TAX_PKG.Create_Tax_Distributions
878                             (x_return_status => l_return_status);
879 
880       END IF;
881 
882       IF l_return_status = FND_API.G_RET_STS_ERROR THEN
883         FND_MESSAGE.SET_NAME('ZX','ZX_TRL_RECORD_ALREADY_EXISTS');
884         ZX_API_PUB.add_msg(l_msg_context_info_rec);
885       END IF;
886 
887       IF (l_return_status= FND_API.G_RET_STS_SUCCESS) THEN
888         ZX_TRL_MANAGE_TAX_PKG.Update_Taxline_Rec_Nrec_amt
889                             (x_return_status   => l_return_status ,
890                              p_event_class_rec => p_event_class_rec);
891 
892       END IF;
893 
894     ELSIF p_event_class_rec.tax_event_type_code = 'OVERRIDE_TAX_DISTRIBUTIONS' THEN
895 
896       -- confirm that  tax_event_type_code = 'OVERRIDE_TAX_DISTRIBUTIONS'
897       -- will not be there in the bulk call to determine recovery. Otherwise these API
898       -- calls need a change for bulk processing of override deistributions
899 
900       ZX_TRL_MANAGE_TAX_PKG.delete_tax_distributions(
901                            x_return_status   => l_return_status,
902                            p_event_class_rec => p_event_class_rec);
903 
904       IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
905         ZX_TRL_MANAGE_TAX_PKG.Create_Tax_Distributions
906                             (x_return_status => l_return_status);
907 
908       END IF;
909 
910       IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
911         ZX_TRL_MANAGE_TAX_PKG.update_taxline_rec_nrec_amt(
912                              x_return_status   => l_return_status,
913                              p_event_class_rec => p_event_class_rec);
914 
915       END IF;
916     END IF;
917 
918     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
919       RAISE FND_API.G_EXC_ERROR;
920     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
921       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
922     END IF;
923 
924     IF (g_level_procedure >= g_current_runtime_level ) THEN
925       FND_LOG.STRING(g_level_procedure,
926                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxDistributions.END',
927                      'ZX_TRL_PUB_PKG: Manage_TaxDistributions (-)'||x_return_status);
928     END IF;
929 
930   EXCEPTION
931     WHEN FND_API.G_EXC_ERROR THEN
932       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
933       IF (g_level_unexpected >= g_current_runtime_level ) THEN
934         FND_LOG.STRING(g_level_unexpected,
938 
935                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxDistributions',
936                        'Return Status = ' || x_return_status);
937       END IF;
939     WHEN OTHERS THEN
940       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
941       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
942 
943       IF (g_level_unexpected >= g_current_runtime_level ) THEN
944         FND_LOG.STRING(g_level_unexpected,
945                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Manage_TaxDistributions',
946                         l_error_buffer);
947       END IF;
948   END Manage_TaxDistributions;
949 
950 /*=====================================================================================*
951  | PROCEDURE Freeze_TaxDistributions: This recording service is used to freeze tax     |
952  |                                    distributions whenever user freezes transaction  |
953  |                                    distribution lines                               |
954  |=====================================================================================*/
955 
956   PROCEDURE Freeze_TaxDistributions
957        (x_return_status      OUT NOCOPY VARCHAR2,
958         p_event_class_rec    IN         ZX_API_PUB.EVENT_CLASS_REC_TYPE) IS
959 
960     l_error_buffer  VARCHAR2(100);
961 
962   BEGIN
963     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
964 
965     IF (g_level_procedure >= g_current_runtime_level ) THEN
966       FND_LOG.STRING(g_level_procedure,
967                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Freeze_TaxDistributions.BEGIN',
968                      'ZX_TRL_PUB_PKG: Freeze_TaxDistributions (+)');
969     END IF;
970 
971     ZX_TRL_MANAGE_TAX_PKG.Update_Freeze_Flag
972                       (x_return_status         =>      x_return_status,
973                        p_event_class_rec       =>      p_event_class_rec);
974 
975 
976     IF (g_level_procedure >= g_current_runtime_level ) THEN
977       FND_LOG.STRING(g_level_procedure,
978                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Freeze_TaxDistributions.END',
979                      'ZX_TRL_PUB_PKG: Freeze_TaxDistributions (-)'||x_return_status);
980     END IF;
981 
982   EXCEPTION
983     WHEN FND_API.G_EXC_ERROR THEN
984       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
985       IF (g_level_unexpected >= g_current_runtime_level ) THEN
986         FND_LOG.STRING(g_level_unexpected,
987                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Freeze_TaxDistributions',
988                        'Return Status = ' || x_return_status);
989       END IF;
990 
991     WHEN OTHERS THEN
992       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
993       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
994 
995       IF (g_level_unexpected >= g_current_runtime_level ) THEN
996         FND_LOG.STRING(g_level_unexpected,
997                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Freeze_TaxDistributions',
998                         l_error_buffer);
999       END IF;
1000   END Freeze_TaxDistributions;
1001 
1002 /*============================================================================*
1003  | PROCEDURE Update_Taxlines: This recording service is used to update tax    |
1004  |                            lines (ZX_LINES) with changed status for given  |
1005  |                            transaction line distributions.                 |
1006  |============================================================================*/
1007   PROCEDURE Update_Taxlines
1008        (x_return_status      OUT NOCOPY VARCHAR2,
1009         p_event_class_rec IN            ZX_API_PUB.EVENT_CLASS_REC_TYPE) IS
1010 
1011     l_error_buffer  VARCHAR2(100);
1012 
1013   BEGIN
1014     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1015 
1016     IF (g_level_procedure >= g_current_runtime_level ) THEN
1017       FND_LOG.STRING(g_level_procedure,
1018                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Taxlines.BEGIN',
1019                      'ZX_TRL_PUB_PKG: Update_Taxlines (+)');
1020     END IF;
1021 
1022     ZX_TRL_MANAGE_TAX_PKG.Update_Item_Dist_Changed_Flag
1023                       (x_return_status   => x_return_status,
1024                        p_event_class_rec => p_event_class_rec);
1025 
1026     IF (g_level_procedure >= g_current_runtime_level ) THEN
1027       FND_LOG.STRING(g_level_procedure,
1028                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Taxlines.END',
1029                      'ZX_TRL_PUB_PKG: Update_Taxlines (-)'||x_return_status);
1030     END IF;
1031 
1032   EXCEPTION
1033     WHEN FND_API.G_EXC_ERROR THEN
1034       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1035       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1036         FND_LOG.STRING(g_level_unexpected,
1037                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Taxlines',
1038                        'Return Status = ' || x_return_status);
1039       END IF;
1040 
1041     WHEN OTHERS THEN
1042       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1043       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1044 
1045       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1046         FND_LOG.STRING(g_level_unexpected,
1047                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Taxlines',
1048                         l_error_buffer);
1049       END IF;
1050   END Update_Taxlines;
1051 
1052   PROCEDURE Discard_Tax_Only_Lines
1053        (x_return_status      OUT NOCOPY VARCHAR2,
1054         p_event_class_rec IN            ZX_API_PUB.EVENT_CLASS_REC_TYPE) IS
1055 
1056     l_error_buffer  VARCHAR2(100);
1057 
1058   BEGIN
1059     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1060 
1061     IF (g_level_procedure >= g_current_runtime_level ) THEN
1062       FND_LOG.STRING(g_level_procedure,
1063                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Discard_Tax_Only_Lines.BEGIN',
1067     ZX_TRL_MANAGE_TAX_PKG.Discard_Tax_Only_Lines (x_return_status, p_event_class_rec);
1064                      'ZX_TRL_PUB_PKG: Discard_Tax_Only_Lines (+)');
1065     END IF;
1066 
1068 
1069     IF (g_level_procedure >= g_current_runtime_level ) THEN
1070       FND_LOG.STRING(g_level_procedure,
1071                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Discard_Tax_Only_Lines.END',
1072                      'ZX_TRL_PUB_PKG: Discard_Tax_Only_Lines (-)'||x_return_status);
1073     END IF;
1074 
1075   EXCEPTION
1076     WHEN FND_API.G_EXC_ERROR THEN
1077       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1078       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1079         FND_LOG.STRING(g_level_unexpected,
1080                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Discard_Tax_Only_Lines',
1081                        'Return Status = ' || x_return_status);
1082       END IF;
1083 
1084     WHEN OTHERS THEN
1085       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1086       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1087 
1088       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1089         FND_LOG.STRING(g_level_unexpected,
1090                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Discard_Tax_Only_Lines',
1091                         l_error_buffer);
1092       END IF;
1093 
1094   END Discard_Tax_Only_Lines;
1095 
1096   PROCEDURE Update_GL_Date
1097        (p_gl_date       IN            DATE,
1098         x_return_status    OUT NOCOPY VARCHAR2) IS
1099 
1100     l_error_buffer  VARCHAR2(100);
1101 
1102   BEGIN
1103     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1104 
1105     IF (g_level_procedure >= g_current_runtime_level ) THEN
1106       FND_LOG.STRING(g_level_procedure,
1107                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_GL_Date.BEGIN',
1108                      'ZX_TRL_PUB_PKG: Update_GL_Date (+)');
1109     END IF;
1110 
1111     ZX_TRL_MANAGE_TAX_PKG.Update_GL_Date (p_gl_date, x_return_status);
1112 
1113 
1114     IF (g_level_procedure >= g_current_runtime_level ) THEN
1115       FND_LOG.STRING(g_level_procedure,
1116                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_GL_Date.END',
1117                      'ZX_TRL_PUB_PKG: Update_GL_Date (-)'||x_return_status);
1118     END IF;
1119 
1120   EXCEPTION
1121     WHEN FND_API.G_EXC_ERROR THEN
1122       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1123       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1124         FND_LOG.STRING(g_level_unexpected,
1125                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_GL_Date',
1126                        'Return Status = ' || x_return_status);
1127       END IF;
1128 
1129     WHEN OTHERS THEN
1130       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1131       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1132 
1133       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1134         FND_LOG.STRING(g_level_unexpected,
1135                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_GL_Date',
1136                         l_error_buffer);
1137       END IF;
1138 
1139   END Update_GL_Date;
1140 
1141   PROCEDURE Update_Exchange_Rate
1142        (p_event_class_rec         IN            ZX_API_PUB.EVENT_CLASS_REC_TYPE,
1143         x_return_status              OUT NOCOPY VARCHAR2) IS
1144 
1145     l_error_buffer  VARCHAR2(100);
1146 
1147   BEGIN
1148     g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1149 
1150     IF (g_level_procedure >= g_current_runtime_level ) THEN
1151       FND_LOG.STRING(g_level_procedure,
1152                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Exchange_Rate.BEGIN',
1153                      'ZX_TRL_PUB_PKG: Update_Exchange_Rate (+)');
1154     END IF;
1155 
1156     ZX_TRL_MANAGE_TAX_PKG.Update_Exchange_Rate (p_event_class_rec,
1157                                                   x_return_status);
1158 
1159 
1160     IF (g_level_procedure >= g_current_runtime_level ) THEN
1161       FND_LOG.STRING(g_level_procedure,
1162                      'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Exchange_Rate.END',
1163                      'ZX_TRL_PUB_PKG: Update_Exchange_Rate (-)'||x_return_status);
1164     END IF;
1165 
1166   EXCEPTION
1167     WHEN FND_API.G_EXC_ERROR THEN
1168       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1169       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1170         FND_LOG.STRING(g_level_unexpected,
1171                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Exchange_Rate',
1172                        'Return Status = ' || x_return_status);
1173       END IF;
1174 
1175     WHEN OTHERS THEN
1176       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1177       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1178 
1179       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1180         FND_LOG.STRING(g_level_unexpected,
1181                        'ZX.PLSQL.ZX_TRL_PUB_PKG.Update_Exchange_Rate',
1182                         l_error_buffer);
1183       END IF;
1184 
1185   END Update_Exchange_Rate;
1186 
1187 ------------------------------------------------------------------------------
1188 --  PUBLIC PROCEDURE
1189 --  delete_tax_lines_and_dists
1190 --
1191 --  DESCRIPTION
1192 --  Delete all the detail tax lines and distributions of the passed-in
1193 --  transaction line from zx_lines and zx_rec_nrec_dist.
1194 ------------------------------------------------------------------------------
1195 
1196 PROCEDURE delete_tax_lines_and_dists
1197 (
1198     p_application_id       IN           NUMBER,
1199     p_entity_code          IN           VARCHAR2,
1200     p_event_class_code     IN           VARCHAR2,
1201     p_trx_id               IN           NUMBER,
1202     p_trx_line_id          IN           NUMBER,
1203     p_trx_level_type       IN           VARCHAR2,
1207  CURSOR c_get_summary_flags IS
1204     x_return_status        OUT NOCOPY   VARCHAR2
1205 ) IS
1206 
1208    SELECT summarization_flag,
1209           retain_summ_tax_line_id_flag
1210      FROM zx_evnt_cls_mappings
1211     WHERE event_class_code = p_event_class_code
1212       AND application_id   = p_application_id
1213       AND entity_code      = p_entity_code;
1214 
1215  l_summarization_flag            VARCHAR2(1);
1216  l_retain_summ_tax_line_id_flag  VARCHAR2(1);
1217 
1218  l_error_buffer VARCHAR2(100);
1219 
1220 BEGIN
1221   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1222 
1223   IF (g_level_procedure >= g_current_runtime_level ) THEN
1224     FND_LOG.STRING(g_level_procedure,
1225                    'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_lines_and_dists.BEGIN',
1226                    'ZX_TRL_PUB_PKG: delete_tax_lines_and_dists (+)');
1227   END IF;
1228   x_return_status := FND_API.G_RET_STS_SUCCESS;
1229 
1230   -- delete the distributions
1231   DELETE FROM zx_rec_nrec_dist
1232         WHERE application_id     = p_application_id
1233           AND entity_code        = p_entity_code
1234           AND event_class_code   = p_event_class_code
1235           AND trx_id             = p_trx_id
1236           AND trx_line_id        = p_trx_line_id
1237           AND trx_level_type     = p_trx_level_type;
1238 
1239   OPEN c_get_summary_flags;
1240   FETCH c_get_summary_flags into l_summarization_flag, l_retain_summ_tax_line_id_flag;
1241   CLOSE c_get_summary_flags;
1242 
1243   -- delete the tax detail lines
1244   DELETE FROM zx_lines
1245         WHERE application_id     = p_application_id
1246           AND entity_code        = p_entity_code
1247           AND event_class_code   = p_event_class_code
1248           AND trx_id             = p_trx_id
1249           AND trx_line_id        = p_trx_line_id
1250           AND trx_level_type     = p_trx_level_type;
1251 
1252   IF l_summarization_flag = 'Y' THEN
1253 
1254     -- for current phase, just delete all the summary tax lines
1255     -- for this transaction and recreate
1256 
1257     -- delete the summary tax lines for the transaction
1258     DELETE FROM zx_lines_summary
1259       WHERE application_id     = p_application_id
1260         AND entity_code        = p_entity_code
1261         AND event_class_code   = p_event_class_code
1262         AND trx_id             = p_trx_id;
1263 
1264     ZX_TRL_MANAGE_TAX_PKG.create_summary_lines_del_evnt(
1265       p_application_id    => p_application_id,
1266       p_entity_code       => p_entity_code,
1267       p_event_class_code  => p_event_class_code,
1268       p_trx_id            => p_trx_id,
1269       p_trx_line_id       => p_trx_line_id,
1270       p_trx_level_type    => p_trx_level_type,
1271       p_retain_summ_tax_line_id_flag
1272                           => l_retain_summ_tax_line_id_flag,
1273       x_return_status     => x_return_status
1274     );
1275     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1276       IF (g_level_error >= g_current_runtime_level ) THEN
1277         FND_LOG.STRING(g_level_error,
1278                'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_lines_and_dists',
1279                'MRC Lines: Incorrect return_status after calling ' ||
1280                'ZX_TRL_MANAGE_TAX_PKG.create_summary_from_zx_liness()');
1281         FND_LOG.STRING(g_level_error,
1282                'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_lines_and_dists',
1283                'RETURN_STATUS = ' || x_return_status);
1284         FND_LOG.STRING(g_level_error,
1285                'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_lines_and_dists.END',
1286                'ZX_TRL_PUB_PKG.delete_tax_lines_and_dists(-)');
1287       END IF;
1288       RETURN;
1289     END IF;
1290 
1291   END IF;
1292 
1293   IF (g_level_procedure >= g_current_runtime_level ) THEN
1294     FND_LOG.STRING(g_level_procedure,
1295                    'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_lines_and_dists.END',
1296                    'ZX_TRL_PUB_PKG: delete_tax_lines_and_dists (-)'||x_return_status);
1297   END IF;
1298 
1299   EXCEPTION
1300     WHEN FND_API.G_EXC_ERROR THEN
1301       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1302       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1303         FND_LOG.STRING(g_level_unexpected,
1304                        'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_lines_and_dists',
1305                        'Return Status = ' || x_return_status);
1306       END IF;
1307 
1308     WHEN OTHERS THEN
1309       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1310       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1311 
1312       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1313         FND_LOG.STRING(g_level_unexpected,
1314                        'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_lines_and_dists',
1315                         l_error_buffer);
1316       END IF;
1317 
1318 END delete_tax_lines_and_dists;
1319 
1320 ------------------------------------------------------------------------------
1321 --  PUBLIC PROCEDURE
1322 --  delete_tax_dists
1323 --
1324 --  DESCRIPTION
1325 --  Delete all the detail tax distributions of the passed-in transaction
1326 --  line from zx_rec_nrec_dist.
1327 ------------------------------------------------------------------------------
1328 
1329 PROCEDURE delete_tax_dists
1330 (
1331     p_application_id       IN           NUMBER,
1332     p_entity_code          IN           VARCHAR2,
1333     p_event_class_code     IN           VARCHAR2,
1334     p_trx_id               IN           NUMBER,
1335     p_trx_line_id          IN           NUMBER,
1336     p_trx_level_type       IN           VARCHAR2,
1337     x_return_status        OUT NOCOPY   VARCHAR2
1338 ) IS
1339 
1340  l_error_buffer VARCHAR2(100);
1341 
1342 BEGIN
1343   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1344 
1345   IF (g_level_procedure >= g_current_runtime_level ) THEN
1346     FND_LOG.STRING(g_level_procedure,
1347                    'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_dists.BEGIN',
1348                    'ZX_TRL_PUB_PKG: delete_tax_dists (+)');
1349   END IF;
1350   x_return_status := FND_API.G_RET_STS_SUCCESS;
1351 
1352   DELETE FROM zx_rec_nrec_dist
1353         WHERE application_id     = p_application_id
1354           AND entity_code        = p_entity_code
1355           AND event_class_code   = p_event_class_code
1356           AND trx_id             = p_trx_id
1357           AND trx_line_id        = p_trx_line_id
1358           AND trx_level_type     = p_trx_level_type;
1359 
1360   IF SQL%ROWCOUNT > 0 THEN
1361     UPDATE zx_lines
1362        SET process_for_recovery_flag   = 'Y',  -- DECODE(L.Reporting_Only_Flag, 'N', 'Y', 'N')
1363            rec_tax_amt                 = NULL,
1364            rec_tax_amt_tax_curr        = NULL,
1365            rec_tax_amt_funcl_curr      = NULL,
1366            nrec_tax_amt                = NULL,
1367            nrec_tax_amt_tax_curr       = NULL,
1368            nrec_tax_amt_funcl_curr     = NULL
1369      WHERE application_id     = p_application_id
1370        AND entity_code        = p_entity_code
1371        AND event_class_code   = p_event_class_code
1372        AND trx_id             = p_trx_id
1373        AND trx_line_id        = p_trx_line_id
1374        AND trx_level_type     = p_trx_level_type;
1375   END IF;
1376 
1377   IF (g_level_procedure >= g_current_runtime_level ) THEN
1378     FND_LOG.STRING(g_level_procedure,
1379                    'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_dists.END',
1380                    'ZX_TRL_PUB_PKG: delete_tax_dists (-)'||x_return_status);
1381   END IF;
1382 
1383   EXCEPTION
1384     WHEN FND_API.G_EXC_ERROR THEN
1385       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1386       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1387         FND_LOG.STRING(g_level_unexpected,
1388                        'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_dists',
1389                        'Return Status = ' || x_return_status);
1390       END IF;
1391 
1392     WHEN OTHERS THEN
1393       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1394       l_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1395 
1396       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1397         FND_LOG.STRING(g_level_unexpected,
1398                        'ZX.PLSQL.ZX_TRL_PUB_PKG.delete_tax_dists',
1399                         l_error_buffer);
1400       END IF;
1401 
1402 END delete_tax_dists;
1403 
1404 --   Package constructor
1405 --
1406 -------------------------------------------------------------------------------
1407 
1408 END ZX_TRL_PUB_PKG;