DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_NEW_SERVICES_PKG

Source


1 PACKAGE BODY ZX_NEW_SERVICES_PKG AS
2 /* $Header: zxifnewsrvcspubb.pls 120.13.12020000.4 2013/03/15 10:12:09 ssohal ship $ */
3 
4 /* ======================================================================*
5  | Global Data Types                                                     |
6  * ======================================================================*/
7 
8 G_PKG_NAME          CONSTANT VARCHAR2(30) := 'ZX_NEW_SERVICES_PKG';
9 G_MSG_UERROR        CONSTANT NUMBER       := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
10 G_MSG_ERROR         CONSTANT NUMBER       := FND_MSG_PUB.G_MSG_LVL_ERROR;
11 G_MSG_SUCCESS       CONSTANT NUMBER       := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
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 G_LINES_PER_FETCH   CONSTANT NUMBER       := 1000;
16 
17 G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER       := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
18 G_LEVEL_UNEXPECTED      CONSTANT NUMBER       := FND_LOG.LEVEL_UNEXPECTED;
19 G_LEVEL_ERROR           CONSTANT NUMBER       := FND_LOG.LEVEL_ERROR;
20 G_LEVEL_EXCEPTION       CONSTANT NUMBER       := FND_LOG.LEVEL_EXCEPTION;
21 G_LEVEL_EVENT           CONSTANT NUMBER       := FND_LOG.LEVEL_EVENT;
22 G_LEVEL_PROCEDURE       CONSTANT NUMBER       := FND_LOG.LEVEL_PROCEDURE;
23 G_LEVEL_STATEMENT       CONSTANT NUMBER       := FND_LOG.LEVEL_STATEMENT;
24 G_MODULE_NAME           CONSTANT VARCHAR2(30) := 'ZX.PLSQL.ZX_NEW_APIS_PUB.';
25 
26 TYPE VARCHAR2_tbl_type is TABLE OF VARCHAR2(1)
27 INDEX BY BINARY_INTEGER;
28 
29 TYPE VARCHAR2_30_tbl_type is TABLE OF VARCHAR2(30)
30 INDEX BY BINARY_INTEGER;
31 
32 TYPE NUMBER_15_tbl_type is TABLE OF NUMBER(15)
33 INDEX BY BINARY_INTEGER;
34 
35 TYPE NUMBER_tbl_type is TABLE OF NUMBER
36 INDEX BY BINARY_INTEGER;
37 
38 TYPE evnt_cls_rec_type is RECORD
39 ( event_class_code            VARCHAR2_30_tbl_type,
40   application_id              NUMBER_tbl_type,
41   entity_code                 VARCHAR2_30_tbl_type,
42   internal_organization_id    NUMBER_tbl_type,
43   precedence                  NUMBER_tbl_type,
44   icx_session_id              NUMBER_15_tbl_type,
45   quote_flag                  VARCHAR2_tbl_type
46 );
47 
48 l_evnt_cls evnt_cls_rec_type;
49 
50 /* Cursor for updating Det Factors information during Cancel/Discard */
51   Cursor c_lines(p_event_class_rec ZX_API_PUB.event_class_rec_type,
52                  p_trx_line_id     NUMBER,
53                  p_trx_level_type VARCHAR2) is
54   SELECT  /*+ INDEX(HEADER ZX_TRX_HEADERS_GT_U1) INDEX(TRXLINES ZX_TRANSACTION_LINES_GT_U1) */
55           header.INTERNAL_ORGANIZATION_ID           ,
56           header.APPLICATION_ID                     ,
57           header.ENTITY_CODE                        ,
58           header.EVENT_CLASS_CODE                   ,
59           header.EVENT_TYPE_CODE                    ,
60           header.TRX_ID                             ,
61           trxlines.TRX_LEVEL_TYPE                   ,
62           trxlines.TRX_LINE_ID                      ,
63           trxlines.LINE_LEVEL_ACTION                ,
64           nvl(trxlines.LINE_CLASS,p_event_class_rec.EVENT_CLASS_CODE),  --Bugfix 4938879
65           header.TRX_DATE                           ,
66           header.TRX_DOC_REVISION                   ,
67           header.LEDGER_ID                          ,
68           header.TRX_CURRENCY_CODE                  ,
69           header.CURRENCY_CONVERSION_DATE           ,
70           header.CURRENCY_CONVERSION_RATE           ,
71           header.CURRENCY_CONVERSION_TYPE           ,
72           header.MINIMUM_ACCOUNTABLE_UNIT           ,
73           header.PRECISION                          ,
74           trxlines.TRX_LINE_CURRENCY_CODE           ,
75           trxlines.TRX_LINE_CURRENCY_CONV_DATE      ,
76           trxlines.TRX_LINE_CURRENCY_CONV_RATE      ,
77           trxlines.TRX_LINE_CURRENCY_CONV_TYPE      ,
78           trxlines.TRX_LINE_MAU                     ,
79           trxlines.TRX_LINE_PRECISION               ,
80           trxlines.TRX_SHIPPING_DATE                ,
81           trxlines.TRX_RECEIPT_DATE                 ,
82           header.LEGAL_ENTITY_ID                    ,
83           header.ROUNDING_SHIP_TO_PARTY_ID          ,
84           header.ROUNDING_SHIP_FROM_PARTY_ID        ,
85           header.ROUNDING_BILL_TO_PARTY_ID          ,
86           header.ROUNDING_BILL_FROM_PARTY_ID        ,
87           header.RNDG_SHIP_TO_PARTY_SITE_ID         ,
88           header.RNDG_SHIP_FROM_PARTY_SITE_ID       ,
89           header.RNDG_BILL_TO_PARTY_SITE_ID         ,
90           header.RNDG_BILL_FROM_PARTY_SITE_ID       ,
91           header.ESTABLISHMENT_ID                   ,
92           trxlines.TRX_LINE_TYPE                    ,
93           trxlines.TRX_LINE_DATE                    ,
94           trxlines.TRX_BUSINESS_CATEGORY            ,
95           trxlines.LINE_INTENDED_USE                ,
96           trxlines.USER_DEFINED_FISC_CLASS          ,
97           trxlines.LINE_AMT                         ,
98           trxlines.TRX_LINE_QUANTITY                ,
99           trxlines.UNIT_PRICE                       ,
100           trxlines.EXEMPT_CERTIFICATE_NUMBER        ,
101           trxlines.EXEMPT_REASON                    ,
102           trxlines.CASH_DISCOUNT                    ,
103           trxlines.VOLUME_DISCOUNT                  ,
104           trxlines.TRADING_DISCOUNT                 ,
105           trxlines.TRANSFER_CHARGE                  ,
106           trxlines.TRANSPORTATION_CHARGE            ,
107           trxlines.INSURANCE_CHARGE                 ,
108           trxlines.OTHER_CHARGE                     ,
109           trxlines.PRODUCT_ID                       ,
110           trxlines.PRODUCT_FISC_CLASSIFICATION      ,
111           trxlines.PRODUCT_ORG_ID                   ,
112           trxlines.UOM_CODE                         ,
113           trxlines.PRODUCT_TYPE                     ,
114           trxlines.PRODUCT_CODE                     ,
115           trxlines.PRODUCT_CATEGORY                 ,
116           trxlines.TRX_SIC_CODE                     ,
117           trxlines.FOB_POINT                        ,
118           trxlines.SHIP_TO_PARTY_ID                 ,
119           trxlines.SHIP_FROM_PARTY_ID               ,
120           trxlines.POA_PARTY_ID                     ,
121           trxlines.POO_PARTY_ID                     ,
122           trxlines.BILL_TO_PARTY_ID                 ,
123           trxlines.BILL_FROM_PARTY_ID               ,
124           trxlines.MERCHANT_PARTY_ID                ,
125           trxlines.SHIP_TO_PARTY_SITE_ID            ,
126           trxlines.SHIP_FROM_PARTY_SITE_ID          ,
127           trxlines.POA_PARTY_SITE_ID                ,
128           trxlines.POO_PARTY_SITE_ID                ,
129           trxlines.BILL_TO_PARTY_SITE_ID            ,
130           trxlines.BILL_FROM_PARTY_SITE_ID          ,
131           trxlines.SHIP_TO_LOCATION_ID              ,
132           trxlines.SHIP_FROM_LOCATION_ID            ,
133           trxlines.POA_LOCATION_ID                  ,
134           trxlines.POO_LOCATION_ID                  ,
135           trxlines.BILL_TO_LOCATION_ID              ,
136           trxlines.BILL_FROM_LOCATION_ID            ,
137           trxlines.ACCOUNT_CCID                     ,
138           trxlines.ACCOUNT_STRING                   ,
139           trxlines.MERCHANT_PARTY_COUNTRY           ,
140           header.RECEIVABLES_TRX_TYPE_ID            ,
141           trxlines.REF_DOC_APPLICATION_ID           ,
142           trxlines.REF_DOC_ENTITY_CODE              ,
143           trxlines.REF_DOC_EVENT_CLASS_CODE         ,
144           trxlines.REF_DOC_TRX_ID                   ,
145           trxlines.REF_DOC_LINE_ID                  ,
146           trxlines.REF_DOC_LINE_QUANTITY            ,
147           header.RELATED_DOC_APPLICATION_ID         ,
148           header.RELATED_DOC_ENTITY_CODE            ,
149           header.RELATED_DOC_EVENT_CLASS_CODE       ,
150           header.RELATED_DOC_TRX_ID                 ,
151           header.RELATED_DOC_NUMBER                 ,
152           header.RELATED_DOC_DATE                   ,
153           trxlines.APPLIED_FROM_APPLICATION_ID      ,
154           trxlines.APPLIED_FROM_EVENT_CLASS_CODE    ,
155           trxlines.APPLIED_FROM_ENTITY_CODE         ,
156           trxlines.APPLIED_FROM_TRX_ID              ,
157           trxlines.APPLIED_FROM_LINE_ID             ,
158           trxlines.APPLIED_FROM_TRX_NUMBER          ,
159           trxlines.ADJUSTED_DOC_APPLICATION_ID      ,
160           trxlines.ADJUSTED_DOC_EVENT_CLASS_CODE    ,
161           trxlines.ADJUSTED_DOC_ENTITY_CODE         ,
162           trxlines.ADJUSTED_DOC_TRX_ID              ,
163           trxlines.ADJUSTED_DOC_LINE_ID             ,
164           trxlines.ADJUSTED_DOC_NUMBER              ,
165           trxlines.ADJUSTED_DOC_DATE                ,
166           trxlines.APPLIED_TO_APPLICATION_ID        ,
167           trxlines.APPLIED_TO_ENTITY_CODE           ,
168           trxlines.APPLIED_TO_EVENT_CLASS_CODE      ,
169           trxlines.APPLIED_TO_TRX_ID                ,
170           trxlines.APPLIED_TO_TRX_LINE_ID           ,
171           trxlines.TRX_ID_LEVEL2                    ,
172           trxlines.TRX_ID_LEVEL3                    ,
173           trxlines.TRX_ID_LEVEL4                    ,
174           trxlines.TRX_ID_LEVEL5                    ,
175           trxlines.TRX_ID_LEVEL6                    ,
176           header.TRX_NUMBER                         ,
177           header.TRX_DESCRIPTION                    ,
178           trxlines.TRX_LINE_NUMBER                  ,
179           trxlines.TRX_LINE_DESCRIPTION             ,
180           trxlines.PRODUCT_DESCRIPTION              ,
181           trxlines.TRX_WAYBILL_NUMBER               ,
182           header.TRX_COMMUNICATED_DATE              ,
183           trxlines.TRX_LINE_GL_DATE                 ,
184           header.BATCH_SOURCE_ID                    ,
185           header.BATCH_SOURCE_NAME                  ,
186           header.DOC_SEQ_ID                         ,
187           header.DOC_SEQ_NAME                       ,
188           header.DOC_SEQ_VALUE                      ,
189           header.TRX_DUE_DATE                       ,
190           header.TRX_TYPE_DESCRIPTION               ,
191           trxlines.MERCHANT_PARTY_NAME              ,
192           trxlines.MERCHANT_PARTY_DOCUMENT_NUMBER   ,
193           trxlines.MERCHANT_PARTY_REFERENCE         ,
194           trxlines.MERCHANT_PARTY_TAXPAYER_ID       ,
195           trxlines.MERCHANT_PARTY_TAX_REG_NUMBER    ,
196           trxlines.PAYING_PARTY_ID                  ,
197           trxlines.OWN_HQ_PARTY_ID                  ,
198           trxlines.TRADING_HQ_PARTY_ID              ,
199           trxlines.POI_PARTY_ID                     ,
200           trxlines.POD_PARTY_ID                     ,
201           trxlines.TITLE_TRANSFER_PARTY_ID          ,
202           trxlines.PAYING_PARTY_SITE_ID             ,
203           trxlines.OWN_HQ_PARTY_SITE_ID             ,
204           trxlines.TRADING_HQ_PARTY_SITE_ID         ,
205           trxlines.POI_PARTY_SITE_ID                ,
206           trxlines.POD_PARTY_SITE_ID                ,
207           trxlines.TITLE_TRANSFER_PARTY_SITE_ID     ,
208           trxlines.PAYING_LOCATION_ID               ,
209           trxlines.OWN_HQ_LOCATION_ID               ,
210           trxlines.TRADING_HQ_LOCATION_ID           ,
211           trxlines.POC_LOCATION_ID                  ,
212           trxlines.POI_LOCATION_ID                  ,
213           trxlines.POD_LOCATION_ID                  ,
214           trxlines.TITLE_TRANSFER_LOCATION_ID       ,
215           trxlines.ASSESSABLE_VALUE                 ,
216           trxlines.ASSET_FLAG                       ,
217           trxlines.ASSET_NUMBER                     ,
218           trxlines.ASSET_ACCUM_DEPRECIATION         ,
219           trxlines.ASSET_TYPE                       ,
220           trxlines.ASSET_COST                       ,
221           trxlines.NUMERIC1                         ,
222           trxlines.NUMERIC2                         ,
223           trxlines.NUMERIC3                         ,
224           trxlines.NUMERIC4                         ,
225           trxlines.NUMERIC5                         ,
226           trxlines.NUMERIC6                         ,
227           trxlines.NUMERIC7                         ,
228           trxlines.NUMERIC8                         ,
229           trxlines.NUMERIC9                         ,
230           trxlines.NUMERIC10                        ,
231           trxlines.CHAR1                            ,
232           trxlines.CHAR2                            ,
233           trxlines.CHAR3                            ,
234           trxlines.CHAR4                            ,
235           trxlines.CHAR5                            ,
236           trxlines.CHAR6                            ,
237           trxlines.CHAR7                            ,
238           trxlines.CHAR8                            ,
239           trxlines.CHAR9                            ,
240           trxlines.CHAR10                           ,
241           trxlines.DATE1                            ,
242           trxlines.DATE2                            ,
243           trxlines.DATE3                            ,
244           trxlines.DATE4                            ,
245           trxlines.DATE5                            ,
246           trxlines.DATE6                            ,
247           trxlines.DATE7                            ,
248           trxlines.DATE8                            ,
249           trxlines.DATE9                            ,
250           trxlines.DATE10                           ,
251           header.FIRST_PTY_ORG_ID                   ,
252           header.TAX_EVENT_CLASS_CODE               ,
253           header.TAX_EVENT_TYPE_CODE                ,
254           header.DOC_EVENT_STATUS                   ,
255           header.RDNG_SHIP_TO_PTY_TX_PROF_ID        ,
256           header.RDNG_SHIP_FROM_PTY_TX_PROF_ID      ,
257           header.RDNG_BILL_TO_PTY_TX_PROF_ID        ,
258           header.RDNG_BILL_FROM_PTY_TX_PROF_ID      ,
259           header.RDNG_SHIP_TO_PTY_TX_P_ST_ID        ,
260           header.RDNG_SHIP_FROM_PTY_TX_P_ST_ID      ,
261           header.RDNG_BILL_TO_PTY_TX_P_ST_ID        ,
262           header.RDNG_BILL_FROM_PTY_TX_P_ST_ID      ,
263           trxlines.SHIP_TO_PARTY_TAX_PROF_ID        ,
264           trxlines.SHIP_FROM_PARTY_TAX_PROF_ID      ,
265           trxlines.POA_PARTY_TAX_PROF_ID            ,
266           trxlines.POO_PARTY_TAX_PROF_ID            ,
267           trxlines.PAYING_PARTY_TAX_PROF_ID         ,
268           trxlines.OWN_HQ_PARTY_TAX_PROF_ID         ,
269           trxlines.TRADING_HQ_PARTY_TAX_PROF_ID     ,
270           trxlines.POI_PARTY_TAX_PROF_ID            ,
271           trxlines.POD_PARTY_TAX_PROF_ID            ,
272           trxlines.BILL_TO_PARTY_TAX_PROF_ID        ,
273           trxlines.BILL_FROM_PARTY_TAX_PROF_ID      ,
274           trxlines.TITLE_TRANS_PARTY_TAX_PROF_ID    ,
275           trxlines.SHIP_TO_SITE_TAX_PROF_ID         ,
276           trxlines.SHIP_FROM_SITE_TAX_PROF_ID       ,
277           trxlines.POA_SITE_TAX_PROF_ID             ,
278           trxlines.POO_SITE_TAX_PROF_ID             ,
279           trxlines.PAYING_SITE_TAX_PROF_ID          ,
280           trxlines.OWN_HQ_SITE_TAX_PROF_ID          ,
281           trxlines.TRADING_HQ_SITE_TAX_PROF_ID      ,
282           trxlines.POI_SITE_TAX_PROF_ID             ,
283           trxlines.POD_SITE_TAX_PROF_ID             ,
284           trxlines.BILL_TO_SITE_TAX_PROF_ID         ,
285           trxlines.BILL_FROM_SITE_TAX_PROF_ID       ,
286           trxlines.TITLE_TRANS_SITE_TAX_PROF_ID     ,
287           trxlines.MERCHANT_PARTY_TAX_PROF_ID       ,
288           to_number(null) HQ_ESTB_PARTY_TAX_PROF_ID,
289           header.DOCUMENT_SUB_TYPE                  ,
290           header.SUPPLIER_TAX_INVOICE_NUMBER        ,
291           header.SUPPLIER_TAX_INVOICE_DATE          ,
292           header.SUPPLIER_EXCHANGE_RATE             ,
293           header.TAX_INVOICE_DATE                   ,
294           header.TAX_INVOICE_NUMBER                 ,
295           trxlines.LINE_AMT_INCLUDES_TAX_FLAG       ,
296           header.QUOTE_FLAG                         ,
297           header.DEFAULT_TAXATION_COUNTRY           ,
298           trxlines.HISTORICAL_FLAG                  ,
299           header.INTERNAL_ORG_LOCATION_ID           ,
300           trxlines.CTRL_HDR_TX_APPL_FLAG            ,
301           header.CTRL_TOTAL_HDR_TX_AMT              ,
302           trxlines.CTRL_TOTAL_LINE_TX_AMT           ,
303           null DIST_LEVEL_ACTION                    ,
304           to_number(null) ADJUSTED_DOC_TASK_DIST_ID ,
305           to_number(null) APPLIED_FROM_TAX_DIST_ID  ,
306           to_number(null) TASK_ID                   ,
307           to_number(null) AWARD_ID                  ,
308           to_number(null) PROJECT_ID                ,
309           null EXPENDITURE_TYPE                     ,
310           to_number(null) EXPENDITURE_ORGANIZATION_ID ,
311           null EXPENDITURE_ITEM_DATE                ,
312           to_number(null) TRX_LINE_DIST_AMT         ,
313           to_number(null) TRX_LINE_DIST_QUANTITY    ,
314           to_number(null) REF_DOC_CURR_CONV_RATE    ,
315           to_number(null) ITEM_DIST_NUMBER          ,
316           to_number(null) REF_DOC_DIST_ID           ,
317           to_number(null) TRX_LINE_DIST_TAX_AMT     ,
318           to_number(null) TRX_LINE_DIST_ID          ,
319           to_number(null) APPLIED_FROM_DIST_ID      ,
320           to_number(null) ADJUSTED_DOC_DIST_ID      ,
321           to_number(null) OVERRIDING_RECOVERY_RATE  ,
322           trxlines.INPUT_TAX_CLASSIFICATION_CODE    ,
323           trxlines.OUTPUT_TAX_CLASSIFICATION_CODE   ,
324           header.PORT_OF_ENTRY_CODE                 ,
325           header.TAX_REPORTING_FLAG                 ,
326           null TAX_AMT_INCLUDED_FLAG                ,
327           null COMPOUNDING_TAX_FLAG                 ,
328           header.SHIP_THIRD_PTY_ACCT_ID             ,
329           header.BILL_THIRD_PTY_ACCT_ID             ,
330           header.SHIP_THIRD_PTY_ACCT_SITE_ID        ,
331           header.BILL_THIRD_PTY_ACCT_SITE_ID        ,
332           header.SHIP_TO_CUST_ACCT_SITE_USE_ID      ,
333           header.BILL_TO_CUST_ACCT_SITE_USE_ID      ,
334           header.PROVNL_TAX_DETERMINATION_DATE      ,
335           trxlines.START_EXPENSE_DATE               ,
336           header.TRX_BATCH_ID                       ,
337           header.APPLIED_TO_TRX_NUMBER              ,
338           trxlines.SOURCE_APPLICATION_ID            ,
339           trxlines.SOURCE_ENTITY_CODE               ,
340           trxlines.SOURCE_EVENT_CLASS_CODE          ,
341           trxlines.SOURCE_TRX_ID                    ,
342           trxlines.SOURCE_LINE_ID                   ,
343           trxlines.SOURCE_TRX_LEVEL_TYPE            ,
344           trxlines.REF_DOC_TRX_LEVEL_TYPE           ,
345           trxlines.APPLIED_TO_TRX_LEVEL_TYPE        ,
346           trxlines.APPLIED_FROM_TRX_LEVEL_TYPE      ,
347           trxlines.ADJUSTED_DOC_TRX_LEVEL_TYPE      ,
348           header.APPLICATION_DOC_STATUS             ,
349           header.HDR_TRX_USER_KEY1                  ,
350           header.HDR_TRX_USER_KEY2                  ,
351           header.HDR_TRX_USER_KEY3                  ,
352           header.HDR_TRX_USER_KEY4                  ,
353           header.HDR_TRX_USER_KEY5                  ,
354           header.HDR_TRX_USER_KEY6                  ,
355           trxlines.LINE_TRX_USER_KEY1               ,
356           trxlines.LINE_TRX_USER_KEY2               ,
357           trxlines.LINE_TRX_USER_KEY3               ,
358           trxlines.LINE_TRX_USER_KEY4               ,
359           trxlines.LINE_TRX_USER_KEY5               ,
360           trxlines.LINE_TRX_USER_KEY6               ,
361           trxlines.SOURCE_TAX_LINE_ID               ,
362           trxlines.EXEMPTION_CONTROL_FLAG           ,
363           to_number(null) REVERSED_APPLN_ID         ,
364           null REVERSED_ENTITY_CODE                 ,
365           null REVERSED_EVNT_CLS_CODE               ,
366           to_number(null) REVERSED_TRX_ID           ,
367           null REVERSED_TRX_LEVEL_TYPE              ,
368           to_number(null) REVERSED_TRX_LINE_ID      ,
369           trxlines.EXEMPT_REASON_CODE               ,
370           trxlines.INTERFACE_ENTITY_CODE            ,
371           trxlines.INTERFACE_LINE_ID                ,
372           trxlines.DEFAULTING_ATTRIBUTE1            ,
373           trxlines.DEFAULTING_ATTRIBUTE2            ,
374           trxlines.DEFAULTING_ATTRIBUTE3            ,
375           trxlines.DEFAULTING_ATTRIBUTE4            ,
376           trxlines.DEFAULTING_ATTRIBUTE5            ,
377           trxlines.DEFAULTING_ATTRIBUTE6            ,
378           trxlines.DEFAULTING_ATTRIBUTE7            ,
379           trxlines.DEFAULTING_ATTRIBUTE8            ,
380           trxlines.DEFAULTING_ATTRIBUTE9            ,
381           trxlines.DEFAULTING_ATTRIBUTE10           ,
382           trxlines.HISTORICAL_TAX_CODE_ID           ,
383           nvl(trxlines.SHIP_THIRD_PTY_ACCT_ID,header.SHIP_THIRD_PTY_ACCT_ID),
384           nvl(trxlines.BILL_THIRD_PTY_ACCT_ID,header.BILL_THIRD_PTY_ACCT_ID),
385           nvl(trxlines.SHIP_THIRD_PTY_ACCT_SITE_ID,header.SHIP_THIRD_PTY_ACCT_SITE_ID),
386           nvl(trxlines.BILL_THIRD_PTY_ACCT_SITE_ID,header.BILL_THIRD_PTY_ACCT_SITE_ID),
387           nvl(trxlines.SHIP_TO_CUST_ACCT_SITE_USE_ID,header.SHIP_TO_CUST_ACCT_SITE_USE_ID),
388           nvl(trxlines.BILL_TO_CUST_ACCT_SITE_USE_ID,header.BILL_TO_CUST_ACCT_SITE_USE_ID),
389           nvl(trxlines.RECEIVABLES_TRX_TYPE_ID,header.RECEIVABLES_TRX_TYPE_ID),
390           trxlines.GLOBAL_ATTRIBUTE_CATEGORY,
391           trxlines.GLOBAL_ATTRIBUTE1,
392           to_number(null) TOTAL_INC_TAX_AMT     ,
393           trxlines.USER_UPD_DET_FACTORS_FLAG,
394           decode(trxlines.line_level_action,'CREATE','I',
395                                                'CREATE_TAX_ONLY','I',
396                                                'APPLY_FROM','I',
397                                                'INTERCOMPANY_CREATE','I',
398                                                'UNAPPLY_FROM','U',
399                                                'LINE_INFO_TAX_ONLY','I',
400                                                'CREATE_WITH_TAX','I',
401                                                'ALLOCATE_TAX_ONLY_ADJUSTMENT','I',
402                                                'COPY_AND_CREATE','I',
403                                                'RECORD_WITH_NO_TAX','I',
404                                                'NO_CHANGE','U',
405                                                'UPDATE','U',
406                                                'DISCARD','U',
407                                                'CANCEL','U',
408                                                'SYNCHRONIZE','U',
409                                                'DELETE','U')  INSERT_UPDATE_FLAG
410       /* The update insert flag is to determine the records that need to be inserted/updated
411 	  into zx_lines_det_factors depending on the line_level_action for tax event type UPDATE*/
412       FROM ZX_TRANSACTION_LINES_GT trxlines,
413            ZX_TRX_HEADERS_GT header
414       WHERE trxlines.application_id = header.application_id
415         AND trxlines.entity_code = header.entity_code
416         AND trxlines.event_class_code = header.event_class_code
417         AND trxlines.trx_id = header.trx_id
418         AND header.event_class_code = p_event_class_rec.event_class_code
419         AND header.entity_code = p_event_class_rec.entity_code
420         AND header.application_id = p_event_class_rec.application_id
421         AND NVL(header.validation_check_flag, 'Y') = 'Y'
422         AND (trxlines.trx_line_id = p_trx_line_id OR
423              p_trx_line_id IS NULL)
424         AND (trxlines.trx_level_type = p_trx_level_type OR
425              p_trx_level_type IS NULL)
426         AND NOT EXISTS(
427               SELECT 1
428                 FROM ZX_ERRORS_GT err
429                WHERE err.application_id = header.application_id
430                  AND err.entity_code = header.entity_code
431                  AND err.event_class_code = header.event_class_code
432                  AND err.trx_id = header.trx_id)
433    ORDER BY header.related_doc_application_id ASC NULLS FIRST ,
434             header.legal_entity_id ASC,
435             header.trx_date ASC,
436             header.trx_id ASC,
437             INSERT_UPDATE_FLAG DESC;
438 
439 PROCEDURE Pop_Index_Attrbs_To_Null ( p_index          IN  NUMBER,
440                                      x_return_status  OUT NOCOPY VARCHAR2
441  ) IS
442  -- Variables
443    l_api_name           CONSTANT VARCHAR2(30):= 'POP_INDEX_ATTRBS_TO_NULL';
444    l_application_id     NUMBER;
445    l_entity_code        VARCHAR(30);
446    l_event_class_code   VARCHAR(30);
447    l_trx_id             NUMBER;
448    l_trx_line_id        NUMBER;
449    l_trx_level_type     VARCHAR(30);
450 
451  BEGIN
452    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
453       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.BEGIN',
454          'ZX_SRVC_TYP_PKG: Pop_Index_Attrbs_To_Null()+');
455    END IF;
456    -- Copy the key attributes in the local variables
457    l_application_id   := ZX_Global_Structures_Pkg.trx_line_dist_tbl.Application_id(p_index);
458    l_entity_code      := ZX_Global_Structures_Pkg.trx_line_dist_tbl.Entity_code(p_index);
459    l_event_class_code := ZX_Global_Structures_Pkg.trx_line_dist_tbl.Event_Class_code(p_index);
460    l_trx_id           := ZX_Global_Structures_Pkg.trx_line_dist_tbl.Trx_id(p_index);
461    l_trx_line_id      := ZX_Global_Structures_Pkg.trx_line_dist_tbl.Trx_line_Id(p_index);
462    l_trx_level_type   := ZX_Global_Structures_Pkg.trx_line_dist_tbl.Trx_level_type(p_index);
463 
464    -- Call the procedure to populate all the attributes of plsql tbl structure
465    -- ZX_Global_Structures_Pkg.trx_line_dist_tbl at index p_index to NULL
466    ZX_GLOBAL_STRUCTURES_PKG.init_trx_line_dist_tbl (p_index);
467 
468    -- Populate the key attributes of ZX_Global_Structures_Pkg.trx_line_dist_tbl
469    -- with values of local variables
470    ZX_Global_Structures_Pkg.trx_line_dist_tbl.Application_id(p_index)   := l_application_id;
471    ZX_Global_Structures_Pkg.trx_line_dist_tbl.Entity_code(p_index)      := l_entity_code;
472    ZX_Global_Structures_Pkg.trx_line_dist_tbl.Event_Class_code(p_index) := l_event_class_code;
473    ZX_Global_Structures_Pkg.trx_line_dist_tbl.Trx_id(p_index)           := l_trx_id;
474    ZX_Global_Structures_Pkg.trx_line_dist_tbl.Trx_line_Id(p_index)      := l_trx_line_id;
475    ZX_Global_Structures_Pkg.trx_line_dist_tbl.Trx_level_type(p_index)   := l_trx_level_type;
476 
477    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
478       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.END',
479          'ZX_NEW_SERVICES_PKG: Pop_Index_Attrbs_To_Null()-');
480    END IF;
481 
482  EXCEPTION
483         WHEN OTHERS THEN
484             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
485             IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
486                FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,
487                   'Error occurred in ' || l_api_name || ' : ' ||SQLERRM);
488             END IF;
489 
490  END Pop_Index_Attrbs_To_Null;
491 
492 PROCEDURE db_update_line_det_factors
493    (p_trx_line_dist_tbl  IN            ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl%TYPE,
494     p_event_class_rec    IN            ZX_API_PUB.event_class_rec_type,
495     p_line_level_action  IN            VARCHAR2,
496     x_return_status      OUT NOCOPY VARCHAR2)
497 IS
498   l_api_name           CONSTANT VARCHAR2(30):= 'UPDATE_LINE_DET_FACTORS';
499   l_context_info_rec   ZX_API_PUB.context_info_rec_type;
500   l_insert_tab         ZX_API_PUB.VARCHAR2_1_tbl_type;
501   l_return_status      VARCHAR2(1);
502 
503   BEGIN
504     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
505       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||':'||l_api_name||'()+');
506     END IF;
507 
508     x_return_status := FND_API.G_RET_STS_SUCCESS;
509     FORALL i IN NVL(p_trx_line_dist_tbl.application_id.FIRST,0) .. NVL(p_trx_line_dist_tbl.application_id.LAST,-99)
510        UPDATE ZX_LINES_DET_FACTORS SET
511                                 EVENT_ID                       = p_event_class_rec.event_id,
512                                 INTERNAL_ORGANIZATION_ID       = p_trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(i),
513                                 EVENT_TYPE_CODE                = p_trx_line_dist_tbl.EVENT_TYPE_CODE(i),
514                                 DOC_EVENT_STATUS               = p_event_class_rec.DOC_STATUS_CODE,
515                                 LINE_LEVEL_ACTION              = NVL(p_line_level_action, p_trx_line_dist_tbl.LINE_LEVEL_ACTION(i)),
516                                 LINE_CLASS                     = NVL(p_trx_line_dist_tbl.LINE_CLASS(i),p_event_class_rec.EVENT_CLASS_CODE), --Bugfix 4938879
517                                 TRX_DATE                       = p_trx_line_dist_tbl.TRX_DATE(i),
518                                 TRX_DOC_REVISION               = p_trx_line_dist_tbl.TRX_DOC_REVISION(i),
519                                 LEDGER_ID                      = p_trx_line_dist_tbl.LEDGER_ID(i),
520                                 TRX_CURRENCY_CODE              = p_trx_line_dist_tbl.TRX_CURRENCY_CODE(i),
521                                 CURRENCY_CONVERSION_DATE       = p_trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(i),
522                                 CURRENCY_CONVERSION_RATE       = p_trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(i),
523                                 CURRENCY_CONVERSION_TYPE       = p_trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(i),
524                                 MINIMUM_ACCOUNTABLE_UNIT       = p_trx_line_dist_tbl.MINIMUM_ACCOUNTABLE_UNIT(i),
525                                 PRECISION                      = p_trx_line_dist_tbl.PRECISION(i),
526                                 TRX_LINE_CURRENCY_CODE         = NVL(p_trx_line_dist_tbl.TRX_LINE_CURRENCY_CODE(i),p_trx_line_dist_tbl.TRX_CURRENCY_CODE(i)),
527                                 TRX_LINE_CURRENCY_CONV_DATE    = NVL(p_trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_DATE(i),p_trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(i)),
528                                 TRX_LINE_CURRENCY_CONV_RATE    = NVL(p_trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_RATE(i),p_trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(i)),
529                                 TRX_LINE_CURRENCY_CONV_TYPE    = NVL(p_trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_TYPE(i),p_trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(i)),
530                                 TRX_LINE_MAU                   = NVL(p_trx_line_dist_tbl.TRX_LINE_MAU(i),p_trx_line_dist_tbl.MINIMUM_ACCOUNTABLE_UNIT(i)),
531                                 TRX_LINE_PRECISION             = NVL(p_trx_line_dist_tbl.TRX_LINE_PRECISION(i),p_trx_line_dist_tbl.PRECISION(i)),
532                                 LEGAL_ENTITY_ID                = p_trx_line_dist_tbl.LEGAL_ENTITY_ID(i),
533                                 ESTABLISHMENT_ID               = NVL(p_trx_line_dist_tbl.ESTABLISHMENT_ID(i), ESTABLISHMENT_ID),
534 --                                RECEIVABLES_TRX_TYPE_ID        = p_trx_line_dist_tbl.RECEIVABLES_TRX_TYPE_ID(i),
535 --                                DEFAULT_TAXATION_COUNTRY       = NVL(p_trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY(i), DEFAULT_TAXATION_COUNTRY),   -- Bug 5659537
536 --                                TRX_NUMBER                     = p_trx_line_dist_tbl.TRX_NUMBER(i),
537 --                                TRX_LINE_NUMBER                = p_trx_line_dist_tbl.TRX_LINE_NUMBER(i),
538 --                                TRX_LINE_DESCRIPTION           = p_trx_line_dist_tbl.TRX_LINE_DESCRIPTION(i),
539 --                                TRX_DESCRIPTION                = p_trx_line_dist_tbl.TRX_DESCRIPTION(i),
540 --                                TRX_COMMUNICATED_DATE          = p_trx_line_dist_tbl.TRX_COMMUNICATED_DATE(i),
541 --                                BATCH_SOURCE_ID                = p_trx_line_dist_tbl.BATCH_SOURCE_ID(i),
542 --                                BATCH_SOURCE_NAME              = p_trx_line_dist_tbl.BATCH_SOURCE_NAME(i),
543 --                                DOC_SEQ_ID                     = p_trx_line_dist_tbl.DOC_SEQ_ID(i),
544 --                                DOC_SEQ_NAME                   = p_trx_line_dist_tbl.DOC_SEQ_NAME(i),
545 --                                DOC_SEQ_VALUE                  = p_trx_line_dist_tbl.DOC_SEQ_VALUE(i),
546 --                                TRX_DUE_DATE                   = p_trx_line_dist_tbl.TRX_DUE_DATE(i),
547 --                                TRX_TYPE_DESCRIPTION           = p_trx_line_dist_tbl.TRX_TYPE_DESCRIPTION(i),
548 --                                DOCUMENT_SUB_TYPE              = NVL(p_trx_line_dist_tbl.DOCUMENT_SUB_TYPE(i), DOCUMENT_SUB_TYPE),   -- Bug 5659537
549 --                                SUPPLIER_TAX_INVOICE_NUMBER    = p_trx_line_dist_tbl.SUPPLIER_TAX_INVOICE_NUMBER(i),
550 --                                SUPPLIER_TAX_INVOICE_DATE      = p_trx_line_dist_tbl.SUPPLIER_TAX_INVOICE_DATE(i),
551 --                                SUPPLIER_EXCHANGE_RATE         = p_trx_line_dist_tbl.SUPPLIER_EXCHANGE_RATE(i),
552 --                                TAX_INVOICE_DATE               = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y', TAX_INVOICE_DATE, NVL(p_trx_line_dist_tbl.TAX_INVOICE_DATE(i), TAX_INVOICE_DATE)),  -- Bug 5659357
553 --                                TAX_INVOICE_NUMBER             = p_trx_line_dist_tbl.TAX_INVOICE_NUMBER(i),
554 --                                FIRST_PTY_ORG_ID               = p_event_class_rec.FIRST_PTY_ORG_ID,
555                                 TAX_EVENT_CLASS_CODE           = p_event_class_rec.TAX_EVENT_CLASS_CODE,
556                                 TAX_EVENT_TYPE_CODE            = p_event_class_rec.TAX_EVENT_TYPE_CODE,
557 --                                RDNG_SHIP_TO_PTY_TX_PROF_ID    = p_trx_line_dist_tbl.RDNG_SHIP_TO_PTY_TX_PROF_ID(i),
558 --                                RDNG_SHIP_FROM_PTY_TX_PROF_ID  = p_trx_line_dist_tbl.RDNG_SHIP_FROM_PTY_TX_PROF_ID(i),
559 --                                RDNG_BILL_TO_PTY_TX_PROF_ID    = p_trx_line_dist_tbl.RDNG_BILL_TO_PTY_TX_PROF_ID(i),
560 --                                RDNG_BILL_FROM_PTY_TX_PROF_ID  = p_trx_line_dist_tbl.RDNG_BILL_FROM_PTY_TX_PROF_ID(i),
561 --                                RDNG_SHIP_TO_PTY_TX_P_ST_ID    = p_trx_line_dist_tbl.RDNG_SHIP_TO_PTY_TX_P_ST_ID(i),
562 --                                RDNG_SHIP_FROM_PTY_TX_P_ST_ID  = p_trx_line_dist_tbl.RDNG_SHIP_FROM_PTY_TX_P_ST_ID(i),
563 --                                RDNG_BILL_TO_PTY_TX_P_ST_ID    = p_trx_line_dist_tbl.RDNG_BILL_TO_PTY_TX_P_ST_ID(i),
564 --                                RDNG_BILL_FROM_PTY_TX_P_ST_ID  = p_trx_line_dist_tbl.RDNG_BILL_FROM_PTY_TX_P_ST_ID(i),
565 --                                LINE_INTENDED_USE              = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y', LINE_INTENDED_USE, NVL(p_trx_line_dist_tbl.LINE_INTENDED_USE(i), LINE_INTENDED_USE)), --Bug 7371329
566 --                                TRX_LINE_TYPE                  = p_trx_line_dist_tbl.TRX_LINE_TYPE(i),
567 --                                TRX_SHIPPING_DATE              = p_trx_line_dist_tbl.TRX_SHIPPING_DATE(i),
568 --                                TRX_RECEIPT_DATE               = p_trx_line_dist_tbl.TRX_RECEIPT_DATE(i),
569 --                                TRX_SIC_CODE                   = p_trx_line_dist_tbl.TRX_SIC_CODE(i),
570 --                                FOB_POINT                      = p_trx_line_dist_tbl.FOB_POINT(i),
571 --                                TRX_WAYBILL_NUMBER             = p_trx_line_dist_tbl.TRX_WAYBILL_NUMBER(i),
572 --                                PRODUCT_ID                     = p_trx_line_dist_tbl.PRODUCT_ID(i),
573 --                                PRODUCT_FISC_CLASSIFICATION    = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y', NVL(p_trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(i), PRODUCT_FISC_CLASSIFICATION)),  -- Bug 5659357
574 --                                PRODUCT_ORG_ID                 = p_trx_line_dist_tbl.PRODUCT_ORG_ID(i),
575 --                                UOM_CODE                       = p_trx_line_dist_tbl.UOM_CODE(i),
576 --                                PRODUCT_TYPE                   = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y',PRODUCT_TYPE,NVL(p_trx_line_dist_tbl.PRODUCT_TYPE(i), PRODUCT_TYPE)),  -- Bug 5659357
577 --                                PRODUCT_CODE                   = p_trx_line_dist_tbl.PRODUCT_CODE(i),
578 --                                PRODUCT_CATEGORY               = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y',PRODUCT_CATEGORY, NVL(p_trx_line_dist_tbl.PRODUCT_CATEGORY(i), PRODUCT_CATEGORY)),  -- Bug 5659357
579 --                                PRODUCT_DESCRIPTION            = p_trx_line_dist_tbl.PRODUCT_DESCRIPTION(i),
580 --                                USER_DEFINED_FISC_CLASS        = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y',USER_DEFINED_FISC_CLASS,NVL(p_trx_line_dist_tbl.USER_DEFINED_FISC_CLASS(i), USER_DEFINED_FISC_CLASS)),  -- Bug 5659357
581                                 LINE_AMT                       = p_trx_line_dist_tbl.LINE_AMT(i),
582                                 TRX_LINE_QUANTITY              = p_trx_line_dist_tbl.TRX_LINE_QUANTITY(i),
583                                 UNIT_PRICE                     = p_trx_line_dist_tbl.UNIT_PRICE(i),
584 --                                CASH_DISCOUNT                  = p_trx_line_dist_tbl.CASH_DISCOUNT(i),
585 --                                VOLUME_DISCOUNT                = p_trx_line_dist_tbl.VOLUME_DISCOUNT(i),
586 --                                TRADING_DISCOUNT               = p_trx_line_dist_tbl.TRADING_DISCOUNT(i),
587 --                                TRANSFER_CHARGE                = p_trx_line_dist_tbl.TRANSFER_CHARGE(i),
588 --                                TRANSPORTATION_CHARGE          = p_trx_line_dist_tbl.TRANSPORTATION_CHARGE(i),
589 --                                INSURANCE_CHARGE               = p_trx_line_dist_tbl.INSURANCE_CHARGE(i),
590 --                                OTHER_CHARGE                   = p_trx_line_dist_tbl.OTHER_CHARGE(i),
591                                 ASSESSABLE_VALUE               = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y',ASSESSABLE_VALUE,NVL(p_trx_line_dist_tbl.ASSESSABLE_VALUE(i), ASSESSABLE_VALUE)),  -- Bug 5659357
592 --                                ASSET_FLAG                     = p_trx_line_dist_tbl.ASSET_FLAG(i),
593 --                                ASSET_NUMBER                   = p_trx_line_dist_tbl.ASSET_NUMBER(i),
594 --                                ASSET_ACCUM_DEPRECIATION       = p_trx_line_dist_tbl.ASSET_ACCUM_DEPRECIATION(i),
595 --                                ASSET_TYPE                     = p_trx_line_dist_tbl.ASSET_TYPE(i),
596 --                                ASSET_COST                     = p_trx_line_dist_tbl.ASSET_COST(i),
597 --                                RELATED_DOC_APPLICATION_ID     = p_trx_line_dist_tbl.RELATED_DOC_APPLICATION_ID(i),
598 --                                RELATED_DOC_ENTITY_CODE        = p_trx_line_dist_tbl.RELATED_DOC_ENTITY_CODE(i),
599 --                                RELATED_DOC_EVENT_CLASS_CODE   = p_trx_line_dist_tbl.RELATED_DOC_EVENT_CLASS_CODE(i),
600 --                                RELATED_DOC_TRX_ID             = p_trx_line_dist_tbl.RELATED_DOC_TRX_ID(i),
601 --                                RELATED_DOC_NUMBER             = p_trx_line_dist_tbl.RELATED_DOC_NUMBER(i),
602 --                                RELATED_DOC_DATE               = p_trx_line_dist_tbl.RELATED_DOC_DATE(i),
603 --                                APPLIED_FROM_APPLICATION_ID    = p_trx_line_dist_tbl.APPLIED_FROM_APPLICATION_ID(i),
604 --                                APPLIED_FROM_ENTITY_CODE       = p_trx_line_dist_tbl.APPLIED_FROM_ENTITY_CODE(i),
605 --                                APPLIED_FROM_EVENT_CLASS_CODE  = p_trx_line_dist_tbl.APPLIED_FROM_EVENT_CLASS_CODE(i),
606 --                                APPLIED_FROM_TRX_ID            = p_trx_line_dist_tbl.APPLIED_FROM_TRX_ID(i),
607 --                                APPLIED_FROM_LINE_ID           = p_trx_line_dist_tbl.APPLIED_FROM_LINE_ID(i),
608 --                                APPLIED_FROM_TRX_NUMBER        = p_trx_line_dist_tbl.APPLIED_FROM_TRX_NUMBER(i),
609 --                                ADJUSTED_DOC_APPLICATION_ID    = p_trx_line_dist_tbl.ADJUSTED_DOC_APPLICATION_ID(i),
610 --                                ADJUSTED_DOC_ENTITY_CODE       = p_trx_line_dist_tbl.ADJUSTED_DOC_ENTITY_CODE(i),
611 --                                ADJUSTED_DOC_EVENT_CLASS_CODE  = p_trx_line_dist_tbl.ADJUSTED_DOC_EVENT_CLASS_CODE(i),
612 --                                ADJUSTED_DOC_TRX_ID            = p_trx_line_dist_tbl.ADJUSTED_DOC_TRX_ID(i),
613 --                                ADJUSTED_DOC_LINE_ID           = p_trx_line_dist_tbl.ADJUSTED_DOC_LINE_ID(i),
614 --                                ADJUSTED_DOC_NUMBER            = p_trx_line_dist_tbl.ADJUSTED_DOC_NUMBER(i),
615 --                                ADJUSTED_DOC_DATE              = p_trx_line_dist_tbl.ADJUSTED_DOC_DATE(i),
616 --                                APPLIED_TO_APPLICATION_ID      = p_trx_line_dist_tbl.APPLIED_TO_APPLICATION_ID(i),
617 --                                APPLIED_TO_ENTITY_CODE         = p_trx_line_dist_tbl.APPLIED_TO_ENTITY_CODE(i),
618 --                                APPLIED_TO_EVENT_CLASS_CODE    = p_trx_line_dist_tbl.APPLIED_TO_EVENT_CLASS_CODE(i),
619 --                                APPLIED_TO_TRX_ID              = p_trx_line_dist_tbl.APPLIED_TO_TRX_ID(i),
620 --                                APPLIED_TO_TRX_LINE_ID         = p_trx_line_dist_tbl.APPLIED_TO_TRX_LINE_ID(i),
621 --                                TRX_ID_LEVEL2                  = p_trx_line_dist_tbl.TRX_ID_LEVEL2(i),
622 --                                TRX_ID_LEVEL3                  = p_trx_line_dist_tbl.TRX_ID_LEVEL3(i),
623 --                                TRX_ID_LEVEL4                  = p_trx_line_dist_tbl.TRX_ID_LEVEL4(i),
624 --                                TRX_ID_LEVEL5                  = p_trx_line_dist_tbl.TRX_ID_LEVEL5(i),
625 --                                TRX_ID_LEVEL6                  = p_trx_line_dist_tbl.TRX_ID_LEVEL6(i),
626 --                                TRX_BUSINESS_CATEGORY          = DECODE(USER_UPD_DET_FACTORS_FLAG,'Y', TRX_BUSINESS_CATEGORY, NVL(p_trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(i), TRX_BUSINESS_CATEGORY)),  -- Bug 5659357
627 --                                EXEMPT_CERTIFICATE_NUMBER      = p_trx_line_dist_tbl.EXEMPT_CERTIFICATE_NUMBER(i),
628 --                                EXEMPT_REASON                  = p_trx_line_dist_tbl.EXEMPT_REASON(i),
629 --                                HISTORICAL_FLAG                = NVL(HISTORICAL_FLAG,p_trx_line_dist_tbl.HISTORICAL_FLAG(i)),
630 --                                TRX_LINE_GL_DATE               = p_trx_line_dist_tbl.TRX_LINE_GL_DATE(i),
631 --                                LINE_AMT_INCLUDES_TAX_FLAG     = p_trx_line_dist_tbl.LINE_AMT_INCLUDES_TAX_FLAG(i),
632 --                                ACCOUNT_CCID                   = p_trx_line_dist_tbl.ACCOUNT_CCID(i),
633 --                                ACCOUNT_STRING                 = p_trx_line_dist_tbl.ACCOUNT_STRING(i),
634 --                                MERCHANT_PARTY_TAX_PROF_ID     = p_trx_line_dist_tbl.MERCHANT_PARTY_TAX_PROF_ID(i),
635 --                                HQ_ESTB_PARTY_TAX_PROF_ID      = p_trx_line_dist_tbl.HQ_ESTB_PARTY_TAX_PROF_ID(i),
636 --                                NUMERIC1                       = p_trx_line_dist_tbl.NUMERIC1(i),
637 --                                NUMERIC2                       = p_trx_line_dist_tbl.NUMERIC2(i),
638 --                                NUMERIC3                       = p_trx_line_dist_tbl.NUMERIC3(i),
639 --                                NUMERIC4                       = p_trx_line_dist_tbl.NUMERIC4(i),
640 --                                NUMERIC5                       = p_trx_line_dist_tbl.NUMERIC5(i),
641 --                                NUMERIC6                       = p_trx_line_dist_tbl.NUMERIC6(i),
642 --                                NUMERIC7                       = p_trx_line_dist_tbl.NUMERIC7(i),
643 --                                NUMERIC8                       = p_trx_line_dist_tbl.NUMERIC8(i),
644 --                                NUMERIC9                       = p_trx_line_dist_tbl.NUMERIC9(i),
645 --                                NUMERIC10                      = p_trx_line_dist_tbl.NUMERIC10(i),
646 --                                CHAR1                          = p_trx_line_dist_tbl.CHAR1(i),
647 --                                CHAR2                          = p_trx_line_dist_tbl.CHAR2(i),
648 --                                CHAR3                          = p_trx_line_dist_tbl.CHAR3(i),
649 --                                CHAR4                          = p_trx_line_dist_tbl.CHAR4(i),
650 --                                CHAR5                          = p_trx_line_dist_tbl.CHAR5(i),
651 --                                CHAR6                          = p_trx_line_dist_tbl.CHAR6(i),
652 --                                CHAR7                          = p_trx_line_dist_tbl.CHAR7(i),
653 --                                CHAR8                          = p_trx_line_dist_tbl.CHAR8(i),
654 --                                CHAR9                          = p_trx_line_dist_tbl.CHAR9(i),
655 --                                CHAR10                         = p_trx_line_dist_tbl.CHAR10(i),
656 --                                DATE1                          = p_trx_line_dist_tbl.DATE1(i),
657 --                                DATE2                          = p_trx_line_dist_tbl.DATE2(i),
658 --                                DATE3                          = p_trx_line_dist_tbl.DATE3(i),
659 --                                DATE4                          = p_trx_line_dist_tbl.DATE4(i),
660 --                                DATE5                          = p_trx_line_dist_tbl.DATE5(i),
661 --                                DATE6                          = p_trx_line_dist_tbl.DATE6(i),
662 --                                DATE7                          = p_trx_line_dist_tbl.DATE7(i),
663 --                                DATE8                          = p_trx_line_dist_tbl.DATE8(i),
664 --                                DATE9                          = p_trx_line_dist_tbl.DATE9(i),
665 --                                DATE10                         = p_trx_line_dist_tbl.DATE10(i),
666 --                                MERCHANT_PARTY_NAME            = p_trx_line_dist_tbl.MERCHANT_PARTY_NAME(i),
667 --                                MERCHANT_PARTY_DOCUMENT_NUMBER = p_trx_line_dist_tbl.MERCHANT_PARTY_DOCUMENT_NUMBER(i),
668 --                                MERCHANT_PARTY_REFERENCE       = p_trx_line_dist_tbl.MERCHANT_PARTY_REFERENCE(i),
669 --                                MERCHANT_PARTY_TAXPAYER_ID     = p_trx_line_dist_tbl.MERCHANT_PARTY_TAXPAYER_ID(i),
670 --                                MERCHANT_PARTY_TAX_REG_NUMBER  = p_trx_line_dist_tbl.MERCHANT_PARTY_TAX_REG_NUMBER(i),
671 --                                MERCHANT_PARTY_ID              = p_trx_line_dist_tbl.MERCHANT_PARTY_ID(i),
672 --                                MERCHANT_PARTY_COUNTRY         = p_trx_line_dist_tbl.MERCHANT_PARTY_COUNTRY(i),
673 --                                SHIP_TO_LOCATION_ID            = p_trx_line_dist_tbl.SHIP_TO_LOCATION_ID(i),
674 --                                SHIP_FROM_LOCATION_ID          = p_trx_line_dist_tbl.SHIP_FROM_LOCATION_ID(i),
675 --                                POA_LOCATION_ID                = p_trx_line_dist_tbl.POA_LOCATION_ID(i),
676 --                                POO_LOCATION_ID                = p_trx_line_dist_tbl.POO_LOCATION_ID(i),
677 --                                BILL_TO_LOCATION_ID            = p_trx_line_dist_tbl.BILL_TO_LOCATION_ID(i),
678 --                                BILL_FROM_LOCATION_ID          = p_trx_line_dist_tbl.BILL_FROM_LOCATION_ID(i),
679 --                                PAYING_LOCATION_ID             = p_trx_line_dist_tbl.PAYING_LOCATION_ID(i),
680 --                                OWN_HQ_LOCATION_ID             = p_trx_line_dist_tbl.OWN_HQ_LOCATION_ID(i),
681 --                                TRADING_HQ_LOCATION_ID         = p_trx_line_dist_tbl.TRADING_HQ_LOCATION_ID(i),
682 --                                POC_LOCATION_ID                = p_trx_line_dist_tbl.POC_LOCATION_ID(i),
683 --                                POI_LOCATION_ID                = p_trx_line_dist_tbl.POI_LOCATION_ID(i),
684 --                                POD_LOCATION_ID                = p_trx_line_dist_tbl.POD_LOCATION_ID(i),
685 --                                TITLE_TRANSFER_LOCATION_ID     = p_trx_line_dist_tbl.TITLE_TRANSFER_LOCATION_ID(i),
686 --                                SHIP_TO_PARTY_TAX_PROF_ID      = p_trx_line_dist_tbl.SHIP_TO_PARTY_TAX_PROF_ID(i),
687 --                                SHIP_FROM_PARTY_TAX_PROF_ID    = p_trx_line_dist_tbl.SHIP_FROM_PARTY_TAX_PROF_ID(i),
688 --                                POA_PARTY_TAX_PROF_ID          = p_trx_line_dist_tbl.POA_PARTY_TAX_PROF_ID(i),
689 --                                POO_PARTY_TAX_PROF_ID          = p_trx_line_dist_tbl.POO_PARTY_TAX_PROF_ID(i),
690 --                                PAYING_PARTY_TAX_PROF_ID       = p_trx_line_dist_tbl.PAYING_PARTY_TAX_PROF_ID(i),
691 --                                OWN_HQ_PARTY_TAX_PROF_ID       = p_trx_line_dist_tbl.OWN_HQ_PARTY_TAX_PROF_ID(i),
692 --                                TRADING_HQ_PARTY_TAX_PROF_ID   = p_trx_line_dist_tbl.TRADING_HQ_PARTY_TAX_PROF_ID(i),
693 --                                POI_PARTY_TAX_PROF_ID          = p_trx_line_dist_tbl.POI_PARTY_TAX_PROF_ID(i),
694 --                                POD_PARTY_TAX_PROF_ID          = p_trx_line_dist_tbl.POD_PARTY_TAX_PROF_ID(i),
695 --                                BILL_TO_PARTY_TAX_PROF_ID      = p_trx_line_dist_tbl.BILL_TO_PARTY_TAX_PROF_ID(i),
696 --                                BILL_FROM_PARTY_TAX_PROF_ID    = p_trx_line_dist_tbl.BILL_FROM_PARTY_TAX_PROF_ID(i),
697 --                                TITLE_TRANS_PARTY_TAX_PROF_ID  = p_trx_line_dist_tbl.TITLE_TRANS_PARTY_TAX_PROF_ID(i),
698 --                                SHIP_TO_SITE_TAX_PROF_ID       = p_trx_line_dist_tbl.SHIP_TO_SITE_TAX_PROF_ID(i),
699 --                                SHIP_FROM_SITE_TAX_PROF_ID     = p_trx_line_dist_tbl.SHIP_FROM_SITE_TAX_PROF_ID(i),
700 --                                POA_SITE_TAX_PROF_ID           = p_trx_line_dist_tbl.POA_SITE_TAX_PROF_ID(i),
701 --                                POO_SITE_TAX_PROF_ID           = p_trx_line_dist_tbl.POO_SITE_TAX_PROF_ID(i),
702 --                                PAYING_SITE_TAX_PROF_ID        = p_trx_line_dist_tbl.PAYING_SITE_TAX_PROF_ID(i),
703 --                                OWN_HQ_SITE_TAX_PROF_ID        = p_trx_line_dist_tbl.OWN_HQ_SITE_TAX_PROF_ID(i),
704 --                                TRADING_HQ_SITE_TAX_PROF_ID    = p_trx_line_dist_tbl.TRADING_HQ_SITE_TAX_PROF_ID(i),
705 --                                POI_SITE_TAX_PROF_ID           = p_trx_line_dist_tbl.POI_SITE_TAX_PROF_ID(i),
706 --                                POD_SITE_TAX_PROF_ID           = p_trx_line_dist_tbl.POD_SITE_TAX_PROF_ID(i),
707 --                                BILL_TO_SITE_TAX_PROF_ID       = p_trx_line_dist_tbl.BILL_TO_SITE_TAX_PROF_ID(i),
708 --                                BILL_FROM_SITE_TAX_PROF_ID     = p_trx_line_dist_tbl.BILL_FROM_SITE_TAX_PROF_ID(i),
709 --                                TITLE_TRANS_SITE_TAX_PROF_ID   = p_trx_line_dist_tbl.TITLE_TRANS_SITE_TAX_PROF_ID(i),
710 --                                CTRL_HDR_TX_APPL_FLAG          = p_trx_line_dist_tbl.CTRL_HDR_TX_APPL_FLAG(i),
711 --                                CTRL_TOTAL_LINE_TX_AMT         = p_trx_line_dist_tbl.CTRL_TOTAL_LINE_TX_AMT(i),
712 --                                CTRL_TOTAL_HDR_TX_AMT          = p_trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(i),
713 --                                REF_DOC_APPLICATION_ID         = p_trx_line_dist_tbl.REF_DOC_APPLICATION_ID(i),
714 --                                REF_DOC_ENTITY_CODE            = p_trx_line_dist_tbl.REF_DOC_ENTITY_CODE(i),
715 --                                REF_DOC_EVENT_CLASS_CODE       = p_trx_line_dist_tbl.REF_DOC_EVENT_CLASS_CODE(i),
716 --                                REF_DOC_TRX_ID                 = p_trx_line_dist_tbl.REF_DOC_TRX_ID(i),
717 --                                REF_DOC_LINE_ID                = p_trx_line_dist_tbl.REF_DOC_LINE_ID(i),
718 --                                REF_DOC_LINE_QUANTITY          = p_trx_line_dist_tbl.REF_DOC_LINE_QUANTITY(i),
719 --                                TRX_LINE_DATE                  = p_trx_line_dist_tbl.TRX_LINE_DATE(i),
720 --                                INPUT_TAX_CLASSIFICATION_CODE  = p_trx_line_dist_tbl.INPUT_TAX_CLASSIFICATION_CODE(i),
721 --                                OUTPUT_TAX_CLASSIFICATION_CODE = p_trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(i),
722 --                                INTERNAL_ORG_LOCATION_ID       = p_trx_line_dist_tbl.INTERNAL_ORG_LOCATION_ID(i),
723 --                                PORT_OF_ENTRY_CODE             = p_trx_line_dist_tbl.PORT_OF_ENTRY_CODE(i),
724 --                                TAX_REPORTING_FLAG             = DECODE(p_trx_line_dist_tbl.LINE_LEVEL_ACTION(i),'RECORD_WITH_NO_TAX',
725 --                                                                        'N',
726 --                                                                        NVL(p_trx_line_dist_tbl.TAX_REPORTING_FLAG(i),p_event_class_rec.tax_reporting_flag)),
727 --                                TAX_AMT_INCLUDED_FLAG          = p_trx_line_dist_tbl.TAX_AMT_INCLUDED_FLAG(i),
728 --                                COMPOUNDING_TAX_FLAG           = p_trx_line_dist_tbl.COMPOUNDING_TAX_FLAG(i),
729 --                                SHIP_THIRD_PTY_ACCT_ID         = p_trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_ID(i),
730 --                                BILL_THIRD_PTY_ACCT_ID         = p_trx_line_dist_tbl.BILL_THIRD_PTY_ACCT_ID(i),
731 --                                SHIP_THIRD_PTY_ACCT_SITE_ID    = p_trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_SITE_ID(i),
732 --                                BILL_THIRD_PTY_ACCT_SITE_ID    = p_trx_line_dist_tbl.BILL_THIRD_PTY_ACCT_SITE_ID(i),
733 --                                SHIP_TO_CUST_ACCT_SITE_USE_ID  = p_trx_line_dist_tbl.SHIP_TO_CUST_ACCT_SITE_USE_ID(i),
734 --                                BILL_TO_CUST_ACCT_SITE_USE_ID  = p_trx_line_dist_tbl.BILL_TO_CUST_ACCT_SITE_USE_ID(i),
735 --                                START_EXPENSE_DATE             = p_trx_line_dist_tbl.START_EXPENSE_DATE(i),
736 --                                TRX_BATCH_ID                   = p_trx_line_dist_tbl.TRX_BATCH_ID(i),
737 --                                APPLIED_TO_TRX_NUMBER          = p_trx_line_dist_tbl.APPLIED_TO_TRX_NUMBER(i),
738 --                                SOURCE_APPLICATION_ID          = p_trx_line_dist_tbl.SOURCE_APPLICATION_ID(i),
739 --                                SOURCE_ENTITY_CODE             = p_trx_line_dist_tbl.SOURCE_ENTITY_CODE(i),
740 --                                SOURCE_EVENT_CLASS_CODE        = p_trx_line_dist_tbl.SOURCE_EVENT_CLASS_CODE(i),
741 --                                SOURCE_TRX_ID                  = p_trx_line_dist_tbl.SOURCE_TRX_ID(i),
742 --                                SOURCE_LINE_ID                 = p_trx_line_dist_tbl.SOURCE_LINE_ID(i),
743 --                                SOURCE_TRX_LEVEL_TYPE          = p_trx_line_dist_tbl.SOURCE_TRX_LEVEL_TYPE(i),
744 --                                SOURCE_TAX_LINE_ID             = p_trx_line_dist_tbl.SOURCE_TAX_LINE_ID(i),
745 --                                REF_DOC_TRX_LEVEL_TYPE         = p_trx_line_dist_tbl.REF_DOC_TRX_LEVEL_TYPE(i),
746 --                                APPLIED_TO_TRX_LEVEL_TYPE      = p_trx_line_dist_tbl.APPLIED_TO_TRX_LEVEL_TYPE(i),
747 --                                APPLIED_FROM_TRX_LEVEL_TYPE    = p_trx_line_dist_tbl.APPLIED_FROM_TRX_LEVEL_TYPE(i),
748 --                                ADJUSTED_DOC_TRX_LEVEL_TYPE    = p_trx_line_dist_tbl.ADJUSTED_DOC_TRX_LEVEL_TYPE(i),
749 --                                APPLICATION_DOC_STATUS         = p_trx_line_dist_tbl.APPLICATION_DOC_STATUS(i),
750                                 TAX_PROCESSING_COMPLETED_FLAG  = 'Y',
751                                 TAX_CALCULATION_DONE_FLAG      = 'Y',
752                                 OBJECT_VERSION_NUMBER          = OBJECT_VERSION_NUMBER+1,
753 --                                HDR_TRX_USER_KEY1              = p_trx_line_dist_tbl.HDR_TRX_USER_KEY1(i),
754 --                                HDR_TRX_USER_KEY2              = p_trx_line_dist_tbl.HDR_TRX_USER_KEY2(i),
755 --                                HDR_TRX_USER_KEY3              = p_trx_line_dist_tbl.HDR_TRX_USER_KEY3(i),
756 --                                HDR_TRX_USER_KEY4              = p_trx_line_dist_tbl.HDR_TRX_USER_KEY4(i),
757 --                                HDR_TRX_USER_KEY5              = p_trx_line_dist_tbl.HDR_TRX_USER_KEY5(i),
758 --                                HDR_TRX_USER_KEY6              = p_trx_line_dist_tbl.HDR_TRX_USER_KEY6(i),
759 --                                LINE_TRX_USER_KEY1             = p_trx_line_dist_tbl.LINE_TRX_USER_KEY1(i),
760 --                                LINE_TRX_USER_KEY2             = p_trx_line_dist_tbl.LINE_TRX_USER_KEY2(i),
761 --                                LINE_TRX_USER_KEY3             = p_trx_line_dist_tbl.LINE_TRX_USER_KEY3(i),
762 --                                LINE_TRX_USER_KEY4             = p_trx_line_dist_tbl.LINE_TRX_USER_KEY4(i),
763 --                                LINE_TRX_USER_KEY5             = p_trx_line_dist_tbl.LINE_TRX_USER_KEY5(i),
764 --                                LINE_TRX_USER_KEY6             = p_trx_line_dist_tbl.LINE_TRX_USER_KEY6(i),
765 --                                EXEMPTION_CONTROL_FLAG         = p_trx_line_dist_tbl.EXEMPTION_CONTROL_FLAG(i),
766 --                                EXEMPT_REASON_CODE             = p_trx_line_dist_tbl.EXEMPT_REASON_CODE(i),
767 --                                INTERFACE_ENTITY_CODE          = p_trx_line_dist_tbl.INTERFACE_ENTITY_CODE(i),
768 --                                INTERFACE_LINE_ID              = p_trx_line_dist_tbl.INTERFACE_LINE_ID(i),
769 --                                DEFAULTING_ATTRIBUTE1          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE1(i),
770 --                                DEFAULTING_ATTRIBUTE2          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE2(i),
771 --                                DEFAULTING_ATTRIBUTE3          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE3(i),
772 --                                DEFAULTING_ATTRIBUTE4          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE4(i),
773 --                                DEFAULTING_ATTRIBUTE5          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE5(i),
774 --                                DEFAULTING_ATTRIBUTE6          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE6(i),
775 --                                DEFAULTING_ATTRIBUTE7          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE7(i),
776 --                                DEFAULTING_ATTRIBUTE8          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE8(i),
777 --                                DEFAULTING_ATTRIBUTE9          = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE9(i),
778 --                                DEFAULTING_ATTRIBUTE10         = p_trx_line_dist_tbl.DEFAULTING_ATTRIBUTE10(i),
779 --                                PROVNL_TAX_DETERMINATION_DATE  = p_trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(i),
780 --                                HISTORICAL_TAX_CODE_ID         = p_trx_line_dist_tbl.HISTORICAL_TAX_CODE_ID(i),
781 --                                GLOBAL_ATTRIBUTE_CATEGORY      = p_trx_line_dist_tbl.GLOBAL_ATTRIBUTE_CATEGORY(i),
782 --                                GLOBAL_ATTRIBUTE1              = p_trx_line_dist_tbl.GLOBAL_ATTRIBUTE1(i),
783                                 USER_UPD_DET_FACTORS_FLAG      = NVL(p_trx_line_dist_tbl.USER_UPD_DET_FACTORS_FLAG(i), USER_UPD_DET_FACTORS_FLAG),  -- Bug 5659357
784                                 TOTAL_INC_TAX_AMT              = NVL(p_trx_line_dist_tbl.TOTAL_INC_TAX_AMT(i),0),
785                                 ICX_SESSION_ID                 = ZX_SECURITY.G_ICX_SESSION_ID
786 --                                LAST_UPDATE_DATE               = sysdate,
787 --                                LAST_UPDATED_BY                = fnd_global.user_id,
788 --                                LAST_UPDATE_LOGIN              = fnd_global.conc_login_id
789     	   WHERE APPLICATION_ID   = p_event_class_rec.APPLICATION_ID
790            AND ENTITY_CODE      = p_event_class_rec.ENTITY_CODE
791            AND EVENT_CLASS_CODE = p_event_class_rec.EVENT_CLASS_CODE
792            AND TRX_ID           = p_trx_line_dist_tbl.TRX_ID(i)
793            AND TRX_LINE_ID      = p_trx_line_dist_tbl.TRX_LINE_ID(i)
794            AND TRX_LEVEL_TYPE   = p_trx_line_dist_tbl.TRX_LEVEL_TYPE(i)
795            AND NOT EXISTS (SELECT 'Y'
796                              FROM zx_errors_gt err_gt
797                             WHERE err_gt.application_id   = p_trx_line_dist_tbl.application_id(i)
798                               AND err_gt.entity_code      = p_trx_line_dist_tbl.entity_code(i)
799                               AND err_gt.event_class_code = p_trx_line_dist_tbl.event_class_code(i)
800                               AND err_gt.trx_id           = p_trx_line_dist_tbl.trx_id(i));
801 
802     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
803       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_api_name||'.END',
804         G_PKG_NAME ||':'||l_api_name||'(). Records Updated = ' || SQL%ROWCOUNT);
805       FND_LOG.STRING(G_LEVEL_STATEMENT, G_MODULE_NAME||l_api_name||'.END',
806         G_PKG_NAME ||':'||l_api_name||'()-'||', RETURN_STATUS = ' || x_return_status);
807     END IF;
808 
809  EXCEPTION
810     WHEN OTHERS THEN
811        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
812        IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
813           FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
814        END IF;
815  END db_update_line_det_factors;
816 
817  /* =======================================================================*
818  | PROCEDURE  freeze_tax_distributions :                                  |
819  * =======================================================================*/
820 
821  PROCEDURE freeze_tax_dists_for_items
822   (p_api_version           IN             NUMBER,
823    p_init_msg_list         IN             VARCHAR2,
824    p_commit                IN             VARCHAR2,
825    p_validation_level      IN             NUMBER,
826    x_return_status            OUT NOCOPY  VARCHAR2,
827    x_msg_count                OUT NOCOPY  NUMBER,
828    x_msg_data                 OUT NOCOPY  VARCHAR2,
829    p_transaction_rec       IN OUT NOCOPY  ZX_API_PUB.transaction_rec_type,
830    p_trx_line_dist_id_tbl  IN             ZX_API_PUB.number_tbl_type
831   ) IS
832 
833    l_api_name          CONSTANT  VARCHAR2(30) := 'FREEZE_TAX_DISTS_FOR_ITEMS';
834    l_api_version       CONSTANT  NUMBER := 1.0;
835    l_event_class_rec             ZX_API_PUB.event_class_rec_type;
836    l_init_msg_list               VARCHAR2(1);
837 
838 CURSOR get_event_class_info
839 IS
840 SELECT evntcls.application_id,
841        evntcls.entity_code,
842        evntcls.event_class_code,
843        evnttyp.event_type_code,
844        null,                              --dist.tax_event_class_code,
845        'UPDATE' tax_event_type_code,
846        'UPDATED' doc_status_code,
847        evntcls.summarization_flag,
848        evntcls.retain_summ_tax_line_id_flag
849   FROM zx_evnt_cls_mappings evntcls,
850        zx_evnt_typ_mappings evnttyp
851  WHERE p_transaction_rec.application_id = evntcls.application_id
852    AND p_transaction_rec.entity_code = evntcls.entity_code
853    AND p_transaction_rec.event_class_code = evntcls.event_class_code
854    AND evnttyp.application_id = evntcls.application_id
855    AND evnttyp.entity_code = evntcls.entity_code
856    AND evnttyp.event_class_code = evntcls.event_class_code
857    AND evnttyp.tax_event_type_code = 'UPDATE';
858 
859 
860  BEGIN
861 
862    IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
863      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||
864                     '.BEGIN','ZX_NEW_SERVICES_PKG: '||l_api_name||'()+');
865    END IF;
866 
867   /*--------------------------------------------------+
868    |   Standard start of API savepoint                |
869    +--------------------------------------------------*/
870    SAVEPOINT freeze_tax_dists_for_itms_PVT;
871 
872   /*--------------------------------------------------+
873    |   Standard call to check for call compatibility  |
874    +--------------------------------------------------*/
875    IF NOT FND_API.Compatible_API_Call( l_api_version,
876                                        p_api_version,
877                                        l_api_name,
878                                        G_PKG_NAME
879                                       ) THEN
880       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
881     END IF;
882 
883   /*--------------------------------------------------------------+
884    |   Initialize message list if p_init_msg_list is set to TRUE  |
885    +--------------------------------------------------------------*/
886    IF p_init_msg_list is null THEN
887        l_init_msg_list := FND_API.G_FALSE;
888    ELSE
889        l_init_msg_list := p_init_msg_list;
890    END IF;
891 
892    IF FND_API.to_Boolean(l_init_msg_list) THEN
893      FND_MSG_PUB.initialize;
894    END IF;
895 
896   /*-----------------------------------------+
897    |   Initialize return status to SUCCESS   |
898    +-----------------------------------------*/
899    x_return_status := FND_API.G_RET_STS_SUCCESS;
900 
901   /*-----------------------------------------+
902    |   Populate Global Variable              |
903    +-----------------------------------------*/
904    ZX_API_PUB.G_PUB_SRVC := l_api_name;
905    ZX_API_PUB.G_DATA_TRANSFER_MODE := 'PLS';
906    ZX_API_PUB.G_EXTERNAL_API_CALL  := 'N';
907 
908    -- Get Event Class Info.
909    --
910    OPEN get_event_class_info;
911    FETCH get_event_class_info INTO
912              l_event_class_rec.APPLICATION_ID,
913              l_event_class_rec.ENTITY_CODE,
914              l_event_class_rec.EVENT_CLASS_CODE,
915              l_event_class_rec.EVENT_TYPE_CODE,
916              l_event_class_rec.TAX_EVENT_CLASS_CODE,
917              l_event_class_rec.TAX_EVENT_TYPE_CODE,
918              l_event_class_rec.DOC_STATUS_CODE,
919              l_event_class_rec.summarization_flag,
920              l_event_class_rec.retain_summ_tax_line_id_flag;
921 
922      IF get_event_class_info%notfound THEN
923       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
924           FND_LOG.STRING(G_LEVEL_STATEMENT,
925                          G_MODULE_NAME || l_api_name, G_PKG_NAME||':'||
926                          l_api_name ||': Event Class Info not retreived');
927       END IF;
928      END IF;
929 
930      CLOSE get_event_class_info;
931 
932    /*-----------------------------------------+
933     | Get the event id for the whole document |
934     +-----------------------------------------*/
935     SELECT ZX_LINES_DET_FACTORS_S.NEXTVAL
936     INTO l_event_class_rec.event_id
937     FROM dual;
938 
939   /*------------------------------------------------+
940    |  Update zx_lines_det_factors                   |
941    +------------------------------------------------*/
942    FORALL i IN NVL(p_trx_line_dist_id_tbl.FIRST,0) ..NVL(p_trx_line_dist_id_tbl.LAST, -1)
943      UPDATE /*+ cardinality(ZX_LINES_DET_FACTORS,100) */  ZX_LINES_DET_FACTORS
944        SET EVENT_TYPE_CODE     = p_transaction_rec.event_type_code,
945            TAX_EVENT_TYPE_CODE = p_transaction_rec.tax_event_type_code,
946            EVENT_ID            = l_event_class_rec.event_id,
947            DOC_EVENT_STATUS    = l_event_class_rec.doc_status_code
948      WHERE APPLICATION_ID      = p_transaction_rec.APPLICATION_ID
949        AND ENTITY_CODE         = p_transaction_rec.ENTITY_CODE
950        AND EVENT_CLASS_CODE    = p_transaction_rec.EVENT_CLASS_CODE
951        AND TRX_ID              = p_transaction_rec.TRX_ID
952        AND (TRX_LINE_ID, TRX_LEVEL_TYPE) IN
953             (SELECT /*+ use_hash(dist) */ dist.trx_line_id, dist.trx_level_type
954                FROM zx_rec_nrec_dist dist
955               WHERE application_id = p_transaction_rec.application_id
956                 AND entity_code = p_transaction_rec.entity_code
957                 AND event_class_code = p_transaction_rec.event_class_code
958                 AND trx_id = p_transaction_rec.trx_id
959                 AND trx_line_dist_id  = p_trx_line_dist_id_tbl(i)
960             );
961 
962    -- Update Pseudo Item Lines for Tax only lines.
963    UPDATE /*+ cardinality(ZX_LINES_DET_FACTORS,100) */  ZX_LINES_DET_FACTORS
964      SET EVENT_TYPE_CODE     = p_transaction_rec.event_type_code,
965          TAX_EVENT_TYPE_CODE = p_transaction_rec.tax_event_type_code,
966          EVENT_ID            = l_event_class_rec.event_id,
967          DOC_EVENT_STATUS    = l_event_class_rec.doc_status_code
968    WHERE APPLICATION_ID      = p_transaction_rec.APPLICATION_ID
969      AND ENTITY_CODE         = p_transaction_rec.ENTITY_CODE
970      AND EVENT_CLASS_CODE    = p_transaction_rec.EVENT_CLASS_CODE
971      AND TRX_ID              = p_transaction_rec.TRX_ID
972      AND (TRX_LINE_ID, TRX_LEVEL_TYPE) IN
973           (SELECT dist.trx_line_id, dist.trx_level_type
974              FROM zx_rec_nrec_dist dist
975             WHERE application_id = p_transaction_rec.application_id
976               AND entity_code = p_transaction_rec.entity_code
977               AND event_class_code = p_transaction_rec.event_class_code
978               AND trx_id = p_transaction_rec.trx_id
979               AND tax_only_line_flag  = 'Y'
980           );
981 
982     FORALL i IN NVL(p_trx_line_dist_id_tbl.FIRST,0) ..NVL(p_trx_line_dist_id_tbl.LAST, -1)
983       UPDATE ZX_REC_NREC_DIST
984          SET freeze_flag = 'Y',
985              event_type_code = l_event_class_rec.event_type_code,
986              tax_event_type_code = l_event_class_rec.tax_event_type_code
987        WHERE application_id = p_transaction_rec.application_id
988          AND entity_code = p_transaction_rec.entity_code
989          AND event_class_code = p_transaction_rec.event_class_code
990          AND trx_id = p_transaction_rec.trx_id
991          AND trx_line_dist_id  = p_trx_line_dist_id_tbl(i);
992 
993    -- Update freeze_flag for tax only distributions.
994    UPDATE ZX_REC_NREC_DIST
995       SET freeze_flag = 'Y',
996           event_type_code = l_event_class_rec.event_type_code,
997           tax_event_type_code = l_event_class_rec.tax_event_type_code
998     WHERE application_id = p_transaction_rec.application_id
999       AND entity_code = p_transaction_rec.entity_code
1000       AND event_class_code = p_transaction_rec.event_class_code
1001       AND trx_id = p_transaction_rec.trx_id
1002       AND tax_only_line_flag = 'Y';
1003 
1004    FORALL i IN NVL(p_trx_line_dist_id_tbl.FIRST,0) ..NVL(p_trx_line_dist_id_tbl.LAST, -1)
1005      UPDATE ZX_LINES ZL
1006         SET associated_child_frozen_flag ='Y',
1007             event_type_code = l_event_class_rec.event_type_code,
1008             tax_event_type_code = l_event_class_rec.tax_event_type_code,
1009             doc_event_status = l_event_class_rec.doc_status_code
1010       WHERE TAX_LINE_ID IN (SELECT ZD.TAX_LINE_ID
1011                               FROM ZX_REC_NREC_DIST ZD
1012                              WHERE application_id = p_transaction_rec.application_id
1013                                AND entity_code = p_transaction_rec.entity_code
1014                                AND event_class_code = p_transaction_rec.event_class_code
1015                                AND trx_id = p_transaction_rec.trx_id
1016                                AND trx_line_dist_id  = p_trx_line_dist_id_tbl(i)
1017                             );
1018 
1019    -- Update assciated_child_frozen_fag for tax only lines.
1020    UPDATE ZX_LINES ZL
1021       SET associated_child_frozen_flag ='Y',
1022           event_type_code = l_event_class_rec.event_type_code,
1023           tax_event_type_code = l_event_class_rec.tax_event_type_code,
1024           doc_event_status = l_event_class_rec.doc_status_code
1025     WHERE TAX_LINE_ID IN (SELECT ZD.TAX_LINE_ID
1026                             FROM ZX_REC_NREC_DIST ZD
1027                            WHERE application_id = p_transaction_rec.application_id
1028                              AND entity_code = p_transaction_rec.entity_code
1029                              AND event_class_code = p_transaction_rec.event_class_code
1030                              AND trx_id = p_transaction_rec.trx_id
1031                              AND tax_only_line_flag = 'Y'
1032                           );
1033 
1034     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1035       FND_LOG.STRING(G_LEVEL_PROCEDURE,
1036                      G_MODULE_NAME||l_api_name||'.END',
1037                      'ZX_NEW_SERVICES_PKG: '||l_api_name||'()-');
1038     END IF;
1039 
1040    EXCEPTION
1041      WHEN FND_API.G_EXC_ERROR THEN
1042        ROLLBACK TO freeze_tax_dists_for_itms_PVT;
1043        x_return_status := FND_API.G_RET_STS_ERROR ;
1044       /*---------------------------------------------------------+
1045        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
1046        | in the message stack. If there is only one message in   |
1047        | the stack it retrieves this message                     |
1048        +---------------------------------------------------------*/
1049        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1050                                  p_count       =>      x_msg_count,
1051                                  p_data        =>      x_msg_data
1052                                  );
1053 
1054        IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
1055           FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
1056        END IF;
1057 
1058      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1059        ROLLBACK TO freeze_tax_dists_for_itms_PVT;
1060        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1061        FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1062        FND_MSG_PUB.Add;
1063       /*---------------------------------------------------------+
1064        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
1065        | in the message stack. If there is only one message in   |
1066        | the stack it retrieves this message                     |
1067        +---------------------------------------------------------*/
1068        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1069                                  p_count       =>      x_msg_count,
1070                                  p_data        =>      x_msg_data
1071                                  );
1072        IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
1073          FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
1074        END IF;
1075 
1076      WHEN OTHERS THEN
1077        ROLLBACK TO freeze_tax_dists_for_itms_PVT;
1078        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1079        FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1080        FND_MSG_PUB.Add;
1081       /*---------------------------------------------------------+
1082        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
1083        | in the message stack. If there is only one message in   |
1084        | the stack it retrieves this message                     |
1085        +---------------------------------------------------------*/
1086        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1087                                  p_count       =>      x_msg_count,
1088                                  p_data        =>      x_msg_data
1089                                 );
1090       IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1091         FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
1092       END IF;
1093  END freeze_tax_dists_for_items;
1094 
1095 PROCEDURE UPDATE_DET_FACTORS_FOR_CANCEL(
1096              x_return_status            OUT NOCOPY VARCHAR2,
1097              x_msg_count                OUT NOCOPY NUMBER,
1098              x_msg_data                 OUT NOCOPY VARCHAR2,
1099              p_event_class_rec       IN OUT NOCOPY ZX_API_PUB.event_class_rec_type,
1100              p_transaction_rec       IN            ZX_API_PUB.transaction_rec_type,
1101              p_trx_line_id           IN            NUMBER,
1102              p_trx_level_type        IN            VARCHAR2,
1103              p_line_level_action     IN            VARCHAR2
1104                                         )
1105 IS
1106 
1107    l_api_name          CONSTANT  VARCHAR2(30) := 'UPDATE_DET_FACTORS_FOR_CANCEL';
1108    l_api_version       CONSTANT  NUMBER := 1.0;
1109    l_return_status               VARCHAR2(30);
1110    l_event_class_rec             ZX_API_PUB.event_class_rec_type;
1111    l_init_msg_list               VARCHAR2(1);
1112 
1113   CURSOR event_classes IS
1114   SELECT distinct
1115          header.event_class_code,
1116          header.application_id,
1117          header.entity_code,
1118          header.internal_organization_id,
1119          evntmap.processing_precedence,
1120          header.icx_session_id,
1121          header.quote_flag
1122   FROM ZX_EVNT_CLS_MAPPINGS evntmap,
1123        ZX_TRX_HEADERS_GT header
1124   WHERE header.application_id = evntmap.application_id
1125   AND header.entity_code = evntmap.entity_code
1126   AND header.event_class_code = evntmap.event_class_code
1127   AND header.application_id = p_transaction_rec.application_id
1128   AND header.entity_code = p_transaction_rec.entity_code
1129   AND header.event_class_code = p_transaction_rec.event_class_code
1130   AND header.trx_id = p_transaction_rec.trx_id
1131   ORDER BY evntmap.processing_precedence;
1132 
1133   l_application_id_tbl     	NUMBER_tbl_type;
1134   l_entity_code_tbl    	VARCHAR2_30_tbl_type;
1135   l_event_class_code_tbl	VARCHAR2_30_tbl_type;
1136   l_trx_id_tbl		NUMBER_tbl_type;
1137   l_icx_session_id_tbl	NUMBER_tbl_type;
1138   l_event_type_code_tbl	VARCHAR2_30_tbl_type;
1139   l_tax_event_type_code_tbl	VARCHAR2_30_tbl_type;
1140   l_doc_event_status_tbl	VARCHAR2_30_tbl_type;
1141 
1142   l_internal_org_location_id    NUMBER;
1143   l_context_info_rec            ZX_API_PUB.context_info_rec_type;
1144   l_flag                        BOOLEAN;
1145   l_trx_id                      NUMBER := -1;
1146   l_legal_entity_id             NUMBER := -1;
1147   l_trx_date                    DATE := TO_DATE('01/01/1951', 'DD/MM/RRRR');
1148   l_effective_date              DATE;
1149   l_event_id                    NUMBER;
1150   l_error_buffer                VARCHAR2(2000);
1151 
1152 BEGIN
1153 
1154    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1155      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_NEW_SERVICES_PKG: '||l_api_name||'()+');
1156    END IF;
1157 
1158    SAVEPOINT update_det_factors_PVT;
1159    x_return_status := FND_API.G_RET_STS_SUCCESS;
1160 
1161    ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (p_event_class_rec => NULL,
1162                                             p_init_level      => 'SESSION',
1163                                             x_return_status   => l_return_status
1164                                            );
1165 
1166    OPEN event_classes;
1167    LOOP
1168    FETCH event_classes BULK COLLECT INTO
1169          l_evnt_cls.event_class_code,
1170          l_evnt_cls.application_id,
1171          l_evnt_cls.entity_code,
1172          l_evnt_cls.internal_organization_id,
1173          l_evnt_cls.precedence,
1174          l_evnt_cls.icx_session_id,
1175          l_evnt_cls.quote_flag
1176    LIMIT G_LINES_PER_FETCH;
1177    EXIT WHEN event_classes%NOTFOUND;
1178    END LOOP;
1179    CLOSE event_classes;
1180 
1181    IF l_evnt_cls.internal_organization_id.COUNT > 1 THEN
1182      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1183      IF (g_level_unexpected >= g_current_runtime_level ) THEN
1184         FND_LOG.STRING(g_level_unexpected,
1185                'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel',
1186                'This API cannot handle Bulk calls');
1187         FND_LOG.STRING(g_level_unexpected,
1188                'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1189                'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1190     END IF;
1191     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1192    END IF;
1193 
1194    IF l_evnt_cls.event_class_code.LAST is null THEN
1195      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1196        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1197          'Event class information does not exist - indicates SALES_TRANSACTION_TAX_QUOTE/PURCHASE_TRANSACTION_TAX_QUOTE');
1198      END IF;
1199 
1200      select event_class_code,
1201             application_id,
1202             entity_code,
1203             internal_organization_id,
1204             icx_session_id,
1205             quote_flag
1206      into l_evnt_cls.event_class_code(1),
1207           l_evnt_cls.application_id(1),
1208           l_evnt_cls.entity_code(1),
1209           l_evnt_cls.internal_organization_id(1),
1210           l_evnt_cls.icx_session_id(1),
1211           l_evnt_cls.quote_flag(1)
1212      from ZX_TRX_HEADERS_GT
1213      where application_id = p_transaction_rec.application_id
1214      and entity_code = p_transaction_rec.entity_code
1215      and event_class_code = p_transaction_rec.event_class_code
1216      and trx_id = p_transaction_rec.trx_id;
1217    END IF;
1218 
1219    select ZX_LINES_DET_FACTORS_S.nextval
1220    into l_event_id
1221    from dual;
1222 
1223    l_event_class_rec.EVENT_ID                     :=  l_event_id;
1224    l_event_class_rec.INTERNAL_ORGANIZATION_ID     :=  l_evnt_cls.internal_organization_id(1);
1225    l_event_class_rec.APPLICATION_ID               :=  l_evnt_cls.application_id(1);
1226    l_event_class_rec.ENTITY_CODE                  :=  l_evnt_cls.entity_code(1);
1227    l_event_class_rec.EVENT_CLASS_CODE             :=  l_evnt_cls.event_class_code(1);
1228    l_event_class_rec.ICX_SESSION_ID               :=  l_evnt_cls.icx_session_id(1);
1229    l_event_class_rec.QUOTE_FLAG		                :=  nvl(l_evnt_cls.quote_flag(1),'N');
1230 
1231    IF l_event_class_rec.QUOTE_FLAG = 'Y' and
1232       l_event_class_rec.ICX_SESSION_ID is not null THEN
1233      ZX_SECURITY.G_ICX_SESSION_ID := l_event_class_rec.ICX_SESSION_ID;
1234      ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
1235    END IF;
1236 
1237    ZX_GLOBAL_STRUCTURES_PKG.g_party_tax_prof_id_info_tbl.DELETE;
1238    ZX_VALID_INIT_PARAMS_PKG.calculate_tax(p_event_class_rec => l_event_class_rec,
1239                                           x_return_status   => l_return_status
1240                                          );
1241 
1242    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1243      x_return_status := l_return_status ;
1244      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1245        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1246             G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.calculate_tax returned errors');
1247        FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1248             'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1249      END IF;
1250      RETURN;
1251    END IF;
1252 
1253    ZX_TCM_PTP_PKG.get_location_id(l_event_class_rec.internal_organization_id,
1254                                   l_internal_org_location_id,
1255                                   l_return_status
1256                                   );
1257    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1258      x_return_status := l_return_status;
1259      IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1260         l_context_info_rec.APPLICATION_ID   := l_event_class_rec.APPLICATION_ID;
1261         l_context_info_rec.ENTITY_CODE      := l_event_class_rec.ENTITY_CODE;
1262         l_context_info_rec.EVENT_CLASS_CODE := l_event_class_rec.EVENT_CLASS_CODE;
1263         l_context_info_rec.TRX_ID           := l_event_class_rec.TRX_ID;
1264         ZX_API_PUB.add_msg(p_context_info_rec => l_context_info_rec);
1265      END IF;
1266      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1267         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1268           ' RETURN_STATUS = ' || x_return_status);
1269 	      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1270           G_PKG_NAME||': '||l_api_name||':ZX_TCM_PTP_PKG.get_location_id returned errors');
1271 	      FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1272             'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1273      END IF;
1274      RETURN;
1275    END IF;
1276 
1277    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1278    	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1279           'p_trx_line_id:' || p_trx_line_id);
1280 	  FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel',
1281             'p_trx_level_type: ' || p_trx_level_type);
1282    END IF;
1283 
1284    OPEN c_lines(l_event_class_rec,
1285                 p_trx_line_id,
1286                 p_trx_level_type);
1287    LOOP
1288    FETCH c_lines BULK COLLECT INTO
1289              zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID ,
1290              zx_global_structures_pkg.trx_line_dist_tbl.APPLICATION_ID,
1291              zx_global_structures_pkg.trx_line_dist_tbl.ENTITY_CODE,
1292              zx_global_structures_pkg.trx_line_dist_tbl.EVENT_CLASS_CODE,
1293              zx_global_structures_pkg.trx_line_dist_tbl.EVENT_TYPE_CODE,
1294              zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID,
1295              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LEVEL_TYPE,
1296              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_ID,
1297              zx_global_structures_pkg.trx_line_dist_tbl.LINE_LEVEL_ACTION,
1298              zx_global_structures_pkg.trx_line_dist_tbl.LINE_CLASS,
1299              zx_global_structures_pkg.trx_line_dist_tbl.TRX_DATE,
1300              zx_global_structures_pkg.trx_line_dist_tbl.TRX_DOC_REVISION,
1301              zx_global_structures_pkg.trx_line_dist_tbl.LEDGER_ID,
1302              zx_global_structures_pkg.trx_line_dist_tbl.TRX_CURRENCY_CODE,
1303              zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE,
1304              zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE,
1305              zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE,
1306              zx_global_structures_pkg.trx_line_dist_tbl.MINIMUM_ACCOUNTABLE_UNIT,
1307              zx_global_structures_pkg.trx_line_dist_tbl.PRECISION,
1308              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CODE,
1309              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_DATE,
1310              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_RATE,
1311              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_CURRENCY_CONV_TYPE,
1312              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_MAU,
1313              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_PRECISION,
1314              zx_global_structures_pkg.trx_line_dist_tbl.TRX_SHIPPING_DATE,
1315              zx_global_structures_pkg.trx_line_dist_tbl.TRX_RECEIPT_DATE,
1316              zx_global_structures_pkg.trx_line_dist_tbl.LEGAL_ENTITY_ID,
1317              zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID,
1318              zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID,
1319              zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID,
1320              zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID,
1321              zx_global_structures_pkg.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID,
1322              zx_global_structures_pkg.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID,
1323              zx_global_structures_pkg.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID,
1324              zx_global_structures_pkg.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID,
1325              zx_global_structures_pkg.trx_line_dist_tbl.ESTABLISHMENT_ID,
1326              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_TYPE,
1327              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DATE,
1328              zx_global_structures_pkg.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY,
1329              zx_global_structures_pkg.trx_line_dist_tbl.LINE_INTENDED_USE,
1330              zx_global_structures_pkg.trx_line_dist_tbl.USER_DEFINED_FISC_CLASS,
1331              zx_global_structures_pkg.trx_line_dist_tbl.LINE_AMT,
1332              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_QUANTITY,
1333              zx_global_structures_pkg.trx_line_dist_tbl.UNIT_PRICE,
1334              zx_global_structures_pkg.trx_line_dist_tbl.EXEMPT_CERTIFICATE_NUMBER,
1335              zx_global_structures_pkg.trx_line_dist_tbl.EXEMPT_REASON,
1336              zx_global_structures_pkg.trx_line_dist_tbl.CASH_DISCOUNT,
1337              zx_global_structures_pkg.trx_line_dist_tbl.VOLUME_DISCOUNT,
1338              zx_global_structures_pkg.trx_line_dist_tbl.TRADING_DISCOUNT,
1339              zx_global_structures_pkg.trx_line_dist_tbl.TRANSFER_CHARGE,
1340              zx_global_structures_pkg.trx_line_dist_tbl.TRANSPORTATION_CHARGE,
1341              zx_global_structures_pkg.trx_line_dist_tbl.INSURANCE_CHARGE,
1342              zx_global_structures_pkg.trx_line_dist_tbl.OTHER_CHARGE,
1343              zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_ID,
1344              zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION,
1345              zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_ORG_ID,
1346              zx_global_structures_pkg.trx_line_dist_tbl.UOM_CODE,
1347              zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_TYPE,
1348              zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_CODE,
1349              zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_CATEGORY,
1350              zx_global_structures_pkg.trx_line_dist_tbl.TRX_SIC_CODE,
1351              zx_global_structures_pkg.trx_line_dist_tbl.FOB_POINT,
1352              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_PARTY_ID,
1353              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_PARTY_ID,
1354              zx_global_structures_pkg.trx_line_dist_tbl.POA_PARTY_ID,
1355              zx_global_structures_pkg.trx_line_dist_tbl.POO_PARTY_ID,
1356              zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_PARTY_ID,
1357              zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_PARTY_ID,
1358              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_ID,
1359              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_PARTY_SITE_ID,
1360              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_PARTY_SITE_ID,
1361              zx_global_structures_pkg.trx_line_dist_tbl.POA_PARTY_SITE_ID,
1362              zx_global_structures_pkg.trx_line_dist_tbl.POO_PARTY_SITE_ID,
1363              zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_PARTY_SITE_ID,
1364              zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_PARTY_SITE_ID,
1365              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_LOCATION_ID,
1366              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_LOCATION_ID,
1367              zx_global_structures_pkg.trx_line_dist_tbl.POA_LOCATION_ID,
1368              zx_global_structures_pkg.trx_line_dist_tbl.POO_LOCATION_ID,
1369              zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_LOCATION_ID,
1370              zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_LOCATION_ID,
1371              zx_global_structures_pkg.trx_line_dist_tbl.ACCOUNT_CCID,
1372              zx_global_structures_pkg.trx_line_dist_tbl.ACCOUNT_STRING,
1373              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_COUNTRY,
1374              zx_global_structures_pkg.trx_line_dist_tbl.HDR_RECEIVABLES_TRX_TYPE_ID,
1375              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_APPLICATION_ID,
1376              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_ENTITY_CODE,
1377              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_EVENT_CLASS_CODE,
1378              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_TRX_ID,
1379              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LINE_ID,
1380              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LINE_QUANTITY,
1381              zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_APPLICATION_ID,
1382              zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_ENTITY_CODE,
1383              zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_EVENT_CLASS_CODE,
1384              zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_TRX_ID,
1385              zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_NUMBER,
1386              zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_DATE,
1387              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_APPLICATION_ID ,
1388              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_EVENT_CLASS_CODE ,
1389              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_ENTITY_CODE ,
1390              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_ID ,
1391              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_LINE_ID ,
1392              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_NUMBER ,
1393              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_APPLICATION_ID ,
1394              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_EVENT_CLASS_CODE ,
1395              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_ENTITY_CODE ,
1396              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TRX_ID ,
1397              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_LINE_ID ,
1398              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_NUMBER,
1399              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_DATE,
1400              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_APPLICATION_ID,
1401              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_ENTITY_CODE,
1402              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_EVENT_CLASS_CODE,
1403              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_ID,
1404              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_LINE_ID,
1405              zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL2,
1406              zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL3,
1407              zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL4,
1408              zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL5,
1409              zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL6,
1410              zx_global_structures_pkg.trx_line_dist_tbl.TRX_NUMBER,
1411              zx_global_structures_pkg.trx_line_dist_tbl.TRX_DESCRIPTION,
1412              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_NUMBER,
1413              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DESCRIPTION,
1414              zx_global_structures_pkg.trx_line_dist_tbl.PRODUCT_DESCRIPTION,
1415              zx_global_structures_pkg.trx_line_dist_tbl.TRX_WAYBILL_NUMBER,
1416              zx_global_structures_pkg.trx_line_dist_tbl.TRX_COMMUNICATED_DATE,
1417              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_GL_DATE,
1418              zx_global_structures_pkg.trx_line_dist_tbl.BATCH_SOURCE_ID,
1419              zx_global_structures_pkg.trx_line_dist_tbl.BATCH_SOURCE_NAME,
1420              zx_global_structures_pkg.trx_line_dist_tbl.DOC_SEQ_ID,
1421              zx_global_structures_pkg.trx_line_dist_tbl.DOC_SEQ_NAME,
1422              zx_global_structures_pkg.trx_line_dist_tbl.DOC_SEQ_VALUE,
1423              zx_global_structures_pkg.trx_line_dist_tbl.TRX_DUE_DATE,
1424              zx_global_structures_pkg.trx_line_dist_tbl.TRX_TYPE_DESCRIPTION,
1425              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_NAME,
1426              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_DOCUMENT_NUMBER,
1427              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_REFERENCE,
1428              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_TAXPAYER_ID,
1429              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_TAX_REG_NUMBER,
1430              zx_global_structures_pkg.trx_line_dist_tbl.PAYING_PARTY_ID,
1431              zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_PARTY_ID,
1432              zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_PARTY_ID,
1433              zx_global_structures_pkg.trx_line_dist_tbl.POI_PARTY_ID,
1434              zx_global_structures_pkg.trx_line_dist_tbl.POD_PARTY_ID,
1435              zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANSFER_PARTY_ID,
1436              zx_global_structures_pkg.trx_line_dist_tbl.PAYING_PARTY_SITE_ID,
1437              zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_PARTY_SITE_ID,
1438              zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_PARTY_SITE_ID,
1439              zx_global_structures_pkg.trx_line_dist_tbl.POI_PARTY_SITE_ID,
1440              zx_global_structures_pkg.trx_line_dist_tbl.POD_PARTY_SITE_ID,
1441              zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANSFER_PARTY_SITE_ID,
1442              zx_global_structures_pkg.trx_line_dist_tbl.PAYING_LOCATION_ID,
1443              zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_LOCATION_ID,
1444              zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_LOCATION_ID,
1445              zx_global_structures_pkg.trx_line_dist_tbl.POC_LOCATION_ID,
1446              zx_global_structures_pkg.trx_line_dist_tbl.POI_LOCATION_ID,
1447              zx_global_structures_pkg.trx_line_dist_tbl.POD_LOCATION_ID,
1448              zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANSFER_LOCATION_ID,
1449              zx_global_structures_pkg.trx_line_dist_tbl.ASSESSABLE_VALUE,
1450              zx_global_structures_pkg.trx_line_dist_tbl.Asset_Flag,
1451              zx_global_structures_pkg.trx_line_dist_tbl.ASSET_NUMBER,
1452              zx_global_structures_pkg.trx_line_dist_tbl.ASSET_ACCUM_DEPRECIATION,
1453              zx_global_structures_pkg.trx_line_dist_tbl.ASSET_TYPE,
1454              zx_global_structures_pkg.trx_line_dist_tbl.ASSET_COST,
1455              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC1,
1456              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC2,
1457              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC3,
1458              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC4,
1459              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC5,
1460              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC6,
1461              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC7,
1462              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC8,
1463              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC9,
1464              zx_global_structures_pkg.trx_line_dist_tbl.NUMERIC10,
1465              zx_global_structures_pkg.trx_line_dist_tbl.CHAR1,
1466              zx_global_structures_pkg.trx_line_dist_tbl.CHAR2,
1467              zx_global_structures_pkg.trx_line_dist_tbl.CHAR3,
1468              zx_global_structures_pkg.trx_line_dist_tbl.CHAR4,
1469              zx_global_structures_pkg.trx_line_dist_tbl.CHAR5,
1470              zx_global_structures_pkg.trx_line_dist_tbl.CHAR6,
1471              zx_global_structures_pkg.trx_line_dist_tbl.CHAR7,
1472              zx_global_structures_pkg.trx_line_dist_tbl.CHAR8,
1473              zx_global_structures_pkg.trx_line_dist_tbl.CHAR9,
1474              zx_global_structures_pkg.trx_line_dist_tbl.CHAR10,
1475              zx_global_structures_pkg.trx_line_dist_tbl.DATE1,
1476              zx_global_structures_pkg.trx_line_dist_tbl.DATE2,
1477              zx_global_structures_pkg.trx_line_dist_tbl.DATE3,
1478              zx_global_structures_pkg.trx_line_dist_tbl.DATE4,
1479              zx_global_structures_pkg.trx_line_dist_tbl.DATE5,
1480              zx_global_structures_pkg.trx_line_dist_tbl.DATE6,
1481              zx_global_structures_pkg.trx_line_dist_tbl.DATE7,
1482              zx_global_structures_pkg.trx_line_dist_tbl.DATE8,
1483              zx_global_structures_pkg.trx_line_dist_tbl.DATE9,
1484              zx_global_structures_pkg.trx_line_dist_tbl.DATE10,
1485              zx_global_structures_pkg.trx_line_dist_tbl.FIRST_PTY_ORG_ID,
1486              zx_global_structures_pkg.trx_line_dist_tbl.TAX_EVENT_CLASS_CODE,
1487              zx_global_structures_pkg.trx_line_dist_tbl.TAX_EVENT_TYPE_CODE,
1488              zx_global_structures_pkg.trx_line_dist_tbl.DOC_EVENT_STATUS,
1489              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_SHIP_TO_PTY_TX_PROF_ID,
1490              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_SHIP_FROM_PTY_TX_PROF_ID,
1491              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_BILL_TO_PTY_TX_PROF_ID,
1492              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_BILL_FROM_PTY_TX_PROF_ID,
1493              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_SHIP_TO_PTY_TX_P_ST_ID,
1494              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_SHIP_FROM_PTY_TX_P_ST_ID,
1495              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_BILL_TO_PTY_TX_P_ST_ID,
1496              zx_global_structures_pkg.trx_line_dist_tbl.RDNG_BILL_FROM_PTY_TX_P_ST_ID,
1497              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_PARTY_TAX_PROF_ID,
1498              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_PARTY_TAX_PROF_ID,
1499              zx_global_structures_pkg.trx_line_dist_tbl.POA_PARTY_TAX_PROF_ID,
1500              zx_global_structures_pkg.trx_line_dist_tbl.POO_PARTY_TAX_PROF_ID,
1501              zx_global_structures_pkg.trx_line_dist_tbl.PAYING_PARTY_TAX_PROF_ID,
1502              zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_PARTY_TAX_PROF_ID,
1503              zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_PARTY_TAX_PROF_ID,
1504              zx_global_structures_pkg.trx_line_dist_tbl.POI_PARTY_TAX_PROF_ID,
1505              zx_global_structures_pkg.trx_line_dist_tbl.POD_PARTY_TAX_PROF_ID,
1506              zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_PARTY_TAX_PROF_ID,
1507              zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_PARTY_TAX_PROF_ID,
1508              zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANS_PARTY_TAX_PROF_ID,
1509              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_SITE_TAX_PROF_ID,
1510              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_FROM_SITE_TAX_PROF_ID,
1511              zx_global_structures_pkg.trx_line_dist_tbl.POA_SITE_TAX_PROF_ID,
1512              zx_global_structures_pkg.trx_line_dist_tbl.POO_SITE_TAX_PROF_ID,
1513              zx_global_structures_pkg.trx_line_dist_tbl.PAYING_SITE_TAX_PROF_ID,
1514              zx_global_structures_pkg.trx_line_dist_tbl.OWN_HQ_SITE_TAX_PROF_ID,
1515              zx_global_structures_pkg.trx_line_dist_tbl.TRADING_HQ_SITE_TAX_PROF_ID,
1516              zx_global_structures_pkg.trx_line_dist_tbl.POI_SITE_TAX_PROF_ID,
1517              zx_global_structures_pkg.trx_line_dist_tbl.POD_SITE_TAX_PROF_ID,
1518              zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_SITE_TAX_PROF_ID,
1519              zx_global_structures_pkg.trx_line_dist_tbl.BILL_FROM_SITE_TAX_PROF_ID,
1520              zx_global_structures_pkg.trx_line_dist_tbl.TITLE_TRANS_SITE_TAX_PROF_ID,
1521              zx_global_structures_pkg.trx_line_dist_tbl.MERCHANT_PARTY_TAX_PROF_ID,
1522              zx_global_structures_pkg.trx_line_dist_tbl.HQ_ESTB_PARTY_TAX_PROF_ID ,
1523              zx_global_structures_pkg.trx_line_dist_tbl.DOCUMENT_SUB_TYPE,
1524              zx_global_structures_pkg.trx_line_dist_tbl.SUPPLIER_TAX_INVOICE_NUMBER,
1525              zx_global_structures_pkg.trx_line_dist_tbl.SUPPLIER_TAX_INVOICE_DATE,
1526              zx_global_structures_pkg.trx_line_dist_tbl.SUPPLIER_EXCHANGE_RATE,
1527              zx_global_structures_pkg.trx_line_dist_tbl.TAX_INVOICE_DATE,
1528              zx_global_structures_pkg.trx_line_dist_tbl.TAX_INVOICE_NUMBER,
1529              zx_global_structures_pkg.trx_line_dist_tbl.LINE_AMT_INCLUDES_TAX_FLAG,
1530              zx_global_structures_pkg.trx_line_dist_tbl.QUOTE_FLAG,
1531              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULT_TAXATION_COUNTRY,
1532              zx_global_structures_pkg.trx_line_dist_tbl.HISTORICAL_FLAG,
1533              zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORG_LOCATION_ID,
1534              zx_global_structures_pkg.trx_line_dist_tbl.CTRL_HDR_TX_APPL_FLAG,
1535              zx_global_structures_pkg.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT,
1536              zx_global_structures_pkg.trx_line_dist_tbl.CTRL_TOTAL_LINE_TX_AMT,
1537              zx_global_structures_pkg.trx_line_dist_tbl.DIST_LEVEL_ACTION,
1538              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TAX_DIST_ID,
1539              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TAX_DIST_ID,
1540              zx_global_structures_pkg.trx_line_dist_tbl.TASK_ID,
1541              zx_global_structures_pkg.trx_line_dist_tbl.AWARD_ID,
1542              zx_global_structures_pkg.trx_line_dist_tbl.PROJECT_ID,
1543              zx_global_structures_pkg.trx_line_dist_tbl.EXPENDITURE_TYPE,
1544              zx_global_structures_pkg.trx_line_dist_tbl.EXPENDITURE_ORGANIZATION_ID,
1545              zx_global_structures_pkg.trx_line_dist_tbl.EXPENDITURE_ITEM_DATE,
1546              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_AMT,
1547              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_QUANTITY,
1548              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_CURR_CONV_RATE,
1549              zx_global_structures_pkg.trx_line_dist_tbl.ITEM_DIST_NUMBER,
1550              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_DIST_ID,
1551              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_TAX_AMT,
1552              zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DIST_ID,
1553              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_DIST_ID ,
1554              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_DIST_ID,
1555              zx_global_structures_pkg.trx_line_dist_tbl.OVERRIDING_RECOVERY_RATE,
1556              zx_global_structures_pkg.trx_line_dist_tbl.INPUT_TAX_CLASSIFICATION_CODE,
1557              zx_global_structures_pkg.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE,
1558              zx_global_structures_pkg.trx_line_dist_tbl.PORT_OF_ENTRY_CODE,
1559              zx_global_structures_pkg.trx_line_dist_tbl.TAX_REPORTING_FLAG,
1560              zx_global_structures_pkg.trx_line_dist_tbl.TAX_AMT_INCLUDED_FLAG,
1561              zx_global_structures_pkg.trx_line_dist_tbl.COMPOUNDING_TAX_FLAG,
1562              zx_global_structures_pkg.trx_line_dist_tbl.HDR_SHIP_THIRD_PTY_ACCT_ST_ID,
1563              zx_global_structures_pkg.trx_line_dist_tbl.HDR_BILL_THIRD_PTY_ACCT_ST_ID,
1564              zx_global_structures_pkg.trx_line_dist_tbl.HDR_SHIP_TO_CST_ACCT_ST_USE_ID,
1565              zx_global_structures_pkg.trx_line_dist_tbl.HDR_BILL_TO_CST_ACCT_ST_USE_ID,
1566              zx_global_structures_pkg.trx_line_dist_tbl.HDR_SHIP_THIRD_PTY_ACCT_ID,
1567              zx_global_structures_pkg.trx_line_dist_tbl.HDR_BILL_THIRD_PTY_ACCT_ID,
1568              zx_global_structures_pkg.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE,
1569              zx_global_structures_pkg.trx_line_dist_tbl.START_EXPENSE_DATE ,
1570              zx_global_structures_pkg.trx_line_dist_tbl.TRX_BATCH_ID ,
1571              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_NUMBER ,
1572              zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_APPLICATION_ID,
1573              zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_ENTITY_CODE,
1574              zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_EVENT_CLASS_CODE,
1575              zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_TRX_ID,
1576              zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_LINE_ID,
1577              zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_TRX_LEVEL_TYPE,
1578              zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_TRX_LEVEL_TYPE,
1579              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_LEVEL_TYPE,
1580              zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_LEVEL_TYPE,
1581              zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TRX_LEVEL_TYPE,
1582              zx_global_structures_pkg.trx_line_dist_tbl.APPLICATION_DOC_STATUS,
1583              zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY1,
1584              zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY2,
1585              zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY3,
1586              zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY4,
1587              zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY5,
1588              zx_global_structures_pkg.trx_line_dist_tbl.HDR_TRX_USER_KEY6,
1589              zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY1,
1590              zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY2,
1591              zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY3,
1592              zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY4,
1593              zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY5,
1594              zx_global_structures_pkg.trx_line_dist_tbl.LINE_TRX_USER_KEY6,
1595              zx_global_structures_pkg.trx_line_dist_tbl.SOURCE_TAX_LINE_ID,
1596              zx_global_structures_pkg.trx_line_dist_tbl.EXEMPTION_CONTROL_FLAG,
1597              zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_APPLN_ID,
1598              zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_ENTITY_CODE,
1599              zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_EVNT_CLS_CODE,
1600              zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_TRX_ID,
1601              zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_TRX_LINE_ID,
1602              zx_global_structures_pkg.trx_line_dist_tbl.REVERSED_TRX_LEVEL_TYPE,
1603              zx_global_structures_pkg.trx_line_dist_tbl.EXEMPT_REASON_CODE,
1604              zx_global_structures_pkg.trx_line_dist_tbl.INTERFACE_ENTITY_CODE,
1605              zx_global_structures_pkg.trx_line_dist_tbl.INTERFACE_LINE_ID,
1606              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE1,
1607              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE2,
1608              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE3,
1609              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE4,
1610              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE5,
1611              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE6,
1612              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE7,
1613              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE8,
1614              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE9,
1615              zx_global_structures_pkg.trx_line_dist_tbl.DEFAULTING_ATTRIBUTE10,
1616              zx_global_structures_pkg.trx_line_dist_tbl.HISTORICAL_TAX_CODE_ID,
1617              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_ID,
1618              zx_global_structures_pkg.trx_line_dist_tbl.BILL_THIRD_PTY_ACCT_ID,
1619              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_THIRD_PTY_ACCT_SITE_ID ,
1620              zx_global_structures_pkg.trx_line_dist_tbl.BILL_THIRD_PTY_ACCT_SITE_ID ,
1621              zx_global_structures_pkg.trx_line_dist_tbl.SHIP_TO_CUST_ACCT_SITE_USE_ID,
1622              zx_global_structures_pkg.trx_line_dist_tbl.BILL_TO_CUST_ACCT_SITE_USE_ID,
1623              zx_global_structures_pkg.trx_line_dist_tbl.RECEIVABLES_TRX_TYPE_ID,
1624              zx_global_structures_pkg.trx_line_dist_tbl.GLOBAL_ATTRIBUTE_CATEGORY,
1625              zx_global_structures_pkg.trx_line_dist_tbl.GLOBAL_ATTRIBUTE1,
1626              zx_global_structures_pkg.trx_line_dist_tbl.TOTAL_INC_TAX_AMT,
1627              zx_global_structures_pkg.trx_line_dist_tbl.USER_UPD_DET_FACTORS_FLAG,
1628              zx_global_structures_pkg.trx_line_dist_tbl.INSERT_UPDATE_FLAG
1629            LIMIT G_LINES_PER_FETCH;
1630    FOR l_trx_line_index IN 1 .. NVL(zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID.LAST,0)
1631    LOOP
1632 
1633      IF zx_global_structures_pkg.trx_line_dist_tbl.trx_id(l_trx_line_index) <> l_trx_id THEN
1634         l_flag := TRUE;
1635         l_event_class_rec.LEGAL_ENTITY_ID              :=  zx_global_structures_pkg.trx_line_dist_tbl.LEGAL_ENTITY_ID(l_trx_line_index);
1636         l_event_class_rec.LEDGER_ID                    :=  zx_global_structures_pkg.trx_line_dist_tbl.LEDGER_ID(l_trx_line_index);
1637         l_event_class_rec.EVENT_TYPE_CODE              :=  zx_global_structures_pkg.trx_line_dist_tbl.EVENT_TYPE_CODE(l_trx_line_index);
1638         l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT        :=  zx_global_structures_pkg.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(l_trx_line_index);
1639         l_event_class_rec.TRX_ID                       :=  zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID(l_trx_line_index);
1640         l_event_class_rec.TRX_DATE                     :=  zx_global_structures_pkg.trx_line_dist_tbl.TRX_DATE(l_trx_line_index);
1641         l_event_class_rec.REL_DOC_DATE                 :=  zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_DATE(l_trx_line_index);
1642         l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:=  zx_global_structures_pkg.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(l_trx_line_index);
1643         l_event_class_rec.TRX_CURRENCY_CODE            :=  zx_global_structures_pkg.trx_line_dist_tbl.TRX_CURRENCY_CODE(l_trx_line_index);
1644         l_event_class_rec.PRECISION                    :=  zx_global_structures_pkg.trx_line_dist_tbl.PRECISION(l_trx_line_index);
1645         l_event_class_rec.CURRENCY_CONVERSION_TYPE     :=  zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(l_trx_line_index);
1646         l_event_class_rec.CURRENCY_CONVERSION_RATE     :=  zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(l_trx_line_index);
1647         l_event_class_rec.CURRENCY_CONVERSION_DATE     :=  zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(l_trx_line_index);
1648         l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID    :=  zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID(l_trx_line_index);
1649         l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID  :=  zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID(l_trx_line_index);
1650         l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID    :=  zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(l_trx_line_index);
1651         l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID  :=  zx_global_structures_pkg.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID(l_trx_line_index);
1652         l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID   :=  zx_global_structures_pkg.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID(l_trx_line_index);
1653         l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID :=  zx_global_structures_pkg.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID(l_trx_line_index);
1654         l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID   :=  zx_global_structures_pkg.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID(l_trx_line_index);
1655         l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID :=  zx_global_structures_pkg.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID(l_trx_line_index);
1656         l_event_class_rec.ESTABLISHMENT_ID             :=  zx_global_structures_pkg.trx_line_dist_tbl.ESTABLISHMENT_ID(l_trx_line_index);
1657 
1658         IF zx_global_structures_pkg.trx_line_dist_tbl.trx_currency_code(l_trx_line_index)is not NULL   AND
1659            zx_global_structures_pkg.trx_line_dist_tbl.precision(l_trx_line_index) is not NULL THEN
1660           l_event_class_rec.header_level_currency_flag := 'Y';
1661         END IF;
1662 
1663         zx_valid_init_params_pkg.determine_effective_date(l_event_class_rec,
1664                                                           l_effective_date,
1665                                                           l_return_status
1666                                                       );
1667 
1668         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1669           x_return_status := l_return_status;
1670           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1671             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1672 	             G_PKG_NAME||': '||l_api_name||':zx_valid_init_params_pkg.determine_effective_date returned errors');
1673 	          FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1674               'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1675           END IF;
1676           IF c_lines%ISOPEN THEN
1677             CLOSE c_lines;
1678           END IF;
1679           RETURN;
1680         END IF;
1681 
1682         IF l_legal_entity_id <> zx_global_structures_pkg.trx_line_dist_tbl.legal_entity_id(l_trx_line_index) THEN
1683           zx_valid_init_params_pkg.get_tax_subscriber(l_event_class_rec,
1684                                                       l_effective_date,
1685                                                       l_return_status
1686                                                      );
1687 
1688           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1689             x_return_status := l_return_status;
1690             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1691               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1692 	        G_PKG_NAME||': '||l_api_name||':zx_valid_init_params_pkg.determine_effective_date returned errors');
1693 	            FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1694                 'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1695             END IF;
1696             IF c_lines%ISOPEN THEN
1697               CLOSE c_lines;
1698             END IF;
1699             RETURN;
1700           END IF;
1701         ELSE
1702           zx_security.g_effective_date := l_effective_date;
1703           zx_security.name_value('EFFECTIVEDATE',to_char(l_effective_date));
1704         END IF;
1705 
1706         zx_valid_init_params_pkg.get_tax_event_type
1707                                    (l_return_status
1708                                    ,l_event_class_rec.event_class_code
1709                                    ,l_event_class_rec.application_id
1710                                    ,l_event_class_rec.entity_code
1711                                    ,l_event_class_rec.event_type_code
1712                                    ,l_event_class_rec.tax_event_class_code
1713                                    ,l_event_class_rec.tax_event_type_code
1714                                    ,l_event_class_rec.doc_status_code
1715                                    );
1716 
1717         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1718           x_return_status := l_return_status;
1719           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1720             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1721 	            G_PKG_NAME||': '||l_api_name||':zx_valid_init_params_pkg.get_tax_event_type returned errors');
1722 	          FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1723               'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1724           END IF;
1725           IF c_lines%ISOPEN THEN
1726             CLOSE c_lines;
1727           END IF;
1728           RETURN;
1729         END IF;
1730 
1731         zx_global_structures_pkg.trx_line_dist_tbl.TAX_EVENT_TYPE_CODE(l_trx_line_index) :=
1732                                                     l_event_class_rec.tax_event_type_code;
1733         zx_global_structures_pkg.trx_line_dist_tbl.DOC_EVENT_STATUS(l_trx_line_index) :=
1734                                                     l_event_class_rec.doc_status_code;
1735 
1736         IF l_legal_entity_id <> zx_global_structures_pkg.trx_line_dist_tbl.legal_entity_id(l_trx_line_index) THEN
1737           zx_valid_init_params_pkg.populate_event_class_options(l_return_status,
1738                                               l_effective_date,
1739                                               l_event_class_rec
1740                                              );
1741 
1742           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1743             x_return_status := l_return_status;
1744             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1745               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1746 	               G_PKG_NAME||': '||l_api_name||':zx_valid_init_params_pkg.populate_event_class_options returned errors');
1747 	            FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1748                 'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1749             END IF;
1750             IF c_lines%ISOPEN THEN
1751               CLOSE c_lines;
1752             END IF;
1753             RETURN;
1754           END IF;
1755         END IF;
1756 
1757         zx_global_structures_pkg.g_event_class_rec := l_event_class_rec;
1758 
1759         ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (l_event_class_rec ,
1760                                                  'HEADER',
1761                                                  l_return_status
1762                                                 );
1763 
1764         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1765           x_return_status := l_return_status;
1766           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1767             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1768 	              G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.initialize returned errors');
1769 	          FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1770                 'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1771           END IF;
1772           IF c_lines%ISOPEN THEN
1773             CLOSE c_lines;
1774           END IF;
1775           RETURN;
1776         END IF;
1777 
1778       END IF; -- End of Trx Id Change check
1779 
1780       IF l_flag = TRUE THEN
1781        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORG_LOCATION_ID(l_trx_line_index) := l_internal_org_location_id;
1782        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TOTAL_INC_TAX_AMT(l_trx_line_index) := 0;
1783       ELSIF l_flag = FALSE THEN
1784        Pop_Index_Attrbs_To_Null ( p_index => l_trx_line_index,
1785                                   x_return_status => l_return_status);
1786        IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1787          x_return_status := l_return_status;
1788          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1789            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1790               ' RETURN_STATUS = ' || x_return_status);
1791 	         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1792 	            G_PKG_NAME||': '||l_api_name||':ZX_NEW_SERVICES_PKG.Pop_Index_Attrbs_To_Null returned errors');
1793 	         FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1794               'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1795          END IF;
1796          IF c_lines%ISOPEN THEN
1797             CLOSE c_lines;
1798          END IF;
1799          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1800        END IF;
1801       END IF;
1802       l_trx_id := zx_global_structures_pkg.trx_line_dist_tbl.trx_id(l_trx_line_index);
1803       l_legal_entity_id := zx_global_structures_pkg.trx_line_dist_tbl.legal_entity_id(l_trx_line_index);
1804       l_trx_date := zx_global_structures_pkg.trx_line_dist_tbl.trx_date(l_trx_line_index);
1805    END LOOP;
1806 
1807    EXIT WHEN c_lines%NOTFOUND;
1808 
1809   END LOOP;
1810 
1811   IF c_lines%ISOPEN THEN
1812     CLOSE c_lines;
1813   END IF;
1814 
1815    db_update_line_det_factors (p_trx_line_dist_tbl  => ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl,
1816                                p_event_class_rec    => l_event_class_rec,
1817                                p_line_level_action  => p_line_level_action,
1818                                x_return_status      => l_return_status
1819                               );
1820    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1821      x_return_status := l_return_status;
1822      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1823        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1824          ' RETURN_STATUS = ' || x_return_status);
1825        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1826 	      G_PKG_NAME||': '||l_api_name||':ZX_NEW_SERVICES_PKG.db_update_line_det_factors returned errors');
1827        FND_LOG.STRING(g_level_statement, 'ZX.PLSQL.ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel.END',
1828              'ZX_NEW_SERVICES_PKG.update_det_factors_for_cancel(-)');
1829      END IF;
1830      RETURN;
1831    END IF;
1832 
1833    EXCEPTION
1834      WHEN FND_API.G_EXC_ERROR THEN
1835        ROLLBACK TO update_det_factors_PVT;
1836        x_return_status := FND_API.G_RET_STS_ERROR ;
1837        IF c_lines%ISOPEN THEN
1838          CLOSE c_lines;
1839        END IF;
1840        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1841                                  p_count   =>      x_msg_count,
1842                                  p_data    =>      x_msg_data
1843                                 );
1844        IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
1845          FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
1846        END IF;
1847 
1848     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1849       ROLLBACK TO update_det_factors_PVT;
1850       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1851       IF c_lines%ISOPEN THEN
1852         CLOSE c_lines;
1853       END IF;
1854       FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1855       FND_MSG_PUB.Add;
1856       FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1857                                 p_count   =>      x_msg_count,
1858                                 p_data    =>      x_msg_data
1859                                );
1860       IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
1861         FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
1862       END IF;
1863     WHEN OTHERS THEN
1864       ROLLBACK TO update_det_factors_PVT;
1865       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1866       IF c_lines%ISOPEN THEN
1867         CLOSE c_lines;
1868       END IF;
1869       FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1870       FND_MSG_PUB.Add;
1871       FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1872                                 p_count       =>      x_msg_count,
1873                                 p_data        =>      x_msg_data
1874                                );
1875       IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1876         FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
1877       END IF;
1878  END update_det_factors_for_cancel;
1879 
1880 /* =============================================================================*
1881  |  PUBLIC PROCEDURE CANCEL_TAX_LINES						                                |
1882  |  										                                                        |
1883  |  DESCRIPTION                                                                 |
1884  |   Payables would call this API for Discarding a Single Item Line             |
1885  |   or Cancelling a complete Invoice.
1886  |  										                                                        |
1887  * =============================================================================*/
1888 
1889 PROCEDURE CANCEL_TAX_LINES(
1890    p_api_version           IN            NUMBER,
1891    p_init_msg_list         IN            VARCHAR2,
1892    p_commit                IN            VARCHAR2,
1893    p_validation_level      IN            NUMBER,
1894    x_return_status            OUT NOCOPY VARCHAR2,
1895    x_msg_count                OUT NOCOPY NUMBER,
1896    x_msg_data                 OUT NOCOPY VARCHAR2,
1897    p_transaction_rec       IN OUT NOCOPY ZX_API_PUB.transaction_rec_type,
1898    p_tax_only_line_flag    IN            VARCHAR2,
1899    p_trx_line_id           IN            NUMBER,
1900    p_trx_level_type        IN            VARCHAR2,
1901    p_line_level_action     IN            VARCHAR2
1902    )
1903 IS
1904 
1905    l_api_name          CONSTANT  VARCHAR2(30) := 'CANCEL_TAX_LINES';
1906    l_api_version       CONSTANT  NUMBER := 1.0;
1907    l_return_status               VARCHAR2(30);
1908    l_event_class_rec             ZX_API_PUB.event_class_rec_type;
1909    l_init_msg_list               VARCHAR2(1);
1910    l_rec_nrec_dist_tbl           ZX_TRD_SERVICES_PUB_PKG.rec_nrec_dist_tbl_type;
1911    l_count                       NUMBER;
1912    l_upg_trx_info_rec            zx_on_fly_trx_upgrade_pkg.zx_upg_trx_info_rec_type;
1913    l_trx_migrated_b              BOOLEAN;
1914    l_summarization_flag          VARCHAR2(1);
1915    l_ret_summ_tax_line_id_flag   VARCHAR2(1);
1916    l_tax_line_count              NUMBER;
1917    l_msg_context_info_rec        ZX_API_PUB.CONTEXT_INFO_REC_TYPE;
1918 
1919    TYPE num_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
1920    TYPE var_tbl_type IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
1921    l_summary_tax_line_id_tbl      num_tbl_type;
1922    l_cancel_flag_tbl              var_tbl_type;
1923    l_tax_line_id_tbl              num_tbl_type;
1924    l_unrounded_tax_amt_tbl        num_tbl_type;
1925    l_tax_amt_tbl                  num_tbl_type;
1926    l_tax_amt_tax_curr_tbl         num_tbl_type;
1927    l_tax_amt_funcl_curr_tbl       num_tbl_type;
1928    l_tot_rec_amt_tbl              num_tbl_type;
1929    l_tot_rec_amt_tax_curr_tbl     num_tbl_type;
1930    l_tot_rec_amt_funcl_curr_tbl   num_tbl_type;
1931    l_tot_nrec_amt_tbl             num_tbl_type;
1932    l_tot_nrec_amt_tax_curr_tbl    num_tbl_type;
1933    l_tot_nrec_amt_funcl_curr_tbl  num_tbl_type;
1934 
1935    -- Added for preventive checks --
1936    l_chk_tax_line_id_tbl          num_tbl_type;
1937    l_chk_tax_amt_tbl              num_tbl_type;
1938    l_chk_tot_dist_amt_tbl         num_tbl_type;
1939    l_chk_cancel_flg_tbl           var_tbl_type;
1940 
1941    -- Added for bug#16483600 JAI ZX Integration
1942    lb_jai_exists                 BOOLEAN := FALSE;
1943 
1944  CURSOR get_event_class_info IS
1945  SELECT summarization_flag,
1946         retain_summ_tax_line_id_flag
1947    FROM zx_evnt_cls_mappings
1948   WHERE application_id = p_transaction_rec.application_id
1949     AND entity_code = p_transaction_rec.entity_code
1950     AND event_class_code = p_transaction_rec.event_class_code;
1951 
1952   CURSOR tot_dist_amt_trx IS
1953   SELECT sum(unrounded_rec_nrec_tax_amt),
1954          sum(rec_nrec_tax_amt),
1955          sum(rec_nrec_tax_amt_tax_curr),
1956          sum(rec_nrec_tax_amt_funcl_curr),
1957          tax_line_id
1958   FROM ZX_REC_NREC_DIST
1959   WHERE application_id = p_transaction_rec.application_id
1960     AND entity_code = p_transaction_rec.entity_code
1961     AND event_class_code = p_transaction_rec.event_class_code
1962     AND trx_id = p_transaction_rec.trx_id
1963   GROUP BY tax_line_id;
1964 
1965   CURSOR tot_dist_amt_trx_line IS
1966   SELECT sum(unrounded_rec_nrec_tax_amt),
1967          sum(rec_nrec_tax_amt),
1968          sum(rec_nrec_tax_amt_tax_curr),
1969          sum(rec_nrec_tax_amt_funcl_curr),
1970          tax_line_id
1971   FROM ZX_REC_NREC_DIST
1972   WHERE application_id = p_transaction_rec.application_id
1973     AND entity_code = p_transaction_rec.entity_code
1974     AND event_class_code = p_transaction_rec.event_class_code
1975     AND trx_id = p_transaction_rec.trx_id
1976     AND trx_line_id = p_trx_line_id
1977     AND trx_level_type = p_trx_level_type
1978   GROUP BY tax_line_id;
1979 
1980   CURSOR tot_tax_amt_trx IS
1981   SELECT sum(tax_amt),
1982          sum(tax_amt_tax_curr),
1983          sum(tax_amt_funcl_curr),
1984          sum(rec_tax_amt),
1985          sum(rec_tax_amt_tax_curr),
1986          sum(rec_tax_amt_funcl_curr),
1987          sum(nrec_tax_amt),
1988          sum(nrec_tax_amt_tax_curr),
1989          sum(nrec_tax_amt_funcl_curr),
1990          decode((count(*) - Sum(Decode(cancel_flag, 'Y', 1, 0))), 0, 'Y', NULL) cancel_flag,
1991          summary_tax_line_id
1992   FROM ZX_LINES
1993   WHERE application_id = p_transaction_rec.application_id
1994     AND entity_code = p_transaction_rec.entity_code
1995     AND event_class_code = p_transaction_rec.event_class_code
1996     AND trx_id = p_transaction_rec.trx_id
1997   GROUP BY summary_tax_line_id;
1998 
1999   CURSOR tot_tax_amt_trx_line IS
2000   SELECT sum(zxl.tax_amt),
2001          sum(zxl.tax_amt_tax_curr),
2002          sum(zxl.tax_amt_funcl_curr),
2003          sum(zxl.rec_tax_amt),
2004          sum(zxl.rec_tax_amt_tax_curr),
2005          sum(zxl.rec_tax_amt_funcl_curr),
2006          sum(zxl.nrec_tax_amt),
2007          sum(zxl.nrec_tax_amt_tax_curr),
2008          sum(zxl.nrec_tax_amt_funcl_curr),
2009          decode((count(*) - Sum(Decode(cancel_flag, 'Y', 1, 0))), 0, 'Y', NULL) cancel_flag,
2010          zxl.summary_tax_line_id
2011   FROM ZX_LINES zxl
2012   WHERE zxl.application_id = p_transaction_rec.application_id
2013     AND zxl.entity_code = p_transaction_rec.entity_code
2014     AND zxl.event_class_code = p_transaction_rec.event_class_code
2015     AND zxl.trx_id = p_transaction_rec.trx_id
2016     AND zxl.summary_tax_line_id IN (SELECT DISTINCT zd.summary_tax_line_id
2017                                     FROM ZX_LINES zd
2018 				                            WHERE zd.application_id = zxl.application_id
2019 				                            AND zd.entity_code = zxl.entity_code
2020 				                            AND zd.event_class_code = zxl.event_class_code
2021 				                            AND zd.trx_id = zxl.trx_id
2022 				                            AND zd.application_id = p_transaction_rec.application_id
2023                                     AND zd.entity_code = p_transaction_rec.entity_code
2024                                     AND zd.event_class_code = p_transaction_rec.event_class_code
2025                                     AND zd.trx_id = p_transaction_rec.trx_id
2026                                     AND zd.trx_line_id = p_trx_line_id
2027                                     AND zd.trx_level_type = p_trx_level_type
2028                                     )
2029   GROUP BY summary_tax_line_id;
2030 
2031   -- Cursors added for Preventive Checks--
2032   -- Cursor to check if any tax line exists
2033   -- with non-zero amount or cancel_flag <> Y
2034   CURSOR check_canceled_tax_lines (c_trx_line_id NUMBER) IS
2035   SELECT zl.tax_line_id,
2036          zl.tax_amt,
2037          zl.cancel_flag
2038     FROM zx_lines zl
2039    WHERE zl.application_id = p_transaction_rec.application_id
2040      AND zl.entity_code = p_transaction_rec.entity_code
2041      AND zl.event_class_code = p_transaction_rec.event_class_code
2042      AND zl.trx_id = p_transaction_rec.trx_id
2043      AND zl.trx_line_id = NVL(c_trx_line_id,zl.trx_line_id)
2044      AND zl.trx_level_type = 'LINE'
2045      AND (NVL(zl.cancel_flag,'N') <> 'Y' OR zl.tax_amt <> 0);
2046 
2047   -- Cursor to check if any tax line exists where tax amount of tax line
2048   -- is not equal to the sum of amounts of its distributions
2049   CURSOR check_tax_lines_dists_amt (c_trx_line_id NUMBER) IS
2050   SELECT zl.tax_line_id,
2051          zl.tax_amt,
2052          SUM(zd.rec_nrec_tax_amt) tot_rec_nrec_amt
2053     FROM zx_lines zl,
2054          zx_rec_nrec_dist zd
2055    WHERE zl.application_id = p_transaction_rec.application_id
2056      AND zl.entity_code = p_transaction_rec.entity_code
2057      AND zl.event_class_code = p_transaction_rec.event_class_code
2058      AND zl.trx_id = p_transaction_rec.trx_id
2059      AND zl.trx_line_id = NVL(c_trx_line_id,zl.trx_line_id)
2060      AND zl.trx_level_type = 'LINE'
2061      AND zd.application_id = zl.application_id
2062      AND zd.entity_code = zl.entity_code
2063      AND zd.event_class_code = zl.event_class_code
2064      AND ZD.TRX_ID = ZL.TRX_ID
2065      AND zd.tax_line_id = zl.tax_line_id
2066    GROUP BY ZL.TAX_LINE_ID, ZL.TAX_AMT
2067   HAVING zl.tax_amt <> SUM(zd.rec_nrec_tax_amt);
2068 
2069 BEGIN
2070    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2071      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_NEW_SERVICES_PKG: '||l_api_name||'()+');
2072    END IF;
2073 
2074    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2075      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2076            'APPLICATION ID: ' || p_transaction_rec.application_id ||
2077            ', ENTITY_CODE: ' || p_transaction_rec.entity_code ||
2078            ', EVENT_CLASS_CODE: ' || p_transaction_rec.event_class_code ||
2079            ', TRX_ID: ' || p_transaction_rec.trx_id ||
2080            ', TRX_LINE_ID: ' || p_trx_line_id ||
2081            ', TRX_LEVEL_TYPE: ' || p_trx_level_type ||
2082            ', LINE_LEVEL_ACTION: ' || p_line_level_action ||
2083            ', TAX_ONLY_LINE_FLAG: ' || p_tax_only_line_flag);
2084    END IF;
2085 
2086     --Populate Message structures
2087     l_msg_context_info_rec.application_id := p_transaction_rec.application_id;
2088     l_msg_context_info_rec.entity_code := p_transaction_rec.entity_code;
2089     l_msg_context_info_rec.event_class_code := p_transaction_rec.event_class_code;
2090     l_msg_context_info_rec.trx_id := p_transaction_rec.trx_id;
2091     l_msg_context_info_rec.trx_line_id := NULL;
2092     l_msg_context_info_rec.trx_level_type := NULL;
2093     l_msg_context_info_rec.summary_tax_line_number := NULL;
2094     l_msg_context_info_rec.tax_line_id := NULL;
2095     l_msg_context_info_rec.trx_line_dist_id := NULL;
2096 
2097    /*--------------------------------------------------+
2098     |   Standard start of API savepoint                |
2099     +--------------------------------------------------*/
2100     SAVEPOINT cancel_tax_lines_PVT;
2101 
2102     /*--------------------------------------------------+
2103      |   Standard call to check for call compatibility  |
2104      +--------------------------------------------------*/
2105      IF NOT FND_API.Compatible_API_Call( l_api_version,
2106                                          p_api_version,
2107                                          l_api_name,
2108                                          G_PKG_NAME
2109                                          ) THEN
2110         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2111       END IF;
2112 
2113    /*--------------------------------------------------+
2114     |   JAI AP prepay unapplication                    |
2115     +--------------------------------------------------*/
2116     -- Start : Added for JAI Trigger Elimination : Bug#16483600 JAI ZX Integration
2117     -- JAI AP prepay unapplication
2118     lb_jai_exists := JAI_TAX_PROCESSING_PKG.CHECK_JAI_EXISTS_IN_ZX(
2119                          pn_set_of_books_id => NULL,
2120                          pn_application_id => p_transaction_rec.application_id,
2121                          pn_trx_id         => p_transaction_rec.trx_id
2122                      );
2123 
2124     IF lb_jai_exists = TRUE THEN
2125       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2126         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing start +');
2127       END IF;
2128 
2129       --Call JAI procedure for AP TDS prepayment unapplication
2130       JAI_TAX_PROCESSING_PKG.CALCULATE_TAX(p_transaction_rec   => p_transaction_rec
2131                                           ,p_line_level_action => p_line_level_action
2132                                           ,p_trx_line_id       => p_trx_line_id
2133                                           ,x_return_status     => l_return_status
2134                                           );
2135 
2136       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2137         x_return_status := l_return_status;
2138         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2139           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2140           'JAI_TAX_PROCESSING_PKG.CALCULATE_TAX RETURN_STATUS = ' || x_return_status);
2141         END IF;
2142         RAISE FND_API.G_EXC_ERROR;
2143       END IF;
2144 
2145       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2146         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing end -');
2147       END IF;
2148     END IF;
2149     -- End : Added JAI Trigger Elimination
2150 
2151     /*--------------------------------------------------+
2152      |   Check for valid line_level_action              |
2153      +--------------------------------------------------*/
2154       IF p_line_level_action NOT IN ('CANCEL','DISCARD','UNAPPLY_FROM') THEN
2155         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2156           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2157              'Invalid Line_Level_Action passed by the calling product : '||p_line_level_action);
2158         END IF;
2159         FND_MESSAGE.SET_NAME('ZX','ZX_GENERIC_TEXT');
2160         FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','Invalid Line_Level_Action passed by the calling product.');
2161         ZX_API_PUB.Add_Msg(l_msg_context_info_rec);
2162  	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2163       END IF;
2164 
2165     /*--------------------------------------------------------------+
2166      |   Initialize message list if p_init_msg_list is set to TRUE  |
2167      +--------------------------------------------------------------*/
2168       IF p_init_msg_list is null THEN
2169         l_init_msg_list := FND_API.G_FALSE;
2170       ELSE
2171 	      l_init_msg_list := p_init_msg_list;
2172       END IF;
2173 
2174       IF FND_API.to_Boolean(l_init_msg_list) THEN
2175         FND_MSG_PUB.initialize;
2176       END IF;
2177 
2178       /*-----------------------------------------+
2179        |   Initialize return status to SUCCESS   |
2180        +-----------------------------------------*/
2181        x_return_status := FND_API.G_RET_STS_SUCCESS;
2182 
2183        /*-----------------------------------------+
2184         |   Populate Global Variable              |
2185         +-----------------------------------------*/
2186         ZX_API_PUB.G_PUB_SRVC := l_api_name;
2187         ZX_API_PUB.G_DATA_TRANSFER_MODE := 'TAB';
2188         ZX_API_PUB.G_EXTERNAL_API_CALL  := 'N';
2189 
2190         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2191           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2192              'Data Transfer Mode: '||ZX_API_PUB.G_DATA_TRANSFER_MODE);
2193         END IF;
2194 
2195       /*-----------------------------------------+
2196        |   Initialize count variables            |
2197        +-----------------------------------------*/
2198         l_count := 0;
2199         l_tax_line_count := 0;
2200 
2201         OPEN  get_event_class_info;
2202         FETCH get_event_class_info INTO
2203               l_summarization_flag,
2204               l_ret_summ_tax_line_id_flag;
2205 
2206         IF get_event_class_info%NOTFOUND THEN
2207           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2208           IF get_event_class_info%ISOPEN THEN
2209             CLOSE get_event_class_info;
2210           END IF;
2211           IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
2212              FND_LOG.STRING(G_LEVEL_STATEMENT,
2213                      G_MODULE_NAME || l_api_name,
2214                      G_PKG_NAME||':'||l_api_name||': Event Class Info not retreived');
2215              FND_LOG.STRING(g_level_statement,
2216                     'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2217                     'RETURN_STATUS = ' || x_return_status);
2218              FND_LOG.STRING(g_level_statement,
2219                     'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2220                     'ZX_NEW_SERVICES_PKG.cancel_tax_lines(-)');
2221           END IF;
2222           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2223         END IF;
2224 
2225         CLOSE get_event_class_info;
2226 
2227         -- Call on the fly API in case no data exists in zx repository.
2228         l_upg_trx_info_rec.application_id := p_transaction_rec.application_id;
2229         l_upg_trx_info_rec.event_class_code := p_transaction_rec.event_class_code;
2230         l_upg_trx_info_rec.entity_code := p_transaction_rec.entity_code;
2231         l_upg_trx_info_rec.trx_id := p_transaction_rec.trx_id;
2232         l_upg_trx_info_rec.trx_line_id := p_trx_line_id;
2233         l_upg_trx_info_rec.trx_level_type := p_trx_level_type;
2234 
2235         ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
2236           p_upg_trx_info_rec  => l_upg_trx_info_rec,
2237           x_trx_migrated_b    => l_trx_migrated_b,
2238           x_return_status     => l_return_status );
2239 
2240         IF NOT l_trx_migrated_b THEN
2241 
2242           ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
2243             p_upg_trx_info_rec  => l_upg_trx_info_rec,
2244             x_return_status     => l_return_status );
2245 
2246           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2247             x_return_status := l_return_status;
2248             IF (g_level_statement >= g_current_runtime_level ) THEN
2249                FND_LOG.STRING(g_level_statement,
2250                  'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2251                  'Incorrect return_status after calling ' ||
2252                  ' ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly');
2253                FND_LOG.STRING(g_level_statement,
2254                  'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2255                  'RETURN_STATUS = ' || x_return_status);
2256                FND_LOG.STRING(g_level_statement,
2257                  'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2258                  'ZX_NEW_SERVICES_PKG.cancel_tax_lines(-)');
2259             END IF;
2260             IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2261               RAISE FND_API.G_EXC_ERROR;
2262             ELSE
2263               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2264             END IF;
2265           END IF;
2266         END IF;
2267 
2268         -- Check if data exists in zx_lines_det_factors after
2269         -- on the fly upgrade, if not return control to payables
2270         -- as no tax impacts here
2271         ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
2272           p_upg_trx_info_rec  => l_upg_trx_info_rec,
2273           x_trx_migrated_b    => l_trx_migrated_b,
2274           x_return_status     => l_return_status );
2275 
2276         IF NOT l_trx_migrated_b THEN
2277           IF (g_level_statement >= g_current_runtime_level ) THEN
2278             FND_LOG.STRING(g_level_statement,
2279               'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2280               'New Item Line with no tax impacts in Payables, no action required');
2281             FND_LOG.STRING(g_level_statement,
2282               'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2283               'ZX_NEW_SERVICES_PKG.cancel_tax_lines(-)');
2284           END IF;
2285           RETURN;
2286         END IF;
2287 
2288         SELECT COUNT(*)
2289         INTO l_count
2290         FROM ZX_REVERSE_DIST_GT;
2291 
2292         IF (g_level_statement >= g_current_runtime_level ) THEN
2293            FND_LOG.STRING(g_level_statement,
2294                           'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2295                           'Count in ZX_REVERSE_DIST_GT : '||TO_CHAR(l_count));
2296         END IF;
2297 
2298         -- If distributions exists
2299         IF l_count <> 0 THEN
2300           -- Discard flow for a single item line
2301           IF p_trx_line_id IS NOT NULL THEN
2302 
2303             -- Reverse the tax distributions, Payables needs to populate
2304             -- zx_reverse_dist_gt for this case.
2305             ZX_TRD_SERVICES_PUB_PKG.REVERSE_DISTRIBUTIONS(x_return_status => l_return_status);
2306 
2307             IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
2308               x_return_status := l_return_status;
2309               IF (g_level_unexpected >= g_current_runtime_level ) THEN
2310                 FND_LOG.STRING(g_level_unexpected,
2311                        'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2312                        'Incorrect return_status after calling ' ||
2313                        'ZX_TRD_SERVICES_PUB_PKG.REVERSE_DISTRIBUTIONS');
2314                 FND_LOG.STRING(g_level_unexpected,
2315                        'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2316                        'RETURN_STATUS = ' || x_return_status);
2317                 FND_LOG.STRING(g_level_unexpected,
2318                        'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2319                        'ZX_NEW_SERVICES_PKG.cancel_tax_lines(-)');
2320               END IF;
2321               IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2322                 RAISE FND_API.G_EXC_ERROR;
2323               ELSE
2324                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2325               END IF;
2326             END IF;
2327 
2328             IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2329               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2330                 'Updating the Freeze_Flag for the distributions');
2331             END IF;
2332 
2333             -- Update the freeze flag on the distributions
2334             UPDATE ZX_REC_NREC_DIST
2335             SET FREEZE_FLAG = 'Y'
2336             WHERE APPLICATION_ID = p_transaction_rec.application_id
2337             AND ENTITY_CODE = p_transaction_rec.entity_code
2338             AND EVENT_CLASS_CODE = p_transaction_rec.event_class_code
2339             AND TRX_ID = p_transaction_rec.trx_id
2340             AND TRX_LINE_ID = p_trx_line_id
2341             AND TRX_LEVEL_TYPE = p_trx_level_type;
2342 
2343             IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2344               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2345                 'No Of Rows Updated: ' || sql%rowcount);
2346             END IF;
2347 
2348             -- Set the tax amounts accordingly
2349             IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2350                FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2351                  'Opening Cursor TOT_DIST_AMT_TRX_LINE');
2352             END IF;
2353 
2354             OPEN tot_dist_amt_trx_line;
2355             LOOP
2356             FETCH tot_dist_amt_trx_line BULK COLLECT INTO
2357             l_unrounded_tax_amt_tbl,
2358             l_tax_amt_tbl,
2359             l_tax_amt_tax_curr_tbl,
2360             l_tax_amt_funcl_curr_tbl,
2361             l_tax_line_id_tbl
2362             LIMIT G_LINES_PER_FETCH;
2363 
2364               FOR i IN NVL(l_tax_line_id_tbl.FIRST,0) .. NVL(l_tax_line_id_tbl.LAST,-99) LOOP
2365               UPDATE ZX_LINES
2366                  SET ORIG_TAXABLE_AMT          = NVL(orig_taxable_amt, taxable_amt),
2367                      ORIG_TAXABLE_AMT_TAX_CURR = NVL(orig_taxable_amt_tax_curr, taxable_amt_tax_curr),
2368                      ORIG_TAX_AMT              = NVL(orig_tax_amt, tax_amt),
2369                      ORIG_TAX_AMT_TAX_CURR     = NVL(orig_tax_amt_tax_curr, tax_amt_tax_curr),
2370                      UNROUNDED_TAX_AMT         = l_unrounded_tax_amt_tbl(i),
2371                      UNROUNDED_TAXABLE_AMT     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, UNROUNDED_TAXABLE_AMT),
2372                      TAX_AMT                   = l_tax_amt_tbl(i),
2373                      TAX_AMT_TAX_CURR          = l_tax_amt_tax_curr_tbl(i),
2374                      TAX_AMT_FUNCL_CURR        = l_tax_amt_funcl_curr_tbl(i),
2375                      TAXABLE_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT),
2376                      TAXABLE_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_TAX_CURR),
2377                      TAXABLE_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_FUNCL_CURR),
2378                      CAL_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), CAL_TAX_AMT),
2379                      CAL_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), CAL_TAX_AMT_TAX_CURR),
2380                      CAL_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), CAL_TAX_AMT_FUNCL_CURR),
2381                      REC_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), REC_TAX_AMT),
2382                      REC_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), REC_TAX_AMT_TAX_CURR),
2383                      REC_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), REC_TAX_AMT_FUNCL_CURR),
2384                      NREC_TAX_AMT              = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), NREC_TAX_AMT),
2385                      NREC_TAX_AMT_TAX_CURR     = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), NREC_TAX_AMT_TAX_cURR),
2386                      NREC_TAX_AMT_FUNCL_CURR   = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), NREC_TAX_AMT_FUNCL_CURR),
2387                      ASSOCIATED_CHILD_FROZEN_FLAG = 'Y',
2388                      PROCESS_FOR_RECOVERY_FLAG = 'N',
2389                      SYNC_WITH_PRVDR_FLAG      = DECODE(TAX_PROVIDER_ID, NULL, SYNC_WITH_PRVDR_FLAG, 'Y'),
2390                      CANCEL_FLAG               = 'Y',
2391                      TAX_HOLD_CODE             = NULL,
2392                      TAX_HOLD_RELEASED_CODE    = NULL,
2393                      PRD_TOTAL_TAX_AMT         = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT),
2394                      PRD_TOTAL_TAX_AMT_TAX_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_TAX_CURR),
2395                      PRD_TOTAL_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_FUNCL_CURR),
2396                      TRX_LINE_INDEX            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, TRX_LINE_INDEX),
2397                      OFFSET_TAX_RATE_CODE      = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OFFSET_TAX_RATE_CODE),
2398                      PRORATION_CODE            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRORATION_CODE),
2399                      OTHER_DOC_SOURCE          = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OTHER_DOC_SOURCE),
2400                      LEGAL_REPORTING_STATUS    = DECODE(LEGAL_REPORTING_STATUS, '111111111111111','000000000000000', LEGAL_REPORTING_STATUS)
2401                WHERE APPLICATION_ID    = p_transaction_rec.application_id
2402                  AND ENTITY_CODE       = p_transaction_rec.entity_code
2403                  AND EVENT_CLASS_CODE  = p_transaction_rec.event_class_code
2404                  AND TRX_ID            = p_transaction_rec.trx_id
2405                  AND TRX_LINE_ID       = p_trx_line_id
2406                  AND TRX_LEVEL_TYPE    = p_trx_level_type
2407                  AND TAX_LINE_ID       = l_tax_line_id_tbl(i)
2408                  AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2409               END LOOP;
2410 
2411             EXIT WHEN tot_dist_amt_trx_line%NOTFOUND;
2412             END LOOP;
2413             CLOSE tot_dist_amt_trx_line;
2414 
2415          IF l_summarization_flag = 'Y' THEN
2416            IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2417               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2418                 'Opening Cursor TOT_TAX_AMT_TRX_LINE');
2419            END IF;
2420            OPEN tot_tax_amt_trx_line;
2421            LOOP
2422              FETCH tot_tax_amt_trx_line BULK COLLECT INTO
2423                    l_tax_amt_tbl,
2424                    l_tax_amt_tax_curr_tbl,
2425                    l_tax_amt_funcl_curr_tbl,
2426                    l_tot_rec_amt_tbl,
2427                    l_tot_rec_amt_tax_curr_tbl,
2428                    l_tot_rec_amt_funcl_curr_tbl,
2429                    l_tot_nrec_amt_tbl,
2430                    l_tot_nrec_amt_tax_curr_tbl,
2431                    l_tot_nrec_amt_funcl_curr_tbl,
2432                    l_cancel_flag_tbl,
2433                    l_summary_tax_line_id_tbl
2434              LIMIT G_LINES_PER_FETCH;
2435 
2436              FOR i IN NVL(l_summary_tax_line_id_tbl.FIRST,0) .. NVL(l_summary_tax_line_id_tbl.LAST,-99) LOOP
2437 	             IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2438                  FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2439                   TO_CHAR(i)||': Tax_Amt = ' || l_tax_amt_tbl(i) ||
2440 	  	            ', Summary_Tax_Line_Id = ' || l_summary_tax_line_id_tbl(i));
2441                END IF;
2442 
2443                UPDATE ZX_LINES_SUMMARY
2444                SET TAX_AMT                       = l_tax_amt_tbl(i),
2445                    TAX_AMT_TAX_CURR              = l_tax_amt_tax_curr_tbl(i),
2446                    TAX_AMT_FUNCL_CURR            = l_tax_amt_funcl_curr_tbl(i),
2447                    TOTAL_REC_TAX_AMT             = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_tbl(i), TOTAL_REC_TAX_AMT),
2448                    TOTAL_REC_TAX_AMT_FUNCL_CURR  = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_funcl_curr_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_funcl_curr_tbl(i), TOTAL_REC_TAX_AMT_FUNCL_CURR),
2449                    TOTAL_NREC_TAX_AMT            = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_tbl(i), TOTAL_NREC_TAX_AMT),
2450                    TOTAL_NREC_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_funcl_curr_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_funcl_curr_tbl(i), TOTAL_NREC_TAX_AMT_FUNCL_CURR),
2451                    TOTAL_REC_TAX_AMT_TAX_CURR    = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_tax_curr_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_tax_curr_tbl(i), TOTAL_REC_TAX_AMT_TAX_CURR),
2452                    TOTAL_NREC_TAX_AMT_TAX_CURR   = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_tax_curr_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_tax_curr_tbl(i), TOTAL_NREC_TAX_AMT_TAX_CURR),
2453                    CANCEL_FLAG                   = l_cancel_flag_tbl(i)
2454                WHERE APPLICATION_ID    = p_transaction_rec.application_id
2455                AND ENTITY_CODE         = p_transaction_rec.entity_code
2456                AND EVENT_CLASS_CODE    = p_transaction_rec.event_class_code
2457                AND TRX_ID              = p_transaction_rec.trx_id
2458                AND SUMMARY_TAX_LINE_ID = l_summary_tax_line_id_tbl(i)
2459                AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2460              END LOOP;
2461 
2462            EXIT WHEN tot_tax_amt_trx_line%NOTFOUND;
2463            END LOOP;
2464            CLOSE tot_tax_amt_trx_line;
2465          END IF; --l_summarization_flag = 'Y'
2466        -- Cancel flow for the entire Invoice
2467        ELSE
2468          IF (g_level_statement >= g_current_runtime_level ) THEN
2469             FND_LOG.STRING(g_level_statement,
2470                            'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2471                            'Canceling Complete Invoice');
2472          END IF;
2473          -- Reverse the tax distributions, Payables needs to populate
2474          -- zx_reverse_dist_gt for this case.
2475          ZX_TRD_SERVICES_PUB_PKG.REVERSE_DISTRIBUTIONS(x_return_status => l_return_status);
2476 
2477          IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
2478            x_return_status := l_return_status;
2479            IF (g_level_unexpected >= g_current_runtime_level ) THEN
2480              FND_LOG.STRING(g_level_unexpected,
2481                     'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2482                     'Incorrect return_status after calling ' ||
2483                     'ZX_TRD_SERVICES_PUB_PKG.REVERSE_DISTRIBUTIONS');
2484              FND_LOG.STRING(g_level_unexpected,
2485                     'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2486                     'RETURN_STATUS = ' || x_return_status);
2487              FND_LOG.STRING(g_level_unexpected,
2488                     'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2489                     'ZX_NEW_SERVICES_PKG.cancel_tax_lines(-)');
2490            END IF;
2491            IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2492              RAISE FND_API.G_EXC_ERROR;
2493            ELSE
2494              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2495            END IF;
2496          END IF;
2497 
2498          -- Update the freeze flag for the entire invoice
2499          IF (g_level_statement >= g_current_runtime_level ) THEN
2500             FND_LOG.STRING(g_level_statement,
2501                            'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2502                            'Updating the Freeze_Flag');
2503          END IF;
2504 
2505          UPDATE ZX_REC_NREC_DIST
2506          SET FREEZE_FLAG = 'Y'
2507          WHERE APPLICATION_ID = p_transaction_rec.application_id
2508          AND ENTITY_CODE = p_transaction_rec.entity_code
2509          AND EVENT_CLASS_CODE = p_transaction_rec.event_class_code
2510          AND TRX_ID = p_transaction_rec.trx_id;
2511 
2512          IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2513            FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2514              'No Of Rows Updated: ' || sql%rowcount);
2515          END IF;
2516 
2517          -- set the tax amounts accordingly
2518          IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2519             FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2520               'Opening Cursor TOT_DIST_AMT_TRX');
2521          END IF;
2522          OPEN tot_dist_amt_trx;
2523          LOOP
2524            FETCH tot_dist_amt_trx BULK COLLECT INTO
2525             l_unrounded_tax_amt_tbl,
2526             l_tax_amt_tbl,
2527             l_tax_amt_tax_curr_tbl,
2528             l_tax_amt_funcl_curr_tbl,
2529             l_tax_line_id_tbl
2530            LIMIT G_LINES_PER_FETCH;
2531 
2532              FOR i IN NVL(l_tax_line_id_tbl.FIRST,0) .. NVL(l_tax_line_id_tbl.LAST,-99) LOOP
2533                UPDATE ZX_LINES
2534                SET ORIG_TAXABLE_AMT          = NVL(orig_taxable_amt, taxable_amt),
2535                    ORIG_TAXABLE_AMT_TAX_CURR = NVL(orig_taxable_amt_tax_curr, taxable_amt_tax_curr),
2536                    ORIG_TAX_AMT              = NVL(orig_tax_amt, tax_amt),
2537                    ORIG_TAX_AMT_TAX_CURR     = NVL(orig_tax_amt_tax_curr, tax_amt_tax_curr),
2538                    UNROUNDED_TAX_AMT         = l_unrounded_tax_amt_tbl(i),
2539                    UNROUNDED_TAXABLE_AMT     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, UNROUNDED_TAXABLE_AMT),
2540                    TAX_AMT                   = l_tax_amt_tbl(i),
2541                    TAX_AMT_TAX_CURR          = l_tax_amt_tax_curr_tbl(i),
2542                    TAX_AMT_FUNCL_CURR        = l_tax_amt_funcl_curr_tbl(i),
2543                    TAXABLE_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT),
2544                    TAXABLE_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_TAX_CURR),
2545                    TAXABLE_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_FUNCL_CURR),
2546                    CAL_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), CAL_TAX_AMT),
2547                    CAL_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), CAL_TAX_AMT_TAX_CURR),
2548                    CAL_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), CAL_TAX_AMT_FUNCL_CURR),
2549                    REC_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), REC_TAX_AMT),
2550                    REC_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), REC_TAX_AMT_TAX_CURR),
2551                    REC_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), REC_TAX_AMT_FUNCL_CURR),
2552                    NREC_TAX_AMT              = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), NREC_TAX_AMT),
2553                    NREC_TAX_AMT_TAX_CURR     = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), NREC_TAX_AMT_TAX_cURR),
2554                    NREC_TAX_AMT_FUNCL_CURR   = DECODE(p_line_level_action, 'DISCARD', l_tax_amt_tbl(i), 'UNAPPLY_FROM', l_tax_amt_tbl(i), NREC_TAX_AMT_FUNCL_CURR),
2555                    PROCESS_FOR_RECOVERY_FLAG = 'N',
2556                    ASSOCIATED_CHILD_FROZEN_FLAG = 'Y',
2557                    SYNC_WITH_PRVDR_FLAG      = DECODE(TAX_PROVIDER_ID, NULL, SYNC_WITH_PRVDR_FLAG, 'Y'),
2558                    CANCEL_FLAG               = 'Y',
2559                    TAX_HOLD_CODE             = NULL,
2560                    TAX_HOLD_RELEASED_CODE    = NULL,
2561                    PRD_TOTAL_TAX_AMT         = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT),
2562                    PRD_TOTAL_TAX_AMT_TAX_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_TAX_CURR),
2563                    PRD_TOTAL_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_FUNCL_CURR),
2564                    TRX_LINE_INDEX            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, TRX_LINE_INDEX),
2565                    OFFSET_TAX_RATE_CODE      = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OFFSET_TAX_RATE_CODE),
2566                    PRORATION_CODE            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRORATION_CODE),
2567                    OTHER_DOC_SOURCE          = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OTHER_DOC_SOURCE),
2568                    LEGAL_REPORTING_STATUS    = DECODE(LEGAL_REPORTING_STATUS, '111111111111111','000000000000000', LEGAL_REPORTING_STATUS)
2569                WHERE APPLICATION_ID    = p_transaction_rec.application_id
2570                AND ENTITY_CODE       = p_transaction_rec.entity_code
2571                AND EVENT_CLASS_CODE  = p_transaction_rec.event_class_code
2572                AND TRX_ID            = p_transaction_rec.trx_id
2573                AND TAX_LINE_ID       = l_tax_line_id_tbl(i)
2574                AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2575              END LOOP;
2576            EXIT WHEN tot_dist_amt_trx%NOTFOUND;
2577          END LOOP;
2578          CLOSE tot_dist_amt_trx;
2579 
2580          -- Check if there exist tax lines that do not have any distributions
2581          IF (g_level_statement >= g_current_runtime_level ) THEN
2582             FND_LOG.STRING(g_level_statement,
2583                            'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2584                            'Checking for Tax Lines without distributions');
2585          END IF;
2586 
2587          BEGIN
2588            SELECT COUNT(zl.tax_line_id)
2589              INTO l_tax_line_count
2590              FROM zx_lines zl
2591             WHERE zl.application_id = p_transaction_rec.application_id
2592               AND zl.entity_code = p_transaction_rec.entity_code
2593               AND zl.event_class_code = p_transaction_rec.event_class_code
2594               AND zl.trx_id = p_transaction_rec.trx_id
2595               AND NVL(zl.tax_only_line_flag,'N') <> 'Y'
2596               AND NVL(zl.cancel_flag,'N') <> 'Y'
2597               AND NOT EXISTS (SELECT /*+first_rows(1)*/ 1
2598                                 FROM zx_rec_nrec_dist zd
2599                                WHERE zd.trx_id = zl.trx_id
2600                                  AND zd.application_id = zl.application_id
2601                                  AND zd.entity_code = zl.entity_code
2602                                  AND zd.event_class_code = zl.event_class_code
2603                                  AND zd.tax_line_id = zl.tax_line_id
2604                                  AND ROWNUM = 1);
2605          EXCEPTION WHEN OTHERS THEN
2606            IF (g_level_unexpected >= g_current_runtime_level ) THEN
2607               FND_LOG.STRING(g_level_unexpected,
2608                              'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2609                              'Query to check for Tax Lines without dists failed with error '||SQLERRM);
2610            END IF;
2611            l_tax_line_count := 0;
2612          END;
2613 
2614          IF (g_level_statement >= g_current_runtime_level ) THEN
2615            FND_LOG.STRING(g_level_statement,
2616                           'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2617                           'Count of Tax Lines without distributions = '||l_tax_line_count);
2618          END IF;
2619 
2620          IF l_tax_line_count > 0 THEN
2621            UPDATE ZX_LINES ZL
2622            SET ORIG_TAXABLE_AMT          = NVL(orig_taxable_amt, taxable_amt),
2623                ORIG_TAXABLE_AMT_TAX_CURR = NVL(orig_taxable_amt_tax_curr, taxable_amt_tax_curr),
2624                ORIG_TAX_AMT              = NVL(orig_tax_amt, tax_amt),
2625                ORIG_TAX_AMT_TAX_CURR     = NVL(orig_tax_amt_tax_curr, tax_amt_tax_curr),
2626                UNROUNDED_TAX_AMT         = 0,
2627                UNROUNDED_TAXABLE_AMT     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, UNROUNDED_TAXABLE_AMT),
2628                TAX_AMT                   = 0,
2629                TAX_AMT_TAX_CURR          = 0,
2630                TAX_AMT_FUNCL_CURR        = 0,
2631                TAXABLE_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT),
2632                TAXABLE_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_TAX_CURR),
2633                TAXABLE_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_FUNCL_CURR),
2634                CAL_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT),
2635                CAL_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT_TAX_CURR),
2636                CAL_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT_FUNCL_CURR),
2637                REC_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT),
2638                REC_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT_TAX_CURR),
2639                REC_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT_FUNCL_CURR),
2640                NREC_TAX_AMT              = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT),
2641                NREC_TAX_AMT_TAX_CURR     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT_TAX_cURR),
2642                NREC_TAX_AMT_FUNCL_CURR   = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT_FUNCL_CURR),
2643                PROCESS_FOR_RECOVERY_FLAG = 'N',
2644                SYNC_WITH_PRVDR_FLAG      = DECODE(TAX_PROVIDER_ID, NULL, SYNC_WITH_PRVDR_FLAG, 'Y'),
2645                CANCEL_FLAG               = 'Y',
2646                TAX_HOLD_CODE             = NULL,
2647                TAX_HOLD_RELEASED_CODE    = NULL,
2648                PRD_TOTAL_TAX_AMT         = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT),
2649                PRD_TOTAL_TAX_AMT_TAX_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_TAX_CURR),
2650                PRD_TOTAL_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_FUNCL_CURR),
2651                TRX_LINE_INDEX            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, TRX_LINE_INDEX),
2652                OFFSET_TAX_RATE_CODE      = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OFFSET_TAX_RATE_CODE),
2653                PRORATION_CODE            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRORATION_CODE),
2654                OTHER_DOC_SOURCE          = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OTHER_DOC_SOURCE),
2655                LEGAL_REPORTING_STATUS    = DECODE(LEGAL_REPORTING_STATUS, '111111111111111','000000000000000', LEGAL_REPORTING_STATUS)
2656            WHERE ZL.APPLICATION_ID  = p_transaction_rec.application_id
2657            AND ZL.ENTITY_CODE       = p_transaction_rec.entity_code
2658            AND ZL.EVENT_CLASS_CODE  = p_transaction_rec.event_class_code
2659            AND ZL.TRX_ID            = p_transaction_rec.trx_id
2660            AND NVL(ZL.TAX_ONLY_LINE_FLAG,'N') <> 'Y'
2661            AND NVL(ZL.CANCEL_FLAG,'N') <> 'Y'
2662            AND NOT EXISTS (SELECT /*+first_rows(1)*/ 1
2663                              FROM ZX_REC_NREC_DIST ZD
2664                             WHERE ZD.TRX_ID = ZL.TRX_ID
2665                               AND ZD.APPLICATION_ID = ZL.APPLICATION_ID
2666                               AND ZD.ENTITY_CODE = ZL.ENTITY_CODE
2667                               AND ZD.EVENT_CLASS_CODE = ZL.EVENT_CLASS_CODE
2668                               AND ZD.TAX_LINE_ID = ZL.TAX_LINE_ID
2669                               AND ROWNUM = 1);
2670 
2671            IF (g_level_statement >= g_current_runtime_level ) THEN
2672              FND_LOG.STRING(g_level_statement,
2673                             'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2674                             'No. of Rows Updated : '||SQL%ROWCOUNT);
2675            END IF;
2676          END IF;
2677 
2678          IF l_summarization_flag = 'Y' THEN
2679            IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2680               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2681                 'Opening Cursor TOT_TAX_AMT_TRX');
2682            END IF;
2683            OPEN tot_tax_amt_trx;
2684             LOOP
2685             FETCH tot_tax_amt_trx BULK COLLECT INTO
2686             l_tax_amt_tbl,
2687             l_tax_amt_tax_curr_tbl,
2688             l_tax_amt_funcl_curr_tbl,
2689             l_tot_rec_amt_tbl,
2690             l_tot_rec_amt_tax_curr_tbl,
2691             l_tot_rec_amt_funcl_curr_tbl,
2692             l_tot_nrec_amt_tbl,
2693             l_tot_nrec_amt_tax_curr_tbl,
2694             l_tot_nrec_amt_funcl_curr_tbl,
2695             l_cancel_flag_tbl,
2696             l_summary_tax_line_id_tbl
2697             LIMIT G_LINES_PER_FETCH;
2698 
2699             FOR i IN NVL(l_summary_tax_line_id_tbl.FIRST,0) .. NVL(l_summary_tax_line_id_tbl.LAST,-99) LOOP
2700               UPDATE ZX_LINES_SUMMARY
2701               SET TAX_AMT                       = l_tax_amt_tbl(i),
2702                   TAX_AMT_TAX_CURR              = l_tax_amt_tax_curr_tbl(i),
2703                   TAX_AMT_FUNCL_CURR            = l_tax_amt_funcl_curr_tbl(i),
2704                   TOTAL_REC_TAX_AMT             = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_tbl(i), TOTAL_REC_TAX_AMT),
2705                   TOTAL_REC_TAX_AMT_FUNCL_CURR  = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_funcl_curr_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_funcl_curr_tbl(i), TOTAL_REC_TAX_AMT_FUNCL_CURR),
2706                   TOTAL_NREC_TAX_AMT            = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_tbl(i), TOTAL_NREC_TAX_AMT),
2707                   TOTAL_NREC_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_funcl_curr_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_funcl_curr_tbl(i), TOTAL_NREC_TAX_AMT_FUNCL_CURR),
2708                   TOTAL_REC_TAX_AMT_TAX_CURR    = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_tax_curr_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_tax_curr_tbl(i), TOTAL_REC_TAX_AMT_TAX_CURR),
2709                   TOTAL_NREC_TAX_AMT_TAX_CURR   = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_tax_curr_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_tax_curr_tbl(i), TOTAL_NREC_TAX_AMT_TAX_CURR),
2710                   CANCEL_FLAG                   = l_cancel_flag_tbl(i)
2711              WHERE APPLICATION_ID    = p_transaction_rec.application_id
2712              AND ENTITY_CODE         = p_transaction_rec.entity_code
2713              AND EVENT_CLASS_CODE    = p_transaction_rec.event_class_code
2714              AND TRX_ID              = p_transaction_rec.trx_id
2715              AND SUMMARY_TAX_LINE_ID = l_summary_tax_line_id_tbl(i)
2716              AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2717             END LOOP;
2718             EXIT WHEN tot_tax_amt_trx%NOTFOUND;
2719            END LOOP;
2720            CLOSE tot_tax_amt_trx;
2721          END IF; -- l_summarization_flag = 'Y'
2722        END IF;
2723     -- If no distributions exists
2724     ELSE
2725       -- Discard flow for Single item line.
2726       IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2727          FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2728                 'If no distributions exists, Discard flow for Single item line : '|| p_trx_line_id);
2729       END IF;
2730       IF p_trx_line_id IS NOT NULL THEN
2731         UPDATE ZX_LINES
2732         SET ORIG_TAXABLE_AMT          = NVL(orig_taxable_amt, taxable_amt),
2733             ORIG_TAXABLE_AMT_TAX_CURR = NVL(orig_taxable_amt_tax_curr, taxable_amt_tax_curr),
2734             ORIG_TAX_AMT              = NVL(orig_tax_amt, tax_amt),
2735             ORIG_TAX_AMT_TAX_CURR     = NVL(orig_tax_amt_tax_curr, tax_amt_tax_curr),
2736             UNROUNDED_TAX_AMT         = 0,
2737             UNROUNDED_TAXABLE_AMT     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, UNROUNDED_TAXABLE_AMT),
2738             TAX_AMT                   = 0,
2739             TAX_AMT_TAX_CURR          = 0,
2740             TAX_AMT_FUNCL_CURR        = 0,
2741             TAXABLE_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT),
2742             TAXABLE_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_TAX_CURR),
2743             TAXABLE_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_FUNCL_CURR),
2744             CAL_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT),
2745             CAL_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT_TAX_CURR),
2746             CAL_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT_FUNCL_CURR),
2747             REC_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT),
2748             REC_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT_TAX_CURR),
2749             REC_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT_FUNCL_CURR),
2750             NREC_TAX_AMT              = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT),
2751             NREC_TAX_AMT_TAX_CURR     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT_TAX_cURR),
2752             NREC_TAX_AMT_FUNCL_CURR   = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT_FUNCL_CURR),
2753             PROCESS_FOR_RECOVERY_FLAG = 'N',
2754             SYNC_WITH_PRVDR_FLAG      = DECODE(TAX_PROVIDER_ID, NULL, SYNC_WITH_PRVDR_FLAG, 'Y'),
2755             CANCEL_FLAG               = 'Y',
2756             TAX_HOLD_CODE             = NULL,
2757             TAX_HOLD_RELEASED_CODE    = NULL,
2758             PRD_TOTAL_TAX_AMT         = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT),
2759             PRD_TOTAL_TAX_AMT_TAX_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_TAX_CURR),
2760             PRD_TOTAL_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_FUNCL_CURR),
2761             TRX_LINE_INDEX            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, TRX_LINE_INDEX),
2762             OFFSET_TAX_RATE_CODE      = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OFFSET_TAX_RATE_CODE),
2763             PRORATION_CODE            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRORATION_CODE),
2764             OTHER_DOC_SOURCE          = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OTHER_DOC_SOURCE),
2765             LEGAL_REPORTING_STATUS    = DECODE(LEGAL_REPORTING_STATUS, '111111111111111','000000000000000', LEGAL_REPORTING_STATUS)
2766         WHERE APPLICATION_ID    = p_transaction_rec.application_id
2767         AND ENTITY_CODE       = p_transaction_rec.entity_code
2768         AND EVENT_CLASS_CODE  = p_transaction_rec.event_class_code
2769         AND TRX_ID            = p_transaction_rec.trx_id
2770         AND TRX_LINE_ID       = p_trx_line_id
2771         AND TRX_LEVEL_TYPE    = p_trx_level_type
2772         AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2773 
2774         IF l_summarization_flag = 'Y' THEN
2775           IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2776               FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
2777                 'Opening Cursor TOT_TAX_AMT_TRX_LINE');
2778           END IF;
2779           OPEN tot_tax_amt_trx_line;
2780           LOOP
2781           FETCH tot_tax_amt_trx_line BULK COLLECT INTO
2782           l_tax_amt_tbl,
2783           l_tax_amt_tax_curr_tbl,
2784           l_tax_amt_funcl_curr_tbl,
2785           l_tot_rec_amt_tbl,
2786           l_tot_rec_amt_tax_curr_tbl,
2787           l_tot_rec_amt_funcl_curr_tbl,
2788           l_tot_nrec_amt_tbl,
2789           l_tot_nrec_amt_tax_curr_tbl,
2790           l_tot_nrec_amt_funcl_curr_tbl,
2791           l_cancel_flag_tbl,
2792           l_summary_tax_line_id_tbl
2793           LIMIT G_LINES_PER_FETCH;
2794 
2795           FOR i IN NVL(l_summary_tax_line_id_tbl.FIRST,0) .. NVL(l_summary_tax_line_id_tbl.LAST,-99) LOOP
2796             UPDATE ZX_LINES_SUMMARY
2797             SET TAX_AMT                       = l_tax_amt_tbl(i),
2798                 TAX_AMT_TAX_CURR              = l_tax_amt_tax_curr_tbl(i),
2799                 TAX_AMT_FUNCL_CURR            = l_tax_amt_funcl_curr_tbl(i),
2800                 TOTAL_REC_TAX_AMT             = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_tbl(i), TOTAL_REC_TAX_AMT),
2801                 TOTAL_REC_TAX_AMT_FUNCL_CURR  = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_funcl_curr_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_funcl_curr_tbl(i), TOTAL_REC_TAX_AMT_FUNCL_CURR),
2802                 TOTAL_NREC_TAX_AMT            = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_tbl(i), TOTAL_NREC_TAX_AMT),
2803                 TOTAL_NREC_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_funcl_curr_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_funcl_curr_tbl(i), TOTAL_NREC_TAX_AMT_FUNCL_CURR),
2804                 TOTAL_REC_TAX_AMT_TAX_CURR    = DECODE(p_line_level_action, 'DISCARD', l_tot_rec_amt_tax_curr_tbl(i), 'UNAPPLY_FROM', l_tot_rec_amt_tax_curr_tbl(i), TOTAL_REC_TAX_AMT_TAX_CURR),
2805                 TOTAL_NREC_TAX_AMT_TAX_CURR   = DECODE(p_line_level_action, 'DISCARD', l_tot_nrec_amt_tax_curr_tbl(i), 'UNAPPLY_FROM', l_tot_nrec_amt_tax_curr_tbl(i), TOTAL_NREC_TAX_AMT_TAX_CURR),
2806                 CANCEL_FLAG                   = l_cancel_flag_tbl(i)
2807             WHERE APPLICATION_ID    = p_transaction_rec.application_id
2808             AND ENTITY_CODE         = p_transaction_rec.entity_code
2809             AND EVENT_CLASS_CODE    = p_transaction_rec.event_class_code
2810             AND TRX_ID              = p_transaction_rec.trx_id
2811             AND SUMMARY_TAX_LINE_ID = l_summary_tax_line_id_tbl(i)
2812             AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2813           END LOOP;
2814           EXIT WHEN tot_tax_amt_trx_line%NOTFOUND;
2815          END LOOP;
2816          CLOSE tot_tax_amt_trx_line;
2817         END IF; --l_summarization_flag = 'Y'
2818 
2819       -- Cancel flow for entire Invoice.
2820       ELSE
2821         UPDATE ZX_LINES
2822         SET ORIG_TAXABLE_AMT          = NVL(orig_taxable_amt, taxable_amt),
2823             ORIG_TAXABLE_AMT_TAX_CURR = NVL(orig_taxable_amt_tax_curr, taxable_amt_tax_curr),
2824             ORIG_TAX_AMT              = NVL(orig_tax_amt, tax_amt),
2825             ORIG_TAX_AMT_TAX_CURR     = NVL(orig_tax_amt_tax_curr, tax_amt_tax_curr),
2826             UNROUNDED_TAX_AMT         = 0,
2827             UNROUNDED_TAXABLE_AMT     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, UNROUNDED_TAXABLE_AMT),
2828             TAX_AMT                   = 0,
2829             TAX_AMT_TAX_CURR          = 0,
2830             TAX_AMT_FUNCL_CURR        = 0,
2831             TAXABLE_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT),
2832             TAXABLE_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_TAX_CURR),
2833             TAXABLE_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TAXABLE_AMT_FUNCL_CURR),
2834             CAL_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT),
2835             CAL_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT_TAX_CURR),
2836             CAL_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, CAL_TAX_AMT_FUNCL_CURR),
2837             REC_TAX_AMT               = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT),
2838             REC_TAX_AMT_TAX_CURR      = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT_TAX_CURR),
2839             REC_TAX_AMT_FUNCL_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, REC_TAX_AMT_FUNCL_CURR),
2840             NREC_TAX_AMT              = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT),
2841             NREC_TAX_AMT_TAX_CURR     = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT_TAX_cURR),
2842             NREC_TAX_AMT_FUNCL_CURR   = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, NREC_TAX_AMT_FUNCL_CURR),
2843             PROCESS_FOR_RECOVERY_FLAG = 'N',
2844             SYNC_WITH_PRVDR_FLAG      = DECODE(TAX_PROVIDER_ID, NULL, SYNC_WITH_PRVDR_FLAG, 'Y'),
2845             CANCEL_FLAG               = 'Y',
2846             TAX_HOLD_CODE             = NULL,
2847             TAX_HOLD_RELEASED_CODE    = NULL,
2848             PRD_TOTAL_TAX_AMT         = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT),
2849             PRD_TOTAL_TAX_AMT_TAX_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_TAX_CURR),
2850             PRD_TOTAL_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRD_TOTAL_TAX_AMT_FUNCL_CURR),
2851             TRX_LINE_INDEX            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, TRX_LINE_INDEX),
2852             OFFSET_TAX_RATE_CODE      = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OFFSET_TAX_RATE_CODE),
2853             PRORATION_CODE            = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, PRORATION_CODE),
2854             OTHER_DOC_SOURCE          = DECODE(p_line_level_action, 'DISCARD', NULL, 'UNAPPLY_FROM', NULL, OTHER_DOC_SOURCE),
2855             LEGAL_REPORTING_STATUS    = DECODE(LEGAL_REPORTING_STATUS, '111111111111111','000000000000000', LEGAL_REPORTING_STATUS)
2856         WHERE APPLICATION_ID    = p_transaction_rec.application_id
2857         AND ENTITY_CODE       = p_transaction_rec.entity_code
2858         AND EVENT_CLASS_CODE  = p_transaction_rec.event_class_code
2859         AND TRX_ID            = p_transaction_rec.trx_id
2860         AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2861 
2862         IF l_summarization_flag = 'Y' THEN
2863           UPDATE ZX_LINES_SUMMARY
2864           SET TAX_AMT                       = 0,
2865               TAX_AMT_TAX_CURR              = 0,
2866               TAX_AMT_FUNCL_CURR            = 0,
2867               TOTAL_REC_TAX_AMT             = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TOTAL_REC_TAX_AMT),
2868               TOTAL_REC_TAX_AMT_FUNCL_CURR  = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TOTAL_REC_TAX_AMT_FUNCL_CURR),
2869               TOTAL_NREC_TAX_AMT            = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TOTAL_NREC_TAX_AMT),
2870               TOTAL_NREC_TAX_AMT_FUNCL_CURR = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TOTAL_NREC_TAX_AMT_FUNCL_CURR),
2871               TOTAL_REC_TAX_AMT_TAX_CURR    = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TOTAL_REC_TAX_AMT_TAX_CURR),
2872               TOTAL_NREC_TAX_AMT_TAX_CURR   = DECODE(p_line_level_action, 'DISCARD', 0, 'UNAPPLY_FROM', 0, TOTAL_NREC_TAX_AMT_TAX_CURR)
2873           WHERE APPLICATION_ID    = p_transaction_rec.application_id
2874           AND ENTITY_CODE         = p_transaction_rec.entity_code
2875           AND EVENT_CLASS_CODE    = p_transaction_rec.event_class_code
2876           AND TRX_ID              = p_transaction_rec.trx_id
2877           AND NVL(TAX_ONLY_LINE_FLAG,'N') <> 'Y';
2878         END IF; --l_summarization_flag = 'Y'
2879       END IF; --IF p_trx_line_id IS NOT NULL THEN
2880     END IF; --l_count <> 0
2881 
2882     -- Discard Tax Only Lines if any for the complete invoice alone
2883     -- Assuming that tax only lines cannot be discarded individually.
2884     IF p_tax_only_line_flag = 'Y' AND p_trx_line_id IS NULL THEN
2885 
2886       ZX_API_PUB.discard_tax_only_lines
2887                ( p_api_version      => p_api_version,
2888                  p_init_msg_list    => p_init_msg_list,
2889                  p_commit           => p_commit,
2890                  p_validation_level => p_validation_level,
2891                  x_return_status    => l_return_status,
2892                  x_msg_count        => x_msg_count,
2893                  x_msg_data         => x_msg_data,
2894                  p_transaction_rec  => p_transaction_rec
2895                );
2896       IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
2897           x_return_status := l_return_status;
2898           IF (g_level_unexpected >= g_current_runtime_level ) THEN
2899             FND_LOG.STRING(g_level_unexpected,
2900                    'ZX.PLSQL.ZX_NEW_SERVICES_PKG.CANCEL_TAX_LINES',
2901                    'Incorrect return_status after calling ' ||
2902                    'ZX_API_PUB.discard_tax_only_lines');
2903             FND_LOG.STRING(g_level_unexpected,
2904                    'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2905                    'RETURN_STATUS = ' || x_return_status);
2906             FND_LOG.STRING(g_level_unexpected,
2907                    'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2908                    'ZX_NEW_SERVICES_PKG.cancel_tax_lines(-)');
2909           END IF;
2910           IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2911             RAISE FND_API.G_EXC_ERROR;
2912           ELSE
2913             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2914           END IF;
2915       END IF;
2916     END IF;
2917 
2918     -- Call update_det_factors_for_cancel
2919     update_det_factors_for_cancel
2920               (x_return_status         => x_return_status,
2921                x_msg_count             => x_msg_count,
2922                x_msg_data              => x_msg_data,
2923                p_event_class_rec       => l_event_class_rec,
2924                p_transaction_rec       => p_transaction_rec,
2925                p_trx_line_id           => p_trx_line_id,
2926                p_trx_level_type        => p_trx_level_type,
2927                p_line_level_action     => p_line_level_action
2928               );
2929 
2930     -- Call Global Document Update
2931     ZX_API_PUB.Global_document_update
2932                ( p_api_version         => p_api_version,
2933                  p_init_msg_list       => p_init_msg_list,
2934                  p_commit              => p_commit,
2935                  p_validation_level    => p_validation_level,
2936                  x_return_status       => x_return_status,
2937                  x_msg_count           => x_msg_count,
2938                  x_msg_data            => x_msg_data,
2939                  p_transaction_rec     => p_transaction_rec
2940                );
2941     IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
2942       x_return_status := l_return_status;
2943       IF (g_level_unexpected >= g_current_runtime_level ) THEN
2944         FND_LOG.STRING(g_level_unexpected,
2945                'ZX.PLSQL.ZX_NEW_SERVICES_PKG.CANCEL_TAX_LINES',
2946                'Incorrect return_status after calling ' ||
2947                'ZX_API_PUB.Global_document_update');
2948         FND_LOG.STRING(g_level_unexpected,
2949                'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2950                'RETURN_STATUS = ' || x_return_status);
2951         FND_LOG.STRING(g_level_unexpected,
2952                'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines.END',
2953                'ZX_NEW_SERVICES_PKG.cancel_tax_lines(-)');
2954       END IF;
2955       IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2956         RAISE FND_API.G_EXC_ERROR;
2957       ELSE
2958         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2959       END IF;
2960     END IF;
2961 
2962     --Preventice checks
2963     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2964         FND_LOG.STRING(G_LEVEL_STATEMENT,
2965                        'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2966                        'Opening Preventive Check Cursor Check_Canceled_Tax_Lines');
2967     END IF;
2968 
2969     l_chk_tax_line_id_tbl.DELETE;
2970     l_chk_tax_amt_tbl.DELETE;
2971     l_chk_cancel_flg_tbl.DELETE;
2972 
2973     OPEN check_canceled_tax_lines(p_trx_line_id);
2974     LOOP
2975     FETCH check_canceled_tax_lines
2976      BULK COLLECT INTO
2977           l_chk_tax_line_id_tbl,
2978           l_chk_tax_amt_tbl,
2979           l_chk_cancel_flg_tbl
2980     LIMIT G_LINES_PER_FETCH;
2981 
2982     IF check_canceled_tax_lines%FOUND AND l_chk_tax_line_id_tbl.COUNT > 0 THEN
2983       l_return_status := FND_API.G_RET_STS_ERROR;
2984       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2985         FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2986                        'Following tax lines are not canceled properly:');
2987         FOR i IN NVL(l_chk_tax_line_id_tbl.FIRST,0)..NVL(l_chk_tax_line_id_tbl.LAST,-99) LOOP
2988            FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2989                             'TAX_LINE_ID: '||TO_CHAR(l_chk_tax_line_id_tbl(i))||
2990                             ', CANCEL_FLAG: '||l_chk_cancel_flg_tbl(i)||
2991                             ', TAX_AMT: '||TO_CHAR(l_chk_tax_amt_tbl(i)));
2992         END LOOP;
2993       END IF;
2994     ELSE
2995       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2996         FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
2997                        'No problematic records found. Tax canceled successfully.');
2998       END IF;
2999     END IF;
3000     EXIT WHEN check_canceled_tax_lines%NOTFOUND OR l_chk_tax_line_id_tbl.COUNT = 0;
3001     END LOOP;
3002     CLOSE check_canceled_tax_lines;
3003 
3004     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3005         FND_LOG.STRING(G_LEVEL_STATEMENT,
3006                        'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3007                        'Opening Preventive Check Cursor Check_Tax_Lines_Dists_Amt');
3008     END IF;
3009 
3010     l_chk_tax_line_id_tbl.DELETE;
3011     l_chk_tax_amt_tbl.DELETE;
3012     l_chk_tot_dist_amt_tbl.DELETE;
3013 
3014     OPEN check_tax_lines_dists_amt(p_trx_line_id);
3015     LOOP
3016     FETCH check_tax_lines_dists_amt
3017      BULK COLLECT INTO
3018           l_chk_tax_line_id_tbl,
3019           l_chk_tax_amt_tbl,
3020           l_chk_tot_dist_amt_tbl
3021     LIMIT G_LINES_PER_FETCH;
3022 
3023     IF check_tax_lines_dists_amt%FOUND AND l_chk_tax_line_id_tbl.COUNT > 0 THEN
3024       l_return_status := FND_API.G_RET_STS_ERROR;
3025 
3026       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3027         FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3028                        'Following tax lines and its distributions are out of sync:');
3029         FOR i IN NVL(l_chk_tax_line_id_tbl.FIRST,0)..NVL(l_chk_tax_line_id_tbl.LAST,-99) LOOP
3030            FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3031                             'TAX_LINE_ID: '||TO_CHAR(l_chk_tax_line_id_tbl(i))||
3032                             ', TAX_AMT: '||TO_CHAR(l_chk_tax_amt_tbl(i))||
3033                             ', TOTAL_DIST_AMT: '||TO_CHAR(l_chk_tot_dist_amt_tbl(i)));
3034         END LOOP;
3035       END IF;
3036     ELSE
3037       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3038         FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3039                        'No problematic records found. Tax lines and distributions are in sync.');
3040       END IF;
3041     END IF;
3042     EXIT WHEN check_tax_lines_dists_amt%NOTFOUND OR l_chk_tax_line_id_tbl.COUNT = 0;
3043     END LOOP;
3044     CLOSE check_tax_lines_dists_amt;
3045 
3046     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3047       FND_MESSAGE.SET_NAME('ZX','ZX_GENERIC_TEXT');
3048       FND_MESSAGE.SET_TOKEN('GENERIC_TEXT',
3049                             'E-Business Tax is unable to complete the Cancel/Discard/Unapply request.'||
3050                             ' Generate FND Debug Log file and APLIST and log a Service Request.');
3051       ZX_API_PUB.ADD_MSG(l_msg_context_info_rec);
3052       RAISE FND_API.G_EXC_ERROR;
3053     END IF;
3054 
3055     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3056       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_NEW_SERVICES_PKG: '||l_api_name||'()-');
3057     END IF;
3058 
3059     EXCEPTION
3060      WHEN FND_API.G_EXC_ERROR THEN
3061        ROLLBACK TO cancel_tax_lines_PVT;
3062        x_return_status := FND_API.G_RET_STS_ERROR ;
3063        ZX_API_PUB.DUMP_MSG;
3064        /*---------------------------------------------------------+
3065         | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3066         | in the message stack. If there is only one message in   |
3067         | the stack it retrieves this message                     |
3068         +---------------------------------------------------------*/
3069        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3070                                  p_count   =>      x_msg_count,
3071                                  p_data    =>      x_msg_data
3072                                 );
3073        IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3074          FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3075        END IF;
3076 
3077     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3078       ROLLBACK TO cancel_tax_lines_PVT;
3079       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3080       ZX_API_PUB.DUMP_MSG;
3081       FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3082       FND_MSG_PUB.Add;
3083       /*---------------------------------------------------------+
3084        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3085        | in the message stack. If there is only one message in   |
3086        | the stack it retrieves this message                     |
3087        +---------------------------------------------------------*/
3088       FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3089                                 p_count   =>      x_msg_count,
3090                                 p_data    =>      x_msg_data
3091                                );
3092       IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3093         FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3094       END IF;
3095     WHEN OTHERS THEN
3096       ROLLBACK TO cancel_tax_lines_PVT;
3097       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3098       ZX_API_PUB.DUMP_MSG;
3099       FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3100       FND_MSG_PUB.Add;
3101       /*---------------------------------------------------------+
3102        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3103        | in the message stack. If there is only one message in   |
3104        | the stack it retrieves this message                     |
3105        +---------------------------------------------------------*/
3106       FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3107                                 p_count       =>      x_msg_count,
3108                                 p_data        =>      x_msg_data
3109                                );
3110       IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3111         FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3112       END IF;
3113 END cancel_tax_lines;
3114 
3115  /* ======================================================================*
3116  | PROCEDURE delete_tax_dists:                                   |
3117  * ======================================================================*/
3118 
3119  PROCEDURE delete_tax_dists(
3120   p_api_version           IN            NUMBER,
3121   p_init_msg_list         IN            VARCHAR2,
3122   p_commit                IN            VARCHAR2,
3123   p_validation_level      IN            NUMBER,
3124   x_return_status         OUT NOCOPY    VARCHAR2 ,
3125   x_msg_count             OUT NOCOPY    NUMBER ,
3126   x_msg_data              OUT NOCOPY    VARCHAR2 ,
3127   p_transaction_line_rec  IN OUT NOCOPY ZX_API_PUB.transaction_line_rec_type
3128   )IS
3129   l_api_name                  CONSTANT  VARCHAR2(30) := 'DELETE_TAX_DISTS';
3130   l_api_version               CONSTANT  NUMBER := 1.0;
3131   l_return_status             VARCHAR2(1);
3132   l_init_msg_list             VARCHAR2(1);
3133   l_msg_context_info_rec      ZX_API_PUB.CONTEXT_INFO_REC_TYPE;
3134 
3135   TYPE num_tbl_type     IS TABLE OF NUMBER        INDEX BY BINARY_INTEGER;
3136   l_tax_line_id_tbl           num_tbl_type;
3137 
3138   -- Added for preventive check --
3139   l_chk_tax_line_id_tbl          num_tbl_type;
3140   l_chk_tax_amt_tbl              num_tbl_type;
3141   l_chk_tot_dist_amt_tbl         num_tbl_type;
3142 
3143   CURSOR get_tax_line_id_cur IS
3144   SELECT tax_line_id
3145     FROM zx_rec_nrec_dist zd, zx_tax_dist_id_gt zgt
3146    WHERE zd.rec_nrec_tax_dist_id = zgt.tax_dist_id;
3147 
3148   -- Preventive check cursor to check if any tax line exists where tax amount
3149   -- of tax line is not equal to the sum of amounts of its distributions
3150   CURSOR check_tax_lines_dists_amt IS
3151   SELECT zl.tax_line_id,
3152          zl.tax_amt,
3153          SUM(zd.rec_nrec_tax_amt) tot_rec_nrec_amt
3154     FROM zx_lines zl,
3155          zx_rec_nrec_dist zd
3156    WHERE zl.tax_line_id IN
3157            (SELECT zd.tax_line_id
3158               FROM zx_rec_nrec_dist zd,
3159                    zx_tax_dist_id_gt zgt
3160              WHERE zd.rec_nrec_tax_dist_id = zgt.tax_dist_id)
3161      AND zd.application_id = zl.application_id
3162      AND zd.entity_code = zl.entity_code
3163      AND zd.event_class_code = zl.event_class_code
3164      AND zd.trx_id = zl.trx_id
3165      AND zd.tax_line_id = zl.tax_line_id
3166    GROUP BY zl.tax_line_id, zl.tax_amt
3167   HAVING zl.tax_amt <> SUM(zd.rec_nrec_tax_amt);
3168 
3169  BEGIN
3170    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3171      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_NEW_SERVICES_PKG: '||l_api_name||'()+');
3172    END IF;
3173 
3174   /*--------------------------------------------------+
3175    |   Standard start of API savepoint                |
3176    +--------------------------------------------------*/
3177    SAVEPOINT Del_Cand_Tax_Distributions_PVT;
3178 
3179    /*--------------------------------------------------+
3180     |   Standard call to check for call compatibility  |
3181     +--------------------------------------------------*/
3182     IF NOT FND_API.Compatible_API_Call(l_api_version,
3183                                        p_api_version,
3184                                        l_api_name,
3185                                        G_PKG_NAME
3186                                        ) THEN
3187        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3188      END IF;
3189 
3190     /*--------------------------------------------------------------+
3191      |   Initialize message list if p_init_msg_list is set to TRUE  |
3192      +--------------------------------------------------------------*/
3193      IF p_init_msg_list is null THEN
3194        l_init_msg_list := FND_API.G_FALSE;
3195      ELSE
3196        l_init_msg_list := p_init_msg_list;
3197      END IF;
3198 
3199      IF FND_API.to_Boolean(l_init_msg_list) THEN
3200        FND_MSG_PUB.initialize;
3201      END IF;
3202 
3203     /*-----------------------------------------+
3204      |   Initialize return status to SUCCESS   |
3205      +-----------------------------------------*/
3206      x_return_status := FND_API.G_RET_STS_SUCCESS;
3207 
3208     /*-----------------------------------------+
3209      |   Populate Global Variable              |
3210      +-----------------------------------------*/
3211      ZX_API_PUB.G_PUB_SRVC := l_api_name;
3212      ZX_API_PUB.G_DATA_TRANSFER_MODE := 'PLS';
3213      ZX_API_PUB.G_EXTERNAL_API_CALL  := 'N';
3214 
3215 
3216     OPEN get_tax_line_id_cur;
3217     FETCH get_tax_line_id_cur BULK COLLECT INTO
3218           l_tax_line_id_tbl;
3219     CLOSE get_tax_line_id_cur;
3220 
3221     /*-----------------------------------------+
3222      |   Delete tax distributions              |
3223      +-----------------------------------------*/
3224 
3225      DELETE FROM zx_rec_nrec_dist
3226       WHERE application_id     = p_transaction_line_rec.application_id
3227         AND entity_code        = p_transaction_line_rec.entity_code
3228         AND event_class_code   = p_transaction_line_rec.event_class_code
3229         AND trx_id             = p_transaction_line_rec.trx_id
3230         AND trx_level_type     = p_transaction_line_rec.trx_level_type
3231         AND rec_nrec_tax_dist_id IN (SELECT tax_dist_id FROM zx_tax_dist_id_gt);
3232 
3233      IF SQL%ROWCOUNT > 0 THEN
3234         FORALL i IN NVL(l_tax_line_id_tbl.FIRST, 0) .. NVL(l_tax_line_id_tbl.LAST, -1)
3235         UPDATE zx_lines
3236           SET process_for_recovery_flag   = 'Y',
3237               rec_tax_amt                 = NULL,
3238               rec_tax_amt_tax_curr        = NULL,
3239               rec_tax_amt_funcl_curr      = NULL,
3240               nrec_tax_amt                = NULL,
3241               nrec_tax_amt_tax_curr       = NULL,
3242               nrec_tax_amt_funcl_curr     = NULL
3243           WHERE application_id   = p_transaction_line_rec.application_id
3244           AND entity_code        = p_transaction_line_rec.entity_code
3245           AND event_class_code   = p_transaction_line_rec.event_class_code
3246           AND trx_id             = p_transaction_line_rec.trx_id
3247           AND tax_line_id        = l_tax_line_id_tbl(i)
3248           AND trx_level_type     = p_transaction_line_rec.trx_level_type;
3249 
3250        -- Bug 11931349, while deleting candidate tax dists, reset the reverse flag for the parent tax dists so that during
3251        -- subsequent validation,tax distributions are reversed in ZX_TRD_INTERNAL_SERVICES_PVT.cancel_tax_line
3252 
3253        FORALL i IN NVL(l_tax_line_id_tbl.FIRST, 0) .. NVL(l_tax_line_id_tbl.LAST, -1)
3254        UPDATE zx_rec_nrec_dist zd
3255         SET reverse_flag = NULL
3256         WHERE application_id     = p_transaction_line_rec.application_id
3257           AND entity_code        = p_transaction_line_rec.entity_code
3258           AND event_class_code   = p_transaction_line_rec.event_class_code
3259           AND trx_id             = p_transaction_line_rec.trx_id
3260           AND tax_line_id        = l_tax_line_id_tbl(i)
3261           AND NVL(reverse_flag,'N') = 'Y'
3262           AND NOT EXISTS (SELECT 1 FROM zx_rec_nrec_dist zd1
3263                           WHERE zd1.application_id = zd.application_id
3264                           AND zd1.entity_code = zd.entity_code
3265                           AND zd1.event_class_code = zd.event_class_code
3266                           AND zd1.trx_id = zd.trx_id
3267                           AND zd1.tax_line_id = zd.tax_line_id
3268                           AND zd1.reversed_tax_dist_id = zd.rec_nrec_tax_dist_id);
3269 
3270       END IF;
3271 
3272     -- Start : Preventive check code --
3273     l_chk_tax_line_id_tbl.DELETE;
3274     l_chk_tax_amt_tbl.DELETE;
3275     l_chk_tot_dist_amt_tbl.DELETE;
3276 
3277     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3278         FND_LOG.STRING(G_LEVEL_STATEMENT,
3279                        'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3280                        'Opening Preventive Check Cursor Check_Tax_Lines_Dists_Amt');
3281     END IF;
3282 
3283     OPEN check_tax_lines_dists_amt;
3284     LOOP
3285     FETCH check_tax_lines_dists_amt
3286      BULK COLLECT INTO
3287           l_chk_tax_line_id_tbl,
3288           l_chk_tax_amt_tbl,
3289           l_chk_tot_dist_amt_tbl
3290     LIMIT G_LINES_PER_FETCH;
3291 
3292     IF check_tax_lines_dists_amt%FOUND AND l_chk_tax_line_id_tbl.COUNT > 0 THEN
3293       x_return_status := FND_API.G_RET_STS_ERROR;
3294 
3295       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3296         FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3297                        'Following tax lines and its distributions are out of sync:');
3298         FOR i IN NVL(l_chk_tax_line_id_tbl.FIRST,0)..NVL(l_chk_tax_line_id_tbl.LAST,-99) LOOP
3299            FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3300                             'TAX_LINE_ID: '||TO_CHAR(l_chk_tax_line_id_tbl(i))||
3301                             ', TAX_AMT: '||TO_CHAR(l_chk_tax_amt_tbl(i))||
3302                             ', TOTAL_DIST_AMT: '||TO_CHAR(l_chk_tot_dist_amt_tbl(i)));
3303         END LOOP;
3304       END IF;
3305     ELSE
3306       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3307         FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_NEW_SERVICES_PKG.cancel_tax_lines',
3308                        'No problematic records found. Tax lines and distributions are in sync.');
3309       END IF;
3310     END IF;
3311     EXIT WHEN check_tax_lines_dists_amt%NOTFOUND OR l_chk_tax_line_id_tbl.COUNT = 0;
3312     END LOOP;
3313     CLOSE check_tax_lines_dists_amt;
3314 
3315     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
3316       --Populate Message structures
3317       BEGIN
3318         SELECT application_id,
3319                entity_code,
3320                event_class_code,
3321                trx_id
3322           INTO l_msg_context_info_rec.application_id,
3323                l_msg_context_info_rec.entity_code,
3324                l_msg_context_info_rec.event_class_code,
3325                l_msg_context_info_rec.trx_id
3326           FROM zx_rec_nrec_dist
3327          WHERE rec_nrec_tax_dist_id IN
3328                   (SELECT tax_dist_id FROM zx_tax_dist_id_gt)
3329            AND ROWNUM = 1;
3330       EXCEPTION
3331         WHEN OTHERS THEN
3332           l_msg_context_info_rec.application_id := NULL;
3333           l_msg_context_info_rec.entity_code := NULL;
3334           l_msg_context_info_rec.event_class_code := NULL;
3335           l_msg_context_info_rec.trx_id := NULL;
3336       END;
3337 
3338       l_msg_context_info_rec.trx_line_id := NULL;
3339       l_msg_context_info_rec.trx_level_type := NULL;
3340       l_msg_context_info_rec.summary_tax_line_number := NULL;
3341       l_msg_context_info_rec.tax_line_id := NULL;
3342       l_msg_context_info_rec.trx_line_dist_id := NULL;
3343 
3344       FND_MESSAGE.SET_NAME('ZX','ZX_GENERIC_TEXT');
3345       FND_MESSAGE.SET_TOKEN('GENERIC_TEXT',
3346                             'E-Business Tax is unable to process the request.'||
3347                             ' Generate FND Debug Log file and APLIST and log a Service Request.');
3348       ZX_API_PUB.ADD_MSG(l_msg_context_info_rec);
3349       RAISE FND_API.G_EXC_ERROR;
3350     END IF;
3351     -- End : Preventive check code --
3352 
3353     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3354        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_NEW_SERVICES_PKG: '||l_api_name||'()-');
3355     END IF;
3356 
3357     EXCEPTION
3358       WHEN FND_API.G_EXC_ERROR THEN
3359         ROLLBACK TO Del_Cand_Tax_Distributions_PVT;
3360         x_return_status := FND_API.G_RET_STS_ERROR ;
3361         ZX_API_PUB.DUMP_MSG;
3362         /*---------------------------------------------------------+
3363         | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3364         | in the message stack. If there is only one message in   |
3365         | the stack it retrieves this message                     |
3366         +---------------------------------------------------------*/
3367         FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3368                                   p_count   => x_msg_count,
3369                                   p_data    => x_msg_data
3370                                   );
3371 
3372         IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3373           FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3374         END IF;
3375 
3376       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3377         ROLLBACK TO Del_Cand_Tax_Distributions_PVT;
3378         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3379         FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3380         FND_MSG_PUB.Add;
3381        /*---------------------------------------------------------+
3382         | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3383         | in the message stack. If there is only one message in   |
3384         | the stack it retrieves this message                     |
3385         +---------------------------------------------------------*/
3386         FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3387                                   p_count   => x_msg_count,
3388                                   p_data    => x_msg_data
3389                                   );
3390 
3391         IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3392           FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3393         END IF;
3394 
3395       WHEN OTHERS THEN
3396          ROLLBACK TO Del_Cand_Tax_Distributions_PVT;
3397          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3398          FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3399          FND_MSG_PUB.Add;
3400        /*---------------------------------------------------------+
3401         | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3402         | in the message stack. If there is only one message in   |
3403         | the stack it retrieves this message                     |
3404         +---------------------------------------------------------*/
3405         FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3406                                    p_count   => x_msg_count,
3407                                    p_data    => x_msg_data
3408                                    );
3409          IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3410            FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3411          END IF;
3412 
3413  END delete_tax_dists;
3414 
3415  /* =======================================================================*
3416  | PROCEDURE  sync_tax_dist_dff: Synchronizes DFF in ZX repository         |
3417  * ========================================================================*/
3418  -- Bug 7117340 -- DFF ER
3419  PROCEDURE SYNC_TAX_DIST_DFF
3420   (p_api_version           IN             NUMBER,
3421    p_init_msg_list         IN             VARCHAR2,
3422    p_commit                IN             VARCHAR2,
3423    p_validation_level      IN             NUMBER,
3424    x_return_status            OUT NOCOPY  VARCHAR2,
3425    x_msg_count                OUT NOCOPY  NUMBER,
3426    x_msg_data                 OUT NOCOPY  VARCHAR2,
3427    p_tax_dist_dff_tbl      IN             tax_dist_dff_type%TYPE
3428   ) IS
3429 
3430    l_api_name          CONSTANT  VARCHAR2(30) := 'SYNC_TAX_DIST_DFF';
3431    l_api_version       CONSTANT  NUMBER := 1.0;
3432    l_event_class_rec             ZX_API_PUB.event_class_rec_type;
3433    l_init_msg_list               VARCHAR2(1);
3434 
3435  BEGIN
3436 
3437    IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3438      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||
3439                     '.BEGIN','ZX_NEW_SERVICES_PKG: '||l_api_name||'()+');
3440    END IF;
3441 
3442   /*--------------------------------------------------+
3443    |   Standard start of API savepoint                |
3444    +--------------------------------------------------*/
3445    SAVEPOINT sync_tax_dist_dff_pvt;
3446 
3447   /*--------------------------------------------------+
3448    |   Standard call to check for call compatibility  |
3449    +--------------------------------------------------*/
3450    IF NOT FND_API.Compatible_API_Call( l_api_version,
3451                                        p_api_version,
3452                                        l_api_name,
3453                                        G_PKG_NAME
3454                                       ) THEN
3455       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3456     END IF;
3457 
3458   /*--------------------------------------------------------------+
3459    |   Initialize message list if p_init_msg_list is set to TRUE  |
3460    +--------------------------------------------------------------*/
3461    IF p_init_msg_list is null THEN
3462        l_init_msg_list := FND_API.G_FALSE;
3463    ELSE
3464        l_init_msg_list := p_init_msg_list;
3465    END IF;
3466 
3467    IF FND_API.to_Boolean(l_init_msg_list) THEN
3468      FND_MSG_PUB.initialize;
3469    END IF;
3470 
3471   /*-----------------------------------------+
3472    |   Initialize return status to SUCCESS   |
3473    +-----------------------------------------*/
3474    x_return_status := FND_API.G_RET_STS_SUCCESS;
3475 
3476   /*-----------------------------------------+
3477    |   Populate Global Variable              |
3478    +-----------------------------------------*/
3479    ZX_API_PUB.G_PUB_SRVC := l_api_name;
3480    ZX_API_PUB.G_DATA_TRANSFER_MODE := 'PLS';
3481    ZX_API_PUB.G_EXTERNAL_API_CALL  := 'N';
3482 
3483   /*------------------------------------------------+
3484    |  Update zx_rec_nrec_dist                       |
3485    +------------------------------------------------*/
3486    FORALL i IN NVL(p_tax_dist_dff_tbl.rec_nrec_tax_dist_id.FIRST,0)..NVL(p_tax_dist_dff_tbl.rec_nrec_tax_dist_id.LAST, -1)
3487      UPDATE zx_rec_nrec_dist
3488         SET attribute1               = p_tax_dist_dff_tbl.attribute1(i),
3489             attribute2               = p_tax_dist_dff_tbl.attribute2(i),
3490             attribute3               = p_tax_dist_dff_tbl.attribute3(i),
3491             attribute4               = p_tax_dist_dff_tbl.attribute4(i),
3492             attribute5               = p_tax_dist_dff_tbl.attribute5(i),
3493             attribute6               = p_tax_dist_dff_tbl.attribute6(i),
3494             attribute7               = p_tax_dist_dff_tbl.attribute7(i),
3495             attribute8               = p_tax_dist_dff_tbl.attribute8(i),
3496             attribute9               = p_tax_dist_dff_tbl.attribute9(i),
3497             attribute10              = p_tax_dist_dff_tbl.attribute10(i),
3498             attribute11              = p_tax_dist_dff_tbl.attribute11(i),
3499             attribute12              = p_tax_dist_dff_tbl.attribute12(i),
3500             attribute13              = p_tax_dist_dff_tbl.attribute13(i),
3501             attribute14              = p_tax_dist_dff_tbl.attribute14(i),
3502             attribute15              = p_tax_dist_dff_tbl.attribute15(i),
3503             attribute_category       = p_tax_dist_dff_tbl.attribute_category(i),
3504             overridden_flag          = 'D'
3505       WHERE rec_nrec_tax_dist_id     = p_tax_dist_dff_tbl.rec_nrec_tax_dist_id(i);
3506 
3507 
3508     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3509       FND_LOG.STRING(G_LEVEL_PROCEDURE,
3510                      G_MODULE_NAME||l_api_name||'.END',
3511                      'ZX_NEW_SERVICES_PKG: '||l_api_name||'()-');
3512     END IF;
3513 
3514    EXCEPTION
3515      WHEN FND_API.G_EXC_ERROR THEN
3516        ROLLBACK TO sync_tax_dist_dff_pvt;
3517        x_return_status := FND_API.G_RET_STS_ERROR ;
3518       /*---------------------------------------------------------+
3519        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3520        | in the message stack. If there is only one message in   |
3521        | the stack it retrieves this message                     |
3522        +---------------------------------------------------------*/
3523        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3524                                  p_count       =>      x_msg_count,
3525                                  p_data        =>      x_msg_data
3526                                  );
3527 
3528        IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3529           FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3530        END IF;
3531 
3532      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3533        ROLLBACK TO sync_tax_dist_dff_pvt;
3534        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3535        FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3536        FND_MSG_PUB.Add;
3537       /*---------------------------------------------------------+
3538        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3539        | in the message stack. If there is only one message in   |
3540        | the stack it retrieves this message                     |
3541        +---------------------------------------------------------*/
3542        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3543                                  p_count       =>      x_msg_count,
3544                                  p_data        =>      x_msg_data
3545                                  );
3546 
3547        IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3548          FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3549        END IF;
3550 
3551      WHEN OTHERS THEN
3552        ROLLBACK TO sync_tax_dist_dff_pvt;
3553        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3554        FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3555        FND_MSG_PUB.Add;
3556       /*---------------------------------------------------------+
3557        | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3558        | in the message stack. If there is only one message in   |
3559        | the stack it retrieves this message                     |
3560        +---------------------------------------------------------*/
3561        FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3562                                  p_count       =>      x_msg_count,
3563                                  p_data        =>      x_msg_data
3564                                 );
3565       IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3566         FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3567       END IF;
3568 
3569  END SYNC_TAX_DIST_DFF;
3570  --End Bug 7117340 --DFF ER
3571 
3572 END ZX_NEW_SERVICES_PKG;