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