DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_TDS_TAX_STATUS_DETM_PKG

Source


1 package body ZX_TDS_TAX_STATUS_DETM_PKG as
2 /* $Header: zxditaxstsdtpkgb.pls 120.29.12010000.7 2010/02/12 11:51:37 msakalab ship $ */
3 
4 
5 PROCEDURE  get_def_tax_status_info(
6              p_tax                 IN     ZX_TAXES_B.TAX%TYPE,
7              p_tax_regime_code     IN     ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
8              p_tax_determine_date  IN     ZX_LINES.TAX_DETERMINE_DATE%TYPE,
9              p_status_rec             OUT NOCOPY ZX_TDS_UTILITIES_PKG.ZX_STATUS_INFO_REC,
10              p_return_status          OUT NOCOPY VARCHAR2,
11              p_error_buffer           OUT NOCOPY VARCHAR2);
12 
13 
14 PROCEDURE  update_det_tax_line(
15              i                      IN      BINARY_INTEGER,
16              p_status_result_id     IN      ZX_LINES.STATUS_RESULT_ID%TYPE,
17              p_reporting_code_id    IN      ZX_REPORTING_CODES_B.REPORTING_CODE_ID%TYPE,
18              p_status_rec           IN      ZX_TDS_UTILITIES_PKG.ZX_STATUS_INFO_REC);
19 
20 PROCEDURE  rule_base_tax_status_detm(
21              p_structure_name       IN     VARCHAR2,
22              p_structure_index      IN     BINARY_INTEGER,
23              p_event_class_rec      IN     ZX_API_PUB.EVENT_CLASS_REC_TYPE,
24              p_status_result_id        OUT NOCOPY ZX_LINES.STATUS_RESULT_ID%TYPE,
25              p_tax_id               IN     ZX_TAXES_B.TAX_ID%TYPE,
26              p_tax_status_code      IN OUT NOCOPY ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
27              p_tax_determine_date   IN     ZX_LINES.TAX_DETERMINE_DATE%TYPE,
28              p_return_status           OUT NOCOPY VARCHAR2,
29              p_error_buffer            OUT NOCOPY VARCHAR2);
30 
31 g_current_runtime_level      NUMBER;
32 g_level_statement            CONSTANT  NUMBER   := FND_LOG.LEVEL_STATEMENT;
33 g_level_procedure            CONSTANT  NUMBER   := FND_LOG.LEVEL_PROCEDURE;
34 g_level_unexpected           CONSTANT  NUMBER   := FND_LOG.LEVEL_UNEXPECTED;
35 g_level_error                CONSTANT  NUMBER   := FND_LOG.LEVEL_ERROR;
36 -----------------------------------------------------------------------
37 --  PUBLIC PROCEDURE
38 --  get_tax_status
39 --
40 --  DESCRIPTION
41 --
42 --  This procedure is the entry point to Tax status determination process
43 --  It gets tax status information for a given applicable tax
44 --
45 
46 PROCEDURE  get_tax_status(
47             p_begin_index          IN     BINARY_INTEGER,
48             p_end_index            IN     BINARY_INTEGER,
49             p_structure_name       IN     VARCHAR2,
50             p_structure_index      IN     BINARY_INTEGER,
51             p_event_class_rec      IN     ZX_API_PUB.EVENT_CLASS_REC_TYPE,
52             p_return_status        OUT NOCOPY VARCHAR2,
53             p_error_buffer         OUT NOCOPY VARCHAR2)
54 IS
55 
56   l_tax_status_code			ZX_STATUS_B.tax_status_code%TYPE;
57   l_tax_rec                             ZX_TDS_UTILITIES_PKG.ZX_TAX_INFO_CACHE_REC;
58   l_tax_determine_date                  ZX_LINES.TAX_DETERMINE_DATE%TYPE;
59   l_tax_id                              ZX_TAXES_B.TAX_ID%TYPE;
60   l_tax_regime_code                     ZX_REGIMES_B.TAX_REGIME_CODE%TYPE;
61   l_tax                                 ZX_TAXES_B.TAX%TYPE;
62   l_status_result_id                    ZX_LINES.STATUS_RESULT_ID%TYPE;
63   l_status_rec                          ZX_TDS_UTILITIES_PKG.ZX_STATUS_INFO_REC;
64   l_reporting_code_id                   ZX_REPORTING_CODES_B.reporting_code_id%type;
65   l_trx_date                            ZX_LINES.TRX_DATE%TYPE;
66 BEGIN
67   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
68 
69   IF (g_level_procedure >= g_current_runtime_level ) THEN
70 
71     FND_LOG.STRING(g_level_procedure,
72                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status.BEGIN',
73                    'ZX_TDS_TAX_STATUS_DETM_PKG: get_tax_status(+)');
74 
75 
76   END IF;
77 
78    -- init return status to FND_API.G_RET_STS_SUCCESS
79    p_return_status := FND_API.G_RET_STS_SUCCESS;
80    p_error_buffer  := NULL;
81 
82   --
83   -- check if begin_index and end_index have values
84   --
85   IF (p_begin_index IS NULL OR p_end_index IS NULL) THEN
86     p_return_status:= FND_API.G_RET_STS_UNEXP_ERROR;
87 
88     IF (g_level_error >= g_current_runtime_level ) THEN
89       FND_LOG.STRING(g_level_error,
90                      'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
91                      'Begin index or End index is null');
92     END IF;
93     RETURN;
94   END IF;
95 
96    --
97    -- loop through the detail tax lines structure to get tax status code for
98    -- each line, exit loop and return to calling process  if error occurs
99    --
100 
101    FOR  i IN p_begin_index .. p_end_index LOOP
102      IF (g_level_statement >= g_current_runtime_level ) THEN
103        FND_LOG.STRING(g_level_statement,
104                      'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
105                      'processing detail line index = ' || to_char(i));
106      END IF;
107 
108      IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_source = 'REFERENCE' AND
109          ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt = 0 AND
110          ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt = 0 AND
111          ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).manually_entered_flag = 'Y' AND
112          ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).freeze_until_overridden_flag ='Y'
113      THEN
114 
115         NULL;
116 
117      ELSE
118 
119      --
120      -- init status info
121      --
122      l_status_result_id     := NULL;
123      l_status_rec           := NULL;
124      l_tax_status_code      := NULL;
125      l_reporting_code_id    := NULL;
126 
127      l_trx_date := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_date;
128      l_tax_determine_date := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_determine_date;
129      l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_id;
130      l_tax_rec := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id);
131      l_tax_regime_code := l_tax_rec.tax_regime_code;
132      l_tax := l_tax_rec.tax;
133 
134      IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_status_code IS NULL THEN
135 
136          --
137          -- non manual tax line
138          --
139          IF l_tax_rec.Tax_Status_Rule_Flag = 'N' THEN
140            --
141            -- no rule defined, get the default tax status
142            -- code from zx_status
143            --
144              get_def_tax_status_info(l_tax,
145                                      l_tax_regime_code,
146                                      l_tax_determine_date,
147                                      l_status_rec,
148                                      p_return_status,
149                                      p_error_buffer);
150          ELSE
151            --
152            -- tax status determination rules apply for this tax
153            --
154            rule_base_tax_status_detm(
155                p_structure_name,
156                p_structure_index,
157                p_event_class_rec,
158                l_status_result_id,
159                l_tax_id,
160                l_tax_status_code,
161                l_tax_determine_date,
162                p_return_status,
163                p_error_buffer);
164 
165            IF p_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_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
169                       'Incorrect return_status after calling rule_base_tax_status_detm()');
170                FND_LOG.STRING(g_level_error,
171                       'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
172                       'p_return_status : '|| p_return_status);
173              END IF;
174              EXIT;
175            ELSE
176 
177              IF l_tax_status_code IS NOT NULL THEN
178 
179                -- check valid tax status id and populate tax status cache
180                --
181                ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
182                                  l_tax,
183                                  l_tax_regime_code,
184                                  l_tax_status_code,
185                                  l_tax_determine_date,
186                                  l_status_rec,
187                                  p_return_status,
188                                  p_error_buffer);
189                IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
190                  IF (g_level_error >= g_current_runtime_level ) THEN
191                    FND_LOG.STRING(g_level_error,
192                       'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
193                       'Incorrect return_status after calling '||
194                       'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info()' );
195                    FND_LOG.STRING(g_level_error,
196                           'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
197                           'No valid tax status id for the tax status code ' ||
198                           'returned from rule engine. Need to get default tax status.');
199                  END IF;
200                  -- reset return status
201                  --
202                  p_return_status := FND_API.G_RET_STS_SUCCESS;
203                END IF;
204                l_reporting_code_id:= ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(l_status_result_id,
205                                                                                   l_trx_date);
206              END IF;
207 
208              IF l_tax_status_code IS NULL OR l_status_rec.tax_status_id IS NULL
209              THEN
210                  --
211                  -- rule based determination returns success
212                  -- but no conditions matched, get status code
213                  -- from the default
214                  --
215                  get_def_tax_status_info(l_tax,
216                                          l_tax_regime_code,
217                                          l_tax_determine_date,
218                                          l_status_rec,
219                                          p_return_status,
220                                          p_error_buffer);
221                  l_reporting_code_id    := NULL;
222              END IF; -- l_tax_status_code IS NULL
223            END IF;   -- of checking p_return_status after calling rule based determination
224          END IF;     -- of checking Tax_Status_Rule_Flag
225        --
226        -- should have the tax status code at this point, update
227        -- detail tax line with tax status info
228        --
229 
230        IF l_status_rec.tax_status_code IS NULL THEN
231          IF (g_level_error >= g_current_runtime_level ) THEN
232            FND_LOG.STRING(g_level_error,
233               'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
234               'tax status not found for tax: ' || l_tax);
235          END IF;
236 
237          FND_MESSAGE.SET_NAME('ZX','ZX_STATUS_NOT_FOUND');
238          FND_MESSAGE.SET_TOKEN('TAX',l_tax);
239          -- FND_MSG_PUB.Add;
240 
241           ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
242             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_id;
243           ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
244             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_level_type;
245 
246           ZX_API_PUB.add_msg(
247                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
248          RETURN;
249        END IF;
250 
251        IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
252          EXIT;
253        ELSE
254          update_det_tax_line(i,
255                              l_status_result_id,
256                              l_reporting_code_id,
257                              l_status_rec);
258        END IF;       -- of checking p_return_status after getting tax status info
259      END IF;         -- of checking event_class_rec
260    END IF;
261    END LOOP;
262 
263    IF (g_level_procedure >= g_current_runtime_level ) THEN
264 
265      FND_LOG.STRING(g_level_procedure,
266                     'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status.END',
267                     'ZX_TDS_TAX_STATUS_DETM_PKG: get_tax_status(-)'||p_return_status);
268   END IF;
269 
270 EXCEPTION
271   WHEN OTHERS THEN
272     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
273     p_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
274 
275     IF (g_level_unexpected >= g_current_runtime_level ) THEN
276       FND_LOG.STRING(g_level_unexpected,
277                      'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status',
278                       p_error_buffer);
279     END IF;
280 
281 END get_tax_status;
282 
283 -----------------------------------------------------------------------
284 --  PRIVATE PROCEDURE
285 --  get_def_tax_status_info
286 --
287 --  DESCRIPTION
288 --  This procedure gets the default tax status code and
289 --  all information related to this status
290 --
291 PROCEDURE  get_def_tax_status_info(
292              p_tax                 IN     ZX_TAXES_B.TAX%TYPE,
293              p_tax_regime_code     IN     ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
294              p_tax_determine_date  IN     ZX_LINES.TAX_DETERMINE_DATE%TYPE,
295              p_status_rec             OUT NOCOPY ZX_TDS_UTILITIES_PKG.ZX_STATUS_INFO_REC,
296              p_return_status          OUT NOCOPY VARCHAR2,
297              p_error_buffer           OUT NOCOPY VARCHAR2)
298 
299 IS
300   l_index              BINARY_INTEGER;
301 
302   CURSOR get_def_status_info_csr
303     (c_tax                     ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
304      c_tax_regime_code         ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
305      c_tax_determine_date      ZX_LINES.TAX_DETERMINE_DATE%TYPE)
306   IS
307     SELECT tax_status_id,
308            tax_status_code,
309            tax,
310            tax_regime_code,
311            effective_from,
312            effective_to,
313            Rule_Based_Rate_Flag,
314            Allow_Rate_Override_Flag,
315            Allow_Exemptions_Flag,
316            Allow_Exceptions_Flag
317 --           Vat_Transaction_Type_Code
318 --           Default_Status_Flag,
319 --           default_flg_effective_from,
320 --           default_flg_effective_to
321       FROM  ZX_SCO_STATUS_B_V
322       WHERE Default_Status_Flag = 'Y'                              AND
323             c_tax_determine_date >= DEFAULT_FLG_EFFECTIVE_FROM    AND
324             (c_tax_determine_date <= DEFAULT_FLG_EFFECTIVE_TO OR
325              DEFAULT_FLG_EFFECTIVE_TO IS NULL)                    AND
326             TAX             = c_tax                               AND
327             TAX_REGIME_CODE = c_tax_regime_code                   AND
328             c_tax_determine_date >= EFFECTIVE_FROM                AND
329             (c_tax_determine_date <= EFFECTIVE_TO OR
330              EFFECTIVE_TO IS NULL)
331          --AND rownum = 1;
332       ORDER BY subscription_level_code;
333 
334 BEGIN
335  g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
336 
337   IF (g_level_procedure >= g_current_runtime_level ) THEN
338     FND_LOG.STRING(g_level_procedure,
339                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_def_tax_status_info.BEGIN',
340                    'ZX_TDS_TAX_STATUS_DETM_PKG: get_def_tax_status_info(+)'||
341                    'tax_regime_code = ' || p_tax_regime_code||
342                    'tax = ' || p_tax);
343 
344   END IF;
345 
346   p_return_status := FND_API.G_RET_STS_SUCCESS;
347 
348   OPEN get_def_status_info_csr(p_tax,
349                                p_tax_regime_code,
350                                p_tax_determine_date);
351   FETCH get_def_status_info_csr  INTO
352        p_status_rec.tax_status_id,
353        p_status_rec.tax_status_code,
354        p_status_rec.tax,
355        p_status_rec.tax_regime_code,
356        p_status_rec.effective_from,
357        p_status_rec.effective_to,
358        p_status_rec.Rule_Based_Rate_Flag,
359        p_status_rec.Allow_Rate_Override_Flag,
360        p_status_rec.Allow_Exemptions_Flag,
361        p_status_rec.Allow_Exceptions_Flag;
362   IF get_def_status_info_csr%NOTFOUND THEN
363     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
364     p_error_buffer := 'No default tax status found';
365 
366     IF (g_level_statement >= g_current_runtime_level ) THEN
367       FND_LOG.STRING(g_level_statement,
368                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_def_tax_status_info',
369                    p_error_buffer);
370     END IF;
371   END IF;
372   CLOSE get_def_status_info_csr;
373   --
374   -- update the global status cache structure
375   --
376   IF p_return_status =  FND_API.G_RET_STS_SUCCESS THEN
377     l_index := ZX_TDS_UTILITIES_PKG.get_tax_status_index(
378                                p_status_rec.tax,
379                                p_status_rec.tax_regime_code,
380                                p_status_rec.tax_status_code);
381     ZX_TDS_UTILITIES_PKG.g_tax_status_info_tbl(l_index) := p_status_rec;
382   END IF;
383 
384 
385   IF (g_level_procedure >= g_current_runtime_level ) THEN
386     FND_LOG.STRING(g_level_procedure,
387                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_def_tax_status_info.END',
388                    'ZX_TDS_TAX_STATUS_DETM_PKG: get_def_tax_status_info(-)'||
389                    'tax_status_code = ' ||
390                     p_status_rec.tax_status_code);
391   END IF;
392 
393 EXCEPTION
394   WHEN OTHERS THEN
395     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
396     p_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
397     IF get_def_status_info_csr%ISOPEN THEN
398       CLOSE get_def_status_info_csr;
399     END IF;
400     IF (g_level_unexpected >= g_current_runtime_level ) THEN
401       FND_LOG.STRING(g_level_unexpected,
402                      'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.get_def_tax_status_info',
403                       p_error_buffer);
404     END IF;
405 END get_def_tax_status_info;
406 
407 -----------------------------------------------------------------------
408 --  PRIVATE PROCEDURE
409 --  rule_base_tax_status_detm
410 --
411 --  DESCRIPTION
412 --
413 --  The procedure is used to get derive tax status code based on the rules
414 --  defined by calling Rule based engine
415 --
416 
417 PROCEDURE  rule_base_tax_status_detm(
418              p_structure_name       IN     VARCHAR2,
419              p_structure_index      IN     BINARY_INTEGER,
420              p_event_class_rec      IN     ZX_API_PUB.EVENT_CLASS_REC_TYPE,
421              p_status_result_id        OUT NOCOPY ZX_LINES.STATUS_RESULT_ID%TYPE,
422              p_tax_id               IN     ZX_TAXES_B.TAX_ID%TYPE,
423              p_tax_status_code      IN OUT NOCOPY ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
424              p_tax_determine_date   IN     ZX_LINES.TAX_DETERMINE_DATE%TYPE,
425              p_return_status           OUT NOCOPY VARCHAR2,
426              p_error_buffer            OUT NOCOPY VARCHAR2)
427 IS
428   l_service_type_code      	ZX_RULES_B.SERVICE_TYPE_CODE%TYPE;
429   l_tax_result_rec	        ZX_PROCESS_RESULTS%ROWTYPE;
430   l_tax_rule_code               ZX_RULES_B.TAX_RULE_CODE%TYPE;
431   l_recovery_type_code          ZX_RULES_B.RECOVERY_TYPE_CODE%TYPE;
432 
433 BEGIN
434 
435   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
436 
437   IF (g_level_procedure >= g_current_runtime_level ) THEN
438     FND_LOG.STRING(g_level_procedure,
439                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm.BEGIN',
440                    'ZX_TDS_TAX_STATUS_DETM_PKG: rule_base_tax_status_detm(+)');
441   END IF;
442   IF (g_level_statement >= g_current_runtime_level ) THEN
443     FND_LOG.STRING(g_level_statement,
444                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm',
445                    'p_tax_id = ' || to_char(p_tax_id));
446   END IF;
447 
448   p_return_status := FND_API.G_RET_STS_SUCCESS;
449 
450   l_service_type_code := 'DET_TAX_STATUS';
451 
452   ZX_TDS_RULE_BASE_DETM_PVT.rule_base_process(l_service_type_code,
453                                               p_structure_name,
454                                               p_structure_index,
455                                               p_event_class_rec,
456                                               p_tax_id,
457                                               p_tax_status_code,
458                                               p_tax_determine_date,
459                                               l_tax_rule_code,
460                                               l_recovery_type_code,
461                                               l_tax_result_rec,
462                                               p_return_status,
463                                               p_error_buffer);
464 
465   IF (l_tax_result_rec.alphanumeric_result IS NOT NULL AND
466       p_return_status =  FND_API.G_RET_STS_SUCCESS) THEN
467     p_tax_status_code  := l_tax_result_rec.alphanumeric_result;
468     p_status_result_id := l_tax_result_rec.result_id;
469   END IF;
470 
471   IF (g_level_statement >= g_current_runtime_level ) THEN
472     FND_LOG.STRING(g_level_statement,
473                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm',
474                    'p_return_status = ' || p_return_status);
475     FND_LOG.STRING(g_level_statement,
476                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm',
477                    'p_error_buffer  = ' || p_error_buffer);
478     FND_LOG.STRING(g_level_statement,
479                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm',
480                    'p_tax_status_code = ' || p_tax_status_code);
481     FND_LOG.STRING(g_level_statement,
482                   'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm',
483                   'p_status_result_id = ' ||
484                      to_char(p_status_result_id));
485   END IF;
486 
487   IF (g_level_procedure >= g_current_runtime_level ) THEN
488     FND_LOG.STRING(g_level_procedure,
489                   'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm.END',
490                   'ZX_TDS_TAX_STATUS_DETM_PKG: rule_base_tax_status_detm(-)');
491   END IF;
492 
493 EXCEPTION
494   WHEN OTHERS THEN
495     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
496     p_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
497 
498     IF (g_level_unexpected >= g_current_runtime_level ) THEN
499       FND_LOG.STRING(g_level_unexpected,
500                      'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.rule_base_tax_status_detm',
501                       p_error_buffer);
502     END IF;
503 
504 END rule_base_tax_status_detm;
505 
506 -----------------------------------------------------------------------
507 --  PRIVATE PROCEDURE
508 --  update_det_tax_line
509 --
510 --  DESCRIPTION
511 --
512 --  This procedure is used to update the detail tax lines structure
513 --  with tax status information
514 --
515 
516 PROCEDURE  update_det_tax_line(
517              i                    IN     BINARY_INTEGER,
518              p_status_result_id   IN     ZX_LINES.STATUS_RESULT_ID%TYPE,
519              p_reporting_code_id  IN     ZX_REPORTING_CODES_B.REPORTING_CODE_ID%TYPE,
520              p_status_rec         IN     ZX_TDS_UTILITIES_PKG.ZX_STATUS_INFO_REC)
521 IS
522 BEGIN
523   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
524 
525   IF (g_level_procedure >= g_current_runtime_level ) THEN
526     FND_LOG.STRING(g_level_procedure,
527                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.update_det_tax_line.BEGIN',
528                    'ZX_TDS_TAX_STATUS_DETM_PKG: update_det_tax_line(+)');
529   END IF;
530 
531   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_status_id := p_status_rec.tax_status_id;
532   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_status_code := p_status_rec.tax_status_code;
533   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).status_result_id := p_status_result_id;
534   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).legal_message_status := p_reporting_code_id;
535 
536   IF (g_level_procedure >= g_current_runtime_level ) THEN
537     FND_LOG.STRING(g_level_procedure,
538                    'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.update_det_tax_line.END',
539                    'ZX_TDS_TAX_STATUS_DETM_PKG: update_det_tax_line(-)');
540   END IF;
541 
542 EXCEPTION
543   WHEN OTHERS THEN
544     IF (g_level_unexpected >= g_current_runtime_level ) THEN
545       FND_LOG.STRING(g_level_unexpected,
546                      'ZX.PLSQL.ZX_TDS_TAX_STATUS_DETM_PKG.update_det_tax_line',
547                       sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
548     END IF;
549 
550 END update_det_tax_line;
551 
552 END  ZX_TDS_TAX_STATUS_DETM_PKG;