DBA Data[Home] [Help]

PACKAGE BODY: APPS.POR_TAX_PVT

Source


1 PACKAGE BODY POR_TAX_PVT AS
2 /* $Header: PORVTAXB.pls 120.10.12010000.6 2009/01/15 13:18:36 debrchak ship $ */
3 
4 
5   -- Logging Static Variables
6   G_CURRENT_RUNTIME_LEVEL      NUMBER;
7   G_LEVEL_UNEXPECTED	       CONSTANT NUMBER	     := FND_LOG.LEVEL_UNEXPECTED;
8   G_LEVEL_ERROR 	       CONSTANT NUMBER	     := FND_LOG.LEVEL_ERROR;
9   G_LEVEL_EXCEPTION	       CONSTANT NUMBER	     := FND_LOG.LEVEL_EXCEPTION;
10   G_LEVEL_EVENT 	       CONSTANT NUMBER	     := FND_LOG.LEVEL_EVENT;
11   G_LEVEL_PROCEDURE	       CONSTANT NUMBER	     := FND_LOG.LEVEL_PROCEDURE;
12   G_LEVEL_STATEMENT	       CONSTANT NUMBER	     := FND_LOG.LEVEL_STATEMENT;
13   G_MODULE_NAME 	       CONSTANT VARCHAR2(30) := 'PO.PLSQL.POR_TAX_PVT';
14 
15 
16 PROCEDURE calculate_tax (p_tax_head_tbl         IN  POR_TAX_HEADER_OBJ_TBL_TYPE,
17                          p_tax_line_tbl         IN  POR_TAX_LINE_OBJ_TBL_TYPE,
18                          p_tax_dist_tbl         IN  POR_TAX_DIST_OBJ_TBL_TYPE,
19                          x_tax_dist_id_tbl      OUT NOCOPY ICX_TBL_NUMBER,
20                          x_tax_recov_amt_tbl    OUT NOCOPY ICX_TBL_NUMBER,
21 	                 x_tax_nonrecov_amt_tbl OUT NOCOPY ICX_TBL_NUMBER,
22                          x_return_status        OUT NOCOPY VARCHAR2,
23                          x_msg_data             OUT NOCOPY VARCHAR2,
24                          x_msg_count            OUT NOCOPY NUMBER) IS
25 
26   l_legal_entity_id      PLS_INTEGER;
27   i                      PLS_INTEGER;
28  tbl_sz                 PLS_INTEGER;
29   l_msg_count            NUMBER;
30   l_return_status        VARCHAR2(60);
31   l_msg_data             VARCHAR2(480);
32   l_dist_id              PLS_INTEGER;
33   l_recov_tax            NUMBER;
34   l_non_recov_tax        NUMBER;
35   l_progress             PLS_INTEGER;
36 
37   -- Bug 7526131
38   ship_from_location_id  HZ_PARTY_SITES.LOCATION_ID%TYPE;
39   l_ship_from_location_id  HZ_PARTY_SITES.LOCATION_ID%TYPE;
40   l_ship_from_party_site_id NUMBER;
41   CURSOR get_sfli (ship_from_party_site_id IN NUMBER) IS
42 	     SELECT hzps.location_id
43              FROM hz_party_sites hzps
44              WHERE hzps.party_site_id = ship_from_party_site_id;
45 
46   -- Logging Infra
47   l_procedure_name       CONSTANT VARCHAR2(30) := 'calculate_tax';
48   l_log_msg              FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
49 
50 --Bug 7412966 : Changed the code to calculate the rec and non-rec tax in functional currency
51    CURSOR c_get_tax IS
52    SELECT trx_line_dist_id,
53           sum(decode(recoverable_flag, 'Y', rec_nrec_tax_amt_funcl_curr, 0)) as recov_tax,
54           sum(decode(recoverable_flag, 'N', rec_nrec_tax_amt_funcl_curr, 0)) as non_recov_tax
55    FROM ZX_REC_NREC_DIST_GT
56    GROUP BY trx_line_dist_id;
57 
58 BEGIN
59   l_progress := 0;
60 
61   -- Logging Infra: Setting up runtime level
62   G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
63 
64   -- Logging Infra: Procedure level
65   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
66     l_log_msg := '<-------------------->';
67     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
68     l_log_msg := l_procedure_name||'(+)';
69     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
70   END IF;
71 
72   -- delete from ZX_TRX_HEADERS_GT
73   DELETE ZX_TRX_HEADERS_GT;
74 
75   l_progress := 100;
76 
77   -- Logging Infra: Statement level
78   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
79     l_log_msg := 'Deleted ZX_TRX_HEADERS_GT';
80     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
81   END IF;
82 
83   -- get legal entity id
84   l_legal_entity_id := XLE_UTILITIES_GRP.Get_DefaultLegalContext_OU(p_tax_head_tbl(1).org_id);
85 
86   -- Logging Infra: Statement level
87   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
88     l_log_msg := 'XLE Legal Entity=' || l_legal_entity_id;
89     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
90   END IF;
91 
92   l_progress := 200;
93 
94   -- insert into ZX Headers global temp table
95   INSERT INTO ZX_TRX_HEADERS_GT (internal_organization_id,
96                                  icx_session_id,
97                                  application_id,
98                                  entity_code,
99                                  event_class_code,
100                                  event_type_code,
101                                  trx_id,
102                                  trx_date,
103                                  ledger_id,
104                                  legal_entity_id,
105                                  rounding_bill_to_party_id,
106                                  default_taxation_country,
107                                  quote_flag,
108                                  document_sub_type)
109                           VALUES(p_tax_head_tbl(1).org_id,
110                                  p_tax_head_tbl(1).icx_session_id,
111                                  201,
112                                  'REQUISITION',
113                                  'REQUISITION',
114                                  'REQ_CREATED',
115                                  p_tax_head_tbl(1).trx_id,
116                                  p_tax_head_tbl(1).trx_date,
117                                  p_tax_head_tbl(1).ledger_id,
118                                  l_legal_entity_id,
119                                  p_tax_head_tbl(1).rndg_bill_to_party_id,
120                                  p_tax_head_tbl(1).taxation_country,
121                                  'Y',
122                                  p_tax_head_tbl(1).doc_subtype);
123 
124   l_progress := 300;
125 
126   -- Logging Infra: Statement level
127   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
128     l_log_msg := 'Inserted into ZX_TRX_HEADERS_GT';
129     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
130   END IF;
131 
132   -- delete from ZX_TRANSACTION_LINES_GT
133   DELETE ZX_TRANSACTION_LINES_GT;
134 
135   l_progress := 400;
136 
137   -- Logging Infra: Statement level
138   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
139     l_log_msg := 'Deleted from ZX_TRANSACTION_LINES_GT';
140     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
141   END IF;
142 
143   -- insert into ZX Lines global temp table
144   i := 1;
145   tbl_sz := p_tax_line_tbl.count();
146 
147   LOOP
148 
149 	IF (l_ship_from_party_site_id = p_tax_line_tbl(i).ship_from_party_site_id) THEN
150 		ship_from_location_id := l_ship_from_location_id;
151 	ELSE
152 		OPEN get_sfli(p_tax_line_tbl(i).ship_from_party_site_id);
153 		FETCH get_sfli into ship_from_location_id;
154 		IF get_sfli%NOTFOUND THEN
155 			ship_from_location_id := -1;
156 			l_ship_from_location_id := -1;
157 		ELSE
158 			l_ship_from_location_id := ship_from_location_id;
159 		END IF;
160 		CLOSE get_sfli;
161 	END IF;
162 
163 	 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
164     		l_log_msg := 'ship_from_location_id: ' || ship_from_location_id;
165     		FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
166   	 END IF;
167 
168     INSERT INTO ZX_TRANSACTION_LINES_GT( application_id,
169                                  entity_code,
170                                  event_class_code,
171                                  trx_id,
172                                  trx_level_type,
173                                  trx_line_id,
174                                  line_class,
175                                  line_level_action,
176                                  trx_line_type,
177                                  trx_line_date,
178                                  trx_business_category,
179                                  line_intended_use,
180                                  user_defined_fisc_class,
181                                  line_amt_includes_tax_flag,
182                                  line_amt,
183                                  trx_line_quantity,
184                                  unit_price,
185                                  product_id,
186                                  product_fisc_classification,
187                                  product_org_id,
188                                  uom_code,
189                                  product_type,
190                                  product_code,
191                                  product_category,
192                                  ship_to_party_id,
193                                  ship_from_party_id,
194                                  bill_to_party_id,
195                                  bill_from_party_id,
196                                  ship_from_party_site_id,
197                                  bill_from_party_site_id,
198                                  ship_to_location_id,
199 				ship_from_location_id,
200                                  bill_to_location_id,
201                                  ship_third_pty_acct_id,
202                                  ship_third_pty_acct_site_id,
203                                  assessable_value,
204                                  historical_flag,
205                                  trx_line_currency_code,
206                                  trx_line_currency_conv_date,
207                                  trx_line_currency_conv_rate,
208                                  trx_line_currency_conv_type,
209                                  trx_line_mau,
210                                  trx_line_precision,
211                                  historical_tax_code_id,
212                                  input_tax_classification_code,
213                                  user_upd_det_factors_flag)
214                           VALUES(201,
215                                  'REQUISITION',
216                                  'REQUISITION',
217                                  p_tax_line_tbl(i).trx_id,
218                                  'LINE',
219                                  p_tax_line_tbl(i).trx_line_id,
220                                  'INVOICE',
221                                  'CREATE',
222                                  'ITEM',
223                                  p_tax_line_tbl(i).trx_line_date,
224                                  p_tax_line_tbl(i).trx_business_cat,
225                                  p_tax_line_tbl(i).line_intended_use,
226                                  p_tax_line_tbl(i).user_fiscal_class,
227                                  'N',
228                                  p_tax_line_tbl(i).line_amt,
229                                  p_tax_line_tbl(i).trx_line_quantity,
230                                  p_tax_line_tbl(i).unit_price,
231                                  p_tax_line_tbl(i).product_id,
232                                  p_tax_line_tbl(i).prod_fiscal_class,
233                                  p_tax_line_tbl(i).product_org_id,
234                                  p_tax_line_tbl(i).uom_code,
235                                  p_tax_line_tbl(i).product_type,
236                                  p_tax_line_tbl(i).product_code,
237                                  p_tax_line_tbl(i).product_category,
238                                  p_tax_line_tbl(i).ship_to_party_id,
239                                  p_tax_line_tbl(i).ship_from_party_id,
240                                  p_tax_line_tbl(i).bill_to_party_id,
241                                  p_tax_line_tbl(i).bill_from_party_id,
242                                  p_tax_line_tbl(i).ship_from_party_site_id,
243                                  p_tax_line_tbl(i).bill_from_party_site_id,
244                                  p_tax_line_tbl(i).ship_to_location_id,
245 				 ship_from_location_id,
246                                  p_tax_line_tbl(i).bill_to_location_id,
247                                  p_tax_line_tbl(i).ship_third_pty_id,
248                                  p_tax_line_tbl(i).ship_third_pty_site_id,
249                                  p_tax_line_tbl(i).assessable_value,
250                                  'N',
251                                  p_tax_line_tbl(i).currency_code,
252                                  p_tax_line_tbl(i).currency_date,
253                                  p_tax_line_tbl(i).currency_rate,
254                                  p_tax_line_tbl(i).currency_type,
255                                  p_tax_line_tbl(i).currency_min_unit,
256                                  p_tax_line_tbl(i).currency_precision,
257                                  p_tax_line_tbl(i).historical_tax_id,
258                                  p_tax_line_tbl(i).input_tax_class,
259                                  p_tax_line_tbl(i).user_override_flag);
260 
261     -- Logging Infra: Statement level
262     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
263       l_log_msg := 'Inserted record into ZX_TRANSACTION_LINES_GT.';
264       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
265       l_log_msg := '>>> LineId=' || p_tax_line_tbl(i).trx_line_id || '; OverrideFlag=' || p_tax_line_tbl(i).user_override_flag;
266       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
267     END IF;
268 
269     i := i + 1;
270     EXIT WHEN (i > tbl_sz);
271   END LOOP;
272 
273   l_progress := 500;
274 
275   -- delete from ZX_ITM_DISTRIBUTIONS_GT;
276   DELETE ZX_ITM_DISTRIBUTIONS_GT;
277 
278   l_progress := 600;
279 
280   -- Logging Infra: Statement level
281   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
282     l_log_msg := 'Deleted ZX_ITM_DISTRIBUTIONS_GT';
283     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
284   END IF;
285 
286   -- insert into ZX Distributions global temp table
287   i := 1;
288   tbl_sz := p_tax_dist_tbl.count();
289 
290   LOOP
291     INSERT INTO ZX_ITM_DISTRIBUTIONS_GT (application_id,
292                                          entity_code,
293                                          event_class_code,
294                                          trx_id,
295                                          trx_line_id,
296                                          trx_level_type,
297                                          trx_line_dist_id,
298                                          dist_level_action,
299                                          trx_line_dist_date,
300                                          item_dist_number,
301                                          dist_intended_use,
302                                          task_id,
303                                          award_id,
304                                          project_id,
305                                          expenditure_type,
306                                          expenditure_organization_id,
307                                          expenditure_item_date,
308                                          trx_line_dist_amt,
309                                          trx_line_dist_qty,
310                                          trx_line_quantity,
311                                          account_ccid,
312                                          historical_flag,
313                                          OVERRIDING_RECOVERY_RATE)
314                                   VALUES(201,
315                                          'REQUISITION',
316                                          'REQUISITION',
317                                          p_tax_dist_tbl(i).trx_id,
318                                          p_tax_dist_tbl(i).trx_line_id,
319                                          'LINE',
320                                          p_tax_dist_tbl(i).trx_line_dist_id,
321                                          'CREATE',
322                                          p_tax_dist_tbl(i).trx_line_dist_date,
323                                          p_tax_dist_tbl(i).item_dist_number,
324                                          p_tax_dist_tbl(i).intended_use,
325                                          p_tax_dist_tbl(i).task_id,
326                                          p_tax_dist_tbl(i).award_id,
327                                          p_tax_dist_tbl(i).project_id,
328                                          p_tax_dist_tbl(i).expenditure_type,
329                                          p_tax_dist_tbl(i).expenditure_org_id,
330                                          p_tax_dist_tbl(i).expenditure_item_date,
331                                          p_tax_dist_tbl(i).trx_line_dist_amt,
332                                          p_tax_dist_tbl(i).trx_line_dist_quantity,
333                                          p_tax_dist_tbl(i).trx_line_quantity,
334                                          p_tax_dist_tbl(i).account_ccid,
335                                          'N',
336                                          p_tax_dist_tbl(i).recovery_rate_override);
337 
338     -- Logging Infra: Statement level
339     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
340       l_log_msg := 'Inserted record into ZX_ITM_DISTRIBUTIONS_GT. DistId=' || p_tax_dist_tbl(i).trx_line_dist_id;
341       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
342     END IF;
343 
344     i := i + 1;
345     EXIT WHEN (i > tbl_sz);
346   END LOOP;
347 
348   l_progress := 700;
349 
350   -- Logging Infra: Statement level
351   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
352     l_log_msg := 'ZX calculate_tax(+)';
353     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
354   END IF;
355 
356   -- Now calculate the tax
357   zx_api_pub.calculate_tax(p_api_version => 1.0,
358                            p_init_msg_list => null,
359                            p_commit => null,
360                            p_validation_level => null,
361                            x_return_status => l_return_status,
362                            x_msg_count => l_msg_count,
363                            x_msg_data => l_msg_data);
364 
365   -- Logging Infra: Statement level
366   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
367     l_log_msg := 'ZX calculate_tax returned status=' || l_return_status;
368     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
369     l_log_msg := 'ZX calculate_tax(-)';
370     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
371   END IF;
372 
373   l_progress := 800;
374 
375   x_msg_count     := l_msg_count;
376   x_msg_data      := l_msg_data;
377   x_return_status := l_return_status;
378 
379   -- only continue if calculate_tax was successful
380   IF (x_return_status = 'S') THEN
381 
382     -- Logging Infra: Statement level
383     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
384       l_log_msg := 'ZX determine_recovery(+)';
385       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
386     END IF;
387 
388     -- Now determine the recovery
389     zx_api_pub.determine_recovery(p_api_version => 1.0,
390                                   p_init_msg_list => null,
391                                   p_commit => null,
392                                   p_validation_level => null,
393                                   x_return_status => l_return_status,
394                                   x_msg_count => l_msg_count,
395                                   x_msg_data => l_msg_data);
396 
397     -- Logging Infra: Statement level
398     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
399       l_log_msg := 'ZX determine_recovery returned status=' || l_return_status;
400       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
401       l_log_msg := 'ZX determine_recovery(-)';
402       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
403     END IF;
404 
405     l_progress := 900;
406 
407     -- update the return error-handling variables
408     x_msg_count     := x_msg_count + l_msg_count;
409     x_msg_data      := x_msg_data      || ':' || l_msg_data;
410     x_return_status := x_return_status || ':' || l_return_status;
411 
412     -- query resultant tax from global tables
413     i := 1;
414     OPEN c_get_tax;
415     LOOP
416       FETCH c_get_tax into l_dist_id, l_recov_tax, l_non_recov_tax;
417       EXIT WHEN c_get_tax%NOTFOUND;
418 
419       IF (i=1) THEN
420         -- Initialize the output tables
421         x_tax_dist_id_tbl := ICX_TBL_NUMBER(null);
422         x_tax_recov_amt_tbl := ICX_TBL_NUMBER(null);
423         x_tax_nonrecov_amt_tbl := ICX_TBL_NUMBER(null);
424       ELSE
425         x_tax_dist_id_tbl.EXTEND;
426         x_tax_recov_amt_tbl.EXTEND;
427         x_tax_nonrecov_amt_tbl.EXTEND;
428       END IF;
429 
430       x_tax_dist_id_tbl(i) := l_dist_id;
431       x_tax_recov_amt_tbl(i) := l_recov_tax;
432       x_tax_nonrecov_amt_tbl(i) := l_non_recov_tax;
433 
434       -- Logging Infra: Statement level
435       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
436         l_log_msg := 'Tax=' || l_dist_id || ':' || l_recov_tax || ':' || l_non_recov_tax;
437         FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
438       END IF;
439 
440       i := i+1;
441     END LOOP;
442     CLOSE c_get_tax;
443 
444     l_progress := 1000;
445 
446     -- Logging Infra: Statement level
447     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
448       i := i-1;
449       l_log_msg := 'Found tax for ' || i || ' distributions.';
450       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
451     END IF;
452   END IF;
453 
454   -- Logging Infra: Procedure level
455   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
456     l_log_msg := l_procedure_name||'(-)';
457     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.end', l_log_msg);
458     l_log_msg := '<-------------------->';
459     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
460   END IF;
461 
462 EXCEPTION
463   WHEN OTHERS THEN
464     RAISE_APPLICATION_ERROR(-20000,
465       'Exception at POR_TAX_PVT.calculate_tax():'
466         || ' SQLERRM= ' || SQLERRM || ' Error= ' || x_msg_data
467         || ' Progress= ' || l_progress);
468 
469 END calculate_tax;
470 
471 
472 PROCEDURE get_default_tax_attributes (p_tax_head_tbl  IN  POR_TAX_HEADER_OBJ_TBL_TYPE,
473                                       p_tax_line_tbl  IN  POR_TAX_LINE_OBJ_TBL_TYPE,
474                                       x_tax_country   OUT NOCOPY VARCHAR2,
475                                       x_doc_subtype   OUT NOCOPY VARCHAR2,
476                                       x_tax_class_tbl OUT NOCOPY ICX_TBL_VARCHAR240,
477                                       x_trx_bus_tbl   OUT NOCOPY ICX_TBL_VARCHAR240,
478                                       x_prd_fisc_tbl  OUT NOCOPY ICX_TBL_VARCHAR240,
479                                       x_prd_type_tbl  OUT NOCOPY ICX_TBL_VARCHAR240,
480                                       x_int_use_tbl   OUT NOCOPY ICX_TBL_VARCHAR240,
481                                       x_usr_fisc_tbl  OUT NOCOPY ICX_TBL_VARCHAR240,
482                                       x_ass_val_tbl   OUT NOCOPY ICX_TBL_NUMBER,
483                                       x_prd_cat_tbl   OUT NOCOPY ICX_TBL_VARCHAR240,
484                                       x_override_tbl  OUT NOCOPY ICX_TBL_FLAG,
485                                       x_line_id_tbl   OUT NOCOPY ICX_TBL_NUMBER,
486                                       x_return_status OUT NOCOPY VARCHAR2,
487                                       x_msg_data      OUT NOCOPY VARCHAR2,
488                                       x_msg_count     OUT NOCOPY NUMBER) IS
489 
490   l_legal_entity_id      PLS_INTEGER;
491   i                      PLS_INTEGER;
492   tbl_sz                 PLS_INTEGER;
493   l_msg_count            NUMBER;
494   l_return_status        VARCHAR2(60);
495   l_msg_data             VARCHAR2(480);
496   l_tax_obj_init         POR_TAX_OBJECT_TYPE;
497   l_user_override_flag   VARCHAR2(1);
498   l_progress             PLS_INTEGER;
499 
500   -- Additional Tax Attributes
501   l_line_id              NUMBER;
502   l_tax_country          VARCHAR2(2);
503   l_doc_subtype          VARCHAR2(240);
504   l_tax_class_code       VARCHAR2(30);
505   l_intended_use         VARCHAR2(240);
506   l_trx_business_cat     VARCHAR2(240);
507   l_user_fiscal_class    VARCHAR2(30);
508   l_prod_fiscal_class    VARCHAR2(240);
509   l_product_category     VARCHAR2(240);
510   l_product_type         VARCHAR2(240);
511   l_assessable_value     NUMBER;
512 
513   -- Bug 7526131
514   ship_from_location_id  HZ_PARTY_SITES.LOCATION_ID%TYPE;
515   l_ship_from_location_id  HZ_PARTY_SITES.LOCATION_ID%TYPE;
516   l_ship_from_party_site_id NUMBER;
517   CURSOR get_sfli (ship_from_party_site_id IN NUMBER) IS
518 	     SELECT hzps.location_id
519              FROM hz_party_sites hzps
520              WHERE hzps.party_site_id = ship_from_party_site_id;
521 
522   -- Logging Infra
523   l_procedure_name       CONSTANT VARCHAR2(30) := 'get_default_tax_attributes';
524   l_log_msg              FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
525 
526   CURSOR c_tax_head IS
527   SELECT default_taxation_country,
528 	 document_sub_type
529   FROM ZX_TRX_HEADERS_GT;
530 
531   CURSOR c_tax_line IS
532   SELECT TRX_LINE_ID,
533          INPUT_TAX_CLASSIFICATION_CODE,
534          TRX_BUSINESS_CATEGORY,
535          PRODUCT_FISC_CLASSIFICATION,
536          PRODUCT_TYPE,
537          LINE_INTENDED_USE,
538          USER_DEFINED_FISC_CLASS,
539          ASSESSABLE_VALUE,
540          PRODUCT_CATEGORY,
541          USER_UPD_DET_FACTORS_FLAG
542   FROM ZX_TRANSACTION_LINES_GT;
543 
544   BEGIN
545 
546   l_progress := 0;
547 
548   -- Logging Infra: Setting up runtime level
549   G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
550 
551   -- Logging Infra: Procedure level
552   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
553     l_log_msg := '<-------------------->';
554     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
555     l_log_msg := l_procedure_name||'(+)';
556     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
557   END IF;
558 
559   -- get legal entity id
560   l_legal_entity_id := XLE_UTILITIES_GRP.Get_DefaultLegalContext_OU(p_tax_head_tbl(1).org_id);
561 
562   -- Logging Infra: Statement level
563   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
564     l_log_msg := 'XLE Legal Entity=' || l_legal_entity_id;
565     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
566   END IF;
567 
568   l_progress := 100;
569 
570   -- delete from ZX_TRX_HEADERS_GT
571   DELETE ZX_TRX_HEADERS_GT;
572 
573   l_progress := 200;
574 
575   -- delete from ZX_TRANSACTION_LINES_GT
576   DELETE ZX_TRANSACTION_LINES_GT;
577 
578   l_progress := 300;
579 
580   -- insert into ZX Lines global temp table
581   i := 1;
582   tbl_sz := p_tax_line_tbl.count();
583 
584   -- Logging Infra: Statement level
585   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
586     l_log_msg := 'Input lines table size=' || tbl_sz;
587     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
588   END IF;
589 
590   LOOP
591 
592     IF (i=1) THEN
593       -- Logging Infra: Statement level
594       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
595         l_log_msg := 'Inserting into ZX_TRX_HEADERS_GT';
596         FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
597       END IF;
598 
599       -- insert into ZX Headers global temp table
600       INSERT INTO ZX_TRX_HEADERS_GT (internal_organization_id,
601                                      icx_session_id,
602                                      application_id,
603                                      entity_code,
604                                      event_class_code,
605                                      event_type_code,
606                                      trx_id,
607                                      trx_date,
608                                      ledger_id,
609                                      legal_entity_id,
610                                      rounding_bill_to_party_id,
611                                      default_taxation_country,
612                                      quote_flag,
613                                      document_sub_type)
614                           VALUES(p_tax_head_tbl(1).org_id,
615                                  p_tax_head_tbl(1).icx_session_id,
616                                  201,
617                                  'REQUISITION',
618                                  'REQUISITION',
619                                  'REQ_CREATED',
620                                  p_tax_head_tbl(1).trx_id,
621                                  p_tax_head_tbl(1).trx_date,
622                                  p_tax_head_tbl(1).ledger_id,
623                                  l_legal_entity_id,
624                                  p_tax_head_tbl(1).rndg_bill_to_party_id,
625                                  NULL,
626                                  'Y',
627                                  NULL);
628     END IF;
629 
630 
631     -- Logging Infra: Statement level
632     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
633       l_log_msg := 'Inserting into ZX_TRANSACTION_LINES_GT';
634       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
635       l_log_msg := '--> Defaulting attribute is ship_to_loc_org_id=' || p_tax_line_tbl(i).product_org_id;
636       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
637     END IF;
638 
639 	IF (l_ship_from_party_site_id = p_tax_line_tbl(i).ship_from_party_site_id) THEN
640 		ship_from_location_id := l_ship_from_location_id;
641 	ELSE
642 		OPEN get_sfli(p_tax_line_tbl(i).ship_from_party_site_id);
643 		FETCH get_sfli into ship_from_location_id;
644 		IF get_sfli%NOTFOUND THEN
645 			ship_from_location_id := -1;
646 			l_ship_from_location_id := -1;
647 		ELSE
648 			l_ship_from_location_id := ship_from_location_id;
649 		END IF;
650 		CLOSE get_sfli;
651 	END IF;
652 
653 	 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
654     		l_log_msg := 'ship_from_location_id: ' || ship_from_location_id;
655     		FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
656   	 END IF;
657 
658     INSERT INTO ZX_TRANSACTION_LINES_GT(application_id,
659                                         entity_code,
660                                         event_class_code,
661                                         trx_id,
662                                         trx_level_type,
663                                         trx_line_id,
664                                         line_class,
665                                         line_level_action,
666                                         trx_line_type,
667                                         trx_line_date,
668                                         trx_business_category,
669                                         line_intended_use,
670                                         user_defined_fisc_class,
671                                         line_amt_includes_tax_flag,
672                                         line_amt,
673                                         trx_line_quantity,
674                                         unit_price,
675                                         product_id,
676                                         product_fisc_classification,
677                                         product_org_id,
678                                         uom_code,
679                                         product_type,
680                                         product_code,
681                                         product_category,
682                                         ship_to_party_id,
683                                         ship_from_party_id,
684                                         bill_to_party_id,
685                                         bill_from_party_id,
686                                         ship_from_party_site_id,
687                                         bill_from_party_site_id,
688                                         ship_to_location_id,
689 					ship_from_location_id,
690                                         bill_to_location_id,
691                                         ship_third_pty_acct_id,
692                                         ship_third_pty_acct_site_id,
693                                         assessable_value,
694                                         historical_flag,
695                                         trx_line_currency_code,
696                                         trx_line_currency_conv_date,
697                                         trx_line_currency_conv_rate,
698                                         trx_line_currency_conv_type,
699                                         trx_line_mau,
700                                         trx_line_precision,
701                                         historical_tax_code_id,
702                                         input_tax_classification_code,
703                                         user_upd_det_factors_flag,
704                                         DEFAULTING_ATTRIBUTE1)
705                           VALUES(201,
706                                  'REQUISITION',
707                                  'REQUISITION',
708                                  p_tax_line_tbl(i).trx_id,
709                                  'LINE',
710                                  p_tax_line_tbl(i).trx_line_id,
711                                  'INVOICE',
712                                  nvl(p_tax_line_tbl(i).tax_attribute_update_code, 'CREATE'),
713                                  'ITEM',
714                                  p_tax_line_tbl(i).trx_line_date,
715                                  NULL,
716                                  NULL,
717                                  NULL,
718                                  'N',
719                                  p_tax_line_tbl(i).line_amt,
720                                  p_tax_line_tbl(i).trx_line_quantity,
721                                  p_tax_line_tbl(i).unit_price,
722                                  p_tax_line_tbl(i).product_id,
723                                  NULL,
724                                  p_tax_line_tbl(i).product_org_id,
725                                  p_tax_line_tbl(i).uom_code,
726                                  NULL,
727                                  p_tax_line_tbl(i).product_code,
728                                  NULL,
729                                  p_tax_line_tbl(i).ship_to_party_id,
730                                  p_tax_line_tbl(i).ship_from_party_id,
731                                  p_tax_line_tbl(i).bill_to_party_id,
732                                  p_tax_line_tbl(i).bill_from_party_id,
733                                  p_tax_line_tbl(i).ship_from_party_site_id,
734                                  p_tax_line_tbl(i).bill_from_party_site_id,
735                                  p_tax_line_tbl(i).ship_to_location_id,
736 				 ship_from_location_id,
737                                  p_tax_line_tbl(i).bill_to_location_id,
738                                  p_tax_line_tbl(i).ship_third_pty_id,
739                                  p_tax_line_tbl(i).ship_third_pty_site_id,
740                                  NULL,
741                                  'N',
742                                  p_tax_line_tbl(i).currency_code,
743                                  p_tax_line_tbl(i).currency_date,
744                                  p_tax_line_tbl(i).currency_rate,
745                                  p_tax_line_tbl(i).currency_type,
746                                  p_tax_line_tbl(i).currency_min_unit,
747                                  p_tax_line_tbl(i).currency_precision,
748                                  p_tax_line_tbl(i).historical_tax_id,
749                                  NULL,
750                                  NULL,
751                                  p_tax_line_tbl(i).product_org_id);
752     i := i + 1;
753     EXIT WHEN (i > tbl_sz);
754   END LOOP;
755 
756   l_progress := 400;
757 
758   -- Logging Infra: Statement level
759   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
760     l_log_msg := 'ZX get_default_tax_det_attribs(+)';
761     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
762   END IF;
763 
764   -- Now get the default tax attibutes
765   zx_api_pub.get_default_tax_det_attribs(p_api_version => 1.0,
766                                          p_init_msg_list => null,
767                                          p_commit => null,
768                                          p_validation_level => null,
769                                          x_return_status => l_return_status,
770                                          x_msg_count => l_msg_count,
771                                          x_msg_data => l_msg_data);
772 
773   l_progress := 500;
774 
775   -- Logging Infra: Statement level
776   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
777     l_log_msg := 'ZX get_default_tax_det_attribs returned status=' || l_return_status;
778     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
779     l_log_msg := 'ZX get_default_tax_det_attribs(-)';
780     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
781   END IF;
782 
783   x_msg_count     := l_msg_count;
784   x_msg_data      := l_msg_data;
785   x_return_status := l_return_status;
786 
787   -- Query the tax header attributes from the global temp table
788   OPEN  c_tax_head;
789   FETCH c_tax_head into x_tax_country, x_doc_subtype;
790   CLOSE c_tax_head;
791 
792   l_progress := 600;
793 
794   -- Logging Infra: Statement level
795   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
796     l_log_msg := 'DEFAULT: tax_country=' || x_tax_country;
797     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
798     l_log_msg := 'DEFAULT: doc_subtype=' || x_doc_subtype;
799     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
800   END IF;
801 
802   -- Query the tax line attributes from the global temp table
803   i := 1;
804   OPEN c_tax_line;
805   LOOP
806     FETCH c_tax_line into l_line_id,
807                           l_tax_class_code,
808                           l_trx_business_cat,
809                           l_prod_fiscal_class,
810                           l_product_type,
811                           l_intended_use,
812                           l_user_fiscal_class,
813                           l_assessable_value,
814                           l_product_category,
815                           l_user_override_flag;
816 
817     EXIT WHEN c_tax_line%NOTFOUND;
818 
819     -- Logging Infra: Statement level
820     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
821       l_log_msg := 'DEFAULT: req line id=' || l_line_id;
822       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
823       l_log_msg := 'DEFAULT: business_cat=' || l_trx_business_cat;
824       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
825       l_log_msg := 'DEFAULT: intended_use=' || l_intended_use;
826       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
827       l_log_msg := 'DEFAULT: user_fisc_class=' || l_user_fiscal_class;
828       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
829       l_log_msg := 'DEFAULT: prod_fisc_class=' || l_prod_fiscal_class;
830       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
831       l_log_msg := 'DEFAULT: prod_category=' || l_product_category;
832       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
833       l_log_msg := 'DEFAULT: prod_type=' || l_product_type;
834       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
835       l_log_msg := 'DEFAULT: assessable_value=' || l_assessable_value;
836       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
837       l_log_msg := 'DEFAULT: tax_classification=' || l_tax_class_code;
838       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
839       l_log_msg := 'DEFAULT: override_flag=' || l_user_override_flag;
840       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
841     END IF;
842 
843     IF (i=1) THEN
844       -- Initialize the tables
845       x_line_id_tbl   := ICX_TBL_NUMBER(null);
846       x_tax_class_tbl := ICX_TBL_VARCHAR240(null);
847       x_trx_bus_tbl   := ICX_TBL_VARCHAR240(null);
848       x_prd_fisc_tbl  := ICX_TBL_VARCHAR240(null);
849       x_prd_type_tbl  := ICX_TBL_VARCHAR240(null);
850       x_int_use_tbl   := ICX_TBL_VARCHAR240(null);
851       x_usr_fisc_tbl  := ICX_TBL_VARCHAR240(null);
852       x_ass_val_tbl   := ICX_TBL_NUMBER(null);
853       x_prd_cat_tbl   := ICX_TBL_VARCHAR240(null);
854       x_override_tbl  := ICX_TBL_FLAG(null);
855     ELSE
856       -- extend the tables
857       x_line_id_tbl.EXTEND;
858       x_tax_class_tbl.EXTEND;
859       x_trx_bus_tbl.EXTEND;
860       x_prd_fisc_tbl.EXTEND;
861       x_prd_type_tbl.EXTEND;
862       x_int_use_tbl.EXTEND;
863       x_usr_fisc_tbl.EXTEND;
864       x_ass_val_tbl.EXTEND;
865       x_prd_cat_tbl.EXTEND;
866       x_override_tbl.EXTEND;
867     END IF;
868 
869     x_line_id_tbl(i)   := l_line_id;
870     x_tax_class_tbl(i) := l_tax_class_code;
871     x_trx_bus_tbl(i)   := l_trx_business_cat;
872     x_prd_fisc_tbl(i)  := l_prod_fiscal_class;
873     x_prd_type_tbl(i)  := l_product_type;
874     x_int_use_tbl(i)   := l_intended_use;
875     x_usr_fisc_tbl(i)  := l_user_fiscal_class;
876     x_ass_val_tbl(i)   := l_assessable_value;
877     x_prd_cat_tbl(i)   := l_product_category;
878     x_override_tbl(i)  := l_user_override_flag;
879 
880     i := i + 1;
881   END LOOP;
882   CLOSE c_tax_line;
883 
884   -- Logging Infra: Procedure level
885   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
886     l_log_msg := l_procedure_name||'(-)';
887     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
888     l_log_msg := '<-------------------->';
889     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
890   END IF;
891 
892 EXCEPTION
893   WHEN OTHERS THEN
894     RAISE_APPLICATION_ERROR(-20000,
895       'Exception at POR_TAX_PVT.get_default_tax_attributes():'
896         || ' SQLERRM= ' || SQLERRM || ' Error= ' || x_msg_data
897         || ' Progress= ' || l_progress);
898 
899 END get_default_tax_attributes;
900 
901 
902 
903 PROCEDURE delete_all_tax_attr (p_org_id         IN  NUMBER,
904                                p_trx_id         IN  NUMBER,
905                                x_return_status  OUT NOCOPY VARCHAR2,
906                                x_msg_data       OUT NOCOPY VARCHAR2,
907                                x_msg_count      OUT NOCOPY NUMBER) IS
908 
909 PRAGMA AUTONOMOUS_TRANSACTION;
910 
911   l_transaction_rec      ZX_API_PUB.transaction_rec_type;
912   l_msg_count            NUMBER;
913   l_return_status        VARCHAR2(60);
914   l_msg_data             VARCHAR2(480);
915   l_progress             PLS_INTEGER;
916 
917   -- Logging Infra
918   l_procedure_name       CONSTANT VARCHAR2(30) := 'delete_all_tax_lines';
919   l_log_msg              FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
920 
921 BEGIN
922 
923    l_progress := 0;
924 
925    -- Logging Infra: Setting up runtime level
926    G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
927 
928    -- Logging Infra: Procedure level
929    IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
930      l_log_msg := '<-------------------->';
931      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
932      l_log_msg := l_procedure_name||'(+)';
933      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
934    END IF;
935 
936    -- populate l_transaction_rec
937    l_transaction_rec.internal_organization_id := p_org_id;
938    l_transaction_rec.application_id := 201;
939    l_transaction_rec.entity_code := 'REQUISITION';
940    l_transaction_rec.event_class_code := 'REQUISITION';
941    l_transaction_rec.event_type_code := 'REQ_DELETED';
942    l_transaction_rec.trx_id := p_trx_id;
943 
944    -- Logging Infra: Statement level
945    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
946      l_log_msg := 'Deleting record for trx_id=' || p_trx_id;
947      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
948      l_log_msg := 'ZX global_document_update(+)';
949      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
950    END IF;
951 
952    -- this will delete all tax attribute records for this requisition
953    zx_api_pub.global_document_update(p_api_version => 1.0,
954                                      p_init_msg_list => null,
955                                      p_commit => null,
956                                      p_validation_level => null,
957                                      x_return_status => l_return_status,
958                                      x_msg_count => l_msg_count,
959                                      x_msg_data => l_msg_data,
960 	                             p_transaction_rec => l_transaction_rec);
961 
962    l_progress := 100;
963 
964    -- Logging Infra: Statement level
965    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
966      l_log_msg := 'ZX global_document_update returned status=' || l_return_status;
967      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
968      l_log_msg := 'ZX global_document_update(-)';
969      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
970    END IF;
971 
972    x_msg_count     := l_msg_count;
973    x_msg_data      := l_msg_data;
974    x_return_status := l_return_status;
975 
976    -- Logging Infra: Procedure level
977    IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
978      l_log_msg := l_procedure_name||'(-)';
979      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
980      l_log_msg := '<-------------------->';
981      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.end', l_log_msg);
982    END IF;
983 
984    COMMIT;
985 
986 EXCEPTION
987   WHEN OTHERS THEN
988     -- rollback
989     ROLLBACK;
990     -- raise exception for java layer
991     RAISE_APPLICATION_ERROR(-20000,
992       'Exception at POR_TAX_PVT.delete_all_tax_attr():'
993         || ' SQLERRM= ' || SQLERRM || ' Error= ' || x_msg_data
994         || ' Progress= ' || l_progress || '; ROLLBACK Complete.');
995 
996 END delete_all_tax_attr;
997 
998 
999 
1000 
1001 PROCEDURE insert_line_det_attr (p_tax_info_tbl  IN  POR_INSERT_TAX_OBJ_TBL_TYPE,
1002                                 x_return_status OUT NOCOPY VARCHAR2,
1003                                 x_msg_data      OUT NOCOPY VARCHAR2,
1004                                 x_msg_count     OUT NOCOPY NUMBER ) IS
1005 
1006 PRAGMA AUTONOMOUS_TRANSACTION;
1007 
1008   l_transaction_rec      ZX_API_PUB.transaction_rec_type;
1009   l_transaction_line_rec ZX_API_PUB.transaction_line_rec_type;
1010 
1011   l_legal_entity_id      PLS_INTEGER;
1012   i                      PLS_INTEGER;
1013   tbl_sz                 PLS_INTEGER;
1014   l_msg_count            NUMBER;
1015   l_return_status        VARCHAR2(60);
1016   l_msg_data             VARCHAR2(480);
1017   l_progress             PLS_INTEGER;
1018   -- Bug 7526131
1019   ship_from_location_id  HZ_PARTY_SITES.LOCATION_ID%TYPE;
1020   l_ship_from_location_id  HZ_PARTY_SITES.LOCATION_ID%TYPE;
1021   l_ship_from_party_site_id NUMBER;
1022   CURSOR get_sfli (ship_from_party_site_id IN NUMBER) IS
1023 	     SELECT hzps.location_id
1024              FROM hz_party_sites hzps
1025              WHERE hzps.party_site_id = ship_from_party_site_id;
1026 
1027   -- Logging Infra
1028   l_procedure_name       CONSTANT VARCHAR2(30) := 'insert_line_det_attr';
1029   l_log_msg              FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
1030 
1031 BEGIN
1032 
1033    l_progress := 0;
1034 
1035    -- Logging Infra: Setting up runtime level
1036    G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1037 
1038    -- Logging Infra: Procedure level
1039    IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1040      l_log_msg := '<-------------------->';
1041      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
1042      l_log_msg := l_procedure_name||'(+)';
1043      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
1044    END IF;
1045 
1046    -- get legal entity id
1047    l_legal_entity_id := XLE_UTILITIES_GRP.Get_DefaultLegalContext_OU(p_tax_info_tbl(1).org_id);
1048 
1049    -- Logging Infra: Statement level
1050    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1051      l_log_msg := 'XLE Legal Entity=' || l_legal_entity_id;
1052      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1053    END IF;
1054 
1055    l_progress := 50;
1056 
1057    -- populate l_transaction_rec
1058    l_transaction_rec.internal_organization_id := p_tax_info_tbl(1).org_id;
1059    l_transaction_rec.application_id := 201;
1060    l_transaction_rec.entity_code := 'REQUISITION';
1061    l_transaction_rec.event_class_code := 'REQUISITION';
1062    l_transaction_rec.event_type_code := 'REQ_DELETED';
1063    l_transaction_rec.trx_id := p_tax_info_tbl(1).trx_id;
1064 
1065    -- Logging Infra: Statement level
1066    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1067      l_log_msg := 'Deleting record for trx_id=' || p_tax_info_tbl(1).trx_id;
1068      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1069      l_log_msg := 'ZX global_document_update(+)';
1070      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1071    END IF;
1072 
1073    -- this will delete all tax attribute records for this requisition
1074    zx_api_pub.global_document_update(p_api_version => 1.0,
1075                                      p_init_msg_list => null,
1076                                      p_commit => null,
1077                                      p_validation_level => null,
1078                                      x_return_status => l_return_status,
1079                                      x_msg_count => l_msg_count,
1080                                      x_msg_data => l_msg_data,
1081 	                             p_transaction_rec => l_transaction_rec);
1082 
1083    l_progress := 100;
1084 
1085    -- Logging Infra: Statement level
1086    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1087      l_log_msg := 'ZX global_document_update returned status=' || l_return_status;
1088      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1089      l_log_msg := 'ZX global_document_update(-)';
1090      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1091    END IF;
1092 
1093    x_msg_count     := l_msg_count;
1094    x_msg_data      := l_msg_data;
1095    x_return_status := l_return_status;
1096 
1097    -- loop through and insert reqLine data into EBTax global plsql table
1098    i := 1;
1099    tbl_sz := p_tax_info_tbl.count();
1100 
1101    LOOP
1102              -- Bug 7526131: Getting ship_from_location_id
1103 
1104 	IF (l_ship_from_party_site_id = p_tax_info_tbl(i).ship_from_party_site_id) THEN
1105 		ship_from_location_id := l_ship_from_location_id;
1106 	ELSE
1107 		OPEN get_sfli(p_tax_info_tbl(i).ship_from_party_site_id);
1108 		FETCH get_sfli into ship_from_location_id;
1109 		IF get_sfli%NOTFOUND THEN
1110 			ship_from_location_id := -1;
1111 			l_ship_from_location_id := -1;
1112 		ELSE
1113 			l_ship_from_location_id := ship_from_location_id;
1114 		END IF;
1115 		CLOSE get_sfli;
1116 	END IF;
1117 
1118 	 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1119     		l_log_msg := 'ship_from_location_id: ' || ship_from_location_id;
1120     		FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1121   	 END IF;
1122 
1123              -- EBTax initialization procedure
1124 	     ZX_GLOBAL_STRUCTURES_PKG.INIT_TRX_LINE_DIST_TBL(i);
1125 
1126              ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(i) :=
1127 	           p_tax_info_tbl(i).org_id;
1128 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(i) :=
1129 	           201;
1130 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ENTITY_CODE(i) :=
1131 	           'REQUISITION';
1132 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_CLASS_CODE(i) :=
1133 	           'REQUISITION';
1134 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_TYPE_CODE(i) :=
1135 	           'REQ_CREATED';
1136 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_ID(i) :=
1137 	           p_tax_info_tbl(i).trx_id;
1138 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(i) :=
1139 	           p_tax_info_tbl(i).trx_date;
1140 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEDGER_ID(i) :=
1141 	           p_tax_info_tbl(i).ledger_id;
1142 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_CURRENCY_CODE(i) :=
1143 	           p_tax_info_tbl(i).currency_code;
1144 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(i) :=
1145 	           p_tax_info_tbl(i).currency_date;
1146 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(i) :=
1147 	           p_tax_info_tbl(i).currency_rate;
1148 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(i) :=
1149 	           p_tax_info_tbl(i).currency_type;
1150 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.MINIMUM_ACCOUNTABLE_UNIT(i) :=
1151 	           p_tax_info_tbl(i).currency_min_unit;
1152 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRECISION(i) :=
1153 	           p_tax_info_tbl(i).currency_precision;
1154 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LINE_PRECISION(i) :=
1155 	           p_tax_info_tbl(i).currency_precision;
1156 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(i) :=
1157 	           l_legal_entity_id;
1158 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DOCUMENT_SUB_TYPE(i) :=
1159 	           p_tax_info_tbl(i).doc_subtype;
1160 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(i) :=
1161 	           p_tax_info_tbl(i).rndg_bill_to_party_id;
1162 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(i) :=
1163 	           p_tax_info_tbl(i).tax_country;
1164 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_REPORTING_FLAG(i) :=
1165 	           'N';
1166 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INPUT_TAX_CLASSIFICATION_CODE(i) :=
1167 	           p_tax_info_tbl(i).input_tax_class;
1168 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.HISTORICAL_FLAG(i) :=
1169 	           'N';
1170 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LEVEL_TYPE(i) :=
1171 	           'LINE';
1172 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LINE_ID(i) :=
1173 	           p_tax_info_tbl(i).trx_line_id;
1174 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_CLASS(i) :=
1175 	           'INVOICE';
1176 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_LEVEL_ACTION(i) :=
1177 	           'CREATE';
1178 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LINE_TYPE(i) :=
1179 	           'ITEM';
1180 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LINE_DATE(i) :=
1181 	           p_tax_info_tbl(i).trx_line_date;
1182 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(i) :=
1183 	           p_tax_info_tbl(i).trx_business_cat;
1184 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_INTENDED_USE(i) :=
1185 	           p_tax_info_tbl(i).line_intended_use;
1186 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(i) :=
1187 	           p_tax_info_tbl(i).user_fiscal_class;
1188 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_AMT_INCLUDES_TAX_FLAG(i) :=
1189 	           'N';
1190 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_AMT(i) :=
1191 	           p_tax_info_tbl(i).line_amt;
1192 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LINE_QUANTITY(i) :=
1193 	           p_tax_info_tbl(i).trx_line_quantity;
1194 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.UNIT_PRICE(i) :=
1195 	           p_tax_info_tbl(i).unit_price;
1196 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EXEMPTION_CONTROL_FLAG(i) :=
1197 	           'S';
1198 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_ID(i) :=
1199 	           p_tax_info_tbl(i).product_id;
1200 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(i) :=
1201 	           p_tax_info_tbl(i).prod_fiscal_class;
1202 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_ORG_ID(i) :=
1203 	           p_tax_info_tbl(i).product_org_id;
1204 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.UOM_CODE(i) :=
1205 	           p_tax_info_tbl(i).uom_code;
1206 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_TYPE(i) :=
1207 	           p_tax_info_tbl(i).product_type;
1208 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CODE(i) :=
1209 	           p_tax_info_tbl(i).product_code;
1210 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(i) :=
1211 	           p_tax_info_tbl(i).product_category;
1212 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_TO_PARTY_ID(i) :=
1213 	           p_tax_info_tbl(i).ship_to_party_id;
1214 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_FROM_PARTY_ID(i) :=
1215 	           p_tax_info_tbl(i).ship_from_party_id;
1216 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.BILL_TO_PARTY_ID(i) :=
1217 	           p_tax_info_tbl(i).bill_to_party_id;
1218 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.BILL_FROM_PARTY_ID(i) :=
1219 	           p_tax_info_tbl(i).bill_from_party_id;
1220 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_FROM_PARTY_SITE_ID(i) :=
1221 	           p_tax_info_tbl(i).ship_from_party_site_id;
1222 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.BILL_FROM_PARTY_SITE_ID(i) :=
1223 	           p_tax_info_tbl(i).bill_from_party_site_id;
1224 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_TO_LOCATION_ID(i) :=
1225 	           p_tax_info_tbl(i).ship_to_location_id;
1226 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.BILL_TO_LOCATION_ID(i) :=
1227 	           p_tax_info_tbl(i).bill_to_location_id;
1228 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_ID(i) :=
1229 	           p_tax_info_tbl(i).ship_third_pty_id;
1230 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_SITE_ID(i) :=
1231 	           p_tax_info_tbl(i).ship_third_pty_site_id;
1232 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ASSESSABLE_VALUE(i) :=
1233 	           p_tax_info_tbl(i).assessable_value;
1234 	     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.HISTORICAL_TAX_CODE_ID(i) :=
1235 	           p_tax_info_tbl(i).historical_tax_id;
1236              ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.USER_UPD_DET_FACTORS_FLAG(i) :=
1237 	           p_tax_info_tbl(i).user_override;
1238 	    -- Bug 7526131: populating ship_from_location_id
1239              ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_FROM_LOCATION_ID(i) :=
1240 	           ship_from_location_id;
1241 
1242              -- Logging Infra: Statement level
1243              IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1244                l_log_msg := 'Inserted record into ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl for trx_line_id=' || p_tax_info_tbl(1).trx_line_id;
1245                FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1246              END IF;
1247 
1248      i := i + 1;
1249      EXIT WHEN (i > tbl_sz);
1250    END LOOP;
1251 
1252    l_progress := 200;
1253 
1254    -- populate l_transaction_rec as all NULLs as there are no duplicates
1255    l_transaction_line_rec.internal_organization_id := NULL;
1256    l_transaction_line_rec.application_id := NULL;
1257    l_transaction_line_rec.entity_code := NULL;
1258    l_transaction_line_rec.event_class_code := NULL;
1259    l_transaction_line_rec.event_type_code := NULL;
1260    l_transaction_line_rec.trx_id := NULL;
1261 
1262    -- Logging Infra: Statement level
1263    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1264      l_log_msg := 'ZX insert_line_det_factors(+)';
1265      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1266    END IF;
1267 
1268    -- this will insert the tax determining factors into the EBTax tables
1269    zx_api_pub.insert_line_det_factors(p_api_version => 1.0,
1270                                       p_init_msg_list => null,
1271                                       p_commit => null,
1272                                       p_validation_level => null,
1273                                       x_return_status => l_return_status,
1274                                       x_msg_count => l_msg_count,
1275                                       x_msg_data => l_msg_data);
1276 
1277    l_progress := 300;
1278 
1279    -- Logging Infra: Statement level
1280    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1281      l_log_msg := 'ZX insert_line_det_factors returned status=' || l_return_status;
1282      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1283      l_log_msg := 'ZX insert_line_det_factors(-)';
1284      FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1285    END IF;
1286 
1287    x_msg_count     := x_msg_count + l_msg_count;
1288    x_msg_data      := x_msg_data      || ':' || l_msg_data;
1289    x_return_status := x_return_status || ':' || l_return_status;
1290 
1291    -- Logging Infra: Procedure level
1292    IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1293      l_log_msg := l_procedure_name||'(-)';
1294      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
1295      l_log_msg := '<-------------------->';
1296      FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.end', l_log_msg);
1297    END IF;
1298 
1299   COMMIT;
1300 
1301 EXCEPTION
1302   WHEN OTHERS THEN
1303     -- rollback
1304     ROLLBACK;
1305     -- raise exception for java layer
1306     RAISE_APPLICATION_ERROR(-20000,
1307       'Exception at POR_TAX_PVT.insert_line_det_attr():'
1308         || ' SQLERRM= ' || SQLERRM || ' Error= ' || x_msg_data
1309         || ' Progress= ' || l_progress || '; ROLLBACK Complete.');
1310 END insert_line_det_attr;
1311 
1312 
1313 PROCEDURE copy_tax_attributes (p_tax_copy_tbl   IN POR_TAX_COPY_OBJ_TBL_TYPE,
1314                                x_return_status  OUT NOCOPY VARCHAR2,
1315                                x_msg_data       OUT NOCOPY VARCHAR2,
1316                                x_msg_count      OUT NOCOPY NUMBER) IS
1317 
1318 PRAGMA AUTONOMOUS_TRANSACTION;
1319 
1320   l_legal_entity_id      PLS_INTEGER;
1321   i                      PLS_INTEGER;
1322   tbl_sz                 PLS_INTEGER;
1323   l_msg_count            NUMBER;
1324   l_return_status        VARCHAR2(60);
1325   l_msg_data             VARCHAR2(480);
1326   l_progress             PLS_INTEGER;
1327 
1328   -- Logging Infra
1329   l_procedure_name       CONSTANT VARCHAR2(30) := 'copy_tax_attributes';
1330   l_log_msg              FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
1331 
1332 BEGIN
1333 
1334   l_progress := 0;
1335 
1336   -- Logging Infra: Setting up runtime level
1337   G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1338 
1339   -- Logging Infra: Procedure level
1340   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1341     l_log_msg := '<-------------------->';
1342     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
1343     l_log_msg := l_procedure_name||'(+)';
1344     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
1345   END IF;
1346 
1347   -- get legal entity id
1348   l_legal_entity_id := XLE_UTILITIES_GRP.Get_DefaultLegalContext_OU(p_tax_copy_tbl(1).org_id);
1349 
1350   -- Logging Infra: Statement level
1351   IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1352     l_log_msg := 'XLE Legal Entity=' || l_legal_entity_id;
1353     FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1354   END IF;
1355 
1356   l_progress := 50;
1357 
1358   -- loop through and insert reqLine data into EBTax global plsql table
1359   i := 1;
1360   tbl_sz := p_tax_copy_tbl.count();
1361 
1362   LOOP
1363     -- EBTax initialization procedure
1364     ZX_GLOBAL_STRUCTURES_PKG.INIT_TRX_LINE_DIST_TBL(i);
1365 
1366     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(i) :=
1367 	           p_tax_copy_tbl(i).org_id;
1368     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(i) :=
1369 	           201;
1370     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ENTITY_CODE(i) :=
1371 	           'REQUISITION';
1372     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_CLASS_CODE(i) :=
1373 	           'REQUISITION';
1374     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_TYPE_CODE(i) :=
1375 	           'REQ_CREATED';
1376     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_ID(i) :=
1377 	           p_tax_copy_tbl(i).trx_id;
1378     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(i) :=
1379 	           p_tax_copy_tbl(i).trx_date;
1380     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEDGER_ID(i) :=
1381 	           p_tax_copy_tbl(i).ledger_id;
1382     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(i) :=
1383 	           l_legal_entity_id;
1384     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LEVEL_TYPE(i) :=
1385                    'LINE';
1386     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_LEVEL_ACTION(i) :=
1387                    'CREATE';
1388     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LINE_ID(i) :=
1389 	           p_tax_copy_tbl(i).trx_line_id;
1390     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LINE_AMT(i) :=
1391 	           p_tax_copy_tbl(i).line_amt;
1392     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_LINE_DATE(i) :=
1393 	           p_tax_copy_tbl(i).trx_line_date;
1394     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SOURCE_APPLICATION_ID(i) :=
1395 	           201;
1396     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SOURCE_ENTITY_CODE(i) :=
1397                    'REQUISITION';
1398     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SOURCE_EVENT_CLASS_CODE(i) :=
1399                    'REQUISITION';
1400     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SOURCE_TRX_ID(i) :=
1401 	           p_tax_copy_tbl(i).source_trx_id;
1402     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SOURCE_LINE_ID(i) :=
1403 	           p_tax_copy_tbl(i).source_line_id;
1404     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SOURCE_TRX_LEVEL_TYPE(i) :=
1405                    'LINE';
1406     ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(i) :=
1407                    'N';
1408 
1409     -- Logging Infra: Procedure level
1410     IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1411       l_log_msg := 'Inserted record into ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl';
1412       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1413       l_log_msg := '--> source id=' || p_tax_copy_tbl(i).source_trx_id || ':' || p_tax_copy_tbl(i).source_line_id;
1414       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1415       l_log_msg := '--> dest id=' || p_tax_copy_tbl(i).trx_id || ':' || p_tax_copy_tbl(i).trx_line_id;
1416       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_procedure_name, l_log_msg);
1417     END IF;
1418 
1419     i := i + 1;
1420     EXIT WHEN (i > tbl_sz);
1421   END LOOP;
1422 
1423   l_progress := 100;
1424 
1425   -- this will insert the tax determining factors into the EBTax tables
1426   zx_api_pub.copy_insert_line_det_factors(p_api_version => 1.0,
1427                                           p_init_msg_list => null,
1428                                           p_commit => null,
1429                                           p_validation_level => null,
1430                                           x_return_status => l_return_status,
1431                                           x_msg_count => l_msg_count,
1432                                           x_msg_data => l_msg_data);
1433 
1434   l_progress := 200;
1435 
1436   x_msg_count     := l_msg_count;
1437   x_msg_data      := l_msg_data;
1438   x_return_status := l_return_status;
1439 
1440   -- Logging Infra: Procedure level
1441   IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1442     l_log_msg := l_procedure_name||'(-)';
1443     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name, l_log_msg);
1444     l_log_msg := '<-------------------->';
1445     FND_LOG.STRING(G_LEVEL_PROCEDURE, G_MODULE_NAME||l_procedure_name||'.begin', l_log_msg);
1446   END IF;
1447 
1448   COMMIT;
1449 
1450 EXCEPTION
1451   WHEN OTHERS THEN
1452     -- rollback
1453     ROLLBACK;
1454     -- raise exception for java layer
1455     RAISE_APPLICATION_ERROR(-20000,
1456       'Exception at POR_TAX_PVT.copy_tax_attributes():'
1457         || ' SQLERRM= ' || SQLERRM || ' Error= ' || x_msg_data
1458         || ' Progress= ' || l_progress || '; ROLLBACK Complete.');
1459 
1460 END copy_tax_attributes;
1461 
1462 
1463 END POR_TAX_PVT;