DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_DEFAULT_AUTOMATION_PKG

Source


1 PACKAGE BODY ZX_DEFAULT_AUTOMATION_PKG AS
2  /* $Header: zxdidefautopvtb.pls 120.31.12010000.3 2008/12/08 11:31:27 ssohal ship $ */
3 
4  /* Declare constants */
5 
6  G_PKG_NAME      CONSTANT VARCHAR2(30)   := 'ZX_DEFAULT_AUTOMATION_PKG';
7  G_MODULE_NAME   CONSTANT VARCHAR2(30)   := 'ZX.PLSQL.ZX_DFLT_AUTO_PKG.';
8  G_MSG_UERROR    CONSTANT NUMBER         := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
9  G_MSG_ERROR     CONSTANT NUMBER         := FND_MSG_PUB.G_MSG_LVL_ERROR;
10  G_MSG_SUCCESS   CONSTANT NUMBER         := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
11 
12  G_MSG_HIGH      CONSTANT NUMBER         := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
13  G_MSG_MEDIUM    CONSTANT NUMBER         := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
14  G_MSG_LOW       CONSTANT NUMBER         := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
15 
16 
17  l_error_buffer VARCHAR2(240);
18 
19  g_current_runtime_level    NUMBER;
20  g_level_statement          CONSTANT  NUMBER   := FND_LOG.LEVEL_STATEMENT;
21  g_level_procedure          CONSTANT  NUMBER   := FND_LOG.LEVEL_PROCEDURE;
22  g_level_event              CONSTANT  NUMBER   := FND_LOG.LEVEL_EVENT;
23  g_level_unexpected         CONSTANT  NUMBER   := FND_LOG.LEVEL_UNEXPECTED;
24  g_level_error	           CONSTANT  NUMBER   := FND_LOG.LEVEL_ERROR;
25 
26 TYPE DET_TAX_ATTR_REC IS RECORD
27 (DEFAULT_TAXATION_COUNTRY      zx_lines_det_factors.DEFAULT_TAXATION_COUNTRY%type,
28  DOCUMENT_SUB_TYPE             zx_lines_det_factors.DOCUMENT_SUB_TYPE%type,
29  TRX_BUSINESS_CATEGORY         zx_lines_det_factors.TRX_BUSINESS_CATEGORY%type,
30  LINE_INTENDED_USE             zx_lines_det_factors.LINE_INTENDED_USE%type,
31  PRODUCT_FISC_CLASSIFICATION   zx_lines_det_factors.PRODUCT_FISC_CLASSIFICATION%type,
32  PRODUCT_CATEGORY              zx_lines_det_factors.PRODUCT_CATEGORY%type,
33  PRODUCT_TYPE                  zx_lines_det_factors.PRODUCT_TYPE%type,
34  USER_DEFINED_FISC_CLASS       zx_lines_det_factors.USER_DEFINED_FISC_CLASS%type,
35  ASSESSABLE_VALUE              zx_lines_det_factors.ASSESSABLE_VALUE%type,
36  USER_OVERRIDE_TAX_FLAG        zx_lines_det_factors.USER_UPD_DET_FACTORS_FLAG%type);
37 
38 TYPE DET_TAX_ATTR_TBL IS TABLE OF DET_TAX_ATTR_REC INDEX BY VARCHAR2(150);
39 l_det_tax_attr_tbl             DET_TAX_ATTR_TBL;
40 
41 PROCEDURE DEFAULT_FROM_SOURCE_DOC
42 (
43   p_trx_line_index               IN            BINARY_INTEGER,
44   x_return_status                OUT NOCOPY    VARCHAR2 )
45 IS
46 
47 l_source_line_key    VARCHAR2(2000);
48 BEGIN
49   IF (g_level_procedure >= g_current_runtime_level ) THEN
50      FND_LOG.STRING(g_level_procedure,
51              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.BEGIN',
52              'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_FROM_SOURCE_DOC(+)');
53   END IF;
54 
55   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
56 
57   IF (g_level_statement >= g_current_runtime_level ) THEN
58         FND_LOG.STRING(g_level_statement,
59                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
60                'default_taxation_country(' || p_trx_line_index || ') = '
61              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(p_trx_line_index) || '$' ||
62                'DOCUMENT_SUB_TYPE = '
63              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) || '$' ||
64                'TRX_BUSINESS_CATEGORY = '
65              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(p_trx_line_index) || '$' ||
66                'LINE_INTENDED_USE = '
67              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_INTENDED_USE(p_trx_line_index) || '$' ||
68                'PRODUCT_FISC_CLASSIFICATION = '
69              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(p_trx_line_index) || '$' ||
70                'PRODUCT_CATEGORY = '
71              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_trx_line_index) || '$' ||
72                'PRODUCT_TYPE = '
73              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_TYPE(p_trx_line_index) || '$' ||
74                'USER_DEFINED_FISC_CLASS = '
75              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(p_trx_line_index) || '$' ||
76                'ASSESSABLE_VALUE = '
77              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ASSESSABLE_VALUE(p_trx_line_index)
78         );
79   END IF;
80 
81   IF (
82 --    ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(p_trx_line_index) IS NULL AND
83       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) IS NULL AND
84       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(p_trx_line_index) IS NULL AND
85       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_INTENDED_USE(p_trx_line_index) IS NULL AND
86       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(p_trx_line_index) IS NULL AND
87       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_trx_line_index) IS NULL AND
88       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_TYPE(p_trx_line_index) IS NULL AND
89       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(p_trx_line_index) IS NULL AND
90       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ASSESSABLE_VALUE(p_trx_line_index) IS NULL) THEN
91 
92      l_source_line_key := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_application_id(p_trx_line_index) || '$' ||
93          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_entity_code(p_trx_line_index) || '$' ||
94          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(p_trx_line_index) || '$' ||
95          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(p_trx_line_index) || '$' ||
96          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_line_id(p_trx_line_index) || '$' ||
97          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_level_type(p_trx_line_index);
98      IF NOT (l_det_tax_attr_tbl.EXISTS(l_source_line_key)) THEN
99         BEGIN
100            SELECT default_taxation_country
101                 , document_sub_type
102                 , trx_business_category
103                 , line_intended_use
104                 , product_fisc_classification
105                 , product_category
106                 , product_type
107                 , user_defined_fisc_class
108                 , assessable_value
109                 , DECODE(APPLICATION_ID, 201, NVL(USER_UPD_DET_FACTORS_FLAG, 'N'), 'Y') user_override_tax_flag
110              INTO l_det_tax_attr_tbl(l_source_line_key).DEFAULT_TAXATION_COUNTRY
111                 , l_det_tax_attr_tbl(l_source_line_key).DOCUMENT_SUB_TYPE
112                 , l_det_tax_attr_tbl(l_source_line_key).TRX_BUSINESS_CATEGORY
113                 , l_det_tax_attr_tbl(l_source_line_key).LINE_INTENDED_USE
114                 , l_det_tax_attr_tbl(l_source_line_key).PRODUCT_FISC_CLASSIFICATION
115                 , l_det_tax_attr_tbl(l_source_line_key).PRODUCT_CATEGORY
116                 , l_det_tax_attr_tbl(l_source_line_key).PRODUCT_TYPE
117                 , l_det_tax_attr_tbl(l_source_line_key).USER_DEFINED_FISC_CLASS
118                 , l_det_tax_attr_tbl(l_source_line_key).ASSESSABLE_VALUE
119                 , l_det_tax_attr_tbl(l_source_line_key).USER_OVERRIDE_TAX_FLAG
120              FROM zx_lines_det_factors
121             WHERE application_id   = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_application_id(p_trx_line_index)
122               AND entity_code      = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_entity_code(p_trx_line_index)
123               AND event_class_code = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(p_trx_line_index)
124               AND trx_id           = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(p_trx_line_index)
125               AND trx_line_id      = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_line_id(p_trx_line_index)
126               AND trx_level_type   = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_level_type(p_trx_line_index);
127         END;
128      END IF;
129      IF l_det_tax_attr_tbl(l_source_line_key).USER_OVERRIDE_TAX_FLAG = 'Y' THEN
130        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).DEFAULT_TAXATION_COUNTRY;
131        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).DOCUMENT_SUB_TYPE;
132        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).TRX_BUSINESS_CATEGORY;
133        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_INTENDED_USE(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).LINE_INTENDED_USE;
134        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).PRODUCT_FISC_CLASSIFICATION;
135        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).PRODUCT_CATEGORY;
136        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_TYPE(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).PRODUCT_TYPE;
137        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).USER_DEFINED_FISC_CLASS;
138        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ASSESSABLE_VALUE(p_trx_line_index) := l_det_tax_attr_tbl(l_source_line_key).ASSESSABLE_VALUE;
139      END IF;
140   END IF;
141 
142   IF (g_level_statement >= g_current_runtime_level ) THEN
143         FND_LOG.STRING(g_level_statement,
144                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
145                'default_taxation_country(' || p_trx_line_index || ') = '
146              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(p_trx_line_index) || '$' ||
147                'DOCUMENT_SUB_TYPE = '
148              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) || '$' ||
149                'TRX_BUSINESS_CATEGORY = '
150              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(p_trx_line_index) || '$' ||
151                'LINE_INTENDED_USE = '
152              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_INTENDED_USE(p_trx_line_index) || '$' ||
153                'PRODUCT_FISC_CLASSIFICATION = '
154              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(p_trx_line_index) || '$' ||
155                'PRODUCT_CATEGORY = '
156              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_trx_line_index) || '$' ||
157                'PRODUCT_TYPE = '
158              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_TYPE(p_trx_line_index) || '$' ||
159                'USER_DEFINED_FISC_CLASS = '
160              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(p_trx_line_index) || '$' ||
161                'ASSESSABLE_VALUE = '
162              || ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ASSESSABLE_VALUE(p_trx_line_index)
163         );
164   END IF;
165 
166   IF (g_level_procedure >= g_current_runtime_level ) THEN
167      FND_LOG.STRING(g_level_procedure,
168              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
169              'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_FROM_SOURCE_DOC(-)');
170   END IF;
171 
172 END DEFAULT_FROM_SOURCE_DOC;
173 
174 /* =================================================================================*
175  | PROCEDURE DEFAULT_TAX_DET_FACTORS                                                    |
176  | This procedure is to be called by  lines determine factors UI and                |
177  | calculate_tax API                                                                |
178  | Expected input trx line information should have been populated in                |
179  | ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.                                      |
180  | The output will also be populated in ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl. |
181                                                                                     |
182  * ================================================================================*/
183 
184 PROCEDURE DEFAULT_TAX_DET_FACTORS
185 (
186   p_trx_line_index       IN            BINARY_INTEGER,
187   p_event_class_rec      IN OUT NOCOPY ZX_API_PUB.event_class_rec_type,
188   p_taxation_country     IN            VARCHAR2,
189   p_document_sub_type    IN            VARCHAR2,
190   x_return_status        OUT NOCOPY    VARCHAR2 )
191 IS
192   l_country_code            XLE_FIRSTPARTY_INFORMATION_V.COUNTRY%TYPE;
193   l_trx_business_category   VARCHAR2(240);
194   l_product_category        ZX_FC_COUNTRY_DEFAULTS.PRODUCT_CATEG_DEFAULT%TYPE;
195   l_product_fisc_class      ZX_FC_TYPES_B.CLASSIFICATION_TYPE_CODE%TYPE;
196   l_intended_use            ZX_FC_TYPES_B.CLASSIFICATION_TYPE_CODE%TYPE;
197   l_trx_date                DATE;
198   l_document_sub_type       ZX_FC_DOCUMENT_FISCAL_V.CLASSIFICATION_CODE%TYPE;
199   l_user_defined_fisc_class ZX_FC_CODES_B.CLASSIFICATION_CODE%TYPE;
200   l_product_type            FND_LOOKUPS.LOOKUP_CODE%TYPE;
201   l_init_msg_list           VARCHAR2(1);
202   l_commit                  VARCHAR2(1);
203   l_validation_level        NUMBER;
204   l_msg_count               NUMBER;
205   l_msg_data                VARCHAR2(1);
206   l_error_buffer            VARCHAR2(2000);
207   l_definfo                 ZX_API_PUB.def_tax_cls_code_info_rec_type;
208 
209   l_context_info_rec        ZX_API_PUB.context_info_rec_type;
210 
211 BEGIN
212 
213   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
214 
215   IF (g_level_procedure >= g_current_runtime_level ) THEN
216     FND_LOG.STRING(g_level_procedure,
217              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.BEGIN',
218              'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(+)'||
219              ' taxation_country = ' || p_taxation_country||
220              ' document_sub_type = ' || p_document_sub_type);
221   END IF;
222 
223   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
224 
225   l_trx_date := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(p_trx_line_index);
226 
227   l_country_code := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(p_trx_line_index);
228 
229   /*
230   When a transaction is created from a source transaction,
231   the defaulting should happen from the source and NOT from the setup.
232   */
233 
234   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(p_trx_line_index) is not null THEN
235      default_from_source_doc( p_trx_line_index,
236                               x_return_status);
237      RETURN;
238   END IF;
239 
240   /*
241   case 1 : In update mode, if taxation country is changed or
242   case 2 : When a new trx line gets inserted, if there are already other trx lines existing
243            in zx_lines_det_facotrs then default taxation country and document sub type values
244            will be passed from the existing trx lines.
245   In both cases re-default the tax attributes based on taxation country parameter
246   */
247 
248   -- If taxation country is passed then default the other tax attributes based on the passed value.
249   IF p_taxation_country IS NOT NULL AND (l_country_code IS NULL OR l_country_code <> p_taxation_country) THEN
250 
251     l_country_code := p_taxation_country;
252     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(p_trx_line_index) := p_taxation_country;
253 
254     /* If line level action is other than Create or any of the defaulting tax attributes are not null then
255     don't do the defaulting */
256 
257   ELSE
258     IF p_taxation_country IS NULL AND l_country_code IS NULL THEN
259 
260       --******************** DEFAULT TAXATION COUNTRY *************************
261       --Call the procedure the get the default country code
262       GET_DEFAULT_COUNTRY_CODE(
263             p_event_class_rec.tax_method_code,
264             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_trx_line_index),
265             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(p_trx_line_index),
266             l_country_code,
267             x_return_status );
268 
269       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
270         IF (g_level_error >= g_current_runtime_level ) THEN
271           FND_LOG.STRING(g_level_error,
272            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
273            'Incorrect return_status after calling ' ||
274            'ZX_TCM_EXT_SERVICES_PUB.GET_DEFAULT_COUNTRY_CODE');
275           FND_LOG.STRING(g_level_error,
276            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
277            'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)'||x_return_status);
278         END IF;
279 
280         RETURN;
281 
282       END IF;
283 
284       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(p_trx_line_index) := l_country_code;
285 
286       IF (g_level_statement >= g_current_runtime_level ) THEN
287         FND_LOG.STRING(g_level_statement,
288                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
289                'l_country_code = ' || l_country_code);
290       END IF;
291 
292     ELSE
293 
294       IF NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_UPD_DET_FACTORS_FLAG(p_trx_line_index), 'N') = 'Y' OR
295         -- NVL(p_trx_line_changed,'N') = 'N' AND
296        (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) IS NOT NULL OR
297         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(p_trx_line_index) IS NOT NULL OR
298         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_INTENDED_USE(p_trx_line_index) IS NOT NULL OR
299         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(p_trx_line_index) IS NOT NULL OR
300         -- ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_trx_line_index) IS NOT NULL OR
301         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_TYPE(p_trx_line_index) IS NOT NULL OR
302         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(p_trx_line_index) IS NOT NULL OR
303         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ASSESSABLE_VALUE(p_trx_line_index) IS NOT NULL) THEN
304 
305         IF (g_level_statement >= g_current_runtime_level ) THEN
306          FND_LOG.STRING(g_level_statement,
307             'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
308             'One of the defaulting tax attributes are not null. So defaulting logic is not required.' ||
309             'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS()');
310          FND_LOG.STRING(g_level_statement,
311             'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
312             'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)');
313         END IF;
314 
315         RETURN;
316       END IF;
317     END IF;  -- p_taxation_country IS NULL AND l_country_code IS NULL
318   END IF;    -- p_taxation_country IS NOT NULL AND (l_country_code IS NULL OR ...)
319 
320   --******************** DOCUMENT SUB TYPE ********************************
321   -- In the update mode if document sub type is passed then copy the passed value.
322   IF p_document_sub_type IS NOT NULL THEN
323 
324     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) := p_document_sub_type;
325 
326   ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) IS NULL THEN
327 
328     -- Bug 4637855: Use TCM API to derive document_sub_type
329     --
330     ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(
331             p_fiscal_type_code  => 'DOCUMENT_SUBTYPE',
332             p_country_code      => l_country_code,
333             p_application_id    => NULL,
334             p_entity_code       => NULL,
335             p_event_class_code  => NULL,
336             p_source_event_class_code  => NULL,
337             p_item_id           => NULL,
338             p_org_id            => NULL,
339             p_default_code      => l_document_sub_type,
340             p_return_status     => x_return_status);
341 
342     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
343       IF (g_level_error >= g_current_runtime_level ) THEN
344         FND_LOG.STRING(g_level_error,
345          'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
346          'Incorrect return_status after calling ' ||
347          'ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code for document_sub_type');
348         FND_LOG.STRING(g_level_error,
349          'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
350          'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)'||x_return_status);
351       END IF;
352       RETURN;
353     END IF;
354 
355 --    BEGIN
356 --      SELECT classification_code INTO l_document_sub_type
357 --        FROM ZX_FC_DOCUMENT_FISCAL_V
358 --       WHERE l_trx_date between effective_from and nvl(effective_to, l_trx_date)
359 --         AND (country_code = l_country_code OR country_code IS NULL);
360 --    EXCEPTION
361 --      WHEN NO_DATA_FOUND THEN
362 --        IF (g_level_event >= g_current_runtime_level ) THEN
363 --          FND_LOG.STRING(g_level_event,
364 --                 'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
365 --                 'No document_sub_type Found. ');
366 --        END IF;
367 --        l_document_sub_type := NULL;
368 --      WHEN TOO_MANY_ROWS THEN
369 --        IF (g_level_event >= g_current_runtime_level ) THEN
370 --          FND_LOG.STRING(g_level_event,
371 --                 'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
372 --                 'No document_sub_type defaulted. ');
373 --        END IF;
374 --        l_document_sub_type := NULL;
375 --      WHEN OTHERS THEN
376 --        IF (g_level_event >= g_current_runtime_level ) THEN
377 --          FND_LOG.STRING(g_level_event,
378 --                 'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
379 --                  sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
380 --          FND_LOG.STRING(g_level_event,
381 --                 'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
382 --                 'Other Exception: This exception will not stop the program.');
383 --        END IF;
384 --    END;
385 
386     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(p_trx_line_index) := l_document_sub_type;
387 
388     IF (g_level_statement >= g_current_runtime_level ) THEN
389       FND_LOG.STRING(g_level_statement,
390              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
391              'l_document_sub_type = ' || l_document_sub_type);
392     END IF;
393   END IF;
394 
395   -- If Tax method is Latin Tax Engine then
396   IF p_event_class_rec.tax_method_code = 'LTE' THEN
397 
398     JL_ZZ_TAX_VALIDATE_PKG.DEFAULT_TAX_ATTR(
399     		p_trx_line_index  => p_trx_line_index,
400     		x_return_status   => x_return_status);
401 
402     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
403       IF (g_level_error >= g_current_runtime_level ) THEN
404         FND_LOG.STRING(g_level_error,
405          'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
406          'Incorrect return_status after calling ' ||
407          'ZX_API_PUB.GET_DEFAULT_TAX_DET_ATTRIBS');
408         FND_LOG.STRING(g_level_error,
409          'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
410          'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)'||x_return_status);
411       END IF;
412       RETURN;
413     END IF;
414   ELSE -- if tax method is ETAX then
415 
416   --******************** DEFAULT TAX LINE ATTRIBUTES ***********************
417 
418     ZX_API_PUB.GET_DEFAULT_TAX_DET_ATTRIBS
419     (p_api_version            => 1.0,
420      p_init_msg_list          => l_init_msg_list,
421      p_commit                 => l_commit,
422      p_validation_level       => l_validation_level,
423      x_return_status          => x_return_status,
424      x_msg_count              => l_msg_count,
425      x_msg_data               => l_msg_data,
426      p_application_id         => p_event_class_rec.application_id,
427      p_entity_code            => p_event_class_rec.entity_code,
428      p_event_class_code       => p_event_class_rec.event_class_code,
429      p_org_id                 => zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id(p_trx_line_index),
430      p_item_id                => zx_global_structures_pkg.trx_line_dist_tbl.product_id(p_trx_line_index),
431      p_country_code           => l_country_code,
432      p_effective_date         => l_trx_date,
433      p_source_event_class_code       => zx_global_structures_pkg.trx_line_dist_tbl.source_event_class_code(p_trx_line_index),
434      x_trx_biz_category       => l_trx_business_category,
435      x_intended_use           => l_intended_use,
436      x_prod_category          => l_product_category,
437      x_prod_fisc_class_code   => l_product_fisc_class,
438      x_product_type           => l_product_type
439     );
440 
441     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
442       IF (g_level_error >= g_current_runtime_level ) THEN
443         FND_LOG.STRING(g_level_error,
444            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
445            'Incorrect return_status after calling ' ||
446            'ZX_API_PUB.GET_DEFAULT_TAX_DET_ATTRIBS');
447         FND_LOG.STRING(g_level_error,
448            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
449            'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)'||x_return_status);
450       END IF;
451       RETURN;
452     END IF;
453 
454     -- Populate the default value for Product category, Product Fiscal Classification and Intended Use
455     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(p_trx_line_index) := l_trx_business_category;
456     IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_trx_line_index) IS NULL THEN
457       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_trx_line_index) := l_product_category;
458     END IF;
459     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(p_trx_line_index) := l_product_fisc_class;
460     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_INTENDED_USE(p_trx_line_index) := l_intended_use;
461     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_TYPE(p_trx_line_index) := l_product_type;
462 
463     --Populate the default value for assessable value from line amount
464     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ASSESSABLE_VALUE(p_trx_line_index) := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_AMT(p_trx_line_index);
465 
466     -- Bug 5622704: Do not default user defined fiscal classification
467     -- Bug 4637855: Use TCM API to derive user defined fiscal classification
468     --
469     -- ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(
470     --         p_fiscal_type_code  => 'USER_DEFINED',
471     --         p_country_code      => l_country_code,
472     --         p_application_id    => NULL,
473     --         p_entity_code       => NULL,
474     --         p_event_class_code  => NULL,
475     --         p_source_event_class_code  => NULL,
476     --         p_item_id           => NULL,
477     --         p_org_id            => NULL,
478     --         p_default_code      => l_user_defined_fisc_class,
479     --         p_return_status     => x_return_status);
480     --
481     -- IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
482     --   IF (g_level_statement >= g_current_runtime_level ) THEN
483     --     FND_LOG.STRING(g_level_statement,
484     --      'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
485     --      'Incorrect return_status after calling ' ||
486     --      'ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code for user_defined');
487     --     FND_LOG.STRING(g_level_statement,
488     --      'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
489     --      'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)'||x_return_status);
490     --   END IF;
491     --   RETURN;
492     -- END IF;
493     --
494     -- IF (g_level_statement >= g_current_runtime_level ) THEN
495     --   FND_LOG.STRING(g_level_statement,
496     --          'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
497     --          'l_user_defined_fisc_class= ' || l_user_defined_fisc_class);
498     -- END IF;
499     --
500     -- ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(
501     --                          p_trx_line_index) := l_user_defined_fisc_class;
502 
503 
504   END IF; -- End of Tax method check
505 
506   IF (g_level_procedure >= g_current_runtime_level ) THEN
507 
508     FND_LOG.STRING(g_level_procedure,
509            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
510            'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)'||x_return_status);
511   END IF;
512 
513 EXCEPTION
514 
515   WHEN OTHERS THEN
516 
517     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
518     FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
519     l_context_info_rec.APPLICATION_ID   := p_event_class_rec.application_id;
520     l_context_info_rec.ENTITY_CODE      := p_event_class_rec.entity_code;
521     l_context_info_rec.EVENT_CLASS_CODE := p_event_class_rec.event_class_code;
522     l_context_info_rec.TRX_ID           := p_event_class_rec.trx_id;
523     IF ZX_API_PUB.G_DATA_TRANSFER_MODE IS NULL
524       OR l_context_info_rec.TRX_ID IS NULL
525     THEN
526       FND_MSG_PUB.Add;
527     ELSE
528       ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
529     END IF;
530 
531     IF (g_level_unexpected >= g_current_runtime_level ) THEN
532       FND_LOG.STRING(g_level_unexpected,
533              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS',
534               sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
535       FND_LOG.STRING(g_level_unexpected,
536              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS.END',
537              'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_DET_FACTORS(-)');
538     END IF;
539 
540 END DEFAULT_TAX_DET_FACTORS;
541 
542 
543 PROCEDURE DEFAULT_TAX_REPORTING_ATTRIBS
544 (
545   p_trx_line_index         IN  BINARY_INTEGER,
546   p_tax_invoice_number     IN  VARCHAR2,
547   p_tax_invoice_date       IN  DATE,
548   x_return_status          OUT NOCOPY VARCHAR2
549 )
550 
551 IS
552 
553  l_api_name           CONSTANT VARCHAR2(30) := 'DEFAULT_TAX_REPORTING_ATTRIBS';
554 
555  l_tax_invoice_number    ZX_LINES_DET_FACTORS.TAX_INVOICE_NUMBER%TYPE;
556  l_tax_invoice_date      ZX_LINES_DET_FACTORS.TAX_INVOICE_DATE%TYPE;
557 
558  l_context_info_rec        ZX_API_PUB.context_info_rec_type;
559 
560 BEGIN
561 -- start bug#6503114
562 x_return_status  := FND_API.G_RET_STS_SUCCESS;
563 -- end bug#6503114
564 
565    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
566      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
567    END IF;
568 
569   BEGIN
570     SELECT nvl(global_attribute8,'0') global_attribute8,
571            to_char(to_date(global_attribute9,'YYYY/MM/DD HH24:MI:SS'),
572            'RRRR-MON-DD') global_attribute9 INTO l_tax_invoice_number, l_tax_invoice_date
573       FROM RA_BATCH_SOURCES_ALL
574      WHERE batch_source_id = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.BATCH_SOURCE_ID(p_trx_line_index)
575        AND NVL(org_id, -99) =
576            NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_trx_line_index), -99);
577   EXCEPTION
578     WHEN NO_DATA_FOUND THEN
579       IF (g_level_statement >= g_current_runtime_level ) THEN
580         FND_LOG.STRING(g_level_statement,
581                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_REPORTING_ATTRIBS',
582                'No Record Found for tax_invoice_number and tax_invoice_date.');
583       END IF;
584     WHEN OTHERS THEN
585       IF (g_level_unexpected >= g_current_runtime_level ) THEN
586         FND_LOG.STRING(g_level_unexpected,
587                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_REPORTING_ATTRIBS',
588                 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
589       END IF;
590   END;
591 
592   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
593      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
594         'p_tax_invoice_number   := ' || p_tax_invoice_number||
595         ' l_tax_invoice_number   := ' || l_tax_invoice_number||
596         'p_tax_invoice_date   := ' || p_tax_invoice_date||
597         'l_tax_invoice_date   := ' || l_tax_invoice_date);
598   END IF;
599 
600   IF p_tax_invoice_number IS NOT NULL THEN
601 
602     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_INVOICE_NUMBER(p_trx_line_index) := p_tax_invoice_number;
603 
604   ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_INVOICE_NUMBER(p_trx_line_index) IS NULL THEN
605 
606     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_INVOICE_NUMBER(p_trx_line_index) := l_tax_invoice_number;
607 
608   END IF;
609 
610   IF p_tax_invoice_date IS NOT NULL THEN
611 
612     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_INVOICE_DATE(p_trx_line_index) := p_tax_invoice_date;
613 
614   ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_INVOICE_DATE(p_trx_line_index) IS NULL THEN
615 
616     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_INVOICE_DATE(p_trx_line_index) := l_tax_invoice_date;
617 
618   END IF;
619 
620   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
621        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME ||l_api_name||'(-)');
622   END IF;
623 
624 EXCEPTION
625 
626   WHEN OTHERS THEN
627 
628     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
629     FND_MESSAGE.SET_NAME('ZX','ZX_UNEXPECTED_ERROR');
630     l_context_info_rec.APPLICATION_ID   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index);
631     l_context_info_rec.ENTITY_CODE      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index);
632     l_context_info_rec.EVENT_CLASS_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index);
633     l_context_info_rec.TRX_ID           := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id(p_trx_line_index);
634     IF ZX_API_PUB.G_DATA_TRANSFER_MODE IS NULL
635       OR l_context_info_rec.TRX_ID IS NULL
636     THEN
637       FND_MSG_PUB.Add;
638     ELSE
639       ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
640     END IF;
641 
642     IF (g_level_unexpected >= g_current_runtime_level ) THEN
643       FND_LOG.STRING(g_level_unexpected,
644              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_REPORTING_ATTRIBS',
645               sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
646       FND_LOG.STRING(g_level_unexpected,
647              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_REPORTING_ATTRIBS.END',
648              'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_REPORTING_ATTRIBS(-)');
649     END IF;
650 
651 
652 END DEFAULT_TAX_REPORTING_ATTRIBS;
653 
654 
655 PROCEDURE DEFAULT_TAX_CLASSIFICATION
656 (
657   p_trx_line_index        IN  BINARY_INTEGER,
658   x_return_status         OUT NOCOPY VARCHAR2
659 )
660 
661 IS
662 
663  l_api_name           CONSTANT VARCHAR2(30) := 'DEFAULT_TAX_CLASSIFICATION';
664  l_error_buffer    VARCHAR2(240);
665  l_definfo         ZX_API_PUB.def_tax_cls_code_info_rec_type;
666 
667 BEGIN
668 
669    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
670      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
671    END IF;
672 
673    x_return_status :=  FND_API.G_RET_STS_SUCCESS;
674 
675     -- If Application is PO and Input classification code is Null then default the value.
676     IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(p_trx_line_index) = 201 AND
677        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INPUT_TAX_CLASSIFICATION_CODE(p_trx_line_index) IS NULL THEN
678 
679       l_definfo.ref_doc_application_id   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_application_id(p_trx_line_index);
680       l_definfo.ref_doc_entity_code      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_entity_code(p_trx_line_index);
681       l_definfo.ref_doc_event_class_code := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_event_class_code(p_trx_line_index);
682       l_definfo.ref_doc_trx_id           := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_trx_id(p_trx_line_index);
683       l_definfo.ref_doc_line_id          := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_line_id(p_trx_line_index);
684       l_definfo.ref_doc_trx_level_type   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_trx_level_type(p_trx_line_index);
685       --l_definfo.vendor_id             := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_from_party_id(p_trx_line_index);
686       -- bug#4991176
687       -- l_definfo.ship_third_pty_acct_id  := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_from_party_id(p_trx_line_index);
688       --l_definfo.vendor_site_id        := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_from_party_site_id(p_trx_line_index);
689       -- bug#4991176
690       --l_definfo.ship_third_pty_acct_site_id := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_from_party_site_id(p_trx_line_index);
691       l_definfo.account_ccid := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.account_ccid(p_trx_line_index);
692       l_definfo.account_string  := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.account_string(p_trx_line_index);
693       l_definfo.ship_to_location_id   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_to_location_id(p_trx_line_index);
694       l_definfo.product_id            := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_id(p_trx_line_index);
695       l_definfo.application_id        := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index);
696       l_definfo.event_class_code      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index);
697       l_definfo.entity_code           := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index);
698       --l_definfo.bill_to_site_use_id   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.bill_third_pty_acct_id(p_trx_line_index);
699       l_definfo.bill_to_cust_acct_site_use_id  := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.bill_to_cust_acct_site_use_id(p_trx_line_index);
700       --l_definfo.ship_to_site_use_id   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_third_pty_acct_id(p_trx_line_index);
701      l_definfo.ship_to_cust_acct_site_use_id := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_to_cust_acct_site_use_id(p_trx_line_index);
702       l_definfo.ledger_id             := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ledger_id(p_trx_line_index);
703       l_definfo.trx_date              := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index);
704       l_definfo.receivables_trx_type_id  := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.receivables_trx_type_id(p_trx_line_index);
705       l_definfo.trx_id                := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id(p_trx_line_index);
706       l_definfo.trx_line_id           := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
707       l_definfo.ship_third_pty_acct_id := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_third_pty_acct_id(p_trx_line_index);
708       -- bug#4991176
709       l_definfo.ship_third_pty_acct_site_id := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_third_pty_acct_site_id(p_trx_line_index);
710 
711        l_definfo.bill_third_pty_acct_id := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.bill_third_pty_acct_id(p_trx_line_index);
712 
713       l_definfo.product_org_id        := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_org_id(p_trx_line_index);
714       l_definfo.internal_organization_id := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_trx_line_index);
715 
716       --
717       -- bug#4868489
718       --
719       l_definfo.legal_entity_id       :=
720             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.legal_entity_id(p_trx_line_index);
721 
722       -- Per discussion with Sri, Pass all the defaulting attributes from
723       -- trx_line_dist_tbl. These defaulting attributes will be intepreted internally.
724       --
725       -- bug#4868489- removed the call to
726       -- ZX_TAX_DEFAULT_PKG.map_parm_for_def_tax_classif
727       -- and assign directly to defaulting_attributes
728       -- in l_definfo record
729       --
730       l_definfo.defaulting_attribute1  :=
731             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute1(p_trx_line_index);
732       l_definfo.defaulting_attribute2  :=
733             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute2(p_trx_line_index);
734       l_definfo.defaulting_attribute3  :=
735             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute3(p_trx_line_index);
736       l_definfo.defaulting_attribute4  :=
737             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute4(p_trx_line_index);
738       l_definfo.defaulting_attribute5  :=
739             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute5(p_trx_line_index);
740       l_definfo.defaulting_attribute6  :=
741             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute6(p_trx_line_index);
742       l_definfo.defaulting_attribute7  :=
743             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute7(p_trx_line_index);
744       l_definfo.defaulting_attribute8  :=
745             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute8(p_trx_line_index);
746       l_definfo.defaulting_attribute9  :=
747             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute9(p_trx_line_index);
748       l_definfo.defaulting_attribute10 :=
749             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.defaulting_attribute10(p_trx_line_index);
750 
751       ZX_TAX_DEFAULT_PKG.get_default_tax_classification
752           (p_definfo        => l_definfo,
753            p_return_status  => x_return_status,
754            p_error_buffer   => l_error_buffer
755           );
756 
757       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
758 
759         IF (g_level_error >= g_current_runtime_level ) THEN
760           FND_LOG.STRING(g_level_error,
761              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_CLASSIFICATION',
762              'Incorrect return_status after calling ' ||
763              'ZX_TAX_DEFAULT_PKG.get_default_tax_classification');
764           FND_LOG.STRING(g_level_error,
765              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_CLASSIFICATION.END',
766              'ZX_DEFAULT_AUTOMATION_PKG.DEFAULT_TAX_CLASSIFICATION(-)');
767         END IF;
768 
769         RETURN;
770 
771       END IF;
772 
773       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INPUT_TAX_CLASSIFICATION_CODE(p_trx_line_index) := l_definfo.input_tax_classification_code;
774 
775     END IF; -- End of PO Application check
776 
777   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
778        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME ||l_api_name||'(-)');
779   END IF;
780 
781 END DEFAULT_TAX_CLASSIFICATION;
782 
783 
784 -- This is the main wrapper procedure
785 PROCEDURE DEFAULT_TAX_ATTRIBS
786 (
787   p_trx_line_index         IN	         BINARY_INTEGER,
788   p_event_class_rec        IN OUT NOCOPY ZX_API_PUB.event_class_rec_type,
789   p_taxation_country	   IN            VARCHAR2,
790   p_document_sub_type	   IN            VARCHAR2,
791   p_tax_invoice_number     IN            VARCHAR2,
792   p_tax_invoice_date       IN            DATE,
793   x_return_status          OUT NOCOPY    VARCHAR2
794 )
795 IS
796 
797   l_api_name           CONSTANT VARCHAR2(30) := 'DEFAULT_TAX_ATTRIBS';
798 
799 BEGIN
800 
801    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
802      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
803    END IF;
804 
805    DEFAULT_TAX_DET_FACTORS
806 	(
807 	  p_trx_line_index,
808 	  p_event_class_rec,
809 	  p_taxation_country,
810 	  p_document_sub_type,
811 	  x_return_status
812 	);
813 
814    IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
815       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
816          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
817             'after calling default_tax_det_factors RETURN_STATUS = ' || x_return_status);
818       END IF;
819 --      RETURN;
820    END IF;
821 
822    DEFAULT_TAX_REPORTING_ATTRIBS
823 	(
824 	  p_trx_line_index,
825 	  p_tax_invoice_number,
826 	  p_tax_invoice_date,
827 	  x_return_status
828 	);
829 
830    IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
831       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
832          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
833             'after calling default_tax_reporting_attribs RETURN_STATUS = ' || x_return_status);
834       END IF;
835 --      RETURN;
836    END IF;
837 
838    DEFAULT_TAX_CLASSIFICATION
839 	(
840 	  p_trx_line_index,
841 	  x_return_status
842 	);
843 
844    IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
845       IF ( G_LEVEL_error >= G_CURRENT_RUNTIME_LEVEL) THEN
846          FND_LOG.STRING(G_LEVEL_error,G_MODULE_NAME||l_api_name,
847             'after calling default_tax_classification RETURN_STATUS = ' || x_return_status);
848       END IF;
849 --      RETURN;
850    END IF;
851 
852 END DEFAULT_TAX_ATTRIBS;
853 
854 -- Re-Defaulting APIs
855 --
856 PROCEDURE redefault_intended_use(
857   p_application_id       IN            NUMBER,
858   p_entity_code          IN            VARCHAR2,
859   p_event_class_code     IN            VARCHAR2,
860   p_internal_org_id      IN            NUMBER,
861   p_country_code         IN            VARCHAR2,
862   p_item_id              IN            NUMBER,
863   p_item_org_id          IN            NUMBER,
864   x_intended_use            OUT NOCOPY VARCHAR2,
865   x_return_status           OUT NOCOPY VARCHAR2) IS
866 
867   l_tax_method                  VARCHAR2(30);
868   l_error_buffer		VARCHAR2(256);
869   l_zx_proudct_options_rec      ZX_GLOBAL_STRUCTURES_PKG.zx_product_options_rec_type;
870 
871 BEGIN
872 
873   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
874 
875   IF (g_level_procedure >= g_current_runtime_level ) THEN
876     FND_LOG.STRING(g_level_procedure,
877            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use.BEGIN',
878            'ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use(+)');
879   END IF;
880 
881   x_return_status := FND_API.G_RET_STS_SUCCESS;
882 
883   -- get tax method
884   --
885 
886   ZX_GLOBAL_STRUCTURES_PKG.get_product_options_info
887                    (p_application_id      => p_application_id,
888                     p_org_id              => p_internal_org_id,
889                     x_product_options_rec => l_zx_proudct_options_rec,
890                     x_return_status       => x_return_status);
891   IF x_return_status = FND_API.G_RET_STS_ERROR then
892         l_tax_method := 'EBTAX';
893   ELSE
894         l_tax_method := l_zx_proudct_options_rec.tax_method_code;
895   END IF;
896 
897   IF l_tax_method = 'EBTAX' THEN
898 
899     ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(
900                             p_fiscal_type_code  =>  'INTENDED_USE',
901                             p_country_code      =>  p_country_code,
902                             p_application_id    =>  p_application_id,
903                             p_entity_code       =>  p_entity_code,
904                             p_event_class_code  =>  p_event_class_code,
905             		    p_source_event_class_code  => NULL,
906                             p_org_id            =>  p_item_org_id,
907                             p_item_id           =>  p_item_id,
908                             p_default_code      =>  x_intended_use,
909                             p_return_status     =>  x_return_status);
910 
911     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
912       IF (g_level_statement >= g_current_runtime_level ) THEN
913         FND_LOG.STRING(g_level_statement,
914                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use',
915                'Incorrect return_status after calling ' ||
916                'ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code()');
917         FND_LOG.STRING(g_level_statement,
918                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use.END',
919                'ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use(-)');
920       END IF;
921       RETURN;
922     END IF;
923   END IF;
924 
925   IF (g_level_procedure >= g_current_runtime_level ) THEN
926 
927     FND_LOG.STRING(g_level_procedure,
928                   'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use.END',
929                   'ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use(-)'||
930                   'x_intended_use := ' || x_intended_use||
931                   'RETURN_STATUS = ' || x_return_status);
932   END IF;
933 
934 EXCEPTION
935   WHEN OTHERS THEN
936 
937     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
938     x_intended_use := NULL;
939 
940     FND_MESSAGE.SET_NAME('ZX','ZX_UNEXPECTED_ERROR');
941     FND_MSG_PUB.Add;
942 
943     IF (g_level_unexpected >= g_current_runtime_level ) THEN
944       FND_LOG.STRING(g_level_unexpected,
945              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use',
946               sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
947       FND_LOG.STRING(g_level_unexpected,
948              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use.END',
949              'ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use(-)');
950     END IF;
951 
952 END redefault_intended_use;
953 
954 PROCEDURE redefault_prod_fisc_class_code(
955   p_application_id       IN            NUMBER,
956   p_entity_code          IN            VARCHAR2,
957   p_event_class_code     IN            VARCHAR2,
958   p_internal_org_id      IN            NUMBER,
959   p_country_code         IN            VARCHAR2,
960   p_item_id              IN            NUMBER,
961   p_item_org_id          IN            NUMBER,
962   x_prod_fisc_class_code    OUT NOCOPY VARCHAR2,
963   x_return_status           OUT NOCOPY VARCHAR2) IS
964 
965   l_tax_method                  VARCHAR2(30);
966   l_error_buffer		VARCHAR2(256);
967   l_zx_proudct_options_rec      ZX_GLOBAL_STRUCTURES_PKG.zx_product_options_rec_type;
968 
969 BEGIN
970 
971   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
972 
973   IF (g_level_procedure >= g_current_runtime_level ) THEN
974     FND_LOG.STRING(g_level_procedure,
975            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code.BEGIN',
976            'ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code(+)');
977   END IF;
978 
979   x_return_status := FND_API.G_RET_STS_SUCCESS;
980 
981   ZX_GLOBAL_STRUCTURES_PKG.get_product_options_info
982                    (p_application_id      => p_application_id,
983                     p_org_id              => p_internal_org_id,
984                     x_product_options_rec => l_zx_proudct_options_rec,
985                     x_return_status       => x_return_status);
986   IF x_return_status = FND_API.G_RET_STS_ERROR then
987         l_tax_method := 'EBTAX';
988   ELSE
989         l_tax_method := l_zx_proudct_options_rec.tax_method_code;
990   END IF;
991 
992 
993   IF l_tax_method = 'EBTAX' THEN
994 
995     ZX_TCM_EXT_SERVICES_PUB.get_default_product_classif(
996                             p_country_code    =>  p_country_code,
997                             p_item_id         =>  p_item_id,
998                             p_org_id          =>  p_item_org_id,
999                             p_default_code    =>  x_prod_fisc_class_code,
1000                             p_return_status   =>  x_return_status);
1001 
1002     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1003       IF (g_level_error >= g_current_runtime_level ) THEN
1004         FND_LOG.STRING(g_level_error,
1005                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code',
1006                'Incorrect return_status after calling ' ||
1007                'ZX_TCM_EXT_SERVICES_PUB.get_default_product_classif()');
1008         FND_LOG.STRING(g_level_error,
1009                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code.END',
1010                'ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code(-)'||x_return_status);
1011       END IF;
1012       RETURN;
1013     END IF;
1014   ELSIF l_tax_method = 'LTE' THEN
1015 
1016     IF p_item_id IS NOT NULL and p_item_org_id IS NOT NULL THEN
1017 
1018       BEGIN
1019 
1020         SELECT fc.classification_code
1021           INTO x_prod_fisc_class_code
1022           FROM zx_fc_product_fiscal_v fc,
1023                mtl_item_categories mic
1024          WHERE fc.country_code =  p_country_code
1025            AND mic.inventory_item_id = p_item_id
1026            AND mic.organization_id  = p_item_org_id
1027            AND mic.category_id = fc.category_id
1028            AND mic.category_set_id = fc.category_set_id
1029            AND fc.structure_name = 'PRODUCT_FISCAL_CLASS'
1030            AND fc.country_code in ('JL', 'BR', 'CO')
1031            AND EXISTS
1032                ( SELECT 1
1033                    FROM jl_zz_ar_tx_fsc_cls_all
1034                   WHERE fiscal_classification_code = fc.classification_code
1035                     AND NVL(org_id, -99) = NVL(p_internal_org_id, -99)
1036                     AND enabled_flag = 'Y');
1037 
1038       EXCEPTION
1039         WHEN NO_DATA_FOUND THEN
1040           IF (g_level_unexpected >= g_current_runtime_level ) THEN
1041             FND_LOG.STRING(g_level_unexpected,
1042                    'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code',
1043                    'Unable to default Product Fiscal Classification which is mandatory for LTE');
1044           END IF;
1045           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1046 
1047       END;
1048     ELSIF p_item_id IS NOT NULL and p_item_org_id IS NULL THEN
1049 
1050       -- In case where the product type is 'MEMO', default Product Category
1051       -- from ar_memo_lines.
1052       --
1053       BEGIN
1054         SELECT memo.global_attribute2 product_category
1055           INTO x_prod_fisc_class_code
1056           FROM ar_memo_lines_all_b Memo
1057          WHERE memo_line_id = p_item_id
1058            AND NVL(org_id, -99) = NVL(p_internal_org_id, -99);
1059 
1060       EXCEPTION
1061         WHEN NO_DATA_FOUND THEN
1062           IF (g_level_unexpected >= g_current_runtime_level ) THEN
1063             FND_LOG.STRING(g_level_unexpected,
1064                    'JL_ZZ_TAX_VALIDATE_PKG.DEFAULT_TAX_ATTR',
1065                    'Unable to default Product Fiscal Classification ot Trx Business Category'||
1066                    ' which is mandatory for LTE');
1067           END IF;
1068           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1069       END;
1070     END IF;
1071   END IF;
1072 
1073 
1074   IF (g_level_procedure >= g_current_runtime_level ) THEN
1075 
1076     FND_LOG.STRING(g_level_procedure,
1077            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code.END',
1078            'ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code(-)'||
1079            'x_prod_fisc_class_code := ' || x_prod_fisc_class_code||
1080            'RETURN_STATUS = ' || x_return_status);
1081   END IF;
1082 
1083 EXCEPTION
1084   WHEN OTHERS THEN
1085 
1086     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1087     x_prod_fisc_class_code := NULL;
1088 
1089     FND_MESSAGE.SET_NAME('ZX','ZX_UNEXPECTED_ERROR');
1090     FND_MSG_PUB.Add;
1091 
1092     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1093       FND_LOG.STRING(g_level_unexpected,
1094              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code',
1095               sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1096       FND_LOG.STRING(g_level_unexpected,
1097              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code.END',
1098              'ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code(-)');
1099     END IF;
1100 
1101 END redefault_prod_fisc_class_code;
1102 
1103 PROCEDURE redefault_assessable_value(
1104   p_application_id       IN            NUMBER,
1105   p_entity_code          IN            VARCHAR2,
1106   p_event_class_code     IN            VARCHAR2,
1107   p_internal_org_id      IN            NUMBER,
1108   p_trx_id               IN            NUMBER,
1109   p_trx_line_id          IN            NUMBER,
1110   p_trx_level_type       IN            VARCHAR2,
1111   p_item_id              IN            NUMBER,
1112   p_item_org_id          IN            NUMBER,
1113   p_line_amt             IN            NUMBER,
1114   x_assessable_value        OUT NOCOPY NUMBER,
1115   x_return_status           OUT NOCOPY VARCHAR2) IS
1116 
1117   l_error_buffer		VARCHAR2(256);
1118 
1119 BEGIN
1120 
1121   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1122 
1123   IF (g_level_procedure >= g_current_runtime_level ) THEN
1124     FND_LOG.STRING(g_level_procedure,
1125            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value.BEGIN',
1126            'ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value(+)');
1127   END IF;
1128 
1129   x_return_status := FND_API.G_RET_STS_SUCCESS;
1130 
1131   -- Just assign line_amt to the x_assessable_vale. For the logic to get default
1132   -- assessable value will be determinered based on the input parameters
1133   --
1134   x_assessable_value := p_line_amt;
1135 
1136   IF (g_level_procedure >= g_current_runtime_level ) THEN
1137 
1138     FND_LOG.STRING(g_level_procedure,
1139            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value.END',
1140            'ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value(-)'||
1141            ' assessable value: '||x_assessable_value);
1142   END IF;
1143 
1144 EXCEPTION
1145   WHEN OTHERS THEN
1146 
1147     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1148     x_assessable_value := NULL;
1149 
1150     FND_MESSAGE.SET_NAME('ZX','ZX_UNEXPECTED_ERROR');
1151     FND_MSG_PUB.Add;
1152 
1153     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1154       FND_LOG.STRING(g_level_unexpected,
1155              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value',
1156               sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1157       FND_LOG.STRING(g_level_unexpected,
1158              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value.END',
1159              'ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value(-)');
1160     END IF;
1161 
1162 END redefault_assessable_value;
1163 
1164  -- This is the defaulting api for PO on-the_fly migration
1165  --
1166  PROCEDURE default_tax_attributes_for_po(
1167   p_trx_line_index         IN	         BINARY_INTEGER,
1168   x_return_status          OUT NOCOPY    VARCHAR2) IS
1169 
1170  l_tax_code_id                  NUMBER;
1171  l_tax_determine_date           DATE;
1172  l_tax_date                     DATE;
1173  l_tax_point_date               DATE;
1174  l_tax_classification_code      VARCHAR2(150);
1175  l_effective_from               DATE;
1176  l_effective_to                 DATE;
1177 
1178  l_country_code                 XLE_FIRSTPARTY_INFORMATION_V.COUNTRY%TYPE;
1179  l_fnd_return                   BOOLEAN;
1180  l_inv_flag                     VARCHAR2(30);
1181  l_inv_industry                 VARCHAR2(30);
1182  l_temp_attribute1            mtl_system_items_b.global_attribute1%TYPE;
1183 
1184  l_error_buffer		        VARCHAR2(256);
1185  l_context_info_rec             ZX_API_PUB.context_info_rec_type;
1186 
1187 BEGIN
1188 
1189   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1190 
1191   IF (g_level_procedure >= g_current_runtime_level ) THEN
1192     FND_LOG.STRING(g_level_procedure,
1193            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po.BEGIN',
1194            'ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po(+)');
1195   END IF;
1196 
1197   x_return_status := FND_API.G_RET_STS_SUCCESS;
1198 
1199   l_tax_code_id :=
1200         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.historical_tax_code_id(
1201                                                               p_trx_line_index);
1202 
1203   IF l_tax_code_id IS NOT NULL THEN
1204 
1205 
1206     ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date(
1207                                        p_trx_line_index,
1208                                        l_tax_date,
1209                                        l_tax_determine_date,
1210                                        l_tax_point_date,
1211                                        x_return_status);
1212 
1213     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1214       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1215         FND_LOG.STRING(g_level_unexpected,
1216                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1217                'Incorrect return_status after calling ' ||
1218                'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date()');
1219         FND_LOG.STRING(g_level_unexpected,
1220                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1221                'RETURN_STATUS = ' || x_return_status);
1222         FND_LOG.STRING(g_level_unexpected,
1223                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po.END',
1224                'ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po(-)');
1225       END IF;
1226       RETURN;
1227     END IF;
1228 
1229 
1230     BEGIN
1231       SELECT tax_classification_code, effective_from, effective_to
1232         INTO l_tax_classification_code, l_effective_from, l_effective_to
1233         FROM zx_id_tcc_mapping
1234        WHERE tax_rate_code_id = l_tax_code_id
1235          AND source = 'AP';
1236 
1237     EXCEPTION
1238       WHEN NO_DATA_FOUND THEN
1239         IF (g_level_unexpected >= g_current_runtime_level ) THEN
1240           FND_LOG.STRING(g_level_unexpected,
1241                  'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1242                  'Invalid Tax Code Id: No Record Found');
1243         END IF;
1244         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;     -- bug 4893261;
1245     END;
1246 
1247     IF l_effective_from <= l_tax_determine_date AND
1248        (l_effective_to >= l_tax_determine_date OR l_effective_to IS NULL)
1249     THEN
1250 
1251       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.input_tax_classification_code(
1252                                  p_trx_line_index) := l_tax_classification_code;
1253 
1254     ELSE
1255       IF (g_level_statement >= g_current_runtime_level ) THEN
1256         FND_LOG.STRING(g_level_statement,
1257                'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1258                'No Valid Tax Classification Code Found for Tax Code Id: ' ||
1259                 l_tax_code_id);
1260       END IF;
1261       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;     -- bug 4893261
1262       RETURN;
1263     END IF;
1264   END IF;
1265 
1266   -- get the country code
1267   --
1268   l_country_code := SUBSTR(
1269     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.global_attribute_category(
1270                                                          p_trx_line_index), 4, 2);
1271 
1272   -- get if inventory is installed
1273   --
1274   l_fnd_return := FND_INSTALLATION.get(401, 401, l_inv_flag, l_inv_industry);
1275 
1276   IF NOT l_fnd_return THEN
1277     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1278       FND_LOG.STRING(g_level_unexpected,
1279              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1280              'Got error after calling FND_INSTALLATION.get');
1281       FND_LOG.STRING(g_level_unexpected,
1282              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po.END',
1283              'ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po(-)');
1284     END IF;
1285     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;     -- bug 4893261
1286     RETURN;
1287   END IF;
1288 
1289   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.global_attribute1(
1290                                              p_trx_line_index) IS NOT NULL THEN
1291 
1292     IF g_level_statement >= G_CURRENT_RUNTIME_LEVEL THEN
1293       FND_LOG.STRING(g_level_statement,
1294              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1295              'Default Product Fisiclassification Code or Product Category');
1296     END IF;
1297 
1298     IF l_country_code = 'BR' THEN
1299 
1300       IF l_inv_flag = 'I' THEN
1301 
1302         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_fisc_classification(
1303               p_trx_line_index) :=
1304                 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.global_attribute1(
1305                                                                p_trx_line_index);
1306       ELSE
1307        IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_category(p_trx_line_index) IS NULL THEN
1308         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_category(
1309              p_trx_line_index) := 'STATISTICAL CODE' || '.' ||
1310                    ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.global_attribute1(
1311                                                                 p_trx_line_index);
1312        END IF;
1313       END IF;
1314     ELSIF l_country_code = 'HU' OR l_country_code = 'PL' THEN
1315 
1316       BEGIN
1317         SELECT global_attribute1
1318           INTO l_temp_attribute1
1319           FROM mtl_system_items_b
1320          WHERE inventory_item_id =
1321                ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_id(p_trx_line_index)
1322            AND organization_id =
1323                ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_org_id(p_trx_line_index);
1324 
1325       EXCEPTION
1326         WHEN NO_DATA_FOUND THEN
1327           IF (g_level_unexpected >= g_current_runtime_level ) THEN
1328             FND_LOG.STRING(g_level_unexpected,
1329                    'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1330                    'Not MTL Item Found');
1331           END IF;
1332           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;     -- bug 4893261
1333       END;
1334 
1335       IF l_inv_flag = 'I' THEN
1336 
1337           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_fisc_classification(
1338                                          p_trx_line_index) := l_temp_attribute1;
1339       ELSE
1340         IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_category(p_trx_line_index) IS NULL THEN
1341           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_category(
1342             p_trx_line_index) := 'STATISTICAL CODE' || '.' || l_temp_attribute1;
1343         END IF;
1344       END IF;
1345     END IF;
1346   END IF;
1347 
1348   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_id(
1349                                                p_trx_line_index) IS NOT NULL AND
1350      ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_org_id(
1351                                                p_trx_line_index) IS NOT NULL
1352   THEN
1353 
1354     IF ( g_level_statement >= G_CURRENT_RUNTIME_LEVEL) THEN
1355       FND_LOG.STRING(g_level_statement,
1356              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1357              'Default Transaction Business _category for Brazil');
1358     END IF;
1359 
1360     IF l_country_code = 'BR' THEN
1361 
1362       BEGIN
1363         SELECT ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_class_code( p_trx_line_index)
1364                 || '.' || global_attribute2
1365           INTO ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_business_category(p_trx_line_index)
1366           FROM mtl_system_items_b
1367          WHERE inventory_item_id =
1368                ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_id(p_trx_line_index)
1369            AND organization_id =
1370                ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_org_id(p_trx_line_index);
1371 
1372       EXCEPTION
1373         WHEN NO_DATA_FOUND THEN
1374           IF (g_level_unexpected >= g_current_runtime_level ) THEN
1375             FND_LOG.STRING(g_level_unexpected,
1376                    'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1377                    'Not MTL Item Found');
1378           END IF;
1379           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;     -- bug 4893261
1380       END;
1381     END IF;
1382   END IF;
1383 
1384   IF (g_level_procedure >= g_current_runtime_level ) THEN
1385 
1386     FND_LOG.STRING(g_level_procedure,
1387            'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po.END',
1388            'ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po(-)'||x_return_status);
1389   END IF;
1390 
1391 EXCEPTION
1392   WHEN OTHERS THEN
1393 
1394     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1395 
1396     FND_MESSAGE.SET_NAME('ZX','ZX_UNEXPECTED_ERROR');
1397     l_context_info_rec.APPLICATION_ID   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index);
1398     l_context_info_rec.ENTITY_CODE      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index);
1399     l_context_info_rec.EVENT_CLASS_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index);
1400     l_context_info_rec.TRX_ID           := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id(p_trx_line_index);
1401     IF ZX_API_PUB.G_DATA_TRANSFER_MODE IS NULL
1402       OR l_context_info_rec.TRX_ID IS NULL
1403     THEN
1404       FND_MSG_PUB.Add;
1405     ELSE
1406       ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
1407     END IF;
1408 
1409     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1410       FND_LOG.STRING(g_level_unexpected,
1411              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po',
1412               sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1413       FND_LOG.STRING(g_level_unexpected,
1414              'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po.END',
1415              'ZX_DEFAULT_AUTOMATION_PKG.default_tax_attributes_for_po(-)');
1416     END IF;
1417 
1418 END default_tax_attributes_for_po;
1419 
1420 /* This procedure is used to get the default country code  based on
1421    tax method for input parameter internal_org_id/legal_entity_id
1422    This procedure is called from Additional Tax Attributes UI when Taxation Country is null
1423 */
1424 PROCEDURE GET_DEFAULT_COUNTRY_CODE
1425 (
1426   p_tax_method_code      IN            VARCHAR2,
1427   p_internal_org_id      IN            NUMBER,
1428   p_legal_entity_id      IN            NUMBER,
1429   x_country_code            OUT NOCOPY VARCHAR2,
1430   x_return_status           OUT NOCOPY VARCHAR2
1431 )
1432 IS
1433  l_api_name           CONSTANT VARCHAR2(30) := 'GET_DEFAULT_COUNTRY_CODE';
1434  l_country_code       XLE_FIRSTPARTY_INFORMATION_V.COUNTRY%TYPE;
1435 
1436 BEGIN
1437 
1438    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1439      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1440    END IF;
1441 
1442    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1443      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1444         ' p_tax_method_code    := ' || p_tax_method_code ||
1445         ' p_internal_org_id    := ' || to_char(p_internal_org_id) ||
1446         ' p_legal_entity_id    := ' || to_char(p_legal_entity_id) );
1447    END IF;
1448 
1449    x_return_status :=  FND_API.G_RET_STS_SUCCESS;
1450 
1451       IF p_tax_method_code = 'LTE' THEN
1452 
1453         BEGIN
1454           SELECT decode(global_attribute13,'ARGENTINA', 'AR',
1455                                            'COLOMBIA',  'CO',
1456                                            'BRAZIL',    'BR',
1457                         NULL) INTO l_country_code FROM ar_system_parameters_all
1458            WHERE  NVL(org_id, -99) = NVL(p_internal_org_id, -99)
1459                   AND global_attribute_category like 'JL%';
1460 
1461         EXCEPTION
1462           WHEN NO_DATA_FOUND THEN
1463             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1464             IF (g_level_statement >= g_current_runtime_level ) THEN
1465               FND_LOG.STRING(g_level_statement,
1466                      'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.GET_DEFAULT_COUNTRY_CODE',
1467                      'No COUNTRY_CODE Found For LTE.');
1468             END IF;
1469           WHEN OTHERS THEN
1470             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1471             IF (g_level_unexpected >= g_current_runtime_level ) THEN
1472               FND_LOG.STRING(g_level_unexpected,
1473                      'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.GET_DEFAULT_COUNTRY_CODE',
1474                       sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1475             END IF;
1476         END;
1477 
1478       ELSE
1479 
1480         BEGIN
1481           SELECT le.country INTO l_country_code
1482             FROM XLE_FIRSTPARTY_INFORMATION_V le
1483            WHERE le.legal_entity_id = p_legal_entity_id;
1484         EXCEPTION
1485           WHEN NO_DATA_FOUND THEN
1486             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1487             IF (g_level_statement >= g_current_runtime_level ) THEN
1488               FND_LOG.STRING(g_level_statement,
1489                      'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.GET_DEFAULT_COUNTRY_CODE',
1490                      'No COUNTRY_CODE Found for EBTax. ');
1491             END IF;
1492           WHEN OTHERS THEN
1493             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1494             IF (g_level_unexpected >= g_current_runtime_level ) THEN
1495               FND_LOG.STRING(g_level_unexpected,
1496                      'ZX.PLSQL.ZX_DEFAULT_AUTOMATION_PKG.GET_DEFAULT_COUNTRY_CODE',
1497                       sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1498             END IF;
1499         END;
1500 
1501      END IF; -- tax_method_code
1502 
1503      x_country_code:= l_country_code;
1504 
1505 END GET_DEFAULT_COUNTRY_CODE;
1506 
1507 END ZX_DEFAULT_AUTOMATION_PKG;