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