[Home] [Help]
PACKAGE BODY: APPS.ZX_API_PUB
Source
1 PACKAGE BODY zx_api_pub AS
2 /* $Header: zxifpubsrvcspubb.pls 120.337.12020000.5 2013/03/15 10:15:07 ssohal ship $ */
3
4 /* ======================================================================*
5 | Global Data Types |
6 * ======================================================================*/
7
8 G_PKG_NAME CONSTANT VARCHAR2(30) := 'ZX_API_PUB';
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_API_PUB.';
25
26 TYPE evnt_cls_rec_type is RECORD
27 ( event_class_code VARCHAR2_30_tbl_type,
28 application_id NUMBER_tbl_type,
29 entity_code VARCHAR2_30_tbl_type,
30 internal_organization_id NUMBER_tbl_type,
31 precedence NUMBER_tbl_type
32 );
33
34 l_evnt_cls evnt_cls_rec_type;
35
36 /*Lock the rows for entire document*/
37 CURSOR lock_line_det_factors_for_doc(trx_rec IN event_class_rec_type) IS
38 SELECT *
39 FROM ZX_LINES_DET_FACTORS
40 WHERE application_id = trx_rec.application_id
41 AND entity_code = trx_rec.entity_code
42 AND event_class_code = trx_rec.event_class_code
43 AND trx_id = trx_rec.trx_id
44 FOR UPDATE NOWAIT;
45
46
47 /***********************
48 PRIVATE PROCEDURES
49 ************************/
50 /* =======================================================================*
51 | Overloaded FUNCTION determine_effective_date : LEASE MANAGEMENT |
52 | Created since wasnt sure if the existing determine_effective_Date was |
53 | being used by products. Although cookbook doesnt mention it, didnt want|
54 | take a chance since its too will create chaos should there be invalids |
55 | now after xbuiild1 |
56 * =======================================================================*/
57
58 FUNCTION determine_effective_date
59 ( p_transaction_date IN DATE,
60 p_related_doc_date IN DATE,
61 p_adjusted_doc_date IN DATE,
62 p_provnl_tax_det_date IN DATE
63 ) RETURN DATE IS
64
65 BEGIN
66 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
67 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||'determine_effective_date.BEGIN','ZX_API_PUB: DETERMINE_EFFECTIVE_DATE()+');
68 END IF;
69
70 IF p_related_doc_date IS NOT NULL THEN
71 return(p_related_doc_date);
72 ELSIF p_provnl_tax_det_date IS NOT NULL THEN
73 return(p_provnl_tax_det_date);
74 ELSIF p_adjusted_doc_date IS NOT NULL THEN
75 return(p_adjusted_doc_date);
76 ELSIF p_transaction_date IS NOT NULL THEN
77 return(p_transaction_date);
78 ELSE
79 return(SYSDATE);
80 END IF;
81
82 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
83 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||'determine_effective_date.END','ZX_API_PUB: DETERMINE_EFFECTIVE_DATE()-');
84 END IF;
85
86 END determine_effective_date;
87
88 -- Added following procedure as a fix for Bug 5159017
89
90 /* =============================================================*
91 | PROCEDURE Update total_inc_tax_amt if present |
92 * ============================================================*/
93
94 PROCEDURE update_total_inc_tax_amt (
95 p_event_class_rec IN event_class_rec_type ,
96 x_return_status OUT NOCOPY VARCHAR2
97 )IS
98 l_trx_line_tbl ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl%TYPE;
99 l_count BINARY_INTEGER := 0;
100 l_api_name CONSTANT VARCHAR2(30) := 'update_total_inc_tax_amt';
101 BEGIN
102 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
103 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: update_total_inc_tax_amt(+)');
104 END IF;
105
106 x_return_status := FND_API.G_RET_STS_SUCCESS;
107
108 IF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
109
110 FOR i IN nvl(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id.FIRST,0) .. nvl(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id.LAST,-99)
111
112 LOOP
113
114 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(i) = 'Y')
115 AND (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.total_inc_tax_amt(i) IS NOT NULL) THEN
116 l_count := l_count + 1;
117 l_trx_line_tbl.trx_line_id(l_count) := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(i);
118 l_trx_line_tbl.trx_level_type(l_count) := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(i);
119 l_trx_line_tbl.total_inc_tax_amt(l_count) := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.total_inc_tax_amt(i);
120 END IF;
121
122 END LOOP;
123
124 IF l_count > 0 THEN
125
126 FORALL j IN 1 .. l_count
127
128 UPDATE zx_lines_det_factors
129 SET total_inc_tax_amt = l_trx_line_tbl.total_inc_tax_amt(j)
130 WHERE application_id = p_event_class_rec.application_id
131 AND entity_code = p_event_class_rec.entity_code
132 AND event_class_code = p_event_class_rec.event_class_code
133 AND trx_id = p_event_class_rec.trx_id
134 AND trx_line_id = l_trx_line_tbl.trx_line_id(j)
135 AND trx_level_type = l_trx_line_tbl.trx_level_type(j);
136
137 END IF;
138
139 END IF;
140
141 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
142 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',
143 'ZX_API_PUB: update_total_inc_tax_amt(-)'||' RETURN_STATUS = ' || x_return_status);
144 END IF;
145
146 EXCEPTION
147 WHEN OTHERS THEN
148 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
149 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
150 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
151 END IF;
152
153 END update_total_inc_tax_amt;
154
155 /* =============================================================*
156 | PROCEDURE set_ptnr_srvc_subscr_flag |
157 | Sets zx_global_structures_pkg.g_ptnr_srvc_subscr_flag. This |
158 | will improve the performance of non-partner implementations |
159 * ============================================================*/
160
161 PROCEDURE set_ptnr_srvc_subscr_flag (
162 p_event_class_rec IN event_class_rec_type ,
163 x_return_status OUT NOCOPY VARCHAR2
164 )IS
168 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
165 l_api_name CONSTANT VARCHAR2(30) := 'set_ptnr_srvc_subscr_flag';
166 BEGIN
167 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
169 END IF;
170
171 x_return_status := FND_API.G_RET_STS_SUCCESS;
172
173 BEGIN
174 SELECT 'Y'
175 INTO zx_global_structures_pkg.g_ptnr_srvc_subscr_flag
176 FROM zx_srvc_subscriptions zss
177 WHERE zss.enabled_flag = 'Y'
178 AND zss.prod_family_grp_code = nvl(p_event_class_rec.prod_family_grp_code, zss.prod_family_grp_code)
179 AND exists (select zru.regime_usage_id
180 from zx_regimes_usages zru
181 where zru.regime_usage_id = zss.regime_usage_id
182 and zru.first_pty_org_id = nvl(p_event_class_rec.first_pty_org_id, zru.first_pty_org_id))
183 AND rownum = 1;
184 EXCEPTION WHEN OTHERS THEN
185 zx_global_structures_pkg.g_ptnr_srvc_subscr_flag := 'N';
186 END;
187
188 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
189 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
190 'Setting zx_global_structures_pkg.g_ptnr_srvc_subscr_flag to : '|| zx_global_structures_pkg.g_ptnr_srvc_subscr_flag);
191 END IF;
192
193 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
194 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME || ': ' || l_api_name||'(-)');
195 END IF;
196
197 END set_ptnr_srvc_subscr_flag;
198
199
200 /* =============================================================*
201 | PROCEDURE Perform Partner repository synchronization |
202 * ============================================================*/
203
204 PROCEDURE ptnr_sync_calc_tax (
205 p_event_class_rec IN event_class_rec_type ,
206 x_return_status OUT NOCOPY VARCHAR2
207 )IS
208 l_sync_needed BOOLEAN;
209 l_return_status VARCHAR2(1);
210 l_event_class_rec event_class_rec_type;
211 l_sync_with_prvdr_flag ZX_LINES.sync_with_prvdr_flag%type; -- Bug 5131206
212 l_api_name CONSTANT VARCHAR2(30) := 'ptnr_sync_calc_tax';
213 BEGIN
214 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
215 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
216 END IF;
217
218 x_return_status := FND_API.G_RET_STS_SUCCESS;
219
220 /*Partner Synchronization process*/
221 IF p_event_class_rec.record_flag = 'Y' AND
222 p_event_class_rec.record_for_partners_flag = 'Y' AND
223 nvl(p_event_class_rec.quote_flag,'N') = 'N' THEN -- Bug 5131206
224 FOR l_regime_index IN nvl(ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.FIRST,0)..nvl(ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.LAST,-99)
225 LOOP
226 /* Bug 5131206 */
227 IF ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.EXISTS(l_regime_index) AND
228 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_provider_id IS NOT NULL THEN
229 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
230 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
231 'Regime: '|| ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_regime_code||
232 ', Partner: '|| ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_provider_id);
233 END IF;
234 BEGIN
235 SELECT sync_with_prvdr_flag
236 INTO l_sync_with_prvdr_flag
237 FROM zx_detail_tax_lines_gt
238 WHERE application_id = p_event_class_rec.application_id
239 AND entity_code = p_event_class_rec.entity_code
240 AND event_class_code = p_event_class_rec.event_class_code
241 AND trx_id = p_event_class_rec.trx_id
242 AND tax_provider_id = ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_provider_id
243 AND sync_with_prvdr_flag = 'Y'
244 AND rownum = 1;
245 EXCEPTION
246 WHEN OTHERS THEN
247 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
248 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
249 'Others: l_sync_with_prvdr_flag = '|| l_sync_with_prvdr_flag);
250 END IF;
251 l_sync_with_prvdr_flag := 'N';
252 END;
253 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
254 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
255 'l_sync_with_prvdr_flag = '|| l_sync_with_prvdr_flag);
256 END IF;
257 IF l_sync_with_prvdr_flag = 'Y' THEN
258 l_sync_needed := TRUE;
259 ZX_TPI_SERVICES_PKG.call_partner_service(ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_regime_code,
260 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_provider_id,
261 'SYNCHRONIZE_FOR_TAX',
262 p_event_class_rec,
263 l_return_status
264 );
265
266 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
267 x_return_status := l_return_status ;
268 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
269 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TPI_SERVICES_PKG.call_partner_service returned errors');
270 END IF;
271 RETURN;
272 END IF;
273
274 --Calling Post processing for synchronization with partner
275 ZX_TPI_SERVICES_PKG.ptnr_post_proc_sync_tax(ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_regime_code,
276 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(l_regime_index).tax_provider_id,
277 p_event_class_rec,
278 l_return_status
279 );
280 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
281 x_return_status := l_return_status ;
282 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
283 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||' :ZX_TPI_SERVICES_PKG.ptnr_post_proc_sync_tax returned errors');
284 END IF;
285 RETURN;
286 END IF;
287
288 END IF; --sync_with_prvdr_flag
289 END IF; -- tax_provider_id is not null
290 END LOOP;
291 END IF;
292
293 /* RE-INITIALISE SYNCHRONIZATION FLAG in ZX_LINES TO 'N' */
294 IF l_sync_needed THEN
295 --Call zx_lines table handler for updating the sync_with_prvdr_flag to N
296
297 ZX_SRVC_TYP_PKG.zx_lines_table_handler(p_event_class_rec => l_event_class_rec,
298 p_event => 'UPDATE',
299 p_tax_regime_code => null,
300 p_provider_id => null,
301 x_return_status => l_return_status
302 );
303
304 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
305 x_return_status := l_return_status;
306 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
307 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||' ZX_SRVC_TYPS.PKG.zx_lines_table_handler returned errors');
308 END IF;
309 RETURN;
310 END IF;
311 END IF; --l_sync_needed
312
313 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
314 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME || ': ' || l_api_name||'(-)');
315 END IF;
316 END ptnr_sync_calc_tax;
317
318
319 /* =============================================================*
320 | PROCEDURE Perform Partner repository bulk synchronization |
321 * ============================================================*/
322
323 PROCEDURE ptnr_bulk_sync_calc_tax (
324 p_event_class_rec IN event_class_rec_type ,
325 x_return_status OUT NOCOPY VARCHAR2
326 )IS
327 l_return_status VARCHAR2(1);
328 l_event_class_rec event_class_rec_type;
329 l_api_name CONSTANT VARCHAR2(30) := 'ptnr_bulk_sync_calc_tax';
330 BEGIN
331 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
332 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
333 END IF;
334
335 x_return_status := FND_API.G_RET_STS_SUCCESS;
336
337 FOR l_trx_id_index IN nvl(ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl.FIRST,0) .. nvl(ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl.LAST,-99)
338 LOOP
339
340 l_event_class_rec.application_id := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).application_id;
341 l_event_class_rec.event_class_code := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).event_class_code;
342 l_event_class_rec.trx_id := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).trx_id;
343 l_event_class_rec.entity_code := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).entity_code;
344 l_event_class_rec.event_class_mapping_id := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).event_class_mapping_id;
345 l_event_class_rec.event_type_code := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).event_type_code;
346 l_event_class_rec.record_flag := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).record_flag;
347 l_event_class_rec.quote_flag := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).quote_flag;
348 l_event_class_rec.record_for_partners_flag := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).record_for_partners_flag;
349 l_event_class_rec.prod_family_grp_code := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).prod_family_grp_code;
350
351 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl := ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).tax_regime_tbl;
352
353 /*--------------------------------------------+
354 | Call to zx_security.set_security_context |
355 +--------------------------------------------*/
356 ZX_SECURITY.set_security_context(ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).legal_entity_id,
357 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).internal_organization_id,
358 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_trx_id_index).effective_date,
359 l_return_status
360 );
361
362 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
363 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
364 'application_id: '||to_char(l_event_class_rec.application_id)||
365 ', entity_code: '||l_event_class_rec.entity_code||
366 ', event_class_code: '||l_event_class_rec.event_class_code||
367 ', event_type_code: '||l_event_class_rec.event_type_code||
368 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
369 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
370 ', ledger_id: '||to_char(l_event_class_rec.ledger_id)||
371 ', legal_entity_id: '||to_char(l_event_class_rec.legal_entity_id)||
372 ', trx_date: '||to_char(l_event_class_rec.trx_date)||
373 ', related_document_date: '||to_char(l_event_class_rec.rel_doc_date)||
374 ', provnl_tax_determination_date: '||to_char(l_event_class_rec.provnl_tax_determination_date)||
375 ', trx_currency_code: '||l_event_class_rec.trx_currency_code||
376 ', currency_conversion_type: '||l_event_class_rec.currency_conversion_type||
377 ', currency_conversion_rate: '||to_char(l_event_class_rec.currency_conversion_rate)||
378 ', currency_conversion_date: '||to_char(l_event_class_rec.currency_conversion_date)||
379 ', rounding_ship_to_party_id: '||to_char(l_event_class_rec.rounding_ship_to_party_id)||
380 ', rounding_ship_from_party_id: '||to_char(l_event_class_rec.rounding_ship_from_party_id)||
381 ', rounding_bill_to_party_id: '||to_char(l_event_class_rec.rounding_bill_to_party_id)||
382 ', rounding_bill_from_party_id: '||to_char(l_event_class_rec.rounding_bill_from_party_id)||
383 ', rndg_ship_to_party_site_id: '||to_char(l_event_class_rec.rndg_ship_to_party_site_id)||
384 ', rndg_ship_from_party_site_id: '||to_char(l_event_class_rec.rndg_ship_from_party_site_id)||
385 ', rndg_bill_to_party_site_id: '||to_char(l_event_class_rec.rndg_bill_to_party_site_id)||
386 ', rndg_bill_from_party_site_id: '||to_char(l_event_class_rec.rndg_bill_from_party_site_id)||
387 ', quote_flag: '||l_event_class_rec.quote_flag ||
388 ', establishment_id: '||to_char(l_event_class_rec.establishment_id)||
389 ', icx_session_id: '||to_char(l_event_class_rec.icx_session_id));
390 END IF;
391
392 ptnr_sync_calc_tax ( p_event_class_rec => l_event_class_rec ,
393 x_return_status => l_return_status
394 );
395 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
396 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
397 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxlines returned errors');
398 END IF;
399 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
400 RAISE FND_API.G_EXC_ERROR;
401 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
402 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
403 END IF;
404 END IF;
405
406 END LOOP;
407 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
408 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME || ': ' || l_api_name||'(-)');
409 END IF;
410 END ptnr_bulk_sync_calc_tax;
411
412
413 PROCEDURE calculate_tax_pvt
414 ( p_transaction_header_rec IN transaction_header_rec_type,
415 p_api_name IN VARCHAR2,
416 p_event_id IN NUMBER,
417 p_index IN NUMBER,
418 p_api_version IN NUMBER,
419 p_init_msg_list IN VARCHAR2,
420 p_commit IN VARCHAR2,
421 p_validation_level IN NUMBER,
422 x_return_status IN OUT NOCOPY VARCHAR2,
423 x_msg_count IN OUT NOCOPY NUMBER,
424 x_msg_data IN OUT NOCOPY VARCHAR2
425 ) IS
426 l_sync_needed BOOLEAN;
427 l_return_status VARCHAR2(30);
428 l_event_class_rec event_class_rec_type;
429 l_record_tax_lines VARCHAR2(1);
430 l_error_buffer VARCHAR2(1000);
431
432 BEGIN
433 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
434 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||p_api_name||'.BEGIN','ZX_API_PUB: calculate_tax_pvt()+');
435 END IF;
436 /*------------------------------------------------------+
437 | Copy to Event Class Record |
438 +------------------------------------------------------*/
439 l_event_class_rec.EVENT_ID := p_event_id;
440 l_event_class_rec.INTERNAL_ORGANIZATION_ID := p_transaction_header_rec.INTERNAL_ORGANIZATION_ID(p_index);
441 l_event_class_rec.APPLICATION_ID := p_transaction_header_rec.APPLICATION_ID(p_index);
442 l_event_class_rec.ENTITY_CODE := p_transaction_header_rec.ENTITY_CODE(p_index);
443 l_event_class_rec.EVENT_CLASS_CODE := p_transaction_header_rec.EVENT_CLASS_CODE(p_index);
444 l_event_class_rec.ICX_SESSION_ID := p_transaction_header_rec.ICX_SESSION_ID(p_index);
445 l_event_class_rec.QUOTE_FLAG := nvl(p_transaction_header_rec.QUOTE_FLAG(p_index),'N');
446
447 /*
448 l_event_class_rec.LEGAL_ENTITY_ID := p_transaction_header_rec.LEGAL_ENTITY_ID(p_index);
449 l_event_class_rec.LEDGER_ID := p_transaction_header_rec.LEDGER_ID(p_index);
450 l_event_class_rec.EVENT_TYPE_CODE := p_transaction_header_rec.EVENT_TYPE_CODE(p_index);
451 l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT := p_transaction_header_rec.CTRL_TOTAL_HDR_TX_AMT(p_index);
452 l_event_class_rec.TRX_ID := p_transaction_header_rec.TRX_ID(p_index);
453 l_event_class_rec.TRX_DATE := p_transaction_header_rec.TRX_DATE(p_index);
454 l_event_class_rec.REL_DOC_DATE := p_transaction_header_rec.REL_DOC_DATE(p_index);
455 l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:= p_transaction_header_rec.PROVNL_TAX_DETERMINATION_DATE(p_index);
456 l_event_class_rec.TRX_CURRENCY_CODE := p_transaction_header_rec.TRX_CURRENCY_CODE(p_index);
457 l_event_class_rec.PRECISION := p_transaction_header_rec.PRECISION(p_index);
458 l_event_class_rec.CURRENCY_CONVERSION_TYPE := p_transaction_header_rec.CURRENCY_CONVERSION_TYPE(p_index);
459 l_event_class_rec.CURRENCY_CONVERSION_RATE := p_transaction_header_rec.CURRENCY_CONVERSION_RATE(p_index);
460 l_event_class_rec.CURRENCY_CONVERSION_DATE := p_transaction_header_rec.CURRENCY_CONVERSION_DATE(p_index);
461 l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID := p_transaction_header_rec.ROUNDING_SHIP_TO_PARTY_ID(p_index);
462 l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID := p_transaction_header_rec.ROUNDING_SHIP_FROM_PARTY_ID(p_index);
463 l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID := p_transaction_header_rec.ROUNDING_BILL_TO_PARTY_ID(p_index);
464 l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID := p_transaction_header_rec.ROUNDING_BILL_FROM_PARTY_ID(p_index);
465 l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID := p_transaction_header_rec.RNDG_SHIP_TO_PARTY_SITE_ID(p_index);
466 l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID := p_transaction_header_rec.RNDG_SHIP_FROM_PARTY_SITE_ID(p_index);
467 l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID := p_transaction_header_rec.RNDG_BILL_TO_PARTY_SITE_ID(p_index);
468 l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID := p_transaction_header_rec.RNDG_BILL_FROM_PARTY_SITE_ID(p_index);
469 l_event_class_rec.ESTABLISHMENT_ID := p_transaction_header_rec.ESTABLISHMENT_ID(p_index);
470
471 */
472
473 IF l_event_class_rec.QUOTE_FLAG = 'Y' and
474 l_event_class_rec.ICX_SESSION_ID is not null THEN
475 ZX_SECURITY.G_ICX_SESSION_ID := l_event_class_rec.ICX_SESSION_ID;
476 --dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
477 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
478
479 END IF;
480
481 -- Bug 4948674: Following Delete will not work when there are different dbms sessions used for the same user
485 --If the user calls calculate_tax twice using same db session for the same icx session, then we will have
482 -- session when call originates from a FWK UI. Moved the following Delete logic to the end of this API for O2C
483 -- products and to the end of determine_recovery API for P2P products.
484
486 -- un-deleted data in the Det Factors table for the previousc all. So, we need to clean it up first before
487 -- starting to process the input lines of the new call.We should at first always attempt to remove any rows
488 --sitting in Det Factors table for that icx session
489 /* IF l_event_class_rec.ICX_SESSION_ID is not null THEN
490 DELETE from zx_lines_det_factors
491 WHERE application_id = l_event_class_rec.application_id and
492 entity_code = l_event_class_rec.entity_code and
493 event_class_code = l_event_class_rec.event_class_code and
494 trx_id = l_event_class_rec.trx_id;
495 END IF;
496 */
497
498 /*-------------------------------------------------------+
499 |Lock the tax lines table to prevent another |
500 |user from updating same line via the forms/UIs while |
501 |calculation is in progress |
502 +------------------------------------------------------*/
503 /*
504
505 IF l_event_class_rec.tax_event_type_code ='UPDATE' THEN
506
507 ZX_TRL_DETAIL_OVERRIDE_PKG.lock_dtl_tax_lines_for_doc(p_application_id => l_event_class_rec.application_id,
508 p_entity_code => l_event_class_rec.entity_code,
509 p_event_class_code => l_event_class_rec.event_class_code,
510 p_trx_id => l_event_class_rec.trx_id,
511 x_return_status => l_return_status,
512 x_error_buffer => l_error_buffer
513 );
514
515 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
516 x_return_status := l_return_status;
517 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
518 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,
519 ' RETURN_STATUS = ' || x_return_status);
520 END IF;
521 RETURN;
522 END IF;
523
524 ZX_TRL_SUMMARY_OVERRIDE_PKG.lock_summ_tax_lines_for_doc(p_application_id => l_event_class_rec.application_id,
525 p_entity_code => l_event_class_rec.entity_code,
526 p_event_class_code => l_event_class_rec.event_class_code,
527 p_trx_id => l_event_class_rec.trx_id,
528 x_return_status => l_return_status,
529 x_error_buffer => l_error_buffer
530 );
531 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
532 x_return_status := l_return_status;
533 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
534 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,
535 ' RETURN_STATUS = ' || x_return_status);
536 END IF;
537 RETURN;
538 END IF;
539
540 ZX_TRL_DISTRIBUTIONS_PKG.lock_rec_nrec_dist_for_doc (p_application_id => l_event_class_rec.application_id,
541 p_entity_code => l_event_class_rec.entity_code,
542 p_event_class_code => l_event_class_rec.event_class_code,
543 p_trx_id => l_event_class_rec.trx_id,
544 x_return_status => l_return_status,
545 x_error_buffer => l_error_buffer
546 );
547 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
548 x_return_status := l_return_status;
549 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
550 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,
551 ' RETURN_STATUS = ' || x_return_status);
552 END IF;
553 RETURN;
554 END IF;
555 END IF; --tax event type ='UPDATE'
556 */
557
558
559 /*------------------------------------------------------+
560 | Validate and Initializate parameters for Calculate |
561 | tax |
562 +------------------------------------------------------*/
563
564 ZX_GLOBAL_STRUCTURES_PKG.g_party_tax_prof_id_info_tbl.DELETE;
565 ZX_VALID_INIT_PARAMS_PKG.calculate_tax(p_event_class_rec => l_event_class_rec,
566 x_return_status => l_return_status
567 );
568
569 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
570 x_return_status := l_return_status ;
571 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
572 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,G_PKG_NAME||': '||p_api_name||':ZX_VALID_INIT_PARAMS_PKG.calculate_tax returned errors');
573 END IF;
574 RETURN;
575 END IF;
576
577 /* ===============================================================================*
578 |Initialize the global structures/global temp tables owned by TDM at line level |
579 * =============================================================================*/
580 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (l_event_class_rec ,
581 'HEADER',
582 l_return_status
583 );
584
585 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
586 x_return_status := l_return_status;
587 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
588 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,G_PKG_NAME||': '||p_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.initialize returned errors');
589 END IF;
590 RETURN;
591 END IF;
592
593
594 /*----------------------------------------------------+
595 |Call to service type Calculate Tax |
596 +---------------------------------------------------*/
597 ZX_SRVC_TYP_PKG.calculate_tax(p_event_class_rec => l_event_class_rec,
598 x_return_status => l_return_status
599 );
600
601 /*---------------------------------------------------------+
602 | Delete from the global structures for every loop on the |
603 | header document so that there are no hanging/redundant |
604 | records sitting there |
605 +--------------------------------------------------------*/
606 --Calling routine to delete the global structures
607 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
608
609 --Also delete the location caching global structures
610 --** execute the following code only when tax partners are used.
611 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.EVENT_CLASS_MAPPING_ID.DELETE;
612 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_ID.DELETE;
613 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_LINE_ID.DELETE;
614 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_LEVEL_TYPE.DELETE;
615 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_TYPE.DELETE;
616 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_TABLE_NAME.DELETE;
617 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_ID.DELETE;
618 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_TYPE.DELETE;
619 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_VALUE.DELETE;
620 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_ID.DELETE;
621 ZX_GLOBAL_STRUCTURES_PKG.LOCATION_HASH_TBL.DELETE;
622
623 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
624 x_return_status := l_return_status ;
625 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
626 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,G_PKG_NAME||': '||p_api_name||':ZX_SRVC_TYP_PKG.calculate_tax returned errors');
627 END IF;
628 RETURN;
629 END IF;
630
631 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
632 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||p_api_name||'.END','ZX_API_PUB: '||'calculate_tax_pvt'||'()-');
633 END IF;
634 END calculate_tax_pvt;
635
636
637 PROCEDURE import_tax_pvt
638 ( p_evnt_cls IN evnt_cls_rec_type,
639 p_api_name IN VARCHAR2,
640 p_event_id IN NUMBER,
641 p_index IN NUMBER,
642 p_api_version IN NUMBER,
643 p_init_msg_list IN VARCHAR2,
644 p_commit IN VARCHAR2,
645 p_validation_level IN NUMBER,
646 x_return_status IN OUT NOCOPY VARCHAR2,
647 x_msg_count IN OUT NOCOPY NUMBER,
648 x_msg_data IN OUT NOCOPY VARCHAR2
649 ) IS
650 l_sync_needed BOOLEAN;
651 l_return_status VARCHAR2(30);
655 /*------------------------------------------------------+
652 l_event_class_rec event_class_rec_type;
653
654 BEGIN
656 | Copy to Event Class Record |
657 +------------------------------------------------------*/
658 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
659 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||p_api_name||'.BEGIN','ZX_API_PUB: import_tax_pvt()+');
660 END IF;
661
662 l_event_class_rec.EVENT_ID := p_event_id;
663 l_event_class_rec.INTERNAL_ORGANIZATION_ID := p_evnt_cls.INTERNAL_ORGANIZATION_ID(p_index);
664 l_event_class_rec.APPLICATION_ID := p_evnt_cls.APPLICATION_ID(p_index);
665 l_event_class_rec.ENTITY_CODE := p_evnt_cls.ENTITY_CODE(p_index);
666 l_event_class_rec.EVENT_CLASS_CODE := p_evnt_cls.EVENT_CLASS_CODE(p_index);
667
668
669 /*------------------------------------------------------+
670 | Validate Input Paramerters and Fetch Tax Options |
671 +------------------------------------------------------*/
672
673 ZX_VALID_INIT_PARAMS_PKG.import_document_with_tax(p_event_class_rec =>l_event_class_rec,
674 x_return_status =>l_return_status
675 );
676
677 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
678 x_return_status := l_return_status;
679 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
680 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,G_PKG_NAME||': '||p_api_name||':ZX_VALID_INIT_PARAMS_PKG.import_document_with_tax returned errors');
681 END IF;
682 RETURN;
683 END IF;
684
685
686 /*--------------------------------------------------+
687 | Call Service Type Import Document with Tax |
688 +--------------------------------------------------*/
689
690 ZX_SRVC_TYP_PKG.import(p_event_class_rec => l_event_class_rec,
691 x_return_status => l_return_status
692 );
693
694 /*---------------------------------------------------------+
695 | Delete from the global structures for every loop on the |
696 | header document so that there are no hanging/redundant |
697 | records sitting there |
698 +--------------------------------------------------------*/
699 --Calling routine to delete the global structures
700 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
701
702 --Also delete the location caching global structures
703 --** Execute this code only when partners are used
704 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.EVENT_CLASS_MAPPING_ID.DELETE;
705 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_ID.DELETE;
706 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_LINE_ID.DELETE;
707 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_LEVEL_TYPE.DELETE;
708 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_TYPE.DELETE;
709 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_TABLE_NAME.DELETE;
710 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_ID.DELETE;
711 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_TYPE.DELETE;
712 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_VALUE.DELETE;
713 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_ID.DELETE;
714 ZX_GLOBAL_STRUCTURES_PKG.LOCATION_HASH_TBL.DELETE;
715 ZX_GLOBAL_STRUCTURES_PKG.g_party_tax_prof_id_info_tbl.DELETE;
716
717 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
718 x_return_status := l_return_status;
719 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
720 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,G_PKG_NAME||': '||p_api_name||':ZX_SRVC_TYP_PKG.import returned errors');
721 END IF;
722 RETURN;
723 END IF;
724
725 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
726 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||p_api_name||'.END','ZX_API_PUB: '||'import_tax_pvt'||'()-');
727 END IF;
728
729 END import_tax_pvt;
730
731 /* ======================================================================*
732 | PROCEDURE calculate_tax : Calculates and records tax info |
733 | There exists a pl/sql version of same API for performance |
734 | This API also supports processing for multiple event classes |
735 | GTT involved : ZX_TRX_HEADERS_GT, ZX_TRANSACTION_LINES_GT |
736 * ======================================================================*/
737
738 PROCEDURE Calculate_tax
739 ( p_api_version IN NUMBER,
740 p_init_msg_list IN VARCHAR2,
741 p_commit IN VARCHAR2,
742 p_validation_level IN NUMBER,
743 x_return_status OUT NOCOPY VARCHAR2,
744 x_msg_count OUT NOCOPY NUMBER,
745 x_msg_data OUT NOCOPY VARCHAR2
746 ) IS
747
748 l_api_name CONSTANT VARCHAR2(30) := 'CALCULATE_TAX';
749 l_api_version CONSTANT NUMBER := 1.0;
750 l_return_status VARCHAR2(30);
751 l_event_id NUMBER;
752 l_transaction_header_rec transaction_header_rec_type;
753 l_context_info_rec context_info_rec_type;
754 l_index BINARY_INTEGER;
755 l_precedence NUMBER_tbl_type;
756 l_init_msg_list VARCHAR2(1);
757 l_record_tax_lines VARCHAR2(1);
758 l_ptnr_index NUMBER;
759
760 CURSOR common_header_info IS
761 SELECT
762 INTERNAL_ORGANIZATION_ID,
763 APPLICATION_ID,
767 ICX_SESSION_ID
764 -- ENTITY_CODE,
765 -- EVENT_CLASS_CODE,
766 QUOTE_FLAG,
768 FROM ZX_TRX_HEADERS_GT
769 WHERE rownum = 1;
770
771 CURSOR event_classes IS
772 SELECT distinct
773 header.event_class_code,
774 header.application_id,
775 header.entity_code,
776 evntmap.processing_precedence
777 FROM ZX_EVNT_CLS_MAPPINGS evntmap,
778 ZX_TRX_HEADERS_GT header
779 WHERE header.application_id = evntmap.application_id
780 AND header.entity_code = evntmap.entity_code
781 AND header.event_class_code = evntmap.event_class_code
782 ORDER BY evntmap.processing_precedence;
783
784 CURSOR c_headers is
785 SELECT APPLICATION_ID,
786 ENTITY_CODE,
787 EVENT_CLASS_CODE,
788 TRX_ID,
789 ICX_SESSION_ID,
790 EVENT_TYPE_CODE,
791 TAX_EVENT_TYPE_CODE,
792 DOC_EVENT_STATUS
793 FROM ZX_TRX_HEADERS_GT;
794
795 l_application_id_tbl NUMBER_tbl_type;
796 l_entity_code_tbl VARCHAR2_30_tbl_type;
797 l_event_class_code_tbl VARCHAR2_30_tbl_type;
798 l_trx_id_tbl NUMBER_tbl_type;
799 l_icx_session_id_tbl NUMBER_tbl_type;
800 l_event_type_code_tbl VARCHAR2_30_tbl_type;
801 l_tax_event_type_code_tbl VARCHAR2_30_tbl_type;
802 l_doc_event_status_tbl VARCHAR2_30_tbl_type;
803 l_dummy_number NUMBER;
804 l_start_time DATE;
805 l_end_time DATE;
806 l_total_time VARCHAR2(15);
807
808 BEGIN
809 l_start_time := SYSDATE ;
810 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
811 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: CALCULATE_TAX()+');
812 END IF;
813
814 /*--------------------------------------------------+
815 | Standard start of API savepoint |
816 +--------------------------------------------------*/
817 SAVEPOINT Calculate_tax_PVT;
818
819 /*--------------------------------------------------+
820 | Standard call to check for call compatibility |
821 +--------------------------------------------------*/
822
823 IF NOT FND_API.Compatible_API_Call(
824 l_api_version,
825 p_api_version,
826 l_api_name,
827 G_PKG_NAME
828 ) THEN
829 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
830 END IF;
831
832
833 /*--------------------------------------------------------------+
834 | Initialize message list if p_init_msg_list is set to TRUE |
835 +--------------------------------------------------------------*/
836 IF p_init_msg_list is null THEN
837 l_init_msg_list := FND_API.G_FALSE;
838 ELSE
839 l_init_msg_list := p_init_msg_list;
840 END IF;
841
842 IF FND_API.to_Boolean(l_init_msg_list) THEN
843 FND_MSG_PUB.initialize;
844 END IF;
845
846
847 /*-----------------------------------------+
848 | Initialize return status to SUCCESS |
849 +-----------------------------------------*/
850
851 x_return_status := FND_API.G_RET_STS_SUCCESS;
852
853 /*-----------------------------------------+
854 | Populate Global Variable |
855 +-----------------------------------------*/
856
857 G_PUB_SRVC := l_api_name;
858 G_PUB_CALLING_SRVC := l_api_name;
859 G_DATA_TRANSFER_MODE := 'TAB';
860 G_EXTERNAL_API_CALL := 'N';
861
862 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
863 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
864 'Data Transfer Mode: '||G_DATA_TRANSFER_MODE);
865 END IF;
866
867 --Call TDS process to reset the session for previous calculate tax calls if any
868 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (p_event_class_rec => NULL,
869 p_init_level => 'SESSION',
870 x_return_status => l_return_status
871 );
872
873 set_ptnr_srvc_subscr_flag (p_event_class_rec => NULL,
874 x_return_status => l_return_status
875 );
876 /*---------------------------------------------------------+
877 | Initialize the trx line app regimes table for every doc|
878 +--------------------------------------------------------*/
879
880 IF zx_global_structures_pkg.g_ptnr_srvc_subscr_flag = 'Y' THEN
881 ZX_GLOBAL_STRUCTURES_PKG.init_trx_line_app_regime_tbl;
882 END IF;
883
884 ZX_GLOBAL_STRUCTURES_PKG.LOC_GEOGRAPHY_INFO_TBL.DELETE;
885 ZX_GLOBAL_STRUCTURES_PKG.g_registration_info_tbl.DELETE;
886 /*-----------------------------------------+
887 | Get the event id for the whole document |
888 +-----------------------------------------*/
889 --Bug 7650433
890 --select ZX_LINES_DET_FACTORS_S.nextval
891 --into l_event_id
892 --from dual;
893
894 OPEN event_classes;
895 LOOP
896 FETCH event_classes BULK COLLECT INTO
897 l_evnt_cls.event_class_code,
898 l_evnt_cls.application_id,
899 l_evnt_cls.entity_code,
900 l_evnt_cls.precedence
901 LIMIT G_LINES_PER_FETCH;
902 EXIT WHEN event_classes%NOTFOUND;
903 END LOOP;
904 CLOSE event_classes;
905
906 --Event classes such as SALES_TRANSACTION_TAX_QUOTE/PURCHASE_TRANSACTION_TAX_QUOTE
907 --are not seeded in zx_evnt_cls_mappings so cursor event classes will not
908 --return any rows for such event classes passed.
909 IF l_evnt_cls.event_class_code.LAST is null THEN
910 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
911 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
912 'Event class information does not exist - indicates SALES_TRANSACTION_TAX_QUOTE/PURCHASE_TRANSACTION_TAX_QUOTE');
913 END IF;
914
915 select event_class_code,
916 application_id,
917 entity_code,
918 internal_organization_id
919 into l_evnt_cls.event_class_code(1),
920 l_evnt_cls.application_id(1),
921 l_evnt_cls.entity_code(1),
922 l_evnt_cls.internal_organization_id(1)
923 from ZX_TRX_HEADERS_GT
924 where rownum=1;
925 END IF;
926
927 -- added for bug fix 5417887
928
929 -- Assumption for multiple docs: application_id, event class and OU
930 -- will be same for all transactions in a call.
931
932 OPEN common_header_info;
933 FETCH common_header_info BULK COLLECT INTO
934 l_transaction_header_rec.INTERNAL_ORGANIZATION_ID,
935 l_transaction_header_rec.APPLICATION_ID,
936 -- l_transaction_header_rec.ENTITY_CODE,
937 -- l_transaction_header_rec.EVENT_CLASS_CODE,
938 l_transaction_header_rec.QUOTE_FLAG,
939 l_transaction_header_rec.ICX_SESSION_ID;
940
941 CLOSE common_header_info;
942
943 FOR i IN 1..nvl(l_evnt_cls.event_class_code.LAST,0)
944 LOOP
945
946 --Bug 7650433
947 select ZX_LINES_DET_FACTORS_S.nextval
948 into l_event_id
949 from dual;
950
951 IF l_evnt_cls.event_class_code(i) = 'CREDIT_MEMO' THEN
952 ZX_GLOBAL_STRUCTURES_PKG.g_credit_memo_exists_flg := 'Y';
953 END IF;
954
955 -- Bug 5704675- need to use index here to avoid entity_code
956 -- and event_class_code in l_transaction_header_rec always
957 -- using the entity_code and event_class_code from the 1st
958 -- record of l_evnt_cls
959 --
960 l_transaction_header_rec.ENTITY_CODE(1) := l_evnt_cls.entity_code(i);
961 l_transaction_header_rec.EVENT_CLASS_CODE(1) := l_evnt_cls.event_class_code(i);
962
963 --BEGIN
964 -- SAVEPOINT Calculate_Tax_Doc_Norel_PVT;
965 calculate_tax_pvt (l_transaction_header_rec,
966 l_api_name,
967 l_event_id,
968 1,
969 p_api_version,
970 l_init_msg_list,
971 p_commit,
972 p_validation_level,
973 l_return_status,
974 x_msg_count,
975 x_msg_data
976 );
977
978 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
979 RAISE FND_API.G_EXC_ERROR;
980 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
981 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
982 END IF;
983
984 /*
985 EXCEPTION
986 WHEN FND_API.G_EXC_ERROR THEN
987 -- ROLLBACK TO Calculate_Tax_Doc_Norel_PVT;
988 x_return_status := FND_API.G_RET_STS_ERROR ;
989 --Call API to dump into zx_errors_gt
990 IF ( errors_tbl.application_id.LAST is NOT NULL) THEN
991 DUMP_MSG;
992 END IF;
993 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
994 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
995 END IF;
996 END;
997 */
998
999
1000 -- bug fix 5417887 begin 17-Aug-2006
1001 -- Following code for tail end services/TRL/ptnr sync code, is moved from calculte_tax_pvt
1002 -- and should be handled for each event_class_code. At present, all product integrations call etax
1003 -- for one event class at a time, hence we put these processed out of the event class loop.
1004 -- In the future, if there are cases that etax handle multiple event_class batch, we need to
1005 -- revisist the following code and change accordingly.
1006
1007 -- For furture LTE features, there are could cases that related documents was imported together
1008 -- with original document. For this case, we need to make sure the tail end service for the original
1009 -- docs must be handled before the calculation process of the related docs.
1010
1011 /*-----------------------------------------------------+
1012 | Call to eTax service Dump Detail Tax Lines Into GT|
1013 +-----------------------------------------------------*/
1014
1015 --IF nvl(l_event_class_rec.PROCESS_FOR_APPLICABILITY_FLAG,'Y') = 'Y' THEN
1016 ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(x_return_status => l_return_status);
1017
1018
1019 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1020 x_return_status := l_return_status;
1021 --DUMP_MSG;
1022 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1023 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt returned errors');
1024 END IF;
1025 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1026 RAISE FND_API.G_EXC_ERROR;
1027 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1028 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1029 END IF;
1030 END IF;
1031
1032 /*--------------------------------------------------+
1033 | Call to eTax Service Tax Lines Determination |
1034 +--------------------------------------------------*/
1035 ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(p_event_class_rec => zx_global_structures_pkg.g_event_class_rec,
1036 x_return_status => l_return_status
1037 );
1038
1039 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1040 x_return_status := l_return_status ;
1041 --DUMP_MSG;
1042 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1043 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination returned errors');
1044 END IF;
1045 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1046 RAISE FND_API.G_EXC_ERROR;
1047 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1048 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1049 END IF;
1050 END IF;
1051
1052 -- Replace the below call with a merge statement
1053
1054 /*--------------------------------------------------+
1055 | Call to Update Total Inclusive Tax Amount |
1056 +--------------------------------------------------*/
1057
1058 /* Replace the call to update_total_inc_tax_amt with the merge statement below
1059
1060 update_total_inc_tax_amt(p_event_class_rec => zx_global_structures_pkg.g_event_class_rec,
1061 x_return_status => l_return_status
1062 );
1063
1064 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1065 x_return_status := l_return_status ;
1066 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1067 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||p_api_name,G_PKG_NAME||': '||p_api_name||':update_total_inc_tax_amt returned errors');
1068 END IF;
1069 RETURN;
1070 END IF;
1071 */
1072
1073 IF zx_global_structures_pkg.g_event_class_rec.prod_family_grp_code = 'P2P' THEN
1074 MERGE INTO ZX_LINES_DET_FACTORS lines_dt
1075 USING (SELECT
1076 application_id,
1077 entity_code,
1078 event_class_code,
1079 trx_id,
1080 trx_level_type,
1081 trx_line_id,
1082 sum(tax_amt) incl_tax_amt
1083 FROM
1084 zx_detail_tax_lines_gt TaxLines
1085 WHERE
1086 tax_amt_included_flag = 'Y'
1087 -- AND mrc_tax_line_flag = 'N'
1088 AND cancel_flag <> 'Y'
1089 GROUP BY
1090 application_id,
1091 entity_code,
1092 event_class_code,
1093 trx_id,
1094 trx_level_type,
1095 trx_line_id
1096 ) Temp
1097 ON ( lines_dt.tax_amt_included_flag = 'Y'
1098 --AND lines_dt.total_inc_tax_amt is NULL
1099 AND lines_dt.application_id = temp.application_id
1100 AND lines_dt.entity_code = temp.entity_code
1101 AND lines_dt.event_class_code = temp.event_class_code
1102 AND lines_dt.trx_id = temp.trx_id
1103 AND Lines_dt.trx_level_type = temp.trx_level_type
1104 AND Lines_dt.trx_line_id = temp.trx_line_id
1105 )
1106 WHEN MATCHED THEN
1107 UPDATE SET
1108 total_inc_tax_amt = incl_tax_amt;
1109
1110 END IF;
1111
1112
1113 /*--------------------------------------------------+
1114 | Call to eTax Service Manage Tax Lines |
1115 +--------------------------------------------------*/
1116 --Rounding and Summarizing Tax Lines for Transaction
1117 /*Bug 3649502 - Check for record flag before calling TRR service*/
1118 /*Bug 4232918 - If record flag =Y and quote flag =Y then do not
1119 record in zx_lines */
1120 l_record_tax_lines := ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.record_flag;
1121 IF ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.record_flag = 'Y' and
1122 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.quote_flag = 'Y' THEN
1123 l_record_tax_lines := 'N';
1124 END IF;
1125 IF l_record_tax_lines = 'Y' THEN
1126 ZX_TRL_PUB_PKG.manage_taxlines(p_event_class_rec =>zx_global_structures_pkg.g_event_class_rec,
1127 x_return_status =>l_return_status
1128 );
1129 END IF;
1130
1131 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1132 x_return_status := l_return_status ;
1133 --DUMP_MSG;
1134 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1135 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxlines returned errors');
1136 END IF;
1137 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1138 RAISE FND_API.G_EXC_ERROR;
1139 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1140 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1141 END IF;
1142 END IF;
1143 --END IF; --process_applicability_flag is 'Y'
1144
1145 /*******************************PARTNER CODE START****************************/
1146 -- check with Santosh for a compatible API
1147 IF zx_global_structures_pkg.g_ptnr_srvc_subscr_flag = 'Y' THEN
1148 ptnr_bulk_sync_calc_tax ( p_event_class_rec => zx_global_structures_pkg.g_event_class_rec ,
1149 x_return_status => l_return_status
1150 );
1151 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1152 x_return_status := l_return_status;
1153 --DUMP_MSG;
1154 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1155 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ptnr_bulk_sync_calc_tax returned errors');
1156 END IF;
1157 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1158 RAISE FND_API.G_EXC_ERROR;
1159 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1160 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1161 END IF;
1162 END IF;
1166 | Do not record lines based on following condition |
1163 END IF;
1164
1165 /*-----------------------------------------------------------+
1167 +-----------------------------------------------------------*/
1168 IF (ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.RECORD_FLAG = 'Y' and
1169 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.quote_flag = 'Y' and
1170 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.icx_session_id is null)
1171 OR
1172 (ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.RECORD_FLAG = 'N' and
1173 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.quote_flag = 'Y' and
1174 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.intgrtn_det_factors_ui_flag = 'N' and
1175 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.icx_session_id is null)
1176 OR
1177 /*------------------------------------------------------------------------------+
1178 | Bug 4948674: Handle delete for O2C products when icx_session_id is NOT NULL |
1179 +------------------------------------------------------------------------------*/
1180 (zx_global_structures_pkg.g_event_class_rec.ICX_SESSION_ID is not null AND
1181 zx_global_structures_pkg.g_event_class_rec.PROD_FAMILY_GRP_CODE = 'O2C')
1182 THEN
1183
1184 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1185 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1186 'Delete lines for transaction header which need not be recorded');
1187 END IF;
1188
1189 BEGIN
1190 /*
1191 OPEN C_HEADERS;
1192 LOOP
1193 FETCH c_HEADERS BULK COLLECT INTO
1194 l_application_id_tbl,
1195 l_entity_code_tbl,
1196 l_event_class_code_tbl,
1197 l_trx_id_tbl,
1198 l_icx_session_id_tbl,
1199 l_event_type_code_tbl,
1200 l_tax_event_type_code_tbl,
1201 l_doc_event_status_tbl
1202 LIMIT G_LINES_PER_FETCH;
1203
1204
1205 FORALL i IN l_trx_id_tbl.FIRST .. l_trx_id_tbl.LAST
1206 */
1207 DELETE FROM zx_lines_det_factors
1208 WHERE (APPLICATION_ID, ENTITY_CODE, EVENT_CLASS_CODE, TRX_ID) IN
1209 (SELECT /*+ cardinality (ZX_TRX_HEADERS_GT 1) */
1210 APPLICATION_ID, ENTITY_CODE, EVENT_CLASS_CODE, TRX_ID
1211 FROM ZX_TRX_HEADERS_GT);
1212
1213 /*
1214 exit when c_HEADERS%NOTFOUND;
1215 END LOOP;
1216
1217 close c_HEADERS;
1218 */
1219 EXCEPTION
1220 WHEN OTHERS THEN
1221
1222 IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
1223 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||': returned errors');
1224 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name, SQLCODE||' ; '||SQLERRM);
1225 END IF;
1226
1227 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1228 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1229 FND_MSG_PUB.Add;
1230
1231 IF c_HEADERS%ISOPEN THEN
1232 close c_HEADERS;
1233 END IF;
1234 END;
1235 ELSE
1236
1237 /*-----------------------------------------------------+
1238 | Handle delete for mark tax lines deleted |
1239 +-----------------------------------------------------*/
1240 --Remove all lines marked for delete by the mark_tax_lines_deleted API
1241 BEGIN
1242 /*
1243 OPEN C_HEADERS;
1244 LOOP
1245 FETCH c_HEADERS BULK COLLECT INTO
1246 l_application_id_tbl,
1247 l_entity_code_tbl,
1248 l_event_class_code_tbl,
1249 l_trx_id_tbl,
1250 l_icx_session_id_tbl,
1251 l_event_type_code_tbl,
1252 l_tax_event_type_code_tbl,
1253 l_doc_event_status_tbl
1254 LIMIT G_LINES_PER_FETCH;
1255
1256 FORALL i IN l_trx_id_tbl.FIRST .. l_trx_id_tbl.LAST
1257
1258 DELETE from zx_lines_det_factors
1259 WHERE APPLICATION_ID = l_application_id_tbl(i)
1260 AND ENTITY_CODE = l_entity_code_tbl(i)
1261 AND EVENT_CLASS_CODE = l_event_class_code_tbl(i)
1262 AND TRX_ID = l_trx_id_tbl(i)
1263 AND line_level_action ='DELETE';
1264
1265 */
1266 DELETE /*+ ORDERED USE_NL_WITH_INDEX (Z,ZX_LINES_DET_FACTORS_U1) */ FROM zx_lines_det_factors Z
1267 WHERE (Z.APPLICATION_ID, Z.ENTITY_CODE, Z.EVENT_CLASS_CODE, Z.TRX_ID)
1268 IN (SELECT /*+ unnest cardinality (ZX_TRX_HEADERS_GT 1) */
1269 APPLICATION_ID, ENTITY_CODE, EVENT_CLASS_CODE, TRX_ID
1270 FROM ZX_TRX_HEADERS_GT)
1271 AND Z.line_level_action ='DELETE';
1272
1273
1274 /*
1275 exit when c_HEADERS%NOTFOUND;
1276 END LOOP;
1277
1278 close c_HEADERS;
1279 */
1280 EXCEPTION
1281 WHEN OTHERS THEN
1282
1283 IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
1284 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||': returned errors');
1285 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name, SQLCODE||' ; '||SQLERRM);
1286 END IF;
1287
1288 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1289 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1290 FND_MSG_PUB.Add;
1291
1292 IF c_HEADERS%ISOPEN THEN
1293 close c_HEADERS;
1294 END IF;
1295 END;
1296
1297 END IF;
1298
1299
1300 /*----------------------------------------------------------------+
1301 | Set the tax_reporting_flag to 'N' for documents called for quote|
1302 +----------------------------------------------------------------*/
1303 -- Bug Fix for 5155481 - Commented out the following update. Reporting flag is set during the
1304 -- insert itself based on the record_flag.
1305
1306 /* IF l_event_class_rec.QUOTE_FLAG = 'Y' THEN
1307 UPDATE zx_lines_det_factors
1308 SET tax_reporting_flag ='N'
1309 WHERE application_id = l_event_class_rec.application_id
1310 AND entity_code = l_event_class_rec.entity_code
1311 AND event_class_code = l_event_class_rec.event_class_code
1312 AND trx_id = l_event_class_rec.trx_id;
1313 END IF;
1314 */
1315 -- bug fix 5417887 end
1316
1317 -- bug#6594730
1318 -- need to flush ZX_DETAIL_TAX_LINES_GT before the procedure
1319 -- calculate_tax_pvt is called for the next event class
1320
1321 IF l_record_tax_lines = 'Y' THEN
1322 DELETE FROM ZX_DETAIL_TAX_LINES_GT;
1323 END IF;
1324
1325 -- bug 6824850
1326 ZX_GLOBAL_STRUCTURES_PKG.PTNR_TAX_REGIME_TBL.DELETE;
1327 ZX_GLOBAL_STRUCTURES_PKG.lte_trx_tbl.DELETE;
1328
1329 END LOOP; -- i IN 1..nvl(l_evnt_cls.event_class_code.LAST,0)
1330
1331 /*---------------------------------------------------------+
1332 | Set the out parameter |
1333 +--------------------------------------------------------*/
1334 BEGIN
1335 UPDATE ZX_TRX_HEADERS_GT headers
1336 SET doc_level_recalc_flag = (SELECT distinct(lines.threshold_indicator_flag)
1337 FROM ZX_LINES_DET_FACTORS lines
1338 WHERE lines.application_id = headers.application_id
1339 AND lines.event_class_code = headers.event_class_code
1340 AND lines.entity_code = headers.entity_code
1341 AND lines.trx_id = headers.trx_id
1342 AND lines.threshold_indicator_flag = 'Y' -- Bug 5210984
1343 );
1344 EXCEPTION WHEN OTHERS THEN
1345 null;
1346 END;
1347
1348
1349 -- If there exists error messages in Error Table
1350 -- call DUMP_MSG to insert them into ZX_ERRORS_GT
1351 IF ZX_API_PUB.errors_tbl.trx_id.COUNT > 0 THEN
1352 DUMP_MSG;
1353 END IF;
1354
1355 --Reset the icx_session_id at end of API
1356 ZX_SECURITY.G_ICX_SESSION_ID := null;
1357 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
1358 --dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
1359
1360
1361 --Reset G_PUB_CALLING_SRVC at end of API
1362 ZX_API_PUB.G_PUB_CALLING_SRVC := null;
1363
1364 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1365 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: CALCULATE_TAX()-');
1366 END IF;
1367
1368 l_end_time:=SYSDATE;
1369 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
1370 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
1371 mod(floor((l_end_time-l_start_time)*24*60*60),60);
1372
1373 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1374 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1375 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1376 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
1377 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1378 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
1379 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
1380 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
1381 END IF;
1382
1383 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1384 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
1385 FND_FILE.put_line(which => FND_FILE.LOG
1386 ,buff => 'Transfer_Mode: '||G_DATA_TRANSFER_MODE);
1387 FND_FILE.put_line(which => FND_FILE.LOG
1388 ,buff => 'ZX_API_PUB.Calculate.Statistics Start Time:'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1389 FND_FILE.put_line(which => FND_FILE.LOG
1390 ,buff => 'ZX_API_PUB.Calculate.Statistics End Time:'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1391 FND_FILE.put_line(which => FND_FILE.LOG
1395 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
1392 ,buff => 'ZX_API_PUB.Calculate.Statistics Total Time:'||l_total_time);
1393 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1394 FND_FILE.put_line(which => FND_FILE.LOG
1396 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
1397 FND_FILE.put_line(which => FND_FILE.LOG
1398 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
1399 END IF;
1400
1401 EXCEPTION
1402 WHEN FND_API.G_EXC_ERROR THEN
1403 ROLLBACK TO Calculate_tax_PVT;
1404 --Close all open cursors
1405 IF common_header_info%ISOPEN THEN CLOSE common_header_info; END IF;
1406 x_return_status := FND_API.G_RET_STS_ERROR;
1407 DUMP_MSG;
1408 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
1409 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
1410 END IF;
1411
1412 l_end_time:=SYSDATE;
1413 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
1414 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
1415 mod(floor((l_end_time-l_start_time)*24*60*60),60);
1416 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1417 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1418 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1419 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
1420 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1421 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
1422 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
1423 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
1424 END IF;
1425
1426 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1427 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
1428 FND_FILE.put_line(which => FND_FILE.LOG
1429 ,buff => 'Exception FND_API.G_EXC_ERROR : Transfer_Mode: '||G_DATA_TRANSFER_MODE);
1430 FND_FILE.put_line(which => FND_FILE.LOG
1431 ,buff => 'ZX_API_PUB.Calculate.Statistics Start Time:'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1432 FND_FILE.put_line(which => FND_FILE.LOG
1433 ,buff => 'ZX_API_PUB.Calculate.Statistics End Time:'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1434 FND_FILE.put_line(which => FND_FILE.LOG
1435 ,buff => 'ZX_API_PUB.Calculate.Statistics Total Time:'||l_total_time);
1436 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1437 FND_FILE.put_line(which => FND_FILE.LOG
1438 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
1439 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
1440 FND_FILE.put_line(which => FND_FILE.LOG
1441 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
1442 END IF;
1443
1444 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1445 ROLLBACK TO Calculate_tax_PVT;
1446 --Close all open cursors
1447 IF common_header_info%ISOPEN THEN CLOSE common_header_info; END IF;
1448 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1449 DUMP_MSG;
1450 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1451 FND_MSG_PUB.add;
1452 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1453 p_count => x_msg_count,
1454 p_data => x_msg_data
1455 );
1456 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
1457 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
1458 END IF;
1459 l_end_time:=SYSDATE;
1460 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
1461 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
1462 mod(floor((l_end_time-l_start_time)*24*60*60),60);
1463 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1464 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1465 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1466 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
1467 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1468 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
1469 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
1470 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
1471 END IF;
1472
1473 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1474 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
1475 FND_FILE.put_line(which => FND_FILE.LOG
1476 ,buff => 'Exception FND_API.G_EXC_UNEXPECTED_ERROR : Transfer_Mode: '||G_DATA_TRANSFER_MODE);
1477 FND_FILE.put_line(which => FND_FILE.LOG
1478 ,buff => 'ZX_API_PUB.Calculate.Statistics Start Time:'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1479 FND_FILE.put_line(which => FND_FILE.LOG
1480 ,buff => 'ZX_API_PUB.Calculate.Statistics End Time:'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1481 FND_FILE.put_line(which => FND_FILE.LOG
1482 ,buff => 'ZX_API_PUB.Calculate.Statistics Total Time:'||l_total_time);
1483 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1484 FND_FILE.put_line(which => FND_FILE.LOG
1485 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
1486 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
1487 FND_FILE.put_line(which => FND_FILE.LOG
1488 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
1489 END IF;
1490
1491 WHEN OTHERS THEN
1492 ROLLBACK TO Calculate_tax_PVT;
1493 --Close all open cursors
1494 IF common_header_info%ISOPEN THEN CLOSE common_header_info; END IF;
1495 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1496 DUMP_MSG;
1497 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
1498 FND_MSG_PUB.add;
1499 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1500 p_count => x_msg_count,
1501 p_data => x_msg_data
1502 );
1503 l_end_time:=SYSDATE;
1504 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
1505 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
1506 mod(floor((l_end_time-l_start_time)*24*60*60),60);
1507 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
1508 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
1509 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1510 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1511 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
1512 END IF;
1513
1514 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1515 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
1516 FND_FILE.put_line(which => FND_FILE.LOG
1517 ,buff => 'Exception OTHERS : Transfer_Mode: '||G_DATA_TRANSFER_MODE);
1518 FND_FILE.put_line(which => FND_FILE.LOG
1519 ,buff => 'ZX_API_PUB.Calculate.Statistics Start Time:'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
1520 FND_FILE.put_line(which => FND_FILE.LOG
1521 ,buff => 'ZX_API_PUB.Calculate.Statistics End Time:'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
1522 FND_FILE.put_line(which => FND_FILE.LOG
1523 ,buff => 'ZX_API_PUB.Calculate.Statistics Total Time:'||l_total_time);
1524 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
1525 FND_FILE.put_line(which => FND_FILE.LOG
1526 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
1527 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
1528 FND_FILE.put_line(which => FND_FILE.LOG
1529 ,buff => 'ZX_API_PUB.Calculate.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
1530 END IF;
1531
1532
1533 END calculate_tax; --gtt version
1534
1535 /*======================================================================*
1536 | PROCEDURE calculate_tax : Calculates and records tax info |
1537 | PL/sql tables: trx_line_dist_tbl , transaction_rec |
1538 | |
1539 | This API will be also called by products who uptake the |
1540 | determining factors UI window by which the transaction lines are |
1541 | already recorded into the eBTax repository , however the tax on them |
1542 | is not calculated. They will pass p_data_transfer_mode as WIN |
1543 * ======================================================================*/
1544
1545 PROCEDURE calculate_tax
1546 ( p_api_version IN NUMBER,
1547 p_init_msg_list IN VARCHAR2,
1548 p_commit IN VARCHAR2,
1549 p_validation_level IN NUMBER,
1550 x_return_status OUT NOCOPY VARCHAR2 ,
1551 x_msg_count OUT NOCOPY NUMBER ,
1552 x_msg_data OUT NOCOPY VARCHAR2,
1553 p_transaction_rec IN transaction_rec_type,
1554 p_quote_flag IN VARCHAR2,
1555 p_data_transfer_mode IN VARCHAR2,
1556 x_doc_level_recalc_flag OUT NOCOPY VARCHAR2
1557 )
1558 IS
1559
1560 l_api_name CONSTANT VARCHAR2(30) := 'CALCULATE_TAX';
1561 l_api_version CONSTANT NUMBER := 1.0;
1562 l_return_status VARCHAR2(30);
1563 l_event_class_rec event_class_rec_type;
1564 l_init_msg_list VARCHAR2(1);
1565 l_record_tax_lines VARCHAR2(1);
1566 l_error_buffer VARCHAR2(1000);
1567
1568 l_ptnr_index NUMBER;
1569 l_start_time DATE;
1570 l_end_time DATE;
1571 l_total_time VARCHAR2(15);
1572 BEGIN
1573 l_start_time := SYSDATE ;
1574 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1575 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: CALCULATE_TAX()+');
1576 END IF;
1577
1578 /*--------------------------------------------------+
1579 | Standard start of API savepoint |
1580 +--------------------------------------------------*/
1581 SAVEPOINT Calculate_tax_PVT;
1582
1583 /*--------------------------------------------------+
1584 | Standard call to check for call compatibility |
1585 +--------------------------------------------------*/
1586
1587 IF NOT FND_API.Compatible_API_Call(l_api_version,
1588 p_api_version,
1589 l_api_name,
1590 G_PKG_NAME
1591 ) THEN
1592 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1593 END IF;
1594
1595 /*--------------------------------------------------------------+
1596 | Initialize message list if p_init_msg_list is set to TRUE |
1597 +--------------------------------------------------------------*/
1598 IF p_init_msg_list is null THEN
1599 l_init_msg_list := FND_API.G_FALSE;
1600 ELSE
1601 l_init_msg_list := p_init_msg_list;
1602 END IF;
1603
1604 IF FND_API.to_Boolean(l_init_msg_list) THEN
1605 FND_MSG_PUB.initialize;
1606 END IF;
1607
1608 /*-----------------------------------------+
1609 | Initialize return status to SUCCESS |
1610 +-----------------------------------------*/
1611
1612 x_return_status := FND_API.G_RET_STS_SUCCESS;
1613
1614 /*-----------------------------------------+
1615 | Populate Global Variable |
1616 +-----------------------------------------*/
1617
1618 G_PUB_SRVC := l_api_name;
1619 G_PUB_CALLING_SRVC := l_api_name;
1620 G_DATA_TRANSFER_MODE := p_data_transfer_mode;
1621 G_EXTERNAL_API_CALL := 'N';
1622
1623
1624 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1625 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1626 'Data Transfer Mode: '||G_DATA_TRANSFER_MODE);
1627 END IF;
1628
1629 --Call TDS process to reset the session for previous calculate tax calls if any
1630 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (p_event_class_rec => NULL,
1631 p_init_level => 'SESSION',
1632 x_return_status => l_return_status
1633 );
1634 set_ptnr_srvc_subscr_flag (p_event_class_rec => NULL,
1635 x_return_status => l_return_status
1636 );
1637
1638 ZX_GLOBAL_STRUCTURES_PKG.LOC_GEOGRAPHY_INFO_TBL.DELETE;
1639 ZX_GLOBAL_STRUCTURES_PKG.g_registration_info_tbl.DELETE;
1640 /*------------------------------------------------------+
1641 | Copy to Event Class Record |
1642 +------------------------------------------------------*/
1643
1644 /*Fetch the event id for the document*/
1645 select ZX_LINES_DET_FACTORS_S.nextval
1646 into l_event_class_rec.event_id
1647 from dual;
1648
1649 /*Populate the event class record structure*/
1650 IF G_DATA_TRANSFER_MODE = 'PLS' THEN
1651 l_event_class_rec.INTERNAL_ORGANIZATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(1);
1652 l_event_class_rec.LEGAL_ENTITY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(1);
1653 l_event_class_rec.LEDGER_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEDGER_ID(1);
1654 l_event_class_rec.APPLICATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(1);
1655 l_event_class_rec.ENTITY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ENTITY_CODE(1);
1656 l_event_class_rec.EVENT_CLASS_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_CLASS_CODE(1);
1657 l_event_class_rec.EVENT_TYPE_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_TYPE_CODE(1);
1658 l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(1);
1659 l_event_class_rec.TRX_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_ID(1);
1660 l_event_class_rec.TRX_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(1);
1661 l_event_class_rec.REL_DOC_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RELATED_DOC_DATE(1);
1662 l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:= ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(1);
1663 l_event_class_rec.TRX_CURRENCY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_CURRENCY_CODE(1);
1664 l_event_class_rec.PRECISION := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRECISION(1);
1665 l_event_class_rec.CURRENCY_CONVERSION_TYPE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(1);
1666 l_event_class_rec.CURRENCY_CONVERSION_RATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(1);
1667 l_event_class_rec.CURRENCY_CONVERSION_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(1);
1668 l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID(1);
1669 l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID(1);
1670 l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(1);
1671 l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID(1);
1672 l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID(1);
1673 l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID(1);
1674 l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID(1);
1675 l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID(1);
1676 l_event_class_rec.QUOTE_FLAG := nvl(p_quote_flag,'N');
1677 l_event_class_rec.ICX_SESSION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ICX_SESSION_ID(1);
1678 ELSIF G_DATA_TRANSFER_MODE ='WIN' THEN
1679 l_event_class_rec.internal_organization_id := p_transaction_rec.internal_organization_id;
1680 l_event_class_rec.APPLICATION_ID := p_transaction_rec.application_id;
1681 l_event_class_rec.ENTITY_CODE := p_transaction_rec.entity_code;
1682 l_event_class_rec.EVENT_CLASS_CODE := p_transaction_rec.event_class_code;
1683 l_event_class_rec.EVENT_TYPE_CODE := p_transaction_rec.event_type_code;
1684 l_event_class_rec.TRX_ID := p_transaction_rec.trx_id;
1685 l_event_class_rec.QUOTE_FLAG := p_quote_flag;
1686
1687 BEGIN
1688 SELECT legal_entity_id,
1689 ledger_id,
1690 trx_date,
1691 related_doc_date,
1692 trx_currency_code,
1693 precision,
1694 currency_conversion_type,
1695 currency_conversion_rate,
1696 currency_conversion_date,
1697 Rdng_ship_to_pty_tx_prof_id,
1698 Rdng_ship_from_pty_tx_prof_id,
1699 Rdng_bill_to_pty_tx_prof_id,
1700 Rdng_bill_from_pty_tx_prof_id,
1701 Rdng_ship_to_pty_tx_p_st_id,
1702 Rdng_ship_from_pty_tx_p_st_id,
1703 Rdng_bill_to_pty_tx_p_st_id,
1704 Rdng_bill_from_pty_tx_p_st_id
1705 INTO l_event_class_rec.legal_entity_id,
1706 l_event_class_rec.ledger_id,
1707 l_event_class_rec.trx_date,
1708 l_event_class_rec.rel_doc_date,
1709 l_event_class_rec.trx_currency_code,
1710 l_event_class_rec.precision,
1711 l_event_class_rec.currency_conversion_type,
1712 l_event_class_rec.currency_conversion_rate,
1713 l_event_class_rec.currency_conversion_date,
1714 l_event_class_rec.RDNG_SHIP_TO_PTY_TX_PROF_ID,
1715 l_event_class_rec.RDNG_SHIP_FROM_PTY_TX_PROF_ID,
1716 l_event_class_rec.RDNG_BILL_TO_PTY_TX_PROF_ID,
1717 l_event_class_rec.RDNG_BILL_FROM_PTY_TX_PROF_ID,
1718 l_event_class_rec.RDNG_SHIP_TO_PTY_TX_P_ST_ID,
1719 l_event_class_rec.RDNG_SHIP_FROM_PTY_TX_P_ST_ID,
1720 l_event_class_rec.RDNG_BILL_TO_PTY_TX_P_ST_ID,
1721 l_event_class_rec.RDNG_BILL_FROM_PTY_TX_P_ST_ID
1722 FROM ZX_LINES_DET_FACTORS
1723 WHERE application_id = p_transaction_rec.application_id
1724 AND entity_code = p_transaction_rec.entity_code
1725 AND event_class_code = p_transaction_rec.event_class_code
1726 AND trx_id = p_transaction_rec.trx_id
1727 AND rownum = 1;
1728 EXCEPTION
1729 WHEN OTHERS THEN
1730 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
1731 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'Data is expected to be in eBTax Repository for this call');
1732 END IF;
1736 --Set a flag to indicate if currency information passed at header/line
1733 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1734 END;
1735 END IF;
1737 IF l_event_class_rec.trx_currency_code is not null AND
1738 l_event_class_rec.precision is not null THEN
1739 l_event_class_rec.header_level_currency_flag := 'Y';
1740 END IF;
1741
1742 --Set the global variable if icx_session_id is not null
1743 IF l_event_class_rec.QUOTE_FLAG = 'Y' and
1744 l_event_class_rec.ICX_SESSION_ID is not null THEN
1745 ZX_SECURITY.G_ICX_SESSION_ID := l_event_class_rec.ICX_SESSION_ID;
1746 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
1747 -- dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
1748 ELSE
1749 ZX_SECURITY.G_ICX_SESSION_ID := null;
1750 -- dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
1751 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
1752 END IF;
1753
1754 -- Bug 4948674: Following Delete will not work when there are different dbms sessions used for the same user
1755 -- session when call originates from a FWK UI. Moved the following Delete logic to the end of this API for O2C
1756 -- products and to the end of determine_recovery API for P2P products.
1757
1758 --If the user calls calculate_tax twice using same db session for the same icx session, then we will have
1759 -- un-deleted data in the Det Factors table for the previousc all. So, we need to clean it up first before
1760 -- starting to process the input lines of the new call.We should at first always attempt to remove any rows
1761 --sitting in Det Factors table for that icx session
1762 /* IF l_event_class_rec.ICX_SESSION_ID is not null THEN
1763 DELETE from zx_lines_det_factors
1764 WHERE application_id = l_event_class_rec.application_id and
1765 entity_code = l_event_class_rec.entity_code and
1766 event_class_code = l_event_class_rec.event_class_code and
1767 trx_id = l_event_class_rec.trx_id;
1768 END IF;
1769 */
1770
1771 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1772 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1773 'application_id: '||to_char(l_event_class_rec.application_id)||
1774 ', entity_code: '||l_event_class_rec.entity_code||
1775 ', event_class_code: '||l_event_class_rec.event_class_code||
1776 ', event_type_code: '||l_event_class_rec.event_type_code||
1777 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
1778 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
1779 ', ledger_id: '||to_char(l_event_class_rec.ledger_id)||
1780 ', legal_entity_id: '||to_char(l_event_class_rec.legal_entity_id)||
1781 ', trx_date: '||to_char(l_event_class_rec.trx_date)||
1782 ', related_document_date: '||to_char(l_event_class_rec.rel_doc_date)||
1783 ', trx_currency_code: '||l_event_class_rec.trx_currency_code||
1784 ', currency_conversion_type: '||l_event_class_rec.currency_conversion_type||
1785 ', currency_conversion_rate: '||to_char(l_event_class_rec.currency_conversion_rate)||
1786 ', currency_conversion_date: '||to_char(l_event_class_rec.currency_conversion_date)||
1787 ', rounding_ship_to_party_id: '||to_char(l_event_class_rec.rounding_ship_to_party_id)||
1788 ', rounding_ship_from_party_id: '||to_char(l_event_class_rec.rounding_ship_from_party_id)||
1789 ', rounding_bill_to_party_id: '||to_char(l_event_class_rec.rounding_bill_to_party_id)||
1790 ', rounding_bill_from_party_id: '||to_char(l_event_class_rec.rounding_bill_from_party_id)||
1791 ', rndg_ship_to_party_site_id: '||to_char(l_event_class_rec.rndg_ship_to_party_site_id)||
1792 ', rndg_ship_from_party_site_id: '||to_char(l_event_class_rec.rndg_ship_from_party_site_id)||
1793 ', rndg_bill_to_party_site_id: '||to_char(l_event_class_rec.rndg_bill_to_party_site_id)||
1794 ', rndg_bill_from_party_site_id: '||to_char(l_event_class_rec.rndg_bill_from_party_site_id)||
1795 ', quote_flag: '||l_event_class_rec.quote_flag ||
1796 ', icx_session_id: '||to_char(l_event_class_rec.icx_session_id) );
1797 END IF;
1798
1799 /*-------------------------------------------------------+
1800 |Lock the tax lines table to prevent another |
1801 |user from updating same line via the forms/UIs while |
1802 |calculation is in progress |
1803 +-------------------------------------------------------*/
1804 IF l_event_class_rec.tax_event_type_code ='UPDATE' THEN
1805 ZX_TRL_DETAIL_OVERRIDE_PKG.lock_dtl_tax_lines_for_doc(p_application_id => l_event_class_rec.application_id,
1806 p_entity_code => l_event_class_rec.entity_code,
1807 p_event_class_code => l_event_class_rec.event_class_code,
1808 p_trx_id => l_event_class_rec.trx_id,
1809 x_return_status => l_return_status,
1810 x_error_buffer => l_error_buffer
1811 );
1812
1813 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1814 RAISE FND_API.G_EXC_ERROR;
1815 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1816 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1817 END IF;
1818
1819 ZX_TRL_SUMMARY_OVERRIDE_PKG.lock_summ_tax_lines_for_doc(p_application_id => l_event_class_rec.application_id,
1820 p_entity_code => l_event_class_rec.entity_code,
1821 p_event_class_code => l_event_class_rec.event_class_code,
1822 p_trx_id => l_event_class_rec.trx_id,
1823 x_return_status => l_return_status,
1824 x_error_buffer => l_error_buffer
1825 );
1826 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1827 RAISE FND_API.G_EXC_ERROR;
1828 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1829 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1830 END IF;
1831
1832 ZX_TRL_DISTRIBUTIONS_PKG.lock_rec_nrec_dist_for_doc (p_application_id => l_event_class_rec.application_id,
1833 p_entity_code => l_event_class_rec.entity_code,
1834 p_event_class_code => l_event_class_rec.event_class_code,
1835 p_trx_id => l_event_class_rec.trx_id,
1836 x_return_status => l_return_status,
1837 x_error_buffer => l_error_buffer
1838 );
1839 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1840 RAISE FND_API.G_EXC_ERROR;
1841 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1842 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1843 END IF;
1844 END IF; --tax event type is UPDATE
1845
1846 IF l_event_class_rec.event_class_code = 'CREDIT_MEMO' THEN
1847 ZX_GLOBAL_STRUCTURES_PKG.g_credit_memo_exists_flg := 'Y';
1848 END IF;
1849
1850 /*------------------------------------------------------+
1851 | Validate and Initializate parameters for Calculate |
1852 | tax |
1853 +------------------------------------------------------*/
1854
1855 ZX_VALID_INIT_PARAMS_PKG.calculate_tax(p_event_class_rec => l_event_class_rec,
1856 x_return_status => l_return_status
1857 );
1858
1859 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1860 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1861 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.calculate_tax returned errors');
1862 END IF;
1863 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1864 RAISE FND_API.G_EXC_ERROR;
1865 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1866 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1867 END IF;
1868 END IF;
1869
1870 /* ===============================================================================*
1871 |Initialize the global structures/global temp tables owned by TDM at header level |
1872 * ===============================================================================*/
1873
1874 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (l_event_class_rec ,
1875 'HEADER',
1876 l_return_status
1877 );
1878
1879 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1880 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1881 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.initialize returned errors');
1882 END IF;
1883 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1884 RAISE FND_API.G_EXC_ERROR;
1885 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1886 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1887 END IF;
1888 END IF;
1889
1890
1891 /*--------------------------------------------------+
1892 | Call to service type Calculate Tax |
1893 +--------------------------------------------------*/
1894 /* ----------------------------------------------------+
1895 | Bug 3922920 - Perfrom tail end processes regardless |
1896 | of process_for_applicability_flag |
1897 + ---------------------------------------------------*/
1898 --IF nvl(l_event_class_rec.PROCESS_FOR_APPLICABILITY_FLAG,'Y') = 'Y' THEN
1899
1900 ZX_SRVC_TYP_PKG.calculate_tax(p_event_class_rec => l_event_class_rec,
1901 x_return_status => l_return_status
1902 );
1903
1904 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1905 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1906 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.calculate_tax returned errors');
1907 END IF;
1908 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1909 RAISE FND_API.G_EXC_ERROR;
1910 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1911 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1912 END IF;
1913 END IF;
1914
1915 -- populate the tax_regime_tbl cache structure for partner
1916 IF zx_global_structures_pkg.g_ptnr_srvc_subscr_flag = 'Y' THEN
1917 IF nvl(ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl.FIRST,0) = 0 THEN
1918 l_ptnr_index := NVL(ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl.LAST, 0) + 1;
1919 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).application_id
1920 := l_event_class_rec.application_id;
1921 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).entity_code
1922 := l_event_class_rec.entity_code;
1923 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).event_class_code
1924 := l_event_class_rec.event_class_code;
1925 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).trx_id
1926 := l_event_class_rec.trx_id;
1927 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).event_class_mapping_id
1928 := l_event_class_rec.event_class_mapping_id;
1929 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).event_type_code
1930 := l_event_class_rec.event_type_code;
1931 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).record_flag
1932 := l_event_class_rec.record_flag;
1933 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).quote_flag
1934 := l_event_class_rec.quote_flag;
1935 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).record_for_partners_flag
1936 := l_event_class_rec.record_for_partners_flag;
1937 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).prod_family_grp_code
1938 := l_event_class_rec.prod_family_grp_code;
1939 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).internal_organization_id
1940 := l_event_class_rec.internal_organization_id;
1941 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).legal_entity_id
1942 := l_event_class_rec.legal_entity_id;
1943 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).effective_date
1944 := zx_security.g_effective_date;
1945 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl(l_ptnr_index).tax_regime_tbl
1946 := ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl;
1947 END IF;
1948 END IF;
1949
1950 /*-----------------------------------------------------+
1951 | Call to eTax service Dump Detail Tax Lines Into GT|
1952 +-----------------------------------------------------*/
1953 ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(x_return_status => l_return_status);
1954
1955
1956 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1957 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1958 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt returned errors');
1959 END IF;
1960 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1961 RAISE FND_API.G_EXC_ERROR;
1962 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1963 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1964 END IF;
1965 END IF;
1966
1967 /*--------------------------------------------------+
1968 | Call to eTax Service Tax Lines Determination |
1969 +--------------------------------------------------*/
1970 ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(p_event_class_rec => l_event_class_rec,
1971 x_return_status => l_return_status
1972 );
1973
1974 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1975 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1976 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination returned errors');
1977 END IF;
1981 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1978 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1979 RAISE FND_API.G_EXC_ERROR;
1980 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1982 END IF;
1983 END IF;
1984
1985 /*--------------------------------------------------+
1986 | Call to Update Total Inclusive Tax Amount |
1987 +--------------------------------------------------*/
1988 /* Replace the call to update_total_inc_tax_amt with the merge statement below
1989 update_total_inc_tax_amt(p_event_class_rec => l_event_class_rec,
1990 x_return_status => l_return_status
1991 );
1992
1993 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1994 x_return_status := l_return_status ;
1995 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1996 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':update_total_inc_tax_amt returned errors');
1997 END IF;
1998 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1999 RAISE FND_API.G_EXC_ERROR;
2000 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2001 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2002 END IF;
2003 END IF;
2004 */
2005
2006 IF zx_global_structures_pkg.g_event_class_rec.prod_family_grp_code = 'P2P' THEN
2007 MERGE INTO ZX_LINES_DET_FACTORS lines_dt
2008 USING (SELECT
2009 application_id,
2010 entity_code,
2011 event_class_code,
2012 trx_id,
2013 trx_level_type,
2014 trx_line_id,
2015 sum(tax_amt) incl_tax_amt
2016 FROM
2017 zx_detail_tax_lines_gt TaxLines
2018 WHERE
2019 tax_amt_included_flag = 'Y'
2020 -- AND mrc_tax_line_flag = 'N'
2021 AND cancel_flag <> 'Y'
2022 GROUP BY
2023 application_id,
2024 entity_code,
2025 event_class_code,
2026 trx_id,
2027 trx_level_type,
2028 trx_line_id
2029 ) Temp
2030 ON ( lines_dt.tax_amt_included_flag = 'Y'
2031 --AND lines_dt.total_inc_tax_amt is NULL
2032 AND lines_dt.application_id = temp.application_id
2033 AND lines_dt.entity_code = temp.entity_code
2034 AND lines_dt.event_class_code = temp.event_class_code
2035 AND lines_dt.trx_id = temp.trx_id
2036 AND Lines_dt.trx_level_type = temp.trx_level_type
2037 AND Lines_dt.trx_line_id = temp.trx_line_id
2038 )
2039 WHEN MATCHED THEN
2040 UPDATE SET
2041 total_inc_tax_amt = incl_tax_amt;
2042
2043 END IF;
2044
2045 /*--------------------------------------------------+
2046 | Call to eTax Service Manage Tax Lines |
2047 +--------------------------------------------------*/
2048
2049 --Rounding and Summarizing Tax Lines for Transaction
2050 /*Bug 3649502 - Check for record flag before calling TRR service*/
2051 /*Bug 4232918 - If record flag =Y and quote flag =Y then do not
2052 record in zx_lines */
2053 l_record_tax_lines := l_event_class_rec.record_flag;
2054 IF l_event_class_rec.record_flag = 'Y' and
2055 l_event_class_rec.quote_flag = 'Y' THEN
2056 l_record_tax_lines := 'N';
2057 END IF;
2058 IF l_record_tax_lines = 'Y' THEN
2059 ZX_TRL_PUB_PKG.manage_taxlines(p_event_class_rec =>l_event_class_rec,
2060 x_return_status =>l_return_status
2061 );
2062 END IF;
2063
2064 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2065 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2066 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxlines returned errors');
2067 END IF;
2068 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2069 RAISE FND_API.G_EXC_ERROR;
2070 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2071 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2072 END IF;
2073 END IF;
2074 -- END IF; -- process_applicability_flag is N
2075
2076 /*******************************PARTNER CODE START****************************/
2077 IF zx_global_structures_pkg.g_ptnr_srvc_subscr_flag = 'Y' THEN
2078
2079 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2080 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2081 'Calling partner routine to synchronize the tax'||
2082 ', ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.count = '||ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.count);
2083 END IF;
2084 ptnr_bulk_sync_calc_tax ( p_event_class_rec => l_event_class_rec ,
2085 x_return_status => l_return_status
2086 );
2087 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2088 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2089 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxlines returned errors');
2090 END IF;
2091 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2092 RAISE FND_API.G_EXC_ERROR;
2093 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2094 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2095 END IF;
2096 END IF;
2097 END IF;
2098 /*******************************PARTNER CODE END****************************/
2099 /*---------------------------------------------------------+
2100 | End Loop for Transaction Headers |
2101 +---------------------------------------------------------*/
2102
2103 /*---------------------------------------------------------+
2104 | Set the out parameter |
2105 +--------------------------------------------------------*/
2106 BEGIN
2107 SELECT threshold_indicator_flag
2108 INTO x_doc_level_recalc_flag
2109 FROM ZX_LINES_DET_FACTORS
2110 WHERE application_id = l_event_class_rec.application_id
2111 AND event_class_code = l_event_class_rec.event_class_code
2112 AND entity_code = l_event_class_rec.entity_code
2113 AND trx_id = l_event_class_rec.trx_id
2114 AND threshold_indicator_flag = 'Y' -- Bug 5210984
2115 AND rownum = 1;
2116 EXCEPTION WHEN OTHERS THEN
2117 x_doc_level_recalc_flag := 'N'; --bug6062224
2118 --null;
2119 END;
2120
2121 /*-------------------------------------------------------------+
2122 | Do not record lines based on following condition |
2123 +------------------------------------------------------------*/
2124 IF (l_event_class_rec.RECORD_FLAG = 'Y' and
2125 l_event_class_rec.quote_flag = 'Y' and
2126 l_event_class_rec.icx_session_id is null) OR
2127 (l_event_class_rec.RECORD_FLAG = 'N' and
2128 l_event_class_rec.quote_flag = 'Y' and
2129 l_event_class_rec.intgrtn_det_factors_ui_flag = 'N' and
2130 l_event_class_rec.icx_session_id is null) THEN
2131 --Delete lines for transaction header which need not be recorded
2132 DELETE from zx_lines_det_factors
2133 WHERE application_id = l_event_class_rec.application_id
2134 AND entity_code = l_event_class_rec.entity_code
2135 AND event_class_code = l_event_class_rec.event_class_code
2136 AND trx_id = l_event_class_rec.trx_id;
2137 END IF;
2138 /*----------------------------------------------------------------+
2139 | Set the tax_reporting_flag to 'N' for documents called for quote|
2140 +----------------------------------------------------------------*/
2141 -- Bug Fix for 5155481 - Commented out the following update. Reporting flag is set during the
2142 -- insert itself based on the record_flag.
2143
2144 /* IF l_event_class_rec.QUOTE_FLAG = 'Y' THEN
2145 UPDATE zx_lines_det_factors
2146 SET tax_reporting_flag ='N'
2147 WHERE application_id = l_event_class_rec.application_id
2148 AND entity_code = l_event_class_rec.entity_code
2149 AND event_class_code = l_event_class_rec.event_class_code
2150 AND trx_id = l_event_class_rec.trx_id;
2151 END IF;
2152
2153 */
2154
2155 /*-----------------------------------------------------+
2156 | Handle delete for mark tax lines deleted |
2157 +-----------------------------------------------------*/
2158 DELETE FROM ZX_LINES_DET_FACTORS
2159 WHERE line_level_action ='DELETE'
2160 AND application_id = l_event_class_rec.application_id
2161 AND entity_code = l_event_class_rec.entity_code
2162 AND event_class_code = l_event_class_rec.event_class_code
2163 AND trx_id = l_event_class_rec.trx_id;
2164
2165 /*------------------------------------------------------------------------------+
2166 | Bug 4948674: Handle delete for O2C products when icx_session_id is NOT NULL |
2167 +------------------------------------------------------------------------------*/
2168 IF l_event_class_rec.ICX_SESSION_ID is not null AND
2169 l_event_class_rec.PROD_FAMILY_GRP_CODE = 'O2C' THEN
2170 DELETE from zx_lines_det_factors
2171 WHERE application_id = l_event_class_rec.application_id and
2172 entity_code = l_event_class_rec.entity_code and
2173 event_class_code = l_event_class_rec.event_class_code and
2174 trx_id = l_event_class_rec.trx_id and
2175 icx_session_id = l_event_class_rec.icx_session_id;
2176 END IF;
2177
2178 /*---------------------------------------------------------+
2179 | Initialize the trx line app regimes table for every doc|
2180 +--------------------------------------------------------*/
2181 IF zx_global_structures_pkg.g_ptnr_srvc_subscr_flag = 'Y' THEN
2182 ZX_GLOBAL_STRUCTURES_PKG.init_trx_line_app_regime_tbl;
2183 END IF;
2184
2185 --Delete from the global structures so that there are no hanging/redundant
2186 --records sitting there
2187 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
2188 ZX_GLOBAL_STRUCTURES_PKG.LOC_GEOGRAPHY_INFO_TBL.DELETE;
2189 ZX_GLOBAL_STRUCTURES_PKG.g_registration_info_tbl.DELETE;
2190 ZX_GLOBAL_STRUCTURES_PKG.g_party_tax_prof_id_info_tbl.DELETE;
2191
2192 --Also delete the location caching global structures
2193 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.EVENT_CLASS_MAPPING_ID.DELETE;
2194 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_ID.DELETE;
2195 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_LINE_ID.DELETE;
2196 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.TRX_LEVEL_TYPE.DELETE;
2197 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_TYPE.DELETE;
2198 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_TABLE_NAME.DELETE;
2199 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.LOCATION_ID.DELETE;
2200 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_TYPE.DELETE;
2201 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_VALUE.DELETE;
2202 ZX_GLOBAL_STRUCTURES_PKG.location_info_tbl.GEOGRAPHY_ID.DELETE;
2203 ZX_GLOBAL_STRUCTURES_PKG.LOCATION_HASH_TBL.DELETE;
2204
2205 -- If there exists error messages in Error Table
2206 -- call DUMP_MSG to insert them into ZX_ERRORS_GT
2207 IF ZX_API_PUB.errors_tbl.trx_id.COUNT > 0 THEN
2208 DUMP_MSG;
2209 END IF;
2210
2211 --Reset the icx_session_id at end of API
2212 ZX_SECURITY.G_ICX_SESSION_ID := null;
2213 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
2214 -- dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
2215
2216 --Reset the calling API info at end of API
2217 ZX_API_PUB.G_PUB_CALLING_SRVC := null;
2218
2219 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2220 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: CALCULATE_TAX()-');
2221 END IF;
2222
2223 l_end_time:=SYSDATE;
2224 l_total_time:= floor((l_end_time-l_start_time)*24)|| ':' ||
2225 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2226 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2227
2228 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2229 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||' Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2230 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||' Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2231 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||' Statistics','Total Time :'|| l_total_time);
2232 END IF;
2233
2234 IF fnd_global.conc_request_id <> -1 THEN
2235 FND_FILE.put_line(which => FND_FILE.LOG
2236 ,buff => 'Transfer_Mode: '||G_DATA_TRANSFER_MODE);
2237 FND_FILE.put_line(which => FND_FILE.LOG
2238 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Start Time:'
2239 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2240 FND_FILE.put_line(which => FND_FILE.LOG
2241 ,buff => 'ZX_API_PUB.CALCULATE.Statistics End Time:'
2242 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2243 FND_FILE.put_line(which => FND_FILE.LOG
2244 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Total Time:'
2245 ||l_total_time);
2246 END IF;
2247
2248
2249 EXCEPTION
2250 WHEN FND_API.G_EXC_ERROR THEN
2251 ROLLBACK TO Calculate_tax_PVT;
2252 x_return_status := FND_API.G_RET_STS_ERROR ;
2253 DUMP_MSG;
2254 /*---------------------------------------------------------+
2255 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
2256 | in the message stack. If there is only one message in |
2257 | the stack it retrieves this message |
2258 +---------------------------------------------------------*/
2259 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2260 p_count => x_msg_count,
2261 p_data => x_msg_data
2262 );
2263
2264 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
2265 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
2266 END IF;
2267
2268 l_end_time:=SYSDATE;
2269 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
2270 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2271 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2272 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2273 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2274 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2275 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
2276 END IF;
2277
2278 IF fnd_global.conc_request_id <> -1 THEN
2279 FND_FILE.put_line(which => FND_FILE.LOG
2283 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2280 ,buff => 'ZX_API_PUB.CALCULATE.Exception FND_API.G_EXC_ERROR Transfer_Mode: '||G_DATA_TRANSFER_MODE);
2281 FND_FILE.put_line(which => FND_FILE.LOG
2282 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Start Time:'
2284 FND_FILE.put_line(which => FND_FILE.LOG
2285 ,buff => 'ZX_API_PUB.CALCULATE.Statistics End Time:'
2286 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2287 FND_FILE.put_line(which => FND_FILE.LOG
2288 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Total Time:'
2289 ||l_total_time);
2290 END IF;
2291
2292 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2293 ROLLBACK TO Calculate_tax_PVT;
2294 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2295 DUMP_MSG;
2296 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
2297 FND_MSG_PUB.Add;
2298 /*---------------------------------------------------------+
2299 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
2300 | in the message stack. If there is only one message in |
2301 | the stack it retrieves this message |
2302 +---------------------------------------------------------*/
2303 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2304 p_count => x_msg_count,
2305 p_data => x_msg_data
2306 );
2307 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
2308 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
2309 END IF;
2310
2311 l_end_time:=SYSDATE;
2312 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
2313 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2314 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2315 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2316 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2317 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2318 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
2319 END IF;
2320
2321 IF fnd_global.conc_request_id <> -1 THEN
2322 FND_FILE.put_line(which => FND_FILE.LOG
2323 ,buff => 'ZX_API_PUB.CALCULATE.Exception FND_API.G_EXC_UNEXPECTED_ERROR Transfer_Mode: '||G_DATA_TRANSFER_MODE);
2324 FND_FILE.put_line(which => FND_FILE.LOG
2325 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Start Time:'
2326 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2327 FND_FILE.put_line(which => FND_FILE.LOG
2328 ,buff => 'ZX_API_PUB.CALCULATE.Statistics End Time:'
2329 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2330 FND_FILE.put_line(which => FND_FILE.LOG
2331 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Total Time:'
2332 ||l_total_time);
2333 END IF;
2334
2335 WHEN OTHERS THEN
2336 ROLLBACK TO Calculate_tax_PVT;
2337 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2338 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
2339 FND_MSG_PUB.Add;
2340 /*---------------------------------------------------------+
2341 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
2342 | in the message stack. If there is only one message in |
2343 | the stack it retrieves this message |
2344 +---------------------------------------------------------*/
2345 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2346 p_count => x_msg_count,
2347 p_data => x_msg_data
2348 );
2349
2350 l_end_time:=SYSDATE;
2351 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
2352 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2353 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2354 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2355 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2356 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2357 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2358 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
2359 END IF;
2360
2361 IF fnd_global.conc_request_id <> -1 THEN
2362 FND_FILE.put_line(which => FND_FILE.LOG
2363 ,buff => 'ZX_API_PUB.CALCULATE.Exception OTHERS Transfer_Mode: '||G_DATA_TRANSFER_MODE);
2364 FND_FILE.put_line(which => FND_FILE.LOG
2365 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Start Time:'
2366 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2367 FND_FILE.put_line(which => FND_FILE.LOG
2368 ,buff => 'ZX_API_PUB.CALCULATE.Statistics End Time:'
2369 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2370 FND_FILE.put_line(which => FND_FILE.LOG
2371 ,buff => 'ZX_API_PUB.CALCULATE.Statistics Total Time:'
2372 ||l_total_time);
2373 END IF;
2374
2375
2376 END calculate_tax; --pl/sql version
2377
2378 /* ======================================================================*
2382 | ZX_IMPORT_TAX_LINES_GT and ZX_TRX_TAX_LINK_GT |
2379 | PROCEDURE import_document_with_tax : Imports document with tax |
2380 | This API also supports processing for multiple event classes |
2381 | GTT involved : ZX_TRX_HEADERS_GT, ZX_TRANSACTION_LINES_GT , |
2383 * ======================================================================*/
2384 PROCEDURE Import_document_with_tax
2385 ( p_api_version IN NUMBER,
2386 p_init_msg_list IN VARCHAR2,
2387 p_commit IN VARCHAR2,
2388 p_validation_level IN NUMBER,
2389 x_return_status OUT NOCOPY VARCHAR2 ,
2390 x_msg_count OUT NOCOPY NUMBER ,
2391 x_msg_data OUT NOCOPY VARCHAR2
2392 ) IS
2393 l_api_name CONSTANT VARCHAR2(30) := 'IMPORT_DOCUMENT_WITH_TAX';
2394 l_api_version CONSTANT NUMBER := 1.0;
2395 l_return_status VARCHAR2(30);
2396 l_context_info_rec context_info_rec_type;
2397 l_transaction_header_rec transaction_header_rec_type;
2398 l_event_id NUMBER;
2399 l_precedence NUMBER_tbl_type;
2400 l_index BINARY_INTEGER;
2401 l_init_msg_list VARCHAR2(1);
2402 l_record_tax_lines VARCHAR2(1);
2403
2404 CURSOR event_classes IS
2405 SELECT distinct
2406 header.event_class_code,
2407 header.application_id,
2408 header.entity_code,
2409 header.internal_organization_id,
2410 evntmap.processing_precedence
2411 FROM ZX_EVNT_CLS_MAPPINGS evntmap,
2412 ZX_TRX_HEADERS_GT header
2413 WHERE header.application_id = evntmap.application_id
2414 AND header.entity_code = evntmap.entity_code
2415 AND header.event_class_code = evntmap.event_class_code
2416 ORDER BY evntmap.processing_precedence;
2417
2418 /*Get all the tax lines passed in import process for external tax provider */
2419 CURSOR detail_tax_lines_csr IS
2420 SELECT distinct
2421 r.tax_regime_id,
2422 t.tax_regime_code,
2423 t.tax_provider_id,
2424 r.effective_from,
2425 r.effective_to
2426 FROM ZX_IMPORT_TAX_LINES_GT t, zx_regimes_b r
2427 WHERE t.tax_provider_id is not null
2428 AND r.tax_regime_code = t.tax_regime_code
2429 AND r.effective_to is null;
2430
2431 dtl_tax_lines detail_tax_lines_csr%ROWTYPE;
2432 l_ptnr_index NUMBER;
2433 l_dummy_number NUMBER;
2434 l_start_time DATE;
2435 l_end_time DATE;
2436 l_total_time VARCHAR2(15);
2437
2438 BEGIN
2439 l_start_time := SYSDATE ;
2440
2441 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2442 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
2443 END IF;
2444
2445 /*--------------------------------------------------+
2446 | Standard start of API savepoint |
2447 +--------------------------------------------------*/
2448 SAVEPOINT import_document_PVT;
2449
2450 /*--------------------------------------------------+
2451 | Standard call to check for call compatibility |
2452 +--------------------------------------------------*/
2453 IF NOT FND_API.Compatible_API_Call(l_api_version,
2454 p_api_version,
2455 l_api_name,
2456 G_PKG_NAME
2457 ) THEN
2458 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2459 END IF;
2460
2461 /*--------------------------------------------------------------+
2462 | Initialize message list if p_init_msg_list is set to TRUE |
2463 +--------------------------------------------------------------*/
2464 IF p_init_msg_list is null THEN
2465 l_init_msg_list := FND_API.G_FALSE;
2466 ELSE
2467 l_init_msg_list := p_init_msg_list;
2468 END IF;
2469
2470 IF FND_API.to_Boolean(l_init_msg_list) THEN
2471 FND_MSG_PUB.initialize;
2472 END IF;
2473
2474
2475 /*-----------------------------------------+
2476 | Initialize return status to SUCCESS |
2477 +-----------------------------------------*/
2478 x_return_status := FND_API.G_RET_STS_SUCCESS;
2479
2480
2481 /*-----------------------------------------+
2482 | Populate Global Variable |
2483 +-----------------------------------------*/
2484 G_PUB_SRVC := l_api_name;
2485 G_DATA_TRANSFER_MODE := 'TAB';
2486 G_EXTERNAL_API_CALL := 'N';
2487
2488 /*-----------------------------------------+
2489 | Get the event id for the whole document |
2490 +-----------------------------------------*/
2491 --Bug 7650433
2492 --select ZX_LINES_DET_FACTORS_S.nextval
2493 --into l_event_id
2494 --from dual;
2495
2496 OPEN event_classes;
2497 LOOP
2498 FETCH event_classes BULK COLLECT INTO
2499 l_evnt_cls.event_class_code,
2500 l_evnt_cls.application_id,
2501 l_evnt_cls.entity_code,
2502 l_evnt_cls.internal_organization_id,
2503 l_evnt_cls.precedence
2504 LIMIT G_LINES_PER_FETCH;
2505 EXIT WHEN event_classes%NOTFOUND;
2506 END LOOP;
2507 CLOSE event_classes;
2508
2509 --Event classes such as SALES_TRANSACTION_TAX_QUOTE/PURCHASE_TRANSACTION_TAX_QUOTE
2510 --are not seeded in zx_evnt_cls_mappings so cursor event classes will not
2511 --return any rows for such event classes passed.
2512 IF l_evnt_cls.event_class_code.LAST is null THEN
2513 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2514 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2515 'Event class information does not exist - indicates SALES_TRANSACTION_TAX_QUOTE/PURCHASE_TRANSACTION_TAX_QUOTE');
2516 END IF;
2517
2518 select event_class_code,
2519 application_id,
2520 entity_code,
2521 internal_organization_id
2522 into l_evnt_cls.event_class_code(1),
2523 l_evnt_cls.application_id(1),
2524 l_evnt_cls.entity_code(1),
2525 l_evnt_cls.internal_organization_id(1)
2526 from ZX_TRX_HEADERS_GT
2527 where rownum=1;
2528 END IF;
2529
2530
2531 -- added init for bug fix 5417887
2532 /* ===============================================================================*
2533 |Initialize the global structures/global temp tables owned by TDM at header level |
2534 * =============================================================================*/
2535 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (p_event_class_rec => NULL,
2536 p_init_level => 'SESSION',
2537 x_return_status => l_return_status
2538 );
2539
2540 set_ptnr_srvc_subscr_flag (p_event_class_rec => NULL,
2541 x_return_status => l_return_status
2542 );
2543
2544 /*---------------------------------------------------------+
2545 | Initialize the trx line app regimes table for every doc|
2546 +--------------------------------------------------------*/
2547
2548 IF zx_global_structures_pkg.g_ptnr_srvc_subscr_flag = 'Y' THEN
2549
2550 -- Partner code, Point 2 (add a logic to conditionall execute this loop only
2551 -- when partner is installed
2552 -- IF p_event_class_rec.record_flag = 'Y' AND
2553 -- p_event_class_rec.record_for_partners_flag = 'Y' THEN
2554 /*Dump into tax regime table only after existence check */
2555
2556 FOR dtl_tax_lines in detail_tax_lines_csr LOOP
2557 IF NOT ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.EXISTS(dtl_tax_lines.tax_regime_id) THEN
2558 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(dtl_tax_lines.tax_regime_id).tax_regime_id := dtl_tax_lines.tax_regime_id;
2559 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(dtl_tax_lines.tax_regime_id).tax_regime_code:= dtl_tax_lines.tax_regime_code;
2560 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(dtl_tax_lines.tax_regime_id).tax_provider_id := dtl_tax_lines.tax_provider_id;
2561 /* Bug 5557565 */
2562 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(dtl_tax_lines.tax_regime_id).effective_from := dtl_tax_lines.effective_from;
2563 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(dtl_tax_lines.tax_regime_id).effective_to := dtl_tax_lines.effective_to;
2564 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(dtl_tax_lines.tax_regime_id).partner_processing_flag := 'C';
2565 END IF;
2566 END LOOP;
2567 --END IF;
2568
2569 ZX_GLOBAL_STRUCTURES_PKG.init_trx_line_app_regime_tbl;
2570 END IF;
2571
2572 ZX_GLOBAL_STRUCTURES_PKG.LOC_GEOGRAPHY_INFO_TBL.DELETE;
2573 ZX_GLOBAL_STRUCTURES_PKG.g_registration_info_tbl.DELETE;
2574 ZX_GLOBAL_STRUCTURES_PKG.tax_calc_flag_tbl.DELETE;
2575 /*-----------------------------------------+
2576 | Loop for each transaction header |
2577 +-----------------------------------------*/
2578 FOR i IN 1..nvl(l_evnt_cls.event_class_code.LAST,0)
2579 LOOP
2580 --Bug 7650433
2581 select ZX_LINES_DET_FACTORS_S.nextval
2582 into l_event_id
2583 from dual;
2584 -- added for bug fix 5417887
2585 IF l_evnt_cls.event_class_code(i) = 'CREDIT_MEMO' THEN
2586 ZX_GLOBAL_STRUCTURES_PKG.g_credit_memo_exists_flg := 'Y';
2587 END IF;
2588
2589 BEGIN
2590 --SAVEPOINT Import_Doc_Rel_PVT;
2591 import_tax_pvt (l_evnt_cls,
2592 l_api_name,
2593 l_event_id,
2594 i,
2595 p_api_version,
2596 l_init_msg_list,
2597 p_commit,
2598 p_validation_level,
2599 l_return_status,
2600 x_msg_count,
2601 x_msg_data
2602 );
2603
2604 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2605 RAISE FND_API.G_EXC_ERROR;
2606 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2607 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2608 END IF;
2609
2610 EXCEPTION
2611 WHEN FND_API.G_EXC_ERROR THEN
2612 --ROLLBACK TO Import_Doc_Rel_PVT;
2613
2614 --Call API to dump into zx_errors_gt
2615 IF ( errors_tbl.application_id.LAST is NOT NULL) THEN
2616 DUMP_MSG;
2617 END IF;
2618 BEGIN
2619 SELECT 1 INTO l_dummy_number FROM ZX_ERRORS_GT WHERE ROWNUM = 1;
2623
2620 EXCEPTION WHEN OTHERS THEN
2621 l_dummy_number := null;
2622 END;
2624 IF l_dummy_number = 1 THEN
2625 x_return_status := FND_API.G_RET_STS_SUCCESS;
2626 ELSE
2627 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2628 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2629 END IF;
2630
2631 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
2632 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'Import Tax Pvt returned expected error');
2633 END IF;
2634 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2635 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2636 END;
2637
2638
2639 -- bug fix 5417887 begin 17-Aug-2006
2640 -- Following code for tail end services/TRL/ptnr sync code, is moved from calculte_tax_pvt
2641 -- and should be handled for each event_class_code. At present, all product integrations call etax
2642 -- for one event class at a time, hence we put these processed out of the event class loop.
2643 -- In the future, if there are cases that etax handle multiple event_class batch, we need to
2644 -- revisist the following code and change accordingly.
2645
2646 -- For furture LTE features, there are could cases that related documents was imported together
2647 -- with original document. For this case, we need to make sure the tail end service for the original
2648 -- docs must be handled before the calculation process of the related docs.
2649
2650 /*-----------------------------------------------------+
2651 | Call to eTax service Dump Detail Tax Lines Into GT|
2652 +-----------------------------------------------------*/
2653 ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(x_return_status => l_return_status );
2654
2655 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2656 x_return_status := l_return_status ;
2657 --DUMP_MSG;
2658 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2659 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt returned errors');
2660 END IF;
2661 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2662 END IF;
2663
2664 /*--------------------------------------------------+
2665 | Call to eTax Service Tax Lines Determination |
2666 +--------------------------------------------------*/
2667 ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(
2668 p_event_class_rec => zx_global_structures_pkg.g_event_class_rec,
2669 x_return_status => l_return_status
2670 );
2671
2672 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2673 x_return_status := l_return_status;
2674 --DUMP_MSG;
2675 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2676 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination returned errors');
2677 END IF;
2678 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2679 END IF;
2680
2681 /*--------------------------------------------------+
2682 | Call to eTax Service Manage Tax Lines |
2683 +--------------------------------------------------*/
2684 /*Bug 3649502 - Check for record flag before calling TRR service*/
2685 --IF zx_global_structures_pkg.g_event_class_rec.record_flag = 'Y' THEN
2686 l_record_tax_lines := ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.record_flag;
2687 IF ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.record_flag = 'Y' and
2688 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.quote_flag = 'Y' THEN
2689 l_record_tax_lines := 'N';
2690 END IF;
2691 IF l_record_tax_lines = 'Y' THEN
2692 ZX_TRL_PUB_PKG.manage_taxlines(p_event_class_rec =>zx_global_structures_pkg.g_event_class_rec,
2693 x_return_status =>l_return_status
2694 );
2695 END IF;
2696
2697 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2698 x_return_status := l_return_status;
2699 --DUMP_MSG;
2700 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2701 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxlines returned errors');
2702 END IF;
2703 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2704 END IF;
2705
2706 -- bug#6389189
2707 -- need to flush ZX_DETAIL_TAX_LINES_GT before the procedure
2708 -- import_tax_pvt is called for the next event class
2709
2710 -- Bug fix 7506576 Included additional condition flag quote_flag when
2711 -- deleting records from GT TABLES
2712
2713 --IF zx_global_structures_pkg.g_event_class_rec.record_flag = 'Y' AND ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.quote_flag = 'N'
2714 -- Reimplemented the fix done in bug#7506576
2715 IF l_record_tax_lines = 'Y' THEN
2716 DELETE FROM ZX_DETAIL_TAX_LINES_GT;
2717 END IF;
2718
2719
2720 /*******************************PARTNER CODE START****************************/
2721 IF zx_global_structures_pkg.g_ptnr_srvc_subscr_flag = 'Y' THEN
2722 ptnr_bulk_sync_calc_tax ( p_event_class_rec => zx_global_structures_pkg.g_event_class_rec ,
2723 x_return_status => l_return_status
2724 );
2725 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2726 x_return_status := l_return_status;
2727 --DUMP_MSG;
2728 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2729 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ptnr_bulk_sync_calc_tax returned errors');
2730 END IF;
2734 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2731 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2732 RAISE FND_API.G_EXC_ERROR;
2733 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2735 END IF;
2736 END IF;
2737 END IF;
2738 /*******************************PARTNER CODE END****************************/
2739
2740 -- bug fix 6824850
2741 ZX_GLOBAL_STRUCTURES_PKG.PTNR_TAX_REGIME_TBL.DELETE;
2742 ZX_GLOBAL_STRUCTURES_PKG.lte_trx_tbl.DELETE;
2743
2744 -- bug fix 5417887 end 17-Aug-2006
2745 END LOOP;--event_classes cursor
2746
2747 -- If there exists error messages in Error Table
2748 -- call DUMP_MSG to insert them into ZX_ERRORS_GT
2749 IF ZX_API_PUB.errors_tbl.trx_id.COUNT > 0 THEN
2750 DUMP_MSG;
2751 END IF;
2752
2753 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2754 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
2755 END IF;
2756
2757 l_end_time:=SYSDATE;
2758 l_total_time:=floor((l_end_time-l_start_time)*24)|| ':' ||
2759 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2760 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2761
2762 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2763 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2764 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2765 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
2766 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2767 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2768 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2769 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2770 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2771 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2772 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2773 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2774 END IF;
2775
2776 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2777 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
2778 FND_FILE.put_line(which => FND_FILE.LOG
2779 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Start Time:' ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2780 FND_FILE.put_line(which => FND_FILE.LOG
2781 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics End Time:' ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2782 FND_FILE.put_line(which => FND_FILE.LOG
2783 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Total Time:' ||l_total_time);
2784 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2785 FND_FILE.put_line(which => FND_FILE.LOG
2786 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2787 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2788 FND_FILE.put_line(which => FND_FILE.LOG
2789 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2790 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2791 FND_FILE.put_line(which => FND_FILE.Log
2792 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2793 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2794 FND_FILE.put_line(which => FND_FILE.LOG
2795 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2796 END IF;
2797
2798
2799
2800 EXCEPTION
2801 WHEN FND_API.G_EXC_ERROR THEN
2802 ROLLBACK TO Import_Document_PVT;
2803 --Close all open cursors
2804 x_return_status := FND_API.G_RET_STS_ERROR;
2805 DUMP_MSG;
2806 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
2807 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
2808 END IF;
2809
2810 l_end_time:=SYSDATE;
2811 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
2812 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2813 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2814 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2815 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2816 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2817 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
2818 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2819 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2820 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2821 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2822 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2826 END IF;
2823 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2824 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2825 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2827
2828 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2829 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
2830 FND_FILE.put_line(which => FND_FILE.LOG
2831 ,buff => 'ZX_API_PUB.import_document_with_tax.Exception FND_API.G_EXC_ERROR');
2832 FND_FILE.put_line(which => FND_FILE.LOG
2833 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Start Time:' ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2834 FND_FILE.put_line(which => FND_FILE.LOG
2835 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics End Time:' ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2836 FND_FILE.put_line(which => FND_FILE.LOG
2837 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Total Time:' ||l_total_time);
2838 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2839 FND_FILE.put_line(which => FND_FILE.LOG
2840 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2841 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2842 FND_FILE.put_line(which => FND_FILE.LOG
2843 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2844 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2845 FND_FILE.put_line(which => FND_FILE.Log
2846 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2847 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2848 FND_FILE.put_line(which => FND_FILE.LOG
2849 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2850 END IF;
2851
2852
2853 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2854 ROLLBACK TO Import_Document_PVT;
2855 --Close all open cursors
2856 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2857 DUMP_MSG;
2858 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
2859 FND_MSG_PUB.Add;
2860 /*---------------------------------------------------------+
2861 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
2862 | in the message stack. If there is only one message in |
2863 | the stack it retrieves this message |
2864 +---------------------------------------------------------*/
2865 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2866 p_count => x_msg_count,
2867 p_data => x_msg_data
2868 );
2869 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
2870 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
2871 END IF;
2872
2873 l_end_time:=SYSDATE;
2874 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
2875 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2876 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2877
2878 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2879 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2880 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2881 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
2882 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2883 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2884 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2885 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2886 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2887 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2888 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2889 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2890 END IF;
2891
2892 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2893 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
2894 FND_FILE.put_line(which => FND_FILE.LOG
2895 ,buff => 'ZX_API_PUB.import_document_with_tax.Exception FND_API.G_EXC_UNEXPECTED_ERROR');
2896 FND_FILE.put_line(which => FND_FILE.LOG
2897 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Start Time:' ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2898 FND_FILE.put_line(which => FND_FILE.LOG
2899 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics End Time:' ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2900 FND_FILE.put_line(which => FND_FILE.LOG
2901 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Total Time:' ||l_total_time);
2902 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2903 FND_FILE.put_line(which => FND_FILE.LOG
2904 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2905 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2906 FND_FILE.put_line(which => FND_FILE.LOG
2907 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2908 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2909 FND_FILE.put_line(which => FND_FILE.Log
2910 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2911 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2912 FND_FILE.put_line(which => FND_FILE.LOG
2913 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2914 END IF;
2915
2916 WHEN OTHERS THEN
2917 ROLLBACK TO Import_Document_PVT;
2918 --Close all open cursors
2919 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2920 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
2921 FND_MSG_PUB.Add;
2922 /*---------------------------------------------------------+
2923 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
2924 | in the message stack. If there is only one message in |
2925 | the stack it retrieves this message |
2926 +---------------------------------------------------------*/
2927 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2928 p_count => x_msg_count,
2929 p_data => x_msg_data
2930 );
2931
2932 l_end_time:=SYSDATE;
2933 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
2934 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
2935 mod(floor((l_end_time-l_start_time)*24*60*60),60);
2936 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
2937 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
2938 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2939 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2940 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
2941 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2942 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2943 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2944 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2945 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2946 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2947 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2948 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2949 END IF;
2950
2951 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2952 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
2953 FND_FILE.put_line(which => FND_FILE.LOG
2954 ,buff => 'ZX_API_PUB.import_document_with_tax.Exception OTHERS');
2955 FND_FILE.put_line(which => FND_FILE.LOG
2956 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Start Time:' ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
2957 FND_FILE.put_line(which => FND_FILE.LOG
2958 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics End Time:' ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
2959 FND_FILE.put_line(which => FND_FILE.LOG
2960 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics Total Time:' ||l_total_time);
2961 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
2962 FND_FILE.put_line(which => FND_FILE.LOG
2963 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
2964 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
2965 FND_FILE.put_line(which => FND_FILE.LOG
2966 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
2967 SELECT COUNT(*) INTO l_dummy_number FROM ZX_IMPORT_TAX_LINES_GT;
2968 FND_FILE.put_line(which => FND_FILE.Log
2969 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_IMPORT_TAX_LINES_GT :'||l_dummy_number);
2970 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_TAX_LINK_GT;
2971 FND_FILE.put_line(which => FND_FILE.LOG
2972 ,buff => 'ZX_API_PUB.import_document_with_tax.Statistics: Number of records in ZX_TRX_TAX_LINK_GT :'||l_dummy_number);
2973 END IF;
2974
2975 END import_document_with_tax;
2976
2977 /* ======================================================================*
2978 | PROCEDURE synchronize_tax_repository : Updates tax repository |
2979 | There exists only pl/sql version for API |
2980 * ======================================================================*/
2981
2982 PROCEDURE synchronize_tax_repository
2983 (p_api_version IN NUMBER,
2984 p_init_msg_list IN VARCHAR2,
2985 p_commit IN VARCHAR2,
2986 p_validation_level IN NUMBER,
2987 x_return_status OUT NOCOPY VARCHAR2,
2988 x_msg_count OUT NOCOPY NUMBER,
2989 x_msg_data OUT NOCOPY VARCHAR2,
2990 p_sync_trx_rec IN sync_trx_rec_type,
2991 p_sync_trx_lines_tbl IN sync_trx_lines_tbl_type%type
2992 ) IS
2993 l_api_name CONSTANT VARCHAR2(30) := 'SYNCHRONIZE_TAX_REPOSITORY';
2994 l_api_version CONSTANT NUMBER := 1.0;
2995 l_return_status VARCHAR2(30);
2996 l_index BINARY_INTEGER;
2997 l_event_id NUMBER;
2998 l_event_class_rec event_class_rec_type;
2999 l_init_msg_list VARCHAR2(1);
3000 l_upg_trx_info_rec ZX_ON_FLY_TRX_UPGRADE_PKG.zx_upg_trx_info_rec_type;
3001 l_start_time DATE;
3002 l_end_time DATE;
3003 l_total_time VARCHAR2(15);
3004 BEGIN
3005 l_start_time:=SYSDATE;
3006
3007 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3008 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
3009 END IF;
3010
3011
3012 /*--------------------------------------------------+
3013 | Standard start of API savepoint |
3014 +--------------------------------------------------*/
3015 SAVEPOINT Synchronize_tax_PVT;
3016
3017 /*--------------------------------------------------+
3018 | Standard call to check for call compatibility |
3019 +--------------------------------------------------*/
3020
3021 IF NOT FND_API.Compatible_API_Call(l_api_version,
3022 p_api_version,
3023 l_api_name,
3024 G_PKG_NAME
3025 ) THEN
3026 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3027 END IF;
3028
3029 /*--------------------------------------------------------------+
3030 | Initialize message list if p_init_msg_list is set to TRUE |
3031 +--------------------------------------------------------------*/
3032 IF p_init_msg_list is null THEN
3033 l_init_msg_list := FND_API.G_FALSE;
3034 ELSE
3035 l_init_msg_list := p_init_msg_list;
3036 END IF;
3037
3038 IF FND_API.to_Boolean(l_init_msg_list) THEN
3039 FND_MSG_PUB.initialize;
3040 END IF;
3041
3042 /*-----------------------------------------+
3043 | Initialize return status to SUCCESS |
3044 +-----------------------------------------*/
3045
3046 x_return_status := FND_API.G_RET_STS_SUCCESS;
3047
3048 /*-----------------------------------------+
3049 | Populate Global Variable |
3050 +-----------------------------------------*/
3051
3052 G_PUB_SRVC := l_api_name;
3053 G_DATA_TRANSFER_MODE := 'PLS';
3054 G_EXTERNAL_API_CALL := 'N';
3055
3056 /*------------------------------------------+
3057 |Populate the event class record |
3058 +-----------------------------------------*/
3059 l_event_class_rec.APPLICATION_ID := p_sync_trx_rec.APPLICATION_ID;
3060 l_event_class_rec.ENTITY_CODE := p_sync_trx_rec.ENTITY_CODE;
3061 l_event_class_rec.EVENT_CLASS_CODE := p_sync_trx_rec.EVENT_CLASS_CODE;
3062 l_event_class_rec.EVENT_TYPE_CODE := p_sync_trx_rec.EVENT_TYPE_CODE;
3063 l_event_class_rec.TRX_ID := p_sync_trx_rec.TRX_ID;
3064 l_event_class_rec.record_flag := 'Y';
3065 l_event_class_rec.record_for_partners_flag := 'Y';
3066
3067 BEGIN
3068
3069 SELECT prod_family_grp_code into l_event_class_rec.prod_family_grp_code
3070 FROM
3071 zx_evnt_cls_mappings
3072 WHERE
3073 application_id = p_sync_trx_rec.application_id
3074 AND entity_code = p_sync_trx_rec.entity_code
3075 AND event_class_code = p_sync_trx_rec.event_class_code;
3076
3077 EXCEPTION
3078 WHEN OTHERS THEN
3079 --NULL;
3080 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3081 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Incorrect event_class_code passed: ' || p_sync_trx_rec.event_class_code);
3082 END IF;
3083 RETURN;
3084 END;
3085
3086
3087
3088 BEGIN
3089
3090 SELECT tax_event_type_code into l_event_class_rec.tax_event_type_code
3091 FROM
3092 ZX_EVNT_TYP_MAPPINGS
3093 WHERE
3094 application_id = p_sync_trx_rec.application_id
3095 AND entity_code = p_sync_trx_rec.entity_code
3096 AND event_class_code = p_sync_trx_rec.event_class_code
3097 AND event_type_code = p_sync_trx_rec.event_type_code;
3098
3099 EXCEPTION
3100 WHEN OTHERS THEN
3101 --NULL;
3102 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3106 END;
3103 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Incorrect event_type_code passed: ' || p_sync_trx_rec.event_type_code);
3104 END IF;
3105 RETURN;
3107
3108 BEGIN
3109
3110 SELECT distinct internal_organization_id into
3111 l_event_class_rec.internal_organization_id
3112 FROM
3113 zx_lines_det_factors
3114 WHERE
3115 application_id = p_sync_trx_rec.application_id
3116 AND entity_code = p_sync_trx_rec.entity_code
3117 AND event_class_code = p_sync_trx_rec.event_class_code
3118 AND trx_id = p_sync_trx_rec.trx_id;
3119
3120 EXCEPTION
3121 WHEN OTHERS THEN
3122 NULL;
3123 END;
3124
3125 /*--------------------------------------------------+
3126 | Update zx_lines_det_factors |
3127 +--------------------------------------------------*/
3128 /*Retrieve the sequence id since it has to be same for all updated rows*/
3129 select ZX_LINES_DET_FACTORS_S.nextval
3130 INTO l_event_class_rec.event_id
3131 FROM dual;
3132
3133 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3134 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3135 'application_id: '||to_char(p_sync_trx_rec.application_id)||
3136 ', entity_code: '||p_sync_trx_rec.entity_code||
3137 ', event_class_code: '||p_sync_trx_rec.event_class_code||
3138 ', event_type_code: '||p_sync_trx_rec.event_type_code||
3139 ', tax_event_type_code: '||l_event_class_rec.tax_event_type_code||
3140 ', trx_id: '||to_char(p_sync_trx_rec.trx_id)||
3141 ', trx_number: '||p_sync_trx_rec.trx_number||
3142 ', trx_description: '||p_sync_trx_rec.trx_description||
3143 ', trx_communicated_date: '||to_char(p_sync_trx_rec.trx_communicated_date)||
3144 ', batch_source_id: '||to_char(p_sync_trx_rec.batch_source_id)||
3145 ', batch_source_name: '||p_sync_trx_rec.batch_source_name||
3146 ', doc_seq_id: '||to_char(p_sync_trx_rec.doc_seq_id)||
3147 ', doc_seq_name: '||p_sync_trx_rec.doc_seq_name||
3148 ', doc_seq_name: '||p_sync_trx_rec.doc_seq_value||
3149 ', trx_due_date: '||to_char(p_sync_trx_rec.trx_due_date)||
3150 ', trx_type_description: '||to_char(p_sync_trx_rec.trx_type_description)||
3151 ', supplier_tax_invoice_number: '||p_sync_trx_rec.supplier_tax_invoice_number||
3152 ', supplier_exchange_rate: '||to_char(p_sync_trx_rec.supplier_exchange_rate)||
3153 ', supplier_tax_invoice_date: '||to_char(p_sync_trx_rec.supplier_tax_invoice_date)||
3154 ', tax_invoice_date: '||to_char(p_sync_trx_rec.tax_invoice_date)||
3155 ', tax_invoice_number: '||p_sync_trx_rec.tax_invoice_number||
3156 ', port_of_entry_code: '||p_sync_trx_rec.port_of_entry_code);
3157
3158 FOR i IN 1..nvl(p_sync_trx_lines_tbl.APPLICATION_ID.LAST,-99)
3159 LOOP
3160 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3161 'trx_line_id: '||to_char(p_sync_trx_lines_tbl.trx_line_id(i))||
3162 ', trx_level_type: '||p_sync_trx_lines_tbl.trx_level_type(i)||
3163 ', trx_waybill_number: '||p_sync_trx_lines_tbl.trx_waybill_number(i)||
3164 ', trx_line_description: '||p_sync_trx_lines_tbl.trx_line_description(i)||
3165 ', product_description: '||p_sync_trx_lines_tbl.product_description(i)||
3166 ', trx_line_gl_date: '||to_char(p_sync_trx_lines_tbl.trx_line_gl_date(i))||
3167 ', merchant_party_name: '||p_sync_trx_lines_tbl.merchant_party_name(i)||
3168 ', merchant_party_document_number: '||p_sync_trx_lines_tbl.merchant_party_document_number(i)||
3169 ', merchant_party_reference: '||p_sync_trx_lines_tbl.merchant_party_reference(i)||
3170 ', merchant_party_taxpayer_id: '||p_sync_trx_lines_tbl.merchant_party_taxpayer_id(i)||
3171 ', merchant_party_tax_reg_number: '||p_sync_trx_lines_tbl.merchant_party_tax_reg_number(i)||
3172 ', asset_number: '||to_char(p_sync_trx_lines_tbl.asset_number(i)));
3173 END LOOP;
3174 END IF;
3175
3176 /* Fixed as part of 6826754 */
3177 UPDATE ZX_LINES
3178 SET TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER
3179 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3180 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3181 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3182 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3183
3184 IF (l_event_class_rec.prod_family_grp_code = 'P2P') THEN
3185 UPDATE ZX_LINES_SUMMARY
3186 SET TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER
3187 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3188 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3189 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3190 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3191
3192 UPDATE ZX_REC_NREC_DIST
3193 SET TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER
3194 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3195 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3196 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3197 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3198 END IF;
3199
3200 /* update the header level attributes*/
3201 UPDATE ZX_LINES_DET_FACTORS SET
3202 EVENT_ID = l_event_class_rec.event_id,
3203 --EVENT_TYPE_CODE = p_sync_trx_rec.EVENT_TYPE_CODE, /*bug 3922983*/
3204 TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER,
3205 TRX_DESCRIPTION = p_sync_trx_rec.TRX_DESCRIPTION,
3206 TRX_COMMUNICATED_DATE = p_sync_trx_rec.TRX_COMMUNICATED_DATE,
3207 BATCH_SOURCE_ID = p_sync_trx_rec.BATCH_SOURCE_ID,
3208 BATCH_SOURCE_NAME = p_sync_trx_rec.BATCH_SOURCE_NAME,
3209 DOC_SEQ_ID = p_sync_trx_rec.DOC_SEQ_ID,
3210 DOC_SEQ_NAME = p_sync_trx_rec.DOC_SEQ_NAME,
3211 DOC_SEQ_VALUE = p_sync_trx_rec.DOC_SEQ_VALUE,
3212 TRX_DUE_DATE = p_sync_trx_rec.TRX_DUE_DATE,
3213 TRX_TYPE_DESCRIPTION = p_sync_trx_rec.TRX_TYPE_DESCRIPTION,
3214 SUPPLIER_TAX_INVOICE_NUMBER = decode(p_sync_trx_rec.SUPPLIER_TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,SUPPLIER_TAX_INVOICE_NUMBER,p_sync_trx_rec.SUPPLIER_TAX_INVOICE_NUMBER), --Bug 5910475
3215 SUPPLIER_TAX_INVOICE_DATE = decode(p_sync_trx_rec.SUPPLIER_TAX_INVOICE_DATE,FND_API.G_MISS_DATE,SUPPLIER_TAX_INVOICE_DATE,p_sync_trx_rec.SUPPLIER_TAX_INVOICE_DATE), --Bug 5910475
3216 SUPPLIER_EXCHANGE_RATE = decode(p_sync_trx_rec.SUPPLIER_EXCHANGE_RATE,FND_API.G_MISS_NUM,SUPPLIER_EXCHANGE_RATE,p_sync_trx_rec.SUPPLIER_EXCHANGE_RATE), --Bug 5910475
3217 TAX_INVOICE_DATE = decode(p_sync_trx_rec.TAX_INVOICE_DATE,FND_API.G_MISS_DATE,TAX_INVOICE_DATE,p_sync_trx_rec.TAX_INVOICE_DATE), --Bug 5910475
3218 TAX_INVOICE_NUMBER = decode(p_sync_trx_rec.TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,TAX_INVOICE_NUMBER,p_sync_trx_rec.TAX_INVOICE_NUMBER), --Bug 5910475
3219 PORT_OF_ENTRY_CODE = decode(p_sync_trx_rec.PORT_OF_ENTRY_CODE,FND_API.G_MISS_CHAR,PORT_OF_ENTRY_CODE,p_sync_trx_rec.PORT_OF_ENTRY_CODE) , --Bug 5910475
3220 APPLICATION_DOC_STATUS = decode(p_sync_trx_rec.APPLICATION_DOC_STATUS,FND_API.G_MISS_CHAR,APPLICATION_DOC_STATUS,p_sync_trx_rec.APPLICATION_DOC_STATUS) --Bug 5910475
3221 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3222 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3223 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3224 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3225
3226 --Bugfix 4486946 -Call on the fly upgrade if the transaction if not found
3227 IF sql%notfound THEN
3228 l_upg_trx_info_rec.application_id := l_event_class_rec.application_id;
3229 l_upg_trx_info_rec.entity_code := l_event_class_rec.entity_code;
3230 l_upg_trx_info_rec.event_class_code := l_event_class_rec.event_class_code;
3231 l_upg_trx_info_rec.trx_id := l_event_class_rec.trx_id;
3232 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(p_upg_trx_info_rec => l_upg_trx_info_rec,
3233 x_return_status => l_return_status
3234 );
3235 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3236 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3237 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly returned errors');
3238 END IF;
3239 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3240 RAISE FND_API.G_EXC_ERROR;
3241 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3242 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3243 END IF;
3244 END IF;
3245 /* update the header level attributes*/
3246 UPDATE ZX_LINES_DET_FACTORS SET
3247 EVENT_ID = l_event_class_rec.event_id,
3248 --EVENT_TYPE_CODE = p_sync_trx_rec.EVENT_TYPE_CODE, /*bug 3922983*/
3249 TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER,
3250 TRX_DESCRIPTION = p_sync_trx_rec.TRX_DESCRIPTION,
3251 TRX_COMMUNICATED_DATE = p_sync_trx_rec.TRX_COMMUNICATED_DATE,
3252 BATCH_SOURCE_ID = p_sync_trx_rec.BATCH_SOURCE_ID,
3253 BATCH_SOURCE_NAME = p_sync_trx_rec.BATCH_SOURCE_NAME,
3254 DOC_SEQ_ID = p_sync_trx_rec.DOC_SEQ_ID,
3255 DOC_SEQ_NAME = p_sync_trx_rec.DOC_SEQ_NAME,
3256 DOC_SEQ_VALUE = p_sync_trx_rec.DOC_SEQ_VALUE,
3257 TRX_DUE_DATE = p_sync_trx_rec.TRX_DUE_DATE,
3258 TRX_TYPE_DESCRIPTION = p_sync_trx_rec.TRX_TYPE_DESCRIPTION,
3259 SUPPLIER_TAX_INVOICE_NUMBER = decode(p_sync_trx_rec.SUPPLIER_TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,SUPPLIER_TAX_INVOICE_NUMBER,p_sync_trx_rec.SUPPLIER_TAX_INVOICE_NUMBER), --Bug 5910475
3260 SUPPLIER_TAX_INVOICE_DATE = decode(p_sync_trx_rec.SUPPLIER_TAX_INVOICE_DATE,FND_API.G_MISS_DATE,SUPPLIER_TAX_INVOICE_DATE,p_sync_trx_rec.SUPPLIER_TAX_INVOICE_DATE), --Bug 5910475
3261 SUPPLIER_EXCHANGE_RATE = decode(p_sync_trx_rec.SUPPLIER_EXCHANGE_RATE,FND_API.G_MISS_NUM,SUPPLIER_EXCHANGE_RATE,p_sync_trx_rec.SUPPLIER_EXCHANGE_RATE), --Bug 5910475
3262 TAX_INVOICE_DATE = decode(p_sync_trx_rec.TAX_INVOICE_DATE,FND_API.G_MISS_DATE,TAX_INVOICE_DATE,p_sync_trx_rec.TAX_INVOICE_DATE), --Bug 5910475
3263 TAX_INVOICE_NUMBER = decode(p_sync_trx_rec.TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,TAX_INVOICE_NUMBER,p_sync_trx_rec.TAX_INVOICE_NUMBER), --Bug 5910475
3264 PORT_OF_ENTRY_CODE = decode(p_sync_trx_rec.PORT_OF_ENTRY_CODE,FND_API.G_MISS_CHAR,PORT_OF_ENTRY_CODE,p_sync_trx_rec.PORT_OF_ENTRY_CODE) , --Bug 5910475
3265 APPLICATION_DOC_STATUS = decode(p_sync_trx_rec.APPLICATION_DOC_STATUS,FND_API.G_MISS_CHAR,APPLICATION_DOC_STATUS,p_sync_trx_rec.APPLICATION_DOC_STATUS) --Bug 5910475
3266 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3267 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3268 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3269 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3270
3271 /* Fixed as part of 6826754 */
3272 UPDATE ZX_LINES
3273 SET TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER
3274 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3275 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3276 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3277 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3278
3279 IF (l_event_class_rec.prod_family_grp_code = 'P2P') THEN
3280 UPDATE ZX_LINES_SUMMARY
3281 SET TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER
3282 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3283 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3284 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3285 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3286
3287 UPDATE ZX_REC_NREC_DIST
3288 SET TRX_NUMBER = p_sync_trx_rec.TRX_NUMBER
3289 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3290 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3291 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3292 AND TRX_ID = p_sync_trx_rec.TRX_ID;
3293 END IF;
3294
3295 END IF; --sql%notfound
3296 --Bugfix 4486946 - on-the-fly upgrade end
3297
3298 /* update the line level attributes if passed*/
3299 IF (p_sync_trx_lines_tbl.APPLICATION_ID.EXISTS(1)) THEN
3300 FORALL i IN 1..nvl(p_sync_trx_lines_tbl.APPLICATION_ID.LAST,-99)
3301 UPDATE ZX_LINES_DET_FACTORS SET
3302 TRX_LEVEL_TYPE = p_sync_trx_lines_tbl.TRX_LEVEL_TYPE(i),
3303 TRX_LINE_ID = p_sync_trx_lines_tbl.TRX_LINE_ID(i),
3304 TRX_WAYBILL_NUMBER = p_sync_trx_lines_tbl.TRX_WAYBILL_NUMBER(i),
3305 TRX_LINE_DESCRIPTION = p_sync_trx_lines_tbl.TRX_LINE_DESCRIPTION(i),
3306 PRODUCT_DESCRIPTION = p_sync_trx_lines_tbl.PRODUCT_DESCRIPTION(i),
3307 TRX_LINE_GL_DATE = p_sync_trx_lines_tbl.TRX_LINE_GL_DATE(i),
3308 MERCHANT_PARTY_NAME = p_sync_trx_lines_tbl.MERCHANT_PARTY_NAME(i),
3309 MERCHANT_PARTY_DOCUMENT_NUMBER = p_sync_trx_lines_tbl.MERCHANT_PARTY_DOCUMENT_NUMBER(i),
3310 MERCHANT_PARTY_REFERENCE = p_sync_trx_lines_tbl.MERCHANT_PARTY_REFERENCE(i),
3311 MERCHANT_PARTY_TAXPAYER_ID = p_sync_trx_lines_tbl.MERCHANT_PARTY_TAXPAYER_ID(i),
3312 MERCHANT_PARTY_TAX_REG_NUMBER = p_sync_trx_lines_tbl.MERCHANT_PARTY_TAX_REG_NUMBER(i),
3313 ASSET_NUMBER = p_sync_trx_lines_tbl.ASSET_NUMBER(i)
3314 WHERE APPLICATION_ID = p_sync_trx_rec.APPLICATION_ID
3315 AND ENTITY_CODE = p_sync_trx_rec.ENTITY_CODE
3316 AND EVENT_CLASS_CODE = p_sync_trx_rec.EVENT_CLASS_CODE
3317 AND TRX_ID = p_sync_trx_rec.TRX_ID
3318 AND TRX_LINE_ID = p_sync_trx_lines_tbl.TRX_LINE_ID(i)
3319 AND TRX_LEVEL_TYPE = p_sync_trx_lines_tbl.TRX_LEVEL_TYPE(i);
3320 END IF;
3321
3322
3323 /*********Partner code Start************************/
3324 ZX_SRVC_TYP_PKG.synchronize_tax(l_event_class_rec,
3325 l_return_status
3326 );
3327 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3328 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3329 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.synchronize_tax returned errors');
3330 END IF;
3331 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3332 RAISE FND_API.G_EXC_ERROR;
3333 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3334 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3335 END IF;
3336 END IF;
3337
3338 /********Partner Code End *************************/
3339
3340 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3341 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()-');
3342 END IF;
3343
3347 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3344 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3345 l_end_time:=SYSDATE;
3346 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3348 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3349 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3350 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3351 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3352 END IF;
3353 EXCEPTION
3354 WHEN FND_API.G_EXC_ERROR THEN
3355 ROLLBACK TO Synchronize_tax_PVT;
3356 x_return_status := FND_API.G_RET_STS_ERROR ;
3357 DUMP_MSG;
3358 /*---------------------------------------------------------+
3359 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3360 | in the message stack. If there is only one message in |
3361 | the stack it retrieves this message |
3362 +---------------------------------------------------------*/
3363 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3364 p_count => x_msg_count,
3365 p_data => x_msg_data
3366 );
3367 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3368 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3369 END IF;
3370 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3371 l_end_time:=SYSDATE;
3372 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3373 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3374 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3375 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3376 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3377 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3378 END IF;
3379 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3380 ROLLBACK TO Synchronize_tax_PVT;
3381 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3382 DUMP_MSG;
3383 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3384 FND_MSG_PUB.Add;
3385 /*---------------------------------------------------------+
3386 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3387 | in the message stack. If there is only one message in |
3388 | the stack it retrieves this message |
3389 +---------------------------------------------------------*/
3390 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3391 p_count => x_msg_count,
3392 p_data => x_msg_data
3393 );
3394 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3395 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3396 END IF;
3397 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3398 l_end_time:=SYSDATE;
3399 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3400 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3401 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3402 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3403 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3404 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3405 END IF;
3406
3407 WHEN OTHERS THEN
3408 ROLLBACK TO Synchronize_tax_PVT;
3409 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3410 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3411 FND_MSG_PUB.Add;
3412 /*---------------------------------------------------------+
3413 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3414 | in the message stack. If there is only one message in |
3415 | the stack it retrieves this message |
3416 +---------------------------------------------------------*/
3417 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3418 p_count => x_msg_count,
3419 p_data => x_msg_data
3420 );
3421 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3422 l_end_time:=SYSDATE;
3423 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3424 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3425 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3426 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3427 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3428 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3429 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3430 END IF;
3431
3432
3433 END synchronize_tax_repository;
3434
3435 /* ======================================================================*
3436 | PROCEDURE override_tax : Overrides tax lines |
3437 | There exists only pl/sql version for this API |
3438 * ======================================================================*/
3439
3440 PROCEDURE Override_tax
3441 ( p_api_version IN NUMBER,
3442 p_init_msg_list IN VARCHAR2,
3443 p_commit IN VARCHAR2,
3444 p_validation_level IN NUMBER,
3445 x_return_status OUT NOCOPY VARCHAR2,
3446 x_msg_count OUT NOCOPY NUMBER,
3447 x_msg_data OUT NOCOPY VARCHAR2,
3448 p_transaction_rec IN transaction_rec_type,
3449 p_override_level IN VARCHAR2,
3450 p_event_id IN NUMBER
3451 ) IS
3452 l_api_name CONSTANT VARCHAR2(30) := 'OVERRIDE_TAX';
3453 l_api_version CONSTANT NUMBER := 1.0;
3454 l_return_status VARCHAR2(30);
3455 l_init_msg_list VARCHAR2(1);
3456 l_event_class_rec event_class_rec_type;
3457 l_transaction_header_rec transaction_header_rec_type;
3458 l_context_info_rec context_info_rec_type;
3459 l_index BINARY_INTEGER;
3460 l_record_tax_lines VARCHAR2(1);
3461
3462 CURSOR get_trx_date_csr
3463 (c_application_id zx_lines_det_factors.application_id%TYPE,
3464 c_entity_code zx_lines_det_factors.entity_code%TYPE,
3465 c_event_class_code zx_lines_det_factors.event_class_code%TYPE,
3466 c_trx_id zx_lines_det_factors.trx_id%TYPE,
3467 c_event_id zx_lines_det_factors.event_id%TYPE
3468 ) IS
3469 SELECT trx_date,
3470 related_doc_date,
3471 provnl_tax_determination_date
3472 FROM zx_lines_det_factors
3473 WHERE application_id = c_application_id
3474 AND entity_code = c_entity_code
3475 AND event_class_code = c_event_class_code
3476 AND trx_id = c_trx_id
3477 AND event_id = c_event_id
3478 AND ROWNUM = 1;
3479
3480 l_start_time DATE;
3481 l_end_time DATE;
3482 l_total_time VARCHAR2(15);
3483
3484 BEGIN
3485 l_start_time:= SYSDATE;
3486 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3487 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
3488 END IF;
3489
3490
3491 /*--------------------------------------------------+
3492 | Standard start of API savepoint |
3493 +--------------------------------------------------*/
3494 SAVEPOINT Override_Tax_PVT;
3495
3496 /*--------------------------------------------------+
3497 | Standard call to check for call compatibility |
3498 +--------------------------------------------------*/
3499
3500 IF NOT FND_API.Compatible_API_Call(l_api_version,
3501 p_api_version,
3502 l_api_name,
3503 G_PKG_NAME
3504 ) THEN
3505 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3506 END IF;
3507
3508
3509 /*--------------------------------------------------------------+
3510 | Initialize message list if p_init_msg_list is set to TRUE |
3511 +--------------------------------------------------------------*/
3512 IF p_init_msg_list is null THEN
3513 l_init_msg_list := FND_API.G_FALSE;
3514 ELSE
3515 l_init_msg_list := p_init_msg_list;
3516 END IF;
3517
3518 IF FND_API.to_Boolean(l_init_msg_list) THEN
3519 FND_MSG_PUB.initialize;
3520 END IF;
3521
3522 /*-----------------------------------------+
3523 | Initialize return status to SUCCESS |
3524 +-----------------------------------------*/
3525
3526 x_return_status := FND_API.G_RET_STS_SUCCESS;
3527
3528 /*-----------------------------------------+
3529 | Populate Global Variable |
3530 +-----------------------------------------*/
3531
3532 G_PUB_SRVC := l_api_name;
3533 G_DATA_TRANSFER_MODE := 'PLS';
3534 G_EXTERNAL_API_CALL := 'N';
3535
3536 --Call TDS process to reset the session for previous override tax calls if any
3537 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (p_event_class_rec => NULL,
3538 p_init_level => 'SESSION',
3539 x_return_status => l_return_status
3540 );
3541
3542 set_ptnr_srvc_subscr_flag (p_event_class_rec => NULL,
3543 x_return_status => l_return_status
3544 );
3545
3546 ZX_GLOBAL_STRUCTURES_PKG.LOC_GEOGRAPHY_INFO_TBL.DELETE;
3547 ZX_GLOBAL_STRUCTURES_PKG.g_registration_info_tbl.DELETE;
3548 /*------------------------------------------------------+
3549 | Copy to Event Class Record |
3550 +------------------------------------------------------*/
3551 l_event_class_rec.event_id := p_event_id;
3552 l_event_class_rec.INTERNAL_ORGANIZATION_ID := p_transaction_rec.INTERNAL_ORGANIZATION_ID;
3553 l_event_class_rec.APPLICATION_ID := p_transaction_rec.APPLICATION_ID;
3554 l_event_class_rec.ENTITY_CODE := p_transaction_rec.ENTITY_CODE;
3555 l_event_class_rec.EVENT_CLASS_CODE := p_transaction_rec.EVENT_CLASS_CODE;
3556 l_event_class_rec.EVENT_TYPE_CODE := p_transaction_rec.EVENT_TYPE_CODE;
3557 l_event_class_rec.TRX_ID := p_transaction_rec.TRX_ID;
3558
3559 -- bug 5684123
3560 --
3561 OPEN get_trx_date_csr
3562 (l_event_class_rec.application_id,
3563 l_event_class_rec.entity_code,
3564 l_event_class_rec.event_class_code,
3565 l_event_class_rec.trx_id,
3566 l_event_class_rec.event_id);
3567 FETCH get_trx_date_csr INTO l_event_class_rec.trx_date,
3568 l_event_class_rec.rel_doc_date,
3569 l_event_class_rec.provnl_tax_determination_date;
3570 CLOSE get_trx_date_csr;
3571
3572 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3573 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3574 'application_id: '||to_char(l_event_class_rec.application_id)||
3575 ', entity_code: '||l_event_class_rec.entity_code||
3576 ', event_class_code: '||l_event_class_rec.event_class_code||
3577 ', event_type_code: '||l_event_class_rec.event_type_code||
3578 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
3579 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id) ||
3580 ', trx_date: '||to_char(l_event_class_rec.trx_date, 'MM-DD-YYYY'));
3581 END IF;
3582
3583 IF l_event_class_rec.event_class_code = 'CREDIT_MEMO' THEN
3584 ZX_GLOBAL_STRUCTURES_PKG.g_credit_memo_exists_flg := 'Y';
3585 END IF;
3586
3587 /*------------------------------------------------------+
3588 | Validate and Initializate parameters for Override |
3589 | tax |
3590 +------------------------------------------------------*/
3591 ZX_VALID_INIT_PARAMS_PKG.override_tax(x_return_status => l_return_status ,
3592 p_override => p_override_level,
3593 p_event_class_rec => l_event_class_rec,
3594 p_trx_rec => p_transaction_rec
3595 );
3596
3597 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3598 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3599 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.override_tax returned errors');
3600 END IF;
3601 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3602 RAISE FND_API.G_EXC_ERROR;
3603 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3604 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3605 END IF;
3606 END IF;
3607
3608 /*===============================================================================*
3609 |Initialize the global structures/global temp tables owned by TDM at header level |
3610 *================================================================================*/
3611 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (l_event_class_rec,
3612 'HEADER',
3613 l_return_status
3614 );
3615
3616 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3617 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3618 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.initialize returned errors');
3619 END IF;
3620 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3621 RAISE FND_API.G_EXC_ERROR;
3622 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3623 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3624 END IF;
3625 END IF;
3626
3627 /*--------------------------------------------------+
3628 | Call Service Type Override Summary or Override |
3629 | Detail Tax Lines depending of the overriding |
3630 | level. |
3631 +--------------------------------------------------*/
3632 ZX_SRVC_TYP_PKG.override_tax_lines(p_event_class_rec => l_event_class_rec,
3633 p_override_level => p_override_level,
3634 x_return_status => l_return_status
3635 );
3636 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3637 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3638 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.initialize returned errors');
3639 END IF;
3640 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3641 RAISE FND_API.G_EXC_ERROR;
3642 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3643 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3644 END IF;
3645 END IF;
3646
3647 /*-----------------------------------------------------+
3648 | Call to eTax service Dump Detail Tax Lines Into GT|
3649 +-----------------------------------------------------*/
3650 ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(x_return_status => l_return_status);
3651
3652 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3653 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3654 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt returned errors');
3655 END IF;
3656 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3657 RAISE FND_API.G_EXC_ERROR;
3658 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3659 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3660 END IF;
3661 END IF;
3662
3663 /*--------------------------------------------------+
3664 | Call to eTax Service Tax Lines Determination |
3665 +--------------------------------------------------*/
3666 ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(p_event_class_rec => l_event_class_rec,
3667 x_return_status => l_return_status
3668 );
3669
3670 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3671 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3672 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination returned errors');
3673 END IF;
3674 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3675 RAISE FND_API.G_EXC_ERROR;
3676 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3677 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3678 END IF;
3679 END IF;
3680
3681 /*--------------------------------------------------+
3682 | Call to eTax Service Manage Tax Lines |
3683 +--------------------------------------------------*/
3684 --Rounding and Summarization of Tax Lines for Transaction
3685 /*Bug 3649502 - Check for record flag before calling TRR service*/
3686 --IF l_event_class_rec.record_flag = 'Y' THEN
3687
3688 l_record_tax_lines := l_event_class_rec.record_flag;
3689 IF l_event_class_rec.record_flag = 'Y' and
3690 l_event_class_rec.quote_flag = 'Y' THEN
3691 l_record_tax_lines := 'N';
3692 END IF;
3693 IF l_record_tax_lines = 'Y' THEN
3694 ZX_TRL_PUB_PKG.manage_taxlines(p_event_class_rec =>l_event_class_rec,
3695 x_return_status =>l_return_status
3696 );
3697 END IF;
3698
3699 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3700 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3701 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxlines returned errors');
3702 END IF;
3703 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3704 RAISE FND_API.G_EXC_ERROR;
3705 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3706 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3707 END IF;
3708 END IF;
3709
3710 --Delete from the global structures so that there are no hanging/redundant
3711 --records sitting there
3712 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
3713
3714 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3715 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
3716 END IF;
3717
3718
3719 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3720 l_end_time:=SYSDATE;
3721 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3722 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3723 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3724 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3728
3725 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3726 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3727 END IF;
3729 EXCEPTION
3730 WHEN FND_API.G_EXC_ERROR THEN
3731 ROLLBACK TO Override_Tax_PVT;
3732 x_return_status := FND_API.G_RET_STS_ERROR ;
3733 DUMP_MSG;
3734 /*---------------------------------------------------------+
3735 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3736 | in the message stack. If there is only one message in |
3737 | the stack it retrieves this message |
3738 +---------------------------------------------------------*/
3739 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3740 p_count => x_msg_count,
3741 p_data => x_msg_data
3742 );
3743 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3744 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3745 END IF;
3746
3747 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3748 l_end_time:=SYSDATE;
3749 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3750 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3751 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3752 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3753 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3754 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3755 END IF;
3756
3757 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3758 ROLLBACK TO Override_Tax_PVT;
3759 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3760 DUMP_MSG;
3761 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3762 FND_MSG_PUB.Add;
3763 /*---------------------------------------------------------+
3764 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3765 | in the message stack. If there is only one message in |
3766 | the stack it retrieves this message |
3767 +---------------------------------------------------------*/
3768 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3769 p_count => x_msg_count,
3770 p_data => x_msg_data
3771 );
3772 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3773 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3774 END IF;
3775
3776 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3777 l_end_time:=SYSDATE;
3778 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3779 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3780 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3781 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3782 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3783 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3784 END IF;
3785
3786 WHEN OTHERS THEN
3787 ROLLBACK TO Override_Tax_PVT;
3788 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3789 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3790 FND_MSG_PUB.Add;
3791 /*---------------------------------------------------------+
3792 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3793 | in the message stack. If there is only one message in |
3794 | the stack it retrieves this message |
3795 +---------------------------------------------------------*/
3796 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3797 p_count => x_msg_count,
3798 p_data => x_msg_data
3799 );
3800
3801 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3802 l_end_time:=SYSDATE;
3803 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
3804 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
3805 mod(floor((l_end_time-l_start_time)*24*60*60),60);
3806 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3807 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
3808 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
3809 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
3810 END IF;
3811
3812 END override_tax;
3813
3814
3815 /* ======================================================================*
3816 | PROCEDURE global_document_update : |
3817 * ======================================================================*/
3818
3819 PROCEDURE Global_document_update
3820 ( p_api_version IN NUMBER,
3821 p_init_msg_list IN VARCHAR2,
3822 p_commit IN VARCHAR2 ,
3823 p_validation_level IN NUMBER,
3824 x_return_status OUT NOCOPY VARCHAR2,
3825 x_msg_count OUT NOCOPY NUMBER,
3826 x_msg_data OUT NOCOPY VARCHAR2,
3827 p_transaction_rec IN OUT NOCOPY transaction_rec_type
3828 ) IS
3829 l_api_name CONSTANT VARCHAR2(30) := 'GLOBAL_DOCUMENT_UPDATE';
3830 l_api_version CONSTANT NUMBER := 1.0;
3831 l_return_status VARCHAR2(30);
3832 l_validation_status ZX_API_PUB.validation_status_tbl_type;
3833 l_init_msg_list VARCHAR2(1);
3834
3835 BEGIN
3836 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3837 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
3838 END IF;
3839
3840 /*--------------------------------------------------+
3841 | Standard start of API savepoint |
3842 +--------------------------------------------------*/
3843 SAVEPOINT global_document_update_PVT;
3844
3845 /*--------------------------------------------------+
3846 | Standard call to check for call compatibility |
3847 +--------------------------------------------------*/
3848
3849 IF NOT FND_API.Compatible_API_Call(l_api_version,
3850 p_api_version,
3851 l_api_name,
3852 G_PKG_NAME
3853 ) THEN
3854 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3855 END IF;
3856
3857 /*--------------------------------------------------------------+
3858 | Initialize message list if p_init_msg_list is set to TRUE |
3859 +--------------------------------------------------------------*/
3860 IF p_init_msg_list is null THEN
3861 l_init_msg_list := FND_API.G_FALSE;
3862 ELSE
3863 l_init_msg_list := p_init_msg_list;
3864 END IF;
3865
3866 IF FND_API.to_Boolean(l_init_msg_list) THEN
3867 FND_MSG_PUB.initialize;
3868 END IF;
3869
3870 /*-----------------------------------------+
3871 | Initialize return status to SUCCESS |
3872 +-----------------------------------------*/
3873
3874 x_return_status := FND_API.G_RET_STS_SUCCESS;
3875
3876 /*-----------------------------------------+
3877 | Populate Global Variable |
3878 +-----------------------------------------*/
3879 G_PUB_SRVC := l_api_name;
3880 G_DATA_TRANSFER_MODE := 'PLS';
3881 G_EXTERNAL_API_CALL := 'N';
3882
3883 /*-----------------------------------------------+
3884 | Calling Global Document Update with |
3885 | with validation status |
3886 +-----------------------------------------------*/
3887
3888 ZX_API_PUB.global_document_update(p_api_version,
3889 l_init_msg_list,
3890 p_commit,
3891 p_validation_level,
3892 l_return_status,
3893 x_msg_count,
3894 x_msg_data,
3895 p_transaction_rec,
3896 l_validation_status
3897 );
3898
3899 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3900 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3901 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_API_PUB.global_document_update returned errors');
3902 END IF;
3903 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3904 RAISE FND_API.G_EXC_ERROR;
3905 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3906 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3907 END IF;
3908 END IF;
3909
3910 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3911 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
3912 END IF;
3913
3914 EXCEPTION
3915 WHEN FND_API.G_EXC_ERROR THEN
3916 ROLLBACK TO global_document_update_PVT;
3917 x_return_status := FND_API.G_RET_STS_ERROR ;
3918 DUMP_MSG;
3919 /*---------------------------------------------------------+
3920 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3921 | in the message stack. If there is only one message in |
3922 | the stack it retrieves this message |
3923 +---------------------------------------------------------*/
3924 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3925 p_count => x_msg_count,
3926 p_data => x_msg_data
3927 );
3928 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3929 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3930 END IF;
3931
3932 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3933 ROLLBACK TO global_document_update_PVT;
3934 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3935 DUMP_MSG;
3936 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3937 FND_MSG_PUB.Add;
3938 /*---------------------------------------------------------+
3939 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3940 | in the message stack. If there is only one message in |
3941 | the stack it retrieves this message |
3942 +---------------------------------------------------------*/
3943 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3944 p_count => x_msg_count,
3945 p_data => x_msg_data
3946 );
3947 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
3948 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
3949 END IF;
3950
3951 WHEN OTHERS THEN
3952 ROLLBACK TO global_document_update_PVT;
3953 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3954 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
3955 FND_MSG_PUB.Add;
3956 /*---------------------------------------------------------+
3957 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
3958 | in the message stack. If there is only one message in |
3959 | the stack it retrieves this message |
3960 +---------------------------------------------------------*/
3961 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3962 p_count => x_msg_count,
3963 p_data => x_msg_data
3964 );
3965
3966 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
3967 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
3968 END IF;
3969 END global_document_update;
3970
3971 /* ======================================================================*
3972 | PROCEDURE global_document_update : |
3973 * ======================================================================*/
3974
3975 PROCEDURE global_document_update
3976 ( p_api_version IN NUMBER,
3977 p_init_msg_list IN VARCHAR2,
3978 p_commit IN VARCHAR2,
3979 p_validation_level IN NUMBER,
3980 x_return_status OUT NOCOPY VARCHAR2,
3981 x_msg_count OUT NOCOPY NUMBER,
3982 x_msg_data OUT NOCOPY VARCHAR2,
3983 p_transaction_rec IN OUT NOCOPY transaction_rec_type,
3984 p_validation_status IN ZX_API_PUB.validation_status_tbl_type
3985 ) IS
3986 l_api_name CONSTANT VARCHAR2(30) := 'GLOBAL_DOCUMENT_UPDATE';
3987 l_api_version CONSTANT NUMBER := 1.0;
3988 l_event_class_rec event_class_rec_type;
3989 l_return_status VARCHAR2(30);
3990 l_context_info_rec context_info_rec_type;
3991 l_init_msg_list VARCHAR2(1);
3992 l_upg_trx_info_rec ZX_ON_FLY_TRX_UPGRADE_PKG.zx_upg_trx_info_rec_type;
3993 l_lines_det_rec zx_lines_det_factors%rowtype;
3994
3995 -- Added for bug#16483600 JAI ZX Integration
3996 lb_jai_exists BOOLEAN := FALSE;
3997
3998 BEGIN
3999 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4000 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
4001 END IF;
4002
4003 /*--------------------------------------------------+
4004 | Standard start of API savepoint |
4005 +--------------------------------------------------*/
4006 SAVEPOINT global_document_update_PVT;
4007
4008 /*--------------------------------------------------+
4009 | Standard call to check for call compatibility |
4010 +--------------------------------------------------*/
4011 IF NOT FND_API.Compatible_API_Call( l_api_version,
4012 p_api_version,
4013 l_api_name,
4014 G_PKG_NAME
4015 ) THEN
4016 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4017 END IF;
4018
4019 /*--------------------------------------------------------------+
4020 | Initialize message list if p_init_msg_list is set to TRUE |
4021 +--------------------------------------------------------------*/
4022 IF p_init_msg_list is null THEN
4023 l_init_msg_list := FND_API.G_FALSE;
4024 ELSE
4025 l_init_msg_list := p_init_msg_list;
4026 END IF;
4027
4028 IF FND_API.to_Boolean(l_init_msg_list) THEN
4029 FND_MSG_PUB.initialize;
4030 END IF;
4031
4032 /*-----------------------------------------+
4033 | Initialize return status to SUCCESS |
4034 +-----------------------------------------*/
4035 x_return_status := FND_API.G_RET_STS_SUCCESS;
4036
4037 /*-----------------------------------------+
4038 | Populate Global Variable |
4039 +-----------------------------------------*/
4040 G_PUB_SRVC := l_api_name;
4041 G_DATA_TRANSFER_MODE := 'PLS';
4042 G_EXTERNAL_API_CALL := 'N';
4043
4044 /* -------------------------------------------------------+
4045 | JAI tax processing |
4046 + -------------------------------------------------------*/
4047 -- Start : Added for JAI Trigger Elimination : Bug#16483600 JAI ZX Integration
4048 -- JAI AR INVOICE Deletion and PO document cancelation
4049 lb_jai_exists := JAI_TAX_PROCESSING_PKG.CHECK_JAI_EXISTS_IN_ZX(
4050 pn_set_of_books_id => ZX_GLOBAL_STRUCTURES_PKG.G_EVENT_CLASS_REC.ledger_id,
4051 pn_application_id => p_transaction_rec.APPLICATION_ID,
4052 pv_entity_code => p_transaction_rec.ENTITY_CODE,
4053 pn_trx_id => p_transaction_rec.TRX_ID
4054 );
4055
4056 IF lb_jai_exists = TRUE THEN
4057 --Call JAI tax processing.
4058 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4059 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing start +');
4060 END IF;
4061
4062 JAI_TAX_PROCESSING_PKG.CALCULATE_TAX(p_transaction_rec => p_transaction_rec
4063 ,p_event_class_rec => NULL
4064 ,p_line_level_action => NULL
4065 ,p_trx_line_id => NULL
4066 ,x_return_status => l_return_status
4067 );
4068
4069 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4070 x_return_status := l_return_status;
4071 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4072 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4073 ' JAI_TAX_PROCESSING_PKG.CALCULATE_TAX RETURN_STATUS = ' || x_return_status);
4074 END IF;
4075 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4076 RAISE FND_API.G_EXC_ERROR;
4077 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4078 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4079 END IF;
4080 END IF;
4081
4082 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4083 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing end -');
4084 END IF;
4085 END IF;
4086 -- End : Added for JAI Trigger Elimination
4087
4088 /*------------------------------------------------------+
4089 | Validate Input Paramerters and Fetch Tax Options |
4090 +------------------------------------------------------*/
4091 ZX_VALID_INIT_PARAMS_PKG.global_document_update(x_return_status => l_return_status,
4092 p_event_class_rec => l_event_class_rec,
4093 p_trx_rec => p_transaction_rec
4094 );
4095
4096 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4097 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4098 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.global_document_update returned errors');
4099 END IF;
4100 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4101 RAISE FND_API.G_EXC_ERROR;
4102 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4103 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4104 END IF;
4105 END IF;
4106
4107
4108
4109 /*------------------------------------------------+
4110 | Update zx_lines_det_factors |
4111 +------------------------------------------------*/
4112 IF l_event_class_rec.tax_event_type_code IN ('DELETE','PURGE') THEN
4113 -- Bug 5200373: Incarporated missing hook to take snapshot of zx_lines_det_factors so that
4114 -- upgraded R11i partner softwares can handle the header level document delete
4115 -- sceanrio.
4116 zx_r11i_tax_partner_pkg.copy_trx_line_for_ptnr_bef_upd(NULL
4117 , l_event_class_rec
4118 , NULL
4119 , 'N'
4120 , NULL
4121 , NULL
4122 , l_return_status);
4123 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4124 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4125 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':zx_r11i_tax_partner_pkg.copy_trx_line_for_ptnr_bef_upd returned errors');
4126 END IF;
4127 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4128 RAISE FND_API.G_EXC_ERROR;
4129 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4130 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4131 END IF;
4132 END IF;
4133
4134 -- Bug 5237826: Explicitly check if the resource is busy prior to making the delete. Resource can
4135 -- become busy if calling products fail to issue a COMMIT or ROLLBACK immediately
4136 -- after call to this API.
4137 BEGIN
4138 /*Lock trx line det factors for delete*/
4139 SELECT *
4140 INTO l_lines_det_rec
4141 FROM ZX_LINES_DET_FACTORS
4142 WHERE application_id = p_transaction_rec.application_id
4143 AND entity_code = p_transaction_rec.entity_code
4144 AND event_class_code = p_transaction_rec.event_class_code
4145 AND trx_id = p_transaction_rec.trx_id
4146 AND rownum = 1
4147 FOR UPDATE NOWAIT;
4148 EXCEPTION
4149 WHEN NO_DATA_FOUND THEN
4150 NULL;
4151 WHEN OTHERS THEN
4152 IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
4153 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4154 END IF;
4155 IF (SQLCODE = 54) THEN
4156 FND_MESSAGE.SET_NAME('ZX','ZX_RESOURCE_BUSY');
4157 l_context_info_rec.APPLICATION_ID := p_transaction_rec.APPLICATION_ID;
4158 l_context_info_rec.ENTITY_CODE := p_transaction_rec.ENTITY_CODE;
4159 l_context_info_rec.EVENT_CLASS_CODE := p_transaction_rec.EVENT_CLASS_CODE;
4160 l_context_info_rec.TRX_ID := p_transaction_rec.TRX_ID;
4161 ZX_API_PUB.add_msg( p_context_info_rec => l_context_info_rec );
4162 RAISE FND_API.G_EXC_ERROR;
4163 ELSE
4164 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4165 END IF;
4166 END;
4167
4168 DELETE from ZX_LINES_DET_FACTORS
4169 WHERE APPLICATION_ID = p_transaction_rec.APPLICATION_ID
4170 AND ENTITY_CODE = p_transaction_rec.ENTITY_CODE
4171 AND EVENT_CLASS_CODE = p_transaction_rec.EVENT_CLASS_CODE
4172 AND TRX_ID = p_transaction_rec.TRX_ID;
4173
4174 ELSIF l_event_class_rec.tax_event_type_code NOT IN ('RELEASE_HOLD') THEN
4175 UPDATE ZX_LINES_DET_FACTORS
4176 SET EVENT_TYPE_CODE = l_event_class_rec.event_type_code,
4177 TAX_EVENT_TYPE_CODE = l_event_class_rec.tax_event_type_code,
4178 DOC_EVENT_STATUS = l_event_class_rec.doc_status_code
4179 WHERE APPLICATION_ID = p_transaction_rec.APPLICATION_ID
4180 AND ENTITY_CODE = p_transaction_rec.ENTITY_CODE
4181 AND EVENT_CLASS_CODE = p_transaction_rec.EVENT_CLASS_CODE
4182 AND TRX_ID = p_transaction_rec.TRX_ID;
4183
4184 --Bugfix 4486946 -Call on the fly upgrade if the transaction if not found
4185 IF sql%notfound THEN
4186 l_upg_trx_info_rec.application_id := l_event_class_rec.application_id;
4187 l_upg_trx_info_rec.entity_code := l_event_class_rec.entity_code;
4188 l_upg_trx_info_rec.event_class_code := l_event_class_rec.event_class_code;
4189 l_upg_trx_info_rec.trx_id := l_event_class_rec.trx_id;
4190 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(p_upg_trx_info_rec => l_upg_trx_info_rec,
4191 x_return_status => l_return_status
4192 );
4196 END IF;
4193 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4194 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4195 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly returned errors');
4197 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4198 RAISE FND_API.G_EXC_ERROR;
4199 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4200 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4201 END IF;
4202 END IF;
4203 UPDATE ZX_LINES_DET_FACTORS
4204 SET EVENT_TYPE_CODE = l_event_class_rec.event_type_code,
4205 TAX_EVENT_TYPE_CODE = l_event_class_rec.tax_event_type_code,
4206 DOC_EVENT_STATUS = l_event_class_rec.doc_status_code
4207 WHERE APPLICATION_ID = p_transaction_rec.APPLICATION_ID
4208 AND ENTITY_CODE = p_transaction_rec.ENTITY_CODE
4209 AND EVENT_CLASS_CODE = p_transaction_rec.EVENT_CLASS_CODE
4210 AND TRX_ID = p_transaction_rec.TRX_ID;
4211 END IF; --sql%notfound
4212 END IF; --not in (RELEASE_HOLD)
4213 --Bugfix 4486946 - on-the-fly upgrade end
4214
4215 /*--------------------------------------------------+
4216 | Call to Service Type Document Level Changes |
4217 +--------------------------------------------------*/
4218 --Bug 4463450: Do not carry out any reversals for tax lines and dists for
4219 --event classes not reportable for tax
4220 IF l_event_class_rec.tax_event_type_code = 'CANCEL' AND
4221 l_event_class_rec.tax_reporting_flag = 'N' THEN
4222 null;
4223 ELSE
4224
4225 ZX_SRVC_TYP_PKG.document_level_changes(x_return_status => l_return_status,
4226 p_event_class_rec => l_event_class_rec,
4227 p_tax_hold_released_code => p_validation_status
4228 );
4229
4230 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4231 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4232 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.global_document_update returned errors');
4233 END IF;
4234 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4235 RAISE FND_API.G_EXC_ERROR;
4236 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4237 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4238 END IF;
4239 END IF;
4240 END IF;
4241
4242
4243 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4244 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
4245 END IF;
4246
4247 EXCEPTION
4248 WHEN FND_API.G_EXC_ERROR THEN
4249 ROLLBACK TO global_document_update_PVT;
4250 x_return_status := FND_API.G_RET_STS_ERROR ;
4251 DUMP_MSG;
4252 /*---------------------------------------------------------+
4253 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4254 | in the message stack. If there is only one message in |
4255 | the stack it retrieves this message |
4256 +---------------------------------------------------------*/
4257 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4258 p_count => x_msg_count,
4259 p_data => x_msg_data
4260 );
4261 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4262 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4263 END IF;
4264
4265 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4266 ROLLBACK TO global_document_update_PVT;
4267 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4268 DUMP_MSG;
4269 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4270 FND_MSG_PUB.Add;
4271 /*---------------------------------------------------------+
4272 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4273 | in the message stack. If there is only one message in |
4274 | the stack it retrieves this message |
4275 +---------------------------------------------------------*/
4276 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4277 p_count => x_msg_count,
4278 p_data => x_msg_data
4279 );
4280
4281 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4282 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4283 END IF;
4284
4285 WHEN OTHERS THEN
4286 ROLLBACK TO global_document_update_PVT;
4287 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4288 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4289 FND_MSG_PUB.Add;
4290 /*---------------------------------------------------------+
4291 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4292 | in the message stack. If there is only one message in |
4293 | the stack it retrieves this message |
4294 +---------------------------------------------------------*/
4295 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4296 p_count => x_msg_count,
4297 p_data => x_msg_data
4298 );
4302 END global_document_update;
4299 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4300 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
4301 END IF;
4303
4304
4305 /* ======================================================================*
4306 | PROCEDURE Mark_tax_lines_deleted : |
4307 * ======================================================================*/
4308
4309 PROCEDURE Mark_tax_lines_deleted
4310 ( p_api_version IN NUMBER,
4311 p_init_msg_list IN VARCHAR2,
4312 p_commit IN VARCHAR2,
4313 p_validation_level IN NUMBER,
4314 x_return_status OUT NOCOPY VARCHAR2 ,
4315 x_msg_count OUT NOCOPY NUMBER ,
4316 x_msg_data OUT NOCOPY VARCHAR2 ,
4317 p_transaction_line_rec IN OUT NOCOPY transaction_line_rec_type
4318 ) IS
4319 l_api_name CONSTANT VARCHAR2(30) := 'MARK_TAX_LINES_DELETED';
4320 l_api_version CONSTANT NUMBER := 1.0;
4321 l_return_status VARCHAR2(30);
4322 l_init_msg_list VARCHAR2(1);
4323 l_event_type_code VARCHAR2(30);
4324 BEGIN
4325 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4326 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
4327 END IF;
4328
4329 /*--------------------------------------------------+
4330 | Standard start of API savepoint |
4331 +--------------------------------------------------*/
4332 SAVEPOINT mark_tax_lines_del_PVT;
4333
4334 /*--------------------------------------------------+
4335 | Standard call to check for call compatibility |
4336 +--------------------------------------------------*/
4337 IF NOT FND_API.Compatible_API_Call(l_api_version,
4338 p_api_version,
4339 l_api_name,
4340 G_PKG_NAME
4341 ) THEN
4342 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4343 END IF;
4344
4345 /*--------------------------------------------------------------+
4346 | Initialize message list if p_init_msg_list is set to TRUE |
4347 +--------------------------------------------------------------*/
4348 IF p_init_msg_list is null THEN
4349 l_init_msg_list := FND_API.G_FALSE;
4350 ELSE
4351 l_init_msg_list := p_init_msg_list;
4352 END IF;
4353
4354 IF FND_API.to_Boolean(l_init_msg_list) THEN
4355 FND_MSG_PUB.initialize;
4356 END IF;
4357
4358 /*-----------------------------------------+
4359 | Initialize return status to SUCCESS |
4360 +-----------------------------------------*/
4361 x_return_status := FND_API.G_RET_STS_SUCCESS;
4362
4363
4364 /*-----------------------------------------+
4365 | Populate Global Variable |
4366 +-----------------------------------------*/
4367 G_PUB_SRVC := l_api_name;
4368 G_DATA_TRANSFER_MODE := 'PLS';
4369 G_EXTERNAL_API_CALL := 'N';
4370
4371 /*------------------------------------------------------+
4372 | Validate Input Paramerters and Fetch Tax Options |
4373 +------------------------------------------------------*/
4374 ZX_VALID_INIT_PARAMS_PKG.mark_tax_lines_deleted( x_return_status => l_return_status,
4375 p_transaction_line_rec => p_transaction_line_rec
4376 );
4377
4378 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4379 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4380 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.mark_tax_lines_deleted returned errors');
4381 END IF;
4382 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4383 RAISE FND_API.G_EXC_ERROR;
4384 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4385 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4386 END IF;
4387 END IF;
4388
4389 /*--------------------------------------------------+
4390 | Call Service Type Mark Tax Lines Deleted |
4391 +--------------------------------------------------*/
4392 ZX_SRVC_TYP_PKG.mark_tax_lines_deleted( p_trx_line_rec => p_transaction_line_rec,
4393 x_return_status => l_return_status
4394 );
4395
4396 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4397 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4398 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.mark_tax_lines_deleted returned errors');
4399 END IF;
4400 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4401 RAISE FND_API.G_EXC_ERROR;
4402 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4403 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4404 END IF;
4405 END IF;
4406 /*--------------------------------------------------+
4407 | Update line level action to Deleted |
4408 +--------------------------------------------------*/
4409 IF p_transaction_line_rec.event_type_code is null THEN
4410 BEGIN
4411 SELECT event_type_code
4415 AND entity_code = p_transaction_line_rec.entity_code
4412 INTO l_event_type_code
4413 FROM ZX_EVNT_TYP_MAPPINGS
4414 WHERE application_id = p_transaction_line_rec.application_id
4416 AND event_class_code = p_transaction_line_rec.event_class_code
4417 AND tax_event_type_code = 'UPDATE';
4418 EXCEPTION
4419 WHEN NO_DATA_FOUND THEN
4420 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4421 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':Event information passed is incorrect');
4422 END IF;
4423 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4424 END;
4425 END IF;
4426
4427 BEGIN
4428 UPDATE ZX_LINES_DET_FACTORS
4429 SET LINE_LEVEL_ACTION = 'DELETE',
4430 EVENT_TYPE_CODE = nvl(p_transaction_line_rec.event_type_code, l_event_type_code),
4431 TAX_EVENT_TYPE_CODE = 'UPDATE'
4432 WHERE application_id = p_transaction_line_rec.application_id
4433 AND entity_code = p_transaction_line_rec.entity_code
4434 AND event_class_code = p_transaction_line_rec.event_class_code
4435 AND trx_id = p_transaction_line_rec.trx_id
4436 AND trx_line_id = p_transaction_line_rec.trx_line_id;
4437 EXCEPTION
4438 WHEN NO_DATA_FOUND THEN
4439 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4440 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':Event information passed is incorrect');
4441 END IF;
4442 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4443 END;
4444
4445
4446 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4447 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
4448 END IF;
4449
4450 /* Bug 3704651 - No need to uptake error handling as it is a PLS API*/
4451 EXCEPTION
4452 WHEN FND_API.G_EXC_ERROR THEN
4453 ROLLBACK TO mark_tax_lines_del_PVT;
4454 x_return_status := FND_API.G_RET_STS_ERROR ;
4455 DUMP_MSG;
4456 /*---------------------------------------------------------+
4457 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4458 | in the message stack. If there is only one message in |
4459 | the stack it retrieves this message |
4460 +---------------------------------------------------------*/
4461 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4462 p_count => x_msg_count,
4463 p_data => x_msg_data
4464 );
4465 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4466 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4467 END IF;
4468
4469 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4470 ROLLBACK TO mark_tax_lines_del_PVT;
4471 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4472 DUMP_MSG;
4473 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4474 FND_MSG_PUB.Add;
4475 /*---------------------------------------------------------+
4476 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4477 | in the message stack. If there is only one message in |
4478 | the stack it retrieves this message |
4479 +---------------------------------------------------------*/
4480 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4481 p_count => x_msg_count,
4482 p_data => x_msg_data
4483 );
4484
4485 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4486 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4487 END IF;
4488
4489 WHEN OTHERS THEN
4490 ROLLBACK TO mark_tax_lines_del_PVT;
4491 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4492 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4493 FND_MSG_PUB.Add;
4494 /*---------------------------------------------------------+
4495 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4496 | in the message stack. If there is only one message in |
4497 | the stack it retrieves this message |
4498 +---------------------------------------------------------*/
4499 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4500 p_count => x_msg_count,
4501 p_data => x_msg_data
4502 );
4503 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4504 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
4505 END IF;
4506
4507 END mark_tax_lines_deleted;
4508
4509
4510 /* ======================================================================*
4511 | PROCEDURE reverse_document : Reverses the base document |
4512 | GTT involved : ZX_REV_TRX_HEADERS_GT, ZX_REVERSE_TRX_LINES_GT |
4513 | This API has been coded with the assumption that it will receive only |
4514 | only document in a call |
4515 * ======================================================================*/
4516 PROCEDURE reverse_document
4517 ( p_api_version IN NUMBER,
4518 p_init_msg_list IN VARCHAR2,
4519 p_commit IN VARCHAR2,
4520 p_validation_level IN NUMBER,
4521 x_return_status OUT NOCOPY VARCHAR2 ,
4522 x_msg_count OUT NOCOPY NUMBER ,
4523 x_msg_data OUT NOCOPY VARCHAR2
4524 ) IS
4525 l_api_name CONSTANT VARCHAR2(30) := 'REVERSE_DOCUMENT';
4526 l_api_version CONSTANT NUMBER := 1.0;
4527 l_return_status VARCHAR2(30);
4528 l_event_class_rec event_class_rec_type;
4529 l_context_info_rec context_info_rec_type;
4530 l_init_msg_list VARCHAR2(1);
4531
4532 BEGIN
4533 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4534 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
4535 END IF;
4536
4537 /*--------------------------------------------------+
4538 | Standard start of API savepoint |
4539 +--------------------------------------------------*/
4540 SAVEPOINT reverse_document_PVT;
4541
4542 /*--------------------------------------------------+
4543 | Standard call to check for call compatibility |
4544 +--------------------------------------------------*/
4545
4546 IF NOT FND_API.Compatible_API_Call(l_api_version,
4547 p_api_version,
4548 l_api_name,
4549 G_PKG_NAME
4550 ) THEN
4551 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4552 END IF;
4553
4554 /*--------------------------------------------------------------+
4555 | Initialize message list if p_init_msg_list is set to TRUE |
4556 +--------------------------------------------------------------*/
4557 IF p_init_msg_list is null THEN
4558 l_init_msg_list := FND_API.G_FALSE;
4559 ELSE
4560 l_init_msg_list := p_init_msg_list;
4561 END IF;
4562
4563 IF FND_API.to_Boolean(l_init_msg_list) THEN
4564 FND_MSG_PUB.initialize;
4565 END IF;
4566
4567 /*-----------------------------------------+
4568 | Initialize return status to SUCCESS |
4569 +-----------------------------------------*/
4570 x_return_status := FND_API.G_RET_STS_SUCCESS;
4571
4572 /*-----------------------------------------+
4573 | Populate Global Variable |
4574 +-----------------------------------------*/
4575 G_PUB_SRVC := l_api_name;
4576 G_DATA_TRANSFER_MODE := 'TAB';
4577 G_EXTERNAL_API_CALL := 'N';
4578
4579 /*-----------------------------------------+
4580 | Get the event id for the whole document |
4581 +-----------------------------------------*/
4582 select ZX_LINES_DET_FACTORS_S.nextval
4583 into l_event_class_rec.event_id
4584 from dual;
4585
4586 /*------------------------------------------------------+
4587 | Validate Input Paramerters and Fetch Tax Options |
4588 +------------------------------------------------------*/
4589 ZX_VALID_INIT_PARAMS_PKG.reverse_document(x_return_status => l_return_status,
4590 p_event_class_rec => l_event_class_rec
4591 );
4592
4593 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4594 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4595 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.reverse_document returned errors');
4596 END IF;
4597 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4598 RAISE FND_API.G_EXC_ERROR;
4599 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4600 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4601 END IF;
4602 END IF;
4603
4604 /*-----------------------------------------+
4605 | Bug 5662795 |
4606 +-----------------------------------------*/
4607 set_ptnr_srvc_subscr_flag (p_event_class_rec => NULL,
4608 x_return_status => l_return_status
4609 );
4610
4611 /*--------------------------------------------------+
4612 | Call Service Reverse Type Document |
4613 +--------------------------------------------------*/
4614 ZX_SRVC_TYP_PKG.reverse_document(p_event_class_rec => l_event_class_rec,
4615 x_return_status => l_return_status
4616 );
4617
4618 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4619 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4620 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.reverse_document returned errors');
4621 END IF;
4622 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4623 RAISE FND_API.G_EXC_ERROR;
4624 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4625 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4626 END IF;
4627 END IF;
4628
4629 --Delete from the global structures so that there are no hanging/redundant
4630 --records sitting there
4631 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
4632
4633 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4634 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
4635 END IF;
4636
4637 EXCEPTION
4638 WHEN FND_API.G_EXC_ERROR THEN
4639 ROLLBACK TO reverse_document_PVT;
4640 x_return_status := FND_API.G_RET_STS_ERROR ;
4641 --Call API to dump into zx_errors_gt if not already inserted.
4642 DUMP_MSG;
4643 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4644 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4645 END IF;
4646
4647 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4648 ROLLBACK TO reverse_document_PVT;
4649 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4650 DUMP_MSG;
4651 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4652 FND_MSG_PUB.Add;
4653 /*---------------------------------------------------------+
4654 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4655 | in the message stack. If there is only one message in |
4656 | the stack it retrieves this message |
4657 +---------------------------------------------------------*/
4658 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4659 p_count => x_msg_count,
4660 p_data => x_msg_data
4661 );
4662
4663 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4664 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4665 END IF;
4666
4667 WHEN OTHERS THEN
4668 ROLLBACK TO reverse_document_PVT;
4669 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4670 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4671 FND_MSG_PUB.Add;
4672 /*---------------------------------------------------------+
4673 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4674 | in the message stack. If there is only one message in |
4675 | the stack it retrieves this message |
4676 +---------------------------------------------------------*/
4677 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4678 p_count => x_msg_count,
4679 p_data => x_msg_data
4680 );
4681
4682 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4683 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
4684 END IF;
4685 END reverse_document;
4686
4687
4688 /* ======================================================================*
4689 | PROCEDURE Reverse_distributions : Reverses the base distribution |
4690 | GTT involved : ZX_REVERSE_DIST_GT |
4691 * ======================================================================*/
4692 PROCEDURE reverse_distributions
4693 ( p_api_version IN NUMBER,
4694 p_init_msg_list IN VARCHAR2,
4695 p_commit IN VARCHAR2,
4699 x_msg_data OUT NOCOPY VARCHAR2
4696 p_validation_level IN NUMBER,
4697 x_return_status OUT NOCOPY VARCHAR2 ,
4698 x_msg_count OUT NOCOPY NUMBER ,
4700 ) IS
4701 l_api_name CONSTANT VARCHAR2(30) := 'REVERSE_DISTRIBUTIONS';
4702 l_api_version CONSTANT NUMBER := 1.0;
4703 l_return_status VARCHAR2(30);
4704 l_context_info_rec context_info_rec_type;
4705 l_init_msg_list VARCHAR2(1);
4706
4707 BEGIN
4708 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4709 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
4710 END IF;
4711
4712 /*--------------------------------------------------+
4713 | Standard start of API savepoint |
4714 +--------------------------------------------------*/
4715 SAVEPOINT reverse_distributions_PVT;
4716
4717 /*--------------------------------------------------+
4718 | Standard call to check for call compatibility |
4719 +--------------------------------------------------*/
4720 IF NOT FND_API.Compatible_API_Call( l_api_version,
4721 p_api_version,
4722 l_api_name,
4723 G_PKG_NAME
4724 ) THEN
4725 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4726 END IF;
4727
4728 /*--------------------------------------------------------------+
4729 | Initialize message list if p_init_msg_list is set to TRUE |
4730 +--------------------------------------------------------------*/
4731 IF p_init_msg_list is null THEN
4732 l_init_msg_list := FND_API.G_FALSE;
4733 ELSE
4734 l_init_msg_list := p_init_msg_list;
4735 END IF;
4736
4737 IF FND_API.to_Boolean(l_init_msg_list) THEN
4738 FND_MSG_PUB.initialize;
4739 END IF;
4740
4741 /*-----------------------------------------+
4742 | Initialize return status to SUCCESS |
4743 +-----------------------------------------*/
4744 x_return_status := FND_API.G_RET_STS_SUCCESS;
4745
4746
4747 /*-----------------------------------------+
4748 | Populate Global Variable |
4749 +-----------------------------------------*/
4750 G_PUB_SRVC := l_api_name;
4751 G_DATA_TRANSFER_MODE := 'TAB';
4752 G_EXTERNAL_API_CALL := 'N';
4753
4754 /*------------------------------------------------------+
4755 | Validate Input Paramerters and Fetch Tax Options |
4756 +------------------------------------------------------*/
4757 IF ( G_LEVEL_EVENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4758 FND_LOG.STRING(G_LEVEL_EVENT,G_MODULE_NAME||l_api_name,
4759 'Validating Reversing Document Distributions'
4760 );
4761 END IF;
4762
4763 ZX_VALID_INIT_PARAMS_PKG.reverse_distributions(x_return_status =>l_return_status);
4764
4765 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4766 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4767 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.reverse_distributions returned errors');
4768 END IF;
4769 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4770 RAISE FND_API.G_EXC_ERROR;
4771 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4772 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4773 END IF;
4774 END IF;
4775
4776 /*--------------------------------------------------+
4777 | Call Service Reverse Distributions |
4778 +--------------------------------------------------*/
4779 ZX_SRVC_TYP_PKG.reverse_distributions(x_return_status => l_return_status );
4780
4781 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4782 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4783 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.reverse_distributions returned errors');
4784 END IF;
4785 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4786 RAISE FND_API.G_EXC_ERROR;
4787 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4788 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4789 END IF;
4790 END IF;
4791
4792 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4793 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
4794 END IF;
4795
4796 EXCEPTION
4797 WHEN FND_API.G_EXC_ERROR THEN
4798 ROLLBACK TO reverse_distributions_PVT;
4799 x_return_status := FND_API.G_RET_STS_ERROR ;
4800 --Call API to dump into zx_errors_gt
4801 DUMP_MSG;
4802 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4803 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4804 END IF;
4805
4806 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4807 ROLLBACK TO reverse_distributions_PVT;
4808 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4809 DUMP_MSG;
4810 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4811 FND_MSG_PUB.ADD;
4812 /*---------------------------------------------------------+
4813 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4814 | in the message stack. If there is only one message in |
4815 | the stack it retrieves this message |
4816 +---------------------------------------------------------*/
4817 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4818 p_count => x_msg_count,
4819 p_data => x_msg_data
4820 );
4821 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
4822 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
4823 END IF;
4824
4825 WHEN OTHERS THEN
4826 ROLLBACK TO reverse_distributions_PVT;
4827 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4828 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
4829 FND_MSG_PUB.ADD;
4830 /*---------------------------------------------------------+
4831 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
4832 | in the message stack. If there is only one message in |
4833 | the stack it retrieves this message |
4834 +---------------------------------------------------------*/
4835 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
4836 p_count => x_msg_count,
4837 p_data => x_msg_data
4838 );
4839 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4840 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
4841 END IF;
4842 END reverse_distributions;
4843
4844 /* ================================================================================*
4845 | PROCEDURE Reverse_document_distribution: Reverses the base reversing event class|
4846 | GTT involved : ZX_REV_TRX_HEADERS_GT, ZX_REVERSE_TRX_LINES_GT |
4847 * ================================================================================*/
4848 PROCEDURE reverse_document_distribution
4849 ( p_api_version IN NUMBER,
4850 p_init_msg_list IN VARCHAR2,
4851 p_commit IN VARCHAR2,
4852 p_validation_level IN NUMBER,
4853 x_return_status OUT NOCOPY VARCHAR2 ,
4854 x_msg_count OUT NOCOPY NUMBER ,
4855 x_msg_data OUT NOCOPY VARCHAR2
4856 ) IS
4857 l_api_name CONSTANT VARCHAR2(30) := 'REVERSE_DOCUMENT_DISTRIBUTION';
4858 l_api_version CONSTANT NUMBER := 1.0;
4859 l_return_status VARCHAR2(30);
4860 l_event_class_rec event_class_rec_type;
4861 l_context_info_rec context_info_rec_type;
4862 l_init_msg_list VARCHAR2(1);
4863
4864 BEGIN
4865 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4866 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
4867 END IF;
4868
4869 /*--------------------------------------------------+
4870 | Standard start of API savepoint |
4871 +--------------------------------------------------*/
4872 SAVEPOINT reverse_doc_distribution_PVT;
4873
4874 /*--------------------------------------------------+
4875 | Standard call to check for call compatibility |
4876 +--------------------------------------------------*/
4877 IF NOT FND_API.Compatible_API_Call( l_api_version,
4878 p_api_version,
4879 l_api_name,
4880 G_PKG_NAME
4881 ) THEN
4882 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4883 END IF;
4884
4885 /*--------------------------------------------------------------+
4886 | Initialize message list if p_init_msg_list is set to TRUE |
4887 +--------------------------------------------------------------*/
4888 IF p_init_msg_list is null THEN
4889 l_init_msg_list := FND_API.G_FALSE;
4890 ELSE
4891 l_init_msg_list := p_init_msg_list;
4892 END IF;
4893
4894 IF FND_API.to_Boolean(l_init_msg_list) THEN
4895 FND_MSG_PUB.initialize;
4896 END IF;
4897
4898 /*-----------------------------------------+
4899 | Initialize return status to SUCCESS |
4900 +-----------------------------------------*/
4901 x_return_status := FND_API.G_RET_STS_SUCCESS;
4902
4903 /*-----------------------------------------+
4904 | Populate Global Variable |
4905 +-----------------------------------------*/
4906 G_PUB_SRVC := l_api_name;
4907 G_DATA_TRANSFER_MODE := 'TAB';
4908 G_EXTERNAL_API_CALL := 'N';
4909
4910 /*-----------------------------------------+
4911 | Get the event id for the whole document |
4912 +-----------------------------------------*/
4913 select zx_lines_det_factors_s.nextval
4914 into l_event_class_rec.event_id
4915 from dual;
4916
4917 /*------------------------------------------------------+
4918 | Validate Input Paramerters and Fetch Tax Options |
4919 +------------------------------------------------------*/
4920 ZX_VALID_INIT_PARAMS_PKG.reverse_document( x_return_status => l_return_status ,
4921 p_event_class_rec => l_event_class_rec
4922 );
4923
4924 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4925 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4926 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.reverse_document returned errors');
4927 END IF;
4928 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4929 RAISE FND_API.G_EXC_ERROR;
4930 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4931 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4932 END IF;
4933 END IF;
4934
4935 /*-----------------------------------------+
4936 | Bug 5662795 |
4937 +-----------------------------------------*/
4938 set_ptnr_srvc_subscr_flag (p_event_class_rec => NULL,
4939 x_return_status => l_return_status
4940 );
4941
4942 /*--------------------------------------------------+
4943 | Call Service Reverse Document |
4944 +--------------------------------------------------*/
4945 ZX_SRVC_TYP_PKG.reverse_document( p_event_class_rec => l_event_class_rec,
4946 x_return_status => l_return_status
4947 );
4948
4949 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4950 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4951 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.reverse_document returned errors');
4952 END IF;
4953 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4954 RAISE FND_API.G_EXC_ERROR;
4955 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4956 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4957 END IF;
4958 END IF;
4959
4960 /*------------------------------------------------------+
4961 | Validate Input Paramerters and Fetch Tax Options |
4962 +------------------------------------------------------*/
4963 ZX_VALID_INIT_PARAMS_PKG.reverse_distributions(x_return_status => l_return_status );
4964
4965 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4966 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4967 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.reverse_distributions returned errors');
4968 END IF;
4969 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4970 RAISE FND_API.G_EXC_ERROR;
4971 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4972 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4973 END IF;
4974 END IF;
4975 /*--------------------------------------------------+
4976 | Call Service Reverse Distributions |
4977 +--------------------------------------------------*/
4978 ZX_SRVC_TYP_PKG.reverse_distributions(x_return_status => l_return_status );
4979
4980 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4981 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4982 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.reverse_distributions returned errors');
4983 END IF;
4984 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4985 RAISE FND_API.G_EXC_ERROR;
4986 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4987 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4988 END IF;
4989 END IF;
4990
4991 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4992 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
4993 END IF;
4994
4995 EXCEPTION
4996 WHEN FND_API.G_EXC_ERROR THEN
4997 ROLLBACK TO reverse_doc_distribution_PVT;
4998 x_return_status := FND_API.G_RET_STS_ERROR ;
4999 --Call API to dump into zx_errors_gt if not already inserted.
5000 DUMP_MSG;
5001 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
5002 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
5003 END IF;
5004
5005 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5006 ROLLBACK TO reverse_doc_distribution_PVT;
5007 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5008 DUMP_MSG;
5009 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
5010 FND_MSG_PUB.ADD;
5011 /*---------------------------------------------------------+
5012 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
5013 | in the message stack. If there is only one message in |
5014 | the stack it retrieves this message |
5015 +---------------------------------------------------------*/
5016 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
5017 p_count => x_msg_count,
5018 p_data => x_msg_data
5019 );
5020 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
5021 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
5022 END IF;
5023
5024 WHEN OTHERS THEN
5025 ROLLBACK TO reverse_doc_distribution_PVT;
5026 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5027 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
5028 FND_MSG_PUB.ADD;
5029 /*---------------------------------------------------------+
5030 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
5031 | in the message stack. If there is only one message in |
5032 | the stack it retrieves this message |
5033 +---------------------------------------------------------*/
5034 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
5035 p_count => x_msg_count,
5036 p_data => x_msg_data
5037 );
5038 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
5039 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
5040 END IF;
5041
5042 END reverse_document_distribution;
5043
5044 /* =======================================================================*
5045 | PROCEDURE determine_recovery : Calculate the distribution of tax amounts
5046 | into recoverable and/or non-recoverable tax amounts. |
5047 | This API also supports processing for multiple event classes |
5048 | GTT involved : ZX_TRX_HEADERS_GT, ZX_ITM_DISTRIBUTIONS_GT |
5049 * =======================================================================*/
5050
5051 PROCEDURE Determine_recovery
5052 ( p_api_version IN NUMBER,
5053 p_init_msg_list IN VARCHAR2,
5054 p_commit IN VARCHAR2,
5055 p_validation_level IN NUMBER,
5056 x_return_status OUT NOCOPY VARCHAR2 ,
5057 x_msg_count OUT NOCOPY NUMBER ,
5058 x_msg_data OUT NOCOPY VARCHAR2
5059 ) IS
5060 l_api_name CONSTANT VARCHAR2(30) := 'DETERMINE_RECOVERY';
5061 l_api_version CONSTANT NUMBER := 1.0;
5062 l_return_status VARCHAR2(30);
5063 l_error_buffer VARCHAR2(1000);
5064 l_context_info_rec context_info_rec_type;
5065 l_event_class_rec event_class_rec_type;
5066 l_transaction_header_rec transaction_header_rec_type;
5067 l_index BINARY_INTEGER;
5068 l_precedence NUMBER_tbl_type;
5069 l_init_msg_list VARCHAR2(1);
5070 l_event_id NUMBER;
5071 l_related_doc_date DATE;
5072 l_adjusted_doc_date DATE;
5073 l_trx_date DATE;
5074 l_prov_tax_det_date DATE;
5075 l_effective_date DATE;
5076 l_call_evnt_cls_options VARCHAR2(1);
5077 l_record_dist_lines VARCHAR2(1);
5078
5079 CURSOR event_classes IS
5080 SELECT distinct
5081 header.event_class_code,
5082 header.application_id,
5083 header.entity_code,
5084 header.internal_organization_id,
5085 evntmap.processing_precedence
5086 FROM ZX_EVNT_CLS_MAPPINGS evntmap,
5087 ZX_TRX_HEADERS_GT header
5088 WHERE header.application_id = evntmap.application_id
5089 AND header.entity_code = evntmap.entity_code
5090 AND header.event_class_code = evntmap.event_class_code
5091 ORDER BY evntmap.processing_precedence;
5092
5093 CURSOR headers (p_event_class_code VARCHAR2,
5094 p_application_id NUMBER,
5095 p_entity_code VARCHAR2 ) IS
5096 SELECT INTERNAL_ORGANIZATION_ID,
5097 APPLICATION_ID,
5098 LEGAL_ENTITY_ID,
5099 ENTITY_CODE,
5100 EVENT_TYPE_CODE,
5101 EVENT_CLASS_CODE,
5102 TRX_ID,
5103 QUOTE_FLAG,
5104 ICX_SESSION_ID
5105 FROM ZX_TRX_HEADERS_GT
5106 WHERE event_class_code = p_event_class_code
5107 AND application_id = p_application_id
5108 AND entity_code = p_entity_code
5109 AND (validation_check_flag is null OR
5110 validation_check_flag <> 'N');
5111
5112 -- added for bug fix 5417887
5113 CURSOR c_headers is
5114 SELECT APPLICATION_ID, ENTITY_CODE, EVENT_CLASS_CODE, TRX_ID, ICX_SESSION_ID,
5115 EVENT_TYPE_CODE, TAX_EVENT_TYPE_CODE, DOC_EVENT_STATUS
5116 FROM ZX_TRX_HEADERS_GT;
5117
5118 CURSOR check_trx_line_dist_qty
5119 IS
5120 SELECT APPLICATION_ID,
5121 ENTITY_CODE,
5122 EVENT_CLASS_CODE,
5123 TRX_ID,
5124 TRX_LINE_ID,
5125 TRX_LEVEL_TYPE
5126 FROM
5127 ZX_ITM_DISTRIBUTIONS_GT
5128 WHERE application_id = l_event_class_rec.application_id
5129 AND entity_code = l_event_class_rec.entity_code
5130 AND event_class_code = l_event_class_rec.event_class_code
5131 AND nvl(tax_variance_calc_flag,l_event_class_rec.tax_variance_calc_flag) = 'Y'
5132 AND ref_doc_application_id is not null
5133 AND trx_line_dist_qty is null;
5134
5135 -- Bug 5516630: Move unit price validation to determine_recovery
5136
5140 ENTITY_CODE,
5137 CURSOR check_trx_line_dist_unit_price
5138 IS
5139 SELECT APPLICATION_ID,
5141 EVENT_CLASS_CODE,
5142 TRX_ID,
5143 TRX_LINE_ID,
5144 TRX_LEVEL_TYPE
5145 FROM
5146 ZX_ITM_DISTRIBUTIONS_GT
5147 WHERE application_id = l_event_class_rec.application_id
5148 AND entity_code = l_event_class_rec.entity_code
5149 AND event_class_code = l_event_class_rec.event_class_code
5150 AND nvl(tax_variance_calc_flag,l_event_class_rec.tax_variance_calc_flag) = 'Y'
5151 AND ref_doc_application_id is not null
5152 AND unit_price is null;
5153
5154 -- This cursor is used to update event info on lines det factors
5155 CURSOR c_event_info(c_application_id number,
5156 c_entity_code varchar2,
5157 c_event_class_code varchar2)
5158 is
5159 SELECT l_event_id event_id,
5160 hdr.event_type_code event_type_code,
5161 zetm.tax_event_type_code tax_event_type_code,
5162 zect.status_code doc_event_status,
5163 hdr.application_id application_id,
5164 hdr.entity_code entity_code,
5165 hdr.event_class_code event_class_code,
5166 hdr.trx_id trx_id
5167 FROM zx_trx_headers_gt hdr,
5168 zx_evnt_typ_mappings zetm,
5169 zx_evnt_cls_typs zect
5170 WHERE zetm.event_class_code = hdr.event_class_code
5171 AND zetm.application_id = hdr.application_id
5172 AND zetm.entity_code = hdr.entity_code
5173 AND zetm.event_type_code = hdr.event_type_code
5174 AND zect.tax_event_type_code = zetm.tax_event_type_code
5175 AND zect.tax_event_class_code = zetm.tax_event_class_code
5176 AND zetm.enabled_flag = 'Y'
5177 AND hdr.application_id = c_application_id
5178 AND hdr.entity_code = c_entity_code
5179 AND hdr.event_class_code = c_event_class_code
5180 AND hdr.quote_flag <> 'Y';
5181
5182 l_application_id_tbl NUMBER_tbl_type;
5183 l_entity_code_tbl VARCHAR2_30_tbl_type;
5184 l_event_class_code_tbl VARCHAR2_30_tbl_type;
5185 l_trx_id_tbl NUMBER_tbl_type;
5186 l_icx_session_id_tbl NUMBER_tbl_type;
5187 l_event_id_tbl NUMBER_tbl_type;
5188 l_event_type_code_tbl VARCHAR2_30_tbl_type;
5189 l_tax_event_type_code_tbl VARCHAR2_30_tbl_type;
5190 l_doc_event_status_tbl VARCHAR2_30_tbl_type;
5191
5192 l_dummy_number NUMBER;
5193 l_start_time DATE;
5194 l_end_time DATE;
5195 l_total_time VARCHAR2(15);
5196
5197 -- Added for bug#16483600 JAI ZX Integration
5198 lb_jai_exists BOOLEAN := FALSE;
5199
5200 BEGIN
5201 l_start_time := SYSDATE ;
5202
5203 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5204 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
5205 END IF;
5206
5207 /*--------------------------------------------------+
5208 | Standard start of API savepoint |
5209 +--------------------------------------------------*/
5210 SAVEPOINT determine_recovery_PVT;
5211
5212 /*--------------------------------------------------+
5213 | Standard call to check for call compatibility |
5214 +--------------------------------------------------*/
5215 IF NOT FND_API.Compatible_API_Call( l_api_version,
5216 p_api_version,
5217 l_api_name,
5218 G_PKG_NAME
5219 ) THEN
5220 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5221 END IF;
5222
5223 /*--------------------------------------------------------------+
5224 | Initialize message list if p_init_msg_list is set to TRUE |
5225 +--------------------------------------------------------------*/
5226 IF p_init_msg_list is null THEN
5227 l_init_msg_list := FND_API.G_FALSE;
5228 ELSE
5229 l_init_msg_list := p_init_msg_list;
5230 END IF;
5231
5232 IF FND_API.to_Boolean(l_init_msg_list) THEN
5233 FND_MSG_PUB.initialize;
5234 END IF;
5235
5236 /*-----------------------------------------+
5237 | Initialize return status to SUCCESS |
5238 +-----------------------------------------*/
5239
5240 x_return_status := FND_API.G_RET_STS_SUCCESS;
5241
5242 /*-----------------------------------------+
5243 | Populate Global Variable |
5244 +-----------------------------------------*/
5245 G_PUB_SRVC := l_api_name;
5246 G_DATA_TRANSFER_MODE := 'TAB';
5247 G_EXTERNAL_API_CALL := 'N';
5248
5249 --Call TDS process to initialise distributions for previous calls to determine recovery
5250 --if any
5251 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (p_event_class_rec => NULL,
5252 p_init_level => 'TAX_DISTRIBUTION',
5253 x_return_status => l_return_status
5254 );
5255
5256 l_call_evnt_cls_options := 'Y';
5257
5258 /*-----------------------------------------+
5259 | Get the event id for the whole document |
5260 +-----------------------------------------*/
5261 --Bug 7650433
5262 --select ZX_LINES_DET_FACTORS_S.nextval
5263 --into l_event_id
5264 --from dual;
5265
5266 /*------------------------------------------------+
5267 | Update zx_lines_det_factors |
5268 +------------------------------------------------*/
5269
5270 --FOR c_rec in c_event_info loop
5271 -- IF c_rec.quote_flag <> 'Y' THEN -- Bug 5646787
5272 --
5273 -- UPDATE ZX_LINES_DET_FACTORS D
5274 -- SET EVENT_ID = c_rec.EVENT_ID,
5275 -- EVENT_TYPE_CODE = c_rec.EVENT_TYPE_CODE,
5276 -- TAX_EVENT_TYPE_CODE = c_rec.TAX_EVENT_TYPE_CODE,
5277 -- DOC_EVENT_STATUS = c_rec.DOC_EVENT_STATUS
5278 -- WHERE
5279 -- D.APPLICATION_ID = c_rec.application_id
5280 -- AND D.ENTITY_CODE = c_rec.ENTITY_CODE
5281 -- AND D.EVENT_CLASS_CODE = c_rec.EVENT_CLASS_CODE
5282 -- AND D.TRX_ID = c_rec.TRX_ID;
5283 -- END IF;
5284 --END LOOP;
5285
5286 OPEN event_classes;
5287 LOOP
5288 FETCH event_classes BULK COLLECT INTO
5289 l_evnt_cls.event_class_code,
5290 l_evnt_cls.application_id,
5291 l_evnt_cls.entity_code,
5292 l_evnt_cls.internal_organization_id,
5293 l_evnt_cls.precedence
5294 LIMIT G_LINES_PER_FETCH;
5295 EXIT WHEN event_classes%NOTFOUND;
5296 END LOOP;
5297 CLOSE event_classes;
5298
5299 --Event classes such as SALES_TRANSACTION_TAX_QUOTE/PURCHASE_TRANSACTION_TAX_QUOTE
5300 --are not seeded in zx_evnt_cls_mappings so cursor event classes will not
5301 --return any rows for such event classes passed. This flag to keep track of this
5302 IF l_evnt_cls.event_class_code.LAST is null THEN
5303 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5304 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5305 'Event class information does not exist - indicates SALES_TRANSACTION_TAX_QUOTE/PURCHASE_TRANSACTION_TAX_QUOTE');
5306 END IF;
5307 SELECT event_class_code,
5308 application_id,
5309 internal_organization_id,
5310 entity_code
5311 INTO l_evnt_cls.event_class_code(1),
5312 l_evnt_cls.application_id(1),
5313 l_evnt_cls.internal_organization_id(1),
5314 l_evnt_cls.entity_code(1)
5315 FROM ZX_TRX_HEADERS_GT
5316 WHERE rownum=1;
5317 END IF;
5318
5319 /*-----------------------------------------+
5320 | Loop for each transaction header |
5321 +-----------------------------------------*/
5322 FOR i IN 1..nvl(l_evnt_cls.event_class_code.LAST,0)
5323 LOOP
5324 --Bug 7650433
5325 select ZX_LINES_DET_FACTORS_S.nextval
5326 into l_event_id
5327 from dual;
5328
5329 -- Changed code to bulk collection for Bug#14613482 --
5330 OPEN c_event_info(l_evnt_cls.application_id(i),
5331 l_evnt_cls.entity_code(i),
5332 l_evnt_cls.event_class_code(i));
5333 LOOP
5334 FETCH c_event_info BULK COLLECT INTO
5335 l_event_id_tbl,
5336 l_event_type_code_tbl,
5337 l_tax_event_type_code_tbl,
5338 l_doc_event_status_tbl,
5339 l_application_id_tbl,
5340 l_entity_code_tbl,
5341 l_event_class_code_tbl,
5342 l_trx_id_tbl
5343 LIMIT G_LINES_PER_FETCH;
5344
5345 -- Added if-else condition for Bug#16341635 --
5346 IF l_evnt_cls.application_id(i) = 201 THEN
5347 FORALL i IN NVL(l_trx_id_tbl.FIRST,0)..NVL(l_trx_id_tbl.LAST,-99)
5348 UPDATE ZX_LINES_DET_FACTORS D
5349 SET EVENT_ID = l_event_id_tbl(i),
5350 EVENT_TYPE_CODE = l_event_type_code_tbl(i),
5351 TAX_EVENT_TYPE_CODE = l_tax_event_type_code_tbl(i),
5352 DOC_EVENT_STATUS = l_doc_event_status_tbl(i)
5353 WHERE D.APPLICATION_ID = l_application_id_tbl(i)
5354 AND D.ENTITY_CODE = l_entity_code_tbl(i)
5355 AND D.EVENT_CLASS_CODE = l_event_class_code_tbl(i)
5356 AND D.TRX_ID = l_trx_id_tbl(i)
5357 AND D.TRX_LINE_ID IN
5358 (SELECT TL.TRX_LINE_ID
5359 FROM ZX_ITM_DISTRIBUTIONS_GT TL
5360 WHERE TL.APPLICATION_ID = l_application_id_tbl(i)
5361 AND TL.ENTITY_CODE = l_entity_code_tbl(i)
5362 AND TL.EVENT_CLASS_CODE = l_event_class_code_tbl(i)
5363 AND TL.TRX_ID = l_trx_id_tbl(i));
5364 ELSE
5365 FORALL i IN NVL(l_trx_id_tbl.FIRST,0)..NVL(l_trx_id_tbl.LAST,-99)
5366 UPDATE ZX_LINES_DET_FACTORS D
5367 SET EVENT_ID = l_event_id_tbl(i),
5368 EVENT_TYPE_CODE = l_event_type_code_tbl(i),
5369 TAX_EVENT_TYPE_CODE = l_tax_event_type_code_tbl(i),
5370 DOC_EVENT_STATUS = l_doc_event_status_tbl(i)
5371 WHERE D.APPLICATION_ID = l_application_id_tbl(i)
5372 AND D.ENTITY_CODE = l_entity_code_tbl(i)
5373 AND D.EVENT_CLASS_CODE = l_event_class_code_tbl(i)
5374 AND D.TRX_ID = l_trx_id_tbl(i);
5375 END IF;
5376
5377 EXIT WHEN c_event_info%NOTFOUND;
5378 END LOOP;
5379 CLOSE c_event_info;
5380
5381 l_event_id_tbl.DELETE;
5382 l_event_type_code_tbl.DELETE;
5383 l_tax_event_type_code_tbl.DELETE;
5384 l_doc_event_status_tbl.DELETE;
5385 l_application_id_tbl.DELETE;
5386 l_entity_code_tbl.DELETE;
5387 l_event_class_code_tbl.DELETE;
5388 l_trx_id_tbl.DELETE;
5389
5390 l_event_class_rec.event_id := l_event_id;
5391 l_event_class_rec.INTERNAL_ORGANIZATION_ID := l_evnt_cls.INTERNAL_ORGANIZATION_ID(i);
5392 l_event_class_rec.APPLICATION_ID := l_evnt_cls.APPLICATION_ID(i);
5393 l_event_class_rec.ENTITY_CODE := l_evnt_cls.ENTITY_CODE(i);
5394 l_event_class_rec.EVENT_CLASS_CODE := l_evnt_cls.EVENT_CLASS_CODE(i);
5395
5396 ZX_TRD_SERVICES_PUB_PKG.g_variance_calc_flag := 'N';
5397
5398 /*------------------------------------------------------+
5399 | Validate Input Paramerters and Fetch Tax Options |
5400 +------------------------------------------------------*/
5401 ZX_VALID_INIT_PARAMS_PKG.determine_recovery(x_return_status =>l_return_status,
5402 p_event_class_rec =>l_event_class_rec
5403 );
5404
5405 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5406 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5407 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.determine_recovery returned errors');
5408 END IF;
5409 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5410 RAISE FND_API.G_EXC_ERROR;
5411 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5412 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5413 END IF;
5414 END IF;
5415
5416 select ICX_SESSION_ID,QUOTE_FLAG
5417 INTO l_event_class_rec.ICX_SESSION_ID,l_event_class_rec.QUOTE_FLAG
5418 FROM ZX_TRX_HEADERS_GT
5419 where rownum = 1;
5420
5421 IF l_event_class_rec.QUOTE_FLAG = 'Y' and
5422 l_event_class_rec.ICX_SESSION_ID is not null THEN
5423 ZX_SECURITY.G_ICX_SESSION_ID := l_event_class_rec.ICX_SESSION_ID;
5424 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
5425 -- dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
5426
5427 ELSE
5428 ZX_SECURITY.G_ICX_SESSION_ID := null;
5429 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
5430 --dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
5431
5432 END IF;
5433
5434 -- Check if trx line dist qty is passed when variance calc flag is 'Y'
5435
5436 FOR invalid_rec IN check_trx_line_dist_qty
5437 LOOP
5438
5439 -- x_return_status := FND_API.G_RET_STS_ERROR;
5440 FND_MESSAGE.SET_NAME('ZX','ZX_TRX_LINE_DIST_QTY_REQD');
5441 l_context_info_rec.APPLICATION_ID := invalid_rec.APPLICATION_ID;
5442 l_context_info_rec.ENTITY_CODE := invalid_rec.ENTITY_CODE;
5443 l_context_info_rec.EVENT_CLASS_CODE := invalid_rec.EVENT_CLASS_CODE;
5444 l_context_info_rec.TRX_ID := invalid_rec.TRX_ID;
5445 ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
5446 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5447 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Transaction line distribution quantity is required');
5448 END IF;
5449 END LOOP;
5450
5451 -- Check if trx line dist unit price is passed when variance calc flag is 'Y'
5452
5453 FOR invalid_rec IN check_trx_line_dist_unit_price
5454 LOOP
5455
5456 -- x_return_status := FND_API.G_RET_STS_ERROR;
5457 FND_MESSAGE.SET_NAME('ZX','ZX_UNIT_PRICE_REQD');
5458 l_context_info_rec.APPLICATION_ID := invalid_rec.APPLICATION_ID;
5459 l_context_info_rec.ENTITY_CODE := invalid_rec.ENTITY_CODE;
5460 l_context_info_rec.EVENT_CLASS_CODE := invalid_rec.EVENT_CLASS_CODE;
5461 l_context_info_rec.TRX_ID := invalid_rec.TRX_ID;
5462 ZX_API_PUB.add_msg( p_context_info_rec =>l_context_info_rec );
5463 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5464 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Transaction line distribution unit price is required');
5465 END IF;
5466 END LOOP;
5467
5468
5469 OPEN headers(l_evnt_cls.event_class_code(i),
5470 l_evnt_cls.application_id(i),
5471 l_evnt_cls.entity_code(i)
5472 );
5473 LOOP
5474 FETCH headers BULK COLLECT INTO
5475 l_transaction_header_rec.INTERNAL_ORGANIZATION_ID,
5476 l_transaction_header_rec.APPLICATION_ID,
5477 l_transaction_header_rec.LEGAL_ENTITY_ID,
5478 l_transaction_header_rec.ENTITY_CODE,
5479 l_transaction_header_rec.EVENT_TYPE_CODE,
5480 l_transaction_header_rec.EVENT_CLASS_CODE,
5481 l_transaction_header_rec.TRX_ID,
5482 l_transaction_header_rec.QUOTE_FLAG,
5483 l_transaction_header_rec.ICX_SESSION_ID
5484 LIMIT G_LINES_PER_FETCH;
5485
5486 FOR l_index IN 1..nvl(l_transaction_header_rec.application_id.LAST,0)
5487 LOOP
5488 BEGIN
5489 SAVEPOINT Determine_Recovery_Hdr_PVT;
5490 --Copy to event class record
5491 l_event_class_rec.INTERNAL_ORGANIZATION_ID := l_transaction_header_rec.INTERNAL_ORGANIZATION_ID(l_index);
5492 l_event_class_rec.APPLICATION_ID := l_transaction_header_rec.APPLICATION_ID(l_index);
5493 l_event_class_rec.LEGAL_ENTITY_ID := l_transaction_header_rec.LEGAL_ENTITY_ID(l_index);
5494 l_event_class_rec.ENTITY_CODE := l_transaction_header_rec.ENTITY_CODE(l_index);
5495 l_event_class_rec.EVENT_CLASS_CODE := l_transaction_header_rec.EVENT_CLASS_CODE(l_index);
5496 l_event_class_rec.EVENT_TYPE_CODE := l_transaction_header_rec.EVENT_TYPE_CODE(l_index);
5497 l_event_class_rec.TRX_ID := l_transaction_header_rec.TRX_ID(l_index);
5498 l_event_class_rec.ICX_SESSION_ID := l_transaction_header_rec.ICX_SESSION_ID(l_index);
5499 l_event_class_rec.QUOTE_FLAG := l_transaction_header_rec.QUOTE_FLAG(l_index);
5500
5501
5502 /* ----------------------------------------------------------------------+
5503 | Bug 3129063 - Setting the Security Context for Subscription |
5504 + ----------------------------------------------------------------------*/
5505 ZX_VALID_INIT_PARAMS_PKG.get_tax_subscriber
5506 (l_event_class_rec,
5507 l_return_status);
5508
5509 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5510 --DUMP_MSG;
5511 x_return_status := l_return_status;
5512 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5513 RAISE FND_API.G_EXC_ERROR;
5514 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5515 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5516 END IF;
5517 END IF;
5518
5519
5520 /* ----------------------------------------------------------------------+
5521 | Get Tax Event Type |
5522 + ----------------------------------------------------------------------*/
5523 ZX_VALID_INIT_PARAMS_PKG.get_tax_event_type (l_return_status
5524 ,l_event_class_rec.event_class_code
5525 ,l_event_class_rec.application_id
5526 ,l_event_class_rec.entity_code
5527 ,l_event_class_rec.event_type_code
5528 ,l_event_class_rec.tax_event_class_code
5529 ,l_event_class_rec.tax_event_type_code
5530 ,l_event_class_rec.doc_status_code
5531 );
5532
5533 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5534 x_return_status := l_return_status;
5535 --DUMP_MSG;
5536 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5537 RAISE FND_API.G_EXC_ERROR;
5538 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5539 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5540 END IF;
5541 END IF;
5542 -- Bug 6135079, SDSU - enforce_tax_from_ref_doc should be picked up from event class instead of event mappings
5543 -- This can be achieved by calling populate_event_class_options as we have done it in calculate_tax
5544
5545 BEGIN
5546 BEGIN
5547 SELECT first_pty_org_id ,
5548 related_doc_date,
5549 adjusted_doc_date,
5550 trx_date,
5551 provnl_tax_determination_date
5552 INTO l_event_class_rec.first_pty_org_id,
5553 l_related_doc_date,
5554 l_adjusted_doc_date,
5555 l_trx_date,
5556 l_prov_tax_det_date
5557 FROM ZX_LINES_DET_FACTORS
5558 WHERE application_id = l_event_class_rec.application_id
5559 AND entity_code = l_event_class_rec.entity_code
5560 AND event_class_code = l_event_class_rec.event_class_code
5561 AND trx_id = l_event_class_rec.trx_id
5562 AND rownum = 1;
5563 EXCEPTION
5564 when no_data_found then
5565 l_call_evnt_cls_options := 'N';
5566 END;
5567
5568 l_effective_date := determine_effective_date (l_trx_date,
5569 l_related_doc_date,
5570 l_adjusted_doc_date,
5571 l_prov_tax_det_date
5572 );
5573 EXCEPTION
5574 WHEN OTHERS THEN
5575 l_effective_date := SYSDATE;
5576 END;
5577 /* ----------------------------------------------------------------------+
5578 | Populate Event Class Options |
5579 + ----------------------------------------------------------------------*/
5580 IF l_call_evnt_cls_options = 'Y' THEN
5581 ZX_VALID_INIT_PARAMS_PKG.populate_event_class_options(l_return_status,
5582 l_effective_date,
5583 l_event_class_rec
5584 );
5585 END IF;
5586
5587 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5588 x_return_status := l_return_status;
5589 --DUMP_MSG;
5590 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5591 RAISE FND_API.G_EXC_ERROR;
5592 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5593 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5594 END IF;
5595 END IF;
5596
5597 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec := l_event_class_rec;
5598
5599 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5600 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5601 'application_id: '||to_char(l_event_class_rec.application_id)||
5602 ' entity_code: '||l_event_class_rec.entity_code||
5603 ' event_class_code: '||l_event_class_rec.event_class_code||
5604 ' event_type_code: '||l_event_class_rec.event_type_code||
5605 ' trx_id: '||to_char(l_event_class_rec.trx_id)||
5606 ' internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
5607 ' quote_flag: '||to_char(l_event_class_rec.quote_flag)||
5608 ' icx_session_id: '||to_char(l_event_class_rec.icx_session_id));
5609 END IF;
5610
5611
5612 /* ===============================================================================*
5613 |Initialize the global structures/global temp tables owned by TDM at header level |
5614 * =============================================================================*/
5615 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (l_event_class_rec ,
5616 'HEADER',
5617 l_return_status
5618 );
5619
5620 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5621 x_return_status := l_return_status;
5622 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5623 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.initialize returned errors');
5624 END IF;
5625 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5626 RAISE FND_API.G_EXC_ERROR;
5627 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5628 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5629 END IF;
5630 END IF;
5631
5632 /* -------------------------------------------------------+
5633 | JAI AP prepay application |
5634 + -------------------------------------------------------*/
5635 -- Start : Added for JAI Trigger Elimination : Bug#16483600 JAI ZX Integration
5636 -- JAI AP prepay application
5637 lb_jai_exists := JAI_TAX_PROCESSING_PKG.CHECK_JAI_EXISTS_IN_ZX(
5638 pn_set_of_books_id => l_event_class_rec.ledger_id
5639 ,pn_application_id => l_event_class_rec.application_id
5640 ,pv_entity_code => l_event_class_rec.ENTITY_CODE
5641 ,pn_trx_id => l_event_class_rec.TRX_ID
5642 );
5643
5644 IF lb_jai_exists = TRUE THEN
5645
5646 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5647 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing start +');
5648 END IF;
5649
5650 --Call JAI procedure for AP TDS prepayment application
5651 JAI_TAX_PROCESSING_PKG.DETERMINE_RECOVERY(x_return_status => l_return_status
5652 ,p_event_class_rec => l_event_class_rec
5653 );
5654 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5655 x_return_status := l_return_status;
5656 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5657 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5658 'JAI_TAX_PROCESSING_PKG.DETERMINE_RECOVERY RETURN_STATUS = ' || x_return_status);
5659 END IF;
5660 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5661 RAISE FND_API.G_EXC_ERROR;
5662 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5663 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5664 END IF;
5665 END IF;
5666
5667 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5668 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing end -');
5669 END IF;
5670 END IF;
5671 -- End : Added for JAI Trigger Elimination
5672
5673 ZX_GLOBAL_STRUCTURES_PKG.rec_nrec_ccid_tbl.DELETE;
5674
5675 /*--------------------------------------------------+
5676 | Call Service Type Determine Recovery |
5677 +--------------------------------------------------*/
5678 ZX_SRVC_TYP_PKG.determine_recovery(p_event_class_rec => l_event_class_rec,
5679 x_return_status => l_return_status
5680 );
5681
5682 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5683 x_return_status := l_return_status;
5684 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5685 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.determine_recovery returned errors');
5686 END IF;
5687 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5688 RAISE FND_API.G_EXC_ERROR;
5689 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5690 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5691 END IF;
5692 END IF;
5693
5694 EXCEPTION
5695 WHEN FND_API.G_EXC_ERROR THEN
5696 ROLLBACK TO Determine_Recovery_Hdr_PVT;
5697 x_return_status := FND_API.G_RET_STS_ERROR ;
5698 --DUMP_MSG;
5699 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
5700 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'Expected Error raised for Trx_id'||TO_CHAR(l_event_class_rec.trx_id));
5701 END IF;
5702 END;
5703 END LOOP; --end loop for transaction headers
5704 EXIT WHEN headers%NOTFOUND;
5705 END LOOP;
5706 CLOSE headers;
5707
5708
5709 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
5710 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'Return Status after Recovery Determination : '||x_return_status);
5711 END IF;
5712
5713 -- Added for Bug#13732606 --
5714 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5715 RAISE FND_API.G_EXC_ERROR;
5716 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5717 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5718 END IF;
5719
5720 -- bug fix 3313938: add tax_variance_calc_flag check.
5721 --
5722 IF ZX_TRD_SERVICES_PUB_PKG.g_variance_calc_flag = 'Y' THEN
5723
5724 ZX_TRD_INTERNAL_SERVICES_PVT.calc_variance_factors(
5725 l_return_status,
5726 l_error_buffer);
5727
5728 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
5729 x_return_status := l_return_status;
5730 IF (g_level_statement >= g_current_runtime_level ) THEN
5731 FND_LOG.STRING(g_level_statement,
5732 G_MODULE_NAME||l_api_name,
5733 'After calling calc_variance_factors ' ||
5734 ' return_status = ' || x_return_status);
5735 FND_LOG.STRING(g_level_statement,
5736 G_MODULE_NAME||l_api_name,
5737 'ZX_API_PUB.DETERMINE_RECOVERY(-)');
5738 END IF;
5739 --DUMP_MSG;
5740 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5741 RAISE FND_API.G_EXC_ERROR;
5742 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5743 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5744 END IF;
5745 END IF;
5746 END IF;
5747
5748
5749 -- Bug fix 5417887 begin
5750
5751 /*--------------------------------------------------+
5752 | Call to eTax Service Manage Tax Distributions |
5753 +--------------------------------------------------*/
5754 /*-----------------------------------------------------------------+
5755 | Bug 3649502 - Check for record flag before calling TRR service |
5756 +----------------------------------------------------------------*/
5757 --IF zx_global_structures_pkg.g_event_class_rec.record_flag = 'Y' THEN
5758
5759 l_record_dist_lines := ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.record_flag;
5760
5761 IF zx_global_structures_pkg.g_event_class_rec.record_flag = 'Y' and
5762 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.quote_flag = 'Y' THEN
5763 l_record_dist_lines := 'N';
5764 END IF;
5765
5766 IF l_record_dist_lines = 'Y' THEN
5767 ZX_TRL_PUB_PKG.manage_taxdistributions(x_return_status =>l_return_status,
5768 p_event_class_rec =>zx_global_structures_pkg.g_event_class_rec
5769 );
5770 END IF;
5771
5772 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5773 x_return_status := l_return_status;
5774 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5775 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxdistributions returned errors');
5776 END IF;
5777 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
5778 --DUMP_MSG;
5779 RAISE FND_API.G_EXC_ERROR;
5780 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5781 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5782 END IF;
5783 END IF;
5784
5785 -- Bug fix 7506576 Included additional condition flag quote_flag when
5786 -- deleting records from GT TABLES
5787
5788 --IF zx_global_structures_pkg.g_event_class_rec.record_flag = 'Y' AND ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.quote_flag = 'N'
5789
5790 --Reimplemented the fix done in bug#7506576
5791 IF l_record_dist_lines = 'Y' THEN
5792 DELETE FROM ZX_REC_NREC_DIST_GT;
5793 END IF;
5794
5795 END LOOP;--event_classes cursor
5796
5797 /*------------------------------------------------+
5798 | Update zx_lines_det_factors |
5799 +------------------------------------------------*/
5800
5801 IF zx_global_structures_pkg.g_event_class_rec.quote_flag <> 'Y' OR
5802 zx_global_structures_pkg.g_event_class_rec.ICX_SESSION_ID is not null
5803 THEN
5804
5805 -- ICX_SESSION_ID / QUOTE_FLAG should be same for all rows
5806 IF zx_global_structures_pkg.g_event_class_rec.ICX_SESSION_ID is not null THEN
5807
5808 BEGIN
5809 OPEN C_HEADERS;
5810 LOOP
5811 FETCH c_HEADERS BULK COLLECT INTO
5812 l_application_id_tbl,
5813 l_entity_code_tbl,
5814 l_event_class_code_tbl,
5815 l_trx_id_tbl,
5816 l_icx_session_id_tbl,
5817 l_event_type_code_tbl,
5818 l_tax_event_type_code_tbl,
5819 l_doc_event_status_tbl
5820 LIMIT G_LINES_PER_FETCH;
5821
5822
5823 /*------------------------------------------------------------------------------+
5824 | Bug 4948674: Handle delete for P2P products when icx_session_id is NOT NULL |
5825 +------------------------------------------------------------------------------*/
5826
5827 FORALL i IN l_application_id_tbl.FIRST .. l_application_id_tbl.LAST
5828 DELETE from zx_lines_det_factors
5829 WHERE APPLICATION_ID = l_application_id_tbl(i)
5830 AND ENTITY_CODE = l_entity_code_tbl(i)
5831 AND EVENT_CLASS_CODE = l_event_class_code_tbl(i)
5832 AND TRX_ID = l_trx_id_tbl(i)
5833 AND ICX_SESSION_ID = l_icx_session_id_tbl(i);
5834
5835 exit when c_HEADERS%NOTFOUND;
5836 END LOOP;
5837
5838 close c_HEADERS;
5839 EXCEPTION
5840 WHEN OTHERS THEN
5841
5842 IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
5843 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxdistributions returned errors');
5844 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name, SQLCODE||' ; '||SQLERRM);
5845 END IF;
5846
5847 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5848 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
5849 FND_MSG_PUB.Add;
5850
5851 IF c_HEADERS%ISOPEN THEN
5852 close c_HEADERS;
5853 END IF;
5854 END;
5855 END IF; -- icx_session_id
5856
5857
5858 END IF;
5859
5860 -- Bug fix 5417887 end
5861
5862 --Reset the icx_session_id at end of API
5863 ZX_SECURITY.G_ICX_SESSION_ID := null;
5864 ZX_SECURITY.name_value('SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
5865 -- dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
5866
5867
5868 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5869 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
5870 END IF;
5871
5872 l_end_time:=SYSDATE;
5873 l_total_time:=floor((l_end_time-l_start_time)*24)|| ':' ||
5874 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
5875 mod(floor((l_end_time-l_start_time)*24*60*60),60);
5876
5877 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
5878 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
5879 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
5880 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
5881 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5882 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
5883 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
5884 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
5885 END IF;
5886
5887 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5888 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
5889 FND_FILE.put_line(which => FND_FILE.LOG
5890 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Start Time:'
5891 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
5892 FND_FILE.put_line(which => FND_FILE.LOG
5893 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics End Time:'
5894 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
5895 FND_FILE.put_line(which => FND_FILE.LOG
5896 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Total Time:'
5897 ||l_total_time);
5898 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5899 FND_FILE.put_line(which => FND_FILE.LOG
5900 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
5901 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
5902 FND_FILE.put_line(which => FND_FILE.LOG
5903 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
5904 END IF;
5905
5906 EXCEPTION
5907 WHEN FND_API.G_EXC_ERROR THEN
5908 ROLLBACK TO Determine_Recovery_PVT;
5909 --Close all open cursors
5910 IF headers%ISOPEN THEN CLOSE headers; END IF;
5911 x_return_status := FND_API.G_RET_STS_ERROR;
5912 DUMP_MSG;
5913 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
5914 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
5915
5916 END IF;
5917
5918 l_end_time:=SYSDATE;
5919 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
5920 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
5921 mod(floor((l_end_time-l_start_time)*24*60*60),60);
5925 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
5922 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
5923 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
5924 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
5926 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5927 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
5928 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
5929 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
5930 END IF;
5931
5932 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5933 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
5934 FND_FILE.put_line(which => FND_FILE.LOG
5935 ,buff => 'ZX_API_PUB.Determine_recovery.Exception FND_API.G_EXC_ERROR');
5936
5937 FND_FILE.put_line(which => FND_FILE.LOG
5938 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Start Time:'
5939 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
5940 FND_FILE.put_line(which => FND_FILE.LOG
5941 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics End Time:'
5942 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
5943 FND_FILE.put_line(which => FND_FILE.LOG
5944 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Total Time:'
5945 ||l_total_time);
5946 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5947 FND_FILE.put_line(which => FND_FILE.LOG
5948 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
5949 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
5950 FND_FILE.put_line(which => FND_FILE.LOG
5951 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
5952 END IF;
5953
5954
5955 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5956 ROLLBACK TO Determine_Recovery_PVT;
5957 --Close all open cursors
5958 IF headers%ISOPEN THEN CLOSE headers; END IF;
5959 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
5960 DUMP_MSG;
5961 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
5962 FND_MSG_PUB.Add;
5963 /*---------------------------------------------------------+
5964 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
5965 | in the message stack. If there is only one message in |
5966 | the stack it retrieves this message |
5967 +---------------------------------------------------------*/
5968 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
5969 p_count => x_msg_count,
5970 p_data => x_msg_data
5971 );
5972 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
5973 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
5974 END IF;
5975
5976 l_end_time:=SYSDATE;
5977 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
5978 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
5979 mod(floor((l_end_time-l_start_time)*24*60*60),60);
5980 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
5981
5982 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
5983 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
5984 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
5985 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5986 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
5987 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
5988 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
5989 END IF;
5990
5991 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
5992 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
5993 FND_FILE.put_line(which => FND_FILE.LOG
5994 ,buff => 'ZX_API_PUB.Determine_recovery.Exception FND_API.G_EXC_ERROR');
5995 FND_FILE.put_line(which => FND_FILE.LOG
5996 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Start Time:'
5997 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
5998 FND_FILE.put_line(which => FND_FILE.LOG
5999 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics End Time:'
6000 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
6001 FND_FILE.put_line(which => FND_FILE.LOG
6002 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Total Time:'
6003 ||l_total_time);
6004 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
6005 FND_FILE.put_line(which => FND_FILE.LOG
6006 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
6010 END IF;
6007 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
6008 FND_FILE.put_line(which => FND_FILE.LOG
6009 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
6011
6012
6013 WHEN OTHERS THEN
6014 ROLLBACK TO Determine_Recovery_PVT;
6015 --Close all open cursors
6016 IF headers%ISOPEN THEN CLOSE headers; END IF;
6017 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6018 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6019 FND_MSG_PUB.Add;
6020 /*---------------------------------------------------------+
6021 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6022 | in the message stack. If there is only one message in |
6023 | the stack it retrieves this message |
6024 +---------------------------------------------------------*/
6025 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6026 p_count => x_msg_count,
6027 p_data => x_msg_data
6028 );
6029 l_end_time:=SYSDATE;
6030 l_total_time := floor((l_end_time-l_start_time)*24)|| ':' ||
6031 mod(floor((l_end_time-l_start_time)*24*60),60)|| ':' ||
6032 mod(floor((l_end_time-l_start_time)*24*60*60),60);
6033 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6034 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6035 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Start Time :'||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
6036 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','End Time :'||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
6037 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Total Time :'|| l_total_time);
6038 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
6039 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
6040 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
6041 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name||'.Statistics','Number of records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
6042 END IF;
6043
6044 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
6045 IF fnd_global.conc_request_id <> -1 AND l_dummy_number > 1 THEN
6046 FND_FILE.put_line(which => FND_FILE.LOG
6047 ,buff => 'ZX_API_PUB.Determine_recovery.Exception OTHERS');
6048 FND_FILE.put_line(which => FND_FILE.LOG
6049 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Start Time:'
6050 ||to_char(l_start_time,'DD-MM-YYYY HH24:MI:SS'));
6051 FND_FILE.put_line(which => FND_FILE.LOG
6052 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics End Time:'
6053 ||to_char(l_end_time,'DD-MM-YYYY HH24:MI:SS'));
6054 FND_FILE.put_line(which => FND_FILE.LOG
6055 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics Total Time:'
6056 ||l_total_time);
6057 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRX_HEADERS_GT;
6058 FND_FILE.put_line(which => FND_FILE.LOG
6059 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRX_HEADERS_GT :'||l_dummy_number);
6060 SELECT COUNT(*) INTO l_dummy_number FROM ZX_TRANSACTION_LINES_GT;
6061 FND_FILE.put_line(which => FND_FILE.LOG
6062 ,buff => 'ZX_API_PUB.Determine_recovery.Statistics: Number of Records in ZX_TRANSACTION_LINES_GT :'||l_dummy_number);
6063 END IF;
6064
6065 END determine_recovery;
6066
6067 /* =======================================================================*
6068 | PROCEDURE override_recovery :Overrides the tax recovery rate code |
6069 * =======================================================================*/
6070
6071 PROCEDURE Override_recovery
6072 ( p_api_version IN NUMBER,
6073 p_init_msg_list IN VARCHAR2,
6074 p_commit IN VARCHAR2,
6075 p_validation_level IN NUMBER,
6076 x_return_status OUT NOCOPY VARCHAR2 ,
6077 x_msg_count OUT NOCOPY NUMBER ,
6078 x_msg_data OUT NOCOPY VARCHAR2,
6079 p_transaction_rec IN OUT NOCOPY transaction_rec_type
6080 ) IS
6081 l_api_name CONSTANT VARCHAR2(30) := 'OVERRIDE_RECOVERY';
6082 l_api_version CONSTANT NUMBER := 1.0;
6083 l_return_status VARCHAR2(30);
6084 l_event_class_rec event_class_rec_type;
6085 l_trans_rec transaction_rec_type;
6086 l_init_msg_list VARCHAR2(1);
6087 l_record_dist_lines VARCHAR2(1);
6088
6089 BEGIN
6090 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6091 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
6092 END IF;
6093
6094 /*--------------------------------------------------+
6095 | Standard start of API savepoint |
6096 +--------------------------------------------------*/
6097 SAVEPOINT override_recovery_PVT;
6098
6099 /*--------------------------------------------------+
6100 | Standard call to check for call compatibility |
6101 +--------------------------------------------------*/
6102 IF NOT FND_API.Compatible_API_Call( l_api_version,
6103 p_api_version,
6107 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6104 l_api_name,
6105 G_PKG_NAME
6106 ) THEN
6108 END IF;
6109
6110 /*--------------------------------------------------------------+
6111 | Initialize message list if p_init_msg_list is set to TRUE |
6112 +--------------------------------------------------------------*/
6113 IF p_init_msg_list is null THEN
6114 l_init_msg_list := FND_API.G_FALSE;
6115 ELSE
6116 l_init_msg_list := p_init_msg_list;
6117 END IF;
6118
6119 IF FND_API.to_Boolean(l_init_msg_list) THEN
6120 FND_MSG_PUB.initialize;
6121 END IF;
6122
6123 /*-----------------------------------------+
6124 | Initialize return status to SUCCESS |
6125 +-----------------------------------------*/
6126 x_return_status := FND_API.G_RET_STS_SUCCESS;
6127
6128 /*-----------------------------------------+
6129 | Populate Global Variable |
6130 +-----------------------------------------*/
6131 G_PUB_SRVC := l_api_name;
6132 G_DATA_TRANSFER_MODE := 'PLS';
6133 G_EXTERNAL_API_CALL := 'N';
6134
6135 --Call TDS process to initialise distributions for previous calls to determine recovery
6136 --if any
6137 ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (p_event_class_rec => NULL,
6138 p_init_level => 'TAX_DISTRIBUTION',
6139 x_return_status => l_return_status
6140 );
6141 /*------------------------------------------------------+
6142 | Validate Input Paramerters and Fetch Tax Options |
6143 +------------------------------------------------------*/
6144 ZX_VALID_INIT_PARAMS_PKG.override_recovery(x_return_status => l_return_status,
6145 p_event_class_rec => l_event_class_rec,
6146 p_trx_rec => p_transaction_rec
6147 );
6148
6149 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6150 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6151 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.override_recovery returned errors');
6152 END IF;
6153 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6154 RAISE FND_API.G_EXC_ERROR;
6155 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6156 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6157 END IF;
6158 END IF;
6159
6160 /*--------------------------------------------------+
6161 | Call Service Type Override Recovery |
6162 +--------------------------------------------------*/
6163 ZX_SRVC_TYP_PKG.override_recovery(p_event_class_rec => l_event_class_rec,
6164 x_return_status => l_return_status
6165 );
6166
6167 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6168 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6169 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.override_recovery returned errors');
6170 END IF;
6171 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6172 RAISE FND_API.G_EXC_ERROR;
6173 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6174 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6175 END IF;
6176 END IF;
6177
6178 /*--------------------------------------------------+
6179 | Call to eTax Service Manage Tax Distributions |
6180 +--------------------------------------------------*/
6181 --IF l_event_class_rec.record_flag = 'Y' THEN
6182
6183 l_record_dist_lines := l_event_class_rec.record_flag;
6184
6185 IF l_event_class_rec.record_flag = 'Y' and
6186 l_event_class_rec.quote_flag = 'Y' THEN
6187 l_record_dist_lines := 'N';
6188 END IF;
6189 IF l_record_dist_lines = 'Y' THEN
6190 ZX_TRL_PUB_PKG.manage_taxdistributions(x_return_status => l_return_status,
6191 p_event_class_rec => l_event_class_rec
6192 );
6193 END IF;
6194
6195 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6196 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6197 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.manage_taxdistributions returned errors');
6198 END IF;
6199 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6200 RAISE FND_API.G_EXC_ERROR;
6201 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6202 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6203 END IF;
6204 END IF;
6205
6206 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6207 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
6208 END IF;
6209
6210 /* Bug 3704651 - No need to uptake error handling as it is a PLS API*/
6211 EXCEPTION
6212 WHEN FND_API.G_EXC_ERROR THEN
6213 ROLLBACK TO override_recovery_PVT;
6214 x_return_status := FND_API.G_RET_STS_ERROR ;
6215 DUMP_MSG;
6216 /*---------------------------------------------------------+
6217 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6218 | in the message stack. If there is only one message in |
6219 | the stack it retrieves this message |
6220 +---------------------------------------------------------*/
6221 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6222 p_count => x_msg_count,
6223 p_data => x_msg_data
6224 );
6225 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6226 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6227 END IF;
6228
6229 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6230 ROLLBACK TO override_recovery_PVT;
6231 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6232 DUMP_MSG;
6233 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6234 FND_MSG_PUB.Add;
6235 /*---------------------------------------------------------+
6236 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6237 | in the message stack. If there is only one message in |
6238 | the stack it retrieves this message |
6239 +---------------------------------------------------------*/
6240 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6241 p_count => x_msg_count,
6242 p_data => x_msg_data
6243 );
6244 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6245 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6246 END IF;
6247
6248 WHEN OTHERS THEN
6249 /*-------------------------------------------------------+
6250 | Handle application errors that result from trapable |
6251 | error conditions. The error messages have already |
6252 | been put on the error stack. |
6253 +-------------------------------------------------------*/
6254 ROLLBACK TO override_recovery_PVT;
6255 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6256 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6257 FND_MSG_PUB.Add;
6258 /*---------------------------------------------------------+
6259 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6260 | in the message stack. If there is only one message in |
6261 | the stack it retrieves this message |
6262 +---------------------------------------------------------*/
6263 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6264 p_count => x_msg_count,
6265 p_data => x_msg_data
6266 );
6267 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6268 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6269 END IF;
6270 END override_recovery;
6271
6272
6273 /* =======================================================================*
6274 | PROCEDURE freeze_tax_distributions : |
6275 * =======================================================================*/
6276
6277 PROCEDURE freeze_tax_distributions
6278 ( p_api_version IN NUMBER,
6279 p_init_msg_list IN VARCHAR2,
6280 p_commit IN VARCHAR2,
6281 p_validation_level IN NUMBER,
6282 x_return_status OUT NOCOPY VARCHAR2 ,
6283 x_msg_count OUT NOCOPY NUMBER ,
6284 x_msg_data OUT NOCOPY VARCHAR2,
6285 p_transaction_rec IN OUT NOCOPY transaction_rec_type
6286 ) IS
6287 l_api_name CONSTANT VARCHAR2(30) := 'FREEZE_TAX_DISTRIBUTIONS';
6288 l_api_version CONSTANT NUMBER := 1.0;
6289 l_return_status VARCHAR2(30);
6290 l_event_class_rec event_class_rec_type;
6291 l_init_msg_list VARCHAR2(1);
6292
6293 CURSOR get_event_class_info
6294 IS
6295 SELECT dist.application_id,
6296 dist.entity_code,
6297 dist.event_class_code,
6298 evnttyp.event_type_code,
6299 dist.tax_event_class_code,
6300 'UPDATE' tax_event_type_code,
6301 'UPDATED' doc_status_code,
6302 evntcls.summarization_flag,
6303 evntcls.retain_summ_tax_line_id_flag
6304 FROM zx_rec_nrec_dist dist,
6305 zx_evnt_cls_mappings evntcls,
6306 zx_evnt_typ_mappings evnttyp,
6307 zx_tax_dist_id_gt distgt
6308 WHERE dist.application_id = evntcls.application_id
6309 AND dist.entity_code = evntcls.entity_code
6310 AND dist.event_class_code = evntcls.event_class_code
6311 AND evnttyp.application_id = evntcls.application_id
6312 AND evnttyp.entity_code = evntcls.entity_code
6313 AND evnttyp.event_class_code = evntcls.event_class_code
6314 AND evnttyp.tax_event_type_code = 'UPDATE'
6315 AND dist.REC_NREC_TAX_DIST_ID = distgt.tax_dist_id;
6316
6317
6318 BEGIN
6319
6323
6320 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6321 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
6322 END IF;
6324 /*--------------------------------------------------+
6325 | Standard start of API savepoint |
6326 +--------------------------------------------------*/
6327 SAVEPOINT FREEZE_TAX_DISTRIBUTIONS_PVT;
6328
6329 /*--------------------------------------------------+
6330 | Standard call to check for call compatibility |
6331 +--------------------------------------------------*/
6332 IF NOT FND_API.Compatible_API_Call( l_api_version,
6333 p_api_version,
6334 l_api_name,
6335 G_PKG_NAME
6336 ) THEN
6337 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6338 END IF;
6339
6340 /*--------------------------------------------------------------+
6341 | Initialize message list if p_init_msg_list is set to TRUE |
6342 +--------------------------------------------------------------*/
6343 IF p_init_msg_list is null THEN
6344 l_init_msg_list := FND_API.G_FALSE;
6345 ELSE
6346 l_init_msg_list := p_init_msg_list;
6347 END IF;
6348
6349 IF FND_API.to_Boolean(l_init_msg_list) THEN
6350 FND_MSG_PUB.initialize;
6351 END IF;
6352
6353 /*-----------------------------------------+
6354 | Initialize return status to SUCCESS |
6355 +-----------------------------------------*/
6356 x_return_status := FND_API.G_RET_STS_SUCCESS;
6357
6358 /*-----------------------------------------+
6359 | Populate Global Variable |
6360 +-----------------------------------------*/
6361 G_PUB_SRVC := l_api_name;
6362 G_DATA_TRANSFER_MODE := 'PLS';
6363 G_EXTERNAL_API_CALL := 'N';
6364
6365 /*-----------------------------------------------------+
6366 | Validate Input Parameters and Fetch Tax Options |
6367 +-----------------------------------------------------*/
6368 -- Bug 5580045 - Commented out the call to valid intit package so that necessary
6369 -- information can be retrieved for BULK processing
6370 /*
6371 ZX_VALID_INIT_PARAMS_PKG.freeze_distribution_lines(x_return_status => l_return_status,
6372 p_event_class_rec => l_event_class_rec,
6373 p_trx_rec => p_transaction_rec
6374 );
6375
6376 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6377 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6378 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.freeze_distribution_lines returned errors');
6379 END IF;
6380 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6381 RAISE FND_API.G_EXC_ERROR;
6382 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6383 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6384 END IF;
6385 END IF;
6386 */
6387
6388 -- Get Event Class Info.
6389
6390 OPEN get_event_class_info;
6391 FETCH get_event_class_info INTO
6392 l_event_class_rec.APPLICATION_ID,
6393 l_event_class_rec.ENTITY_CODE,
6394 l_event_class_rec.EVENT_CLASS_CODE,
6395 l_event_class_rec.EVENT_TYPE_CODE,
6396 l_event_class_rec.TAX_EVENT_CLASS_CODE,
6397 l_event_class_rec.TAX_EVENT_TYPE_CODE,
6398 l_event_class_rec.DOC_STATUS_CODE,
6399 l_event_class_rec.summarization_flag,
6400 l_event_class_rec.retain_summ_tax_line_id_flag;
6401
6402 IF get_event_class_info%notfound THEN
6403
6404 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
6405
6406 FND_LOG.STRING(G_LEVEL_STATEMENT,
6407 G_MODULE_NAME || l_api_name, G_PKG_NAME||':'||l_api_name
6408 ||': Event Class Info not retreived');
6409 END IF;
6410
6411 END IF;
6412
6413 CLOSE get_event_class_info;
6414
6415 -- Begin Bug fix 5552750: Stamp event_id for only trx lines for which
6416 -- tax distributions are being frozen
6417
6418 /*-----------------------------------------+
6419 | Get the event id for the whole document |
6420 +-----------------------------------------*/
6421 select ZX_LINES_DET_FACTORS_S.nextval
6422 into l_event_class_rec.event_id
6423 from dual;
6424
6425 /*------------------------------------------------+
6426 | Update zx_lines_det_factors |
6427 +------------------------------------------------*/
6428
6429 UPDATE ZX_LINES_DET_FACTORS
6430 SET EVENT_TYPE_CODE = l_event_class_rec.event_type_code,
6431 TAX_EVENT_TYPE_CODE = l_event_class_rec.tax_event_type_code,
6432 EVENT_ID = l_event_class_rec.event_id,
6433 DOC_EVENT_STATUS = l_event_class_rec.doc_status_code
6434 WHERE APPLICATION_ID = p_transaction_rec.APPLICATION_ID
6435 AND ENTITY_CODE = p_transaction_rec.ENTITY_CODE
6436 AND EVENT_CLASS_CODE = p_transaction_rec.EVENT_CLASS_CODE
6437 -- AND TRX_ID = p_transaction_rec.TRX_ID
6438 AND (TRX_ID,TRX_LINE_ID,TRX_LEVEL_TYPE) IN (Select dist.trx_id, dist.trx_line_id,
6439 dist.trx_level_type from zx_rec_nrec_dist dist,
6440 zx_tax_dist_id_gt zxgt
6441 where dist.rec_nrec_tax_dist_id = zxgt.tax_dist_id);
6442
6443 -- End Bug fix 5552750
6444
6445 /*--------------------------------------------------+
6446 | Call Service Type Freeze Distribution Lines |
6447 +--------------------------------------------------*/
6448 ZX_SRVC_TYP_PKG.freeze_distribution_lines(x_return_status => l_return_status,
6449 p_event_class_rec => l_event_class_rec
6450 );
6451
6452 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6453 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6454 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.freeze_distribution_lines returned errors');
6455 END IF;
6456 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6457 RAISE FND_API.G_EXC_ERROR;
6458 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6459 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6460 END IF;
6461 END IF;
6462
6463
6464 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6465 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
6466 END IF;
6467
6468 EXCEPTION
6469 WHEN FND_API.G_EXC_ERROR THEN
6470 ROLLBACK TO FREEZE_TAX_DISTRIBUTIONS_PVT;
6471 x_return_status := FND_API.G_RET_STS_ERROR ;
6472 DUMP_MSG;
6473 /*---------------------------------------------------------+
6474 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6475 | in the message stack. If there is only one message in |
6476 | the stack it retrieves this message |
6477 +---------------------------------------------------------*/
6478 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6479 p_count => x_msg_count,
6480 p_data => x_msg_data
6481 );
6482
6483 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6484 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6485 END IF;
6486
6487 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6488 ROLLBACK TO FREEZE_TAX_DISTRIBUTIONS_PVT;
6489 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6490 DUMP_MSG;
6491 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6492 FND_MSG_PUB.Add;
6493 /*---------------------------------------------------------+
6494 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6495 | in the message stack. If there is only one message in |
6496 | the stack it retrieves this message |
6497 +---------------------------------------------------------*/
6498 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6499 p_count => x_msg_count,
6500 p_data => x_msg_data
6501 );
6502 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6503 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6504 END IF;
6505
6506 WHEN OTHERS THEN
6507 ROLLBACK TO FREEZE_TAX_DISTRIBUTIONS_PVT;
6508 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6509 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6510 FND_MSG_PUB.Add;
6511 /*---------------------------------------------------------+
6512 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6513 | in the message stack. If there is only one message in |
6514 | the stack it retrieves this message |
6515 +---------------------------------------------------------*/
6516 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6517 p_count => x_msg_count,
6518 p_data => x_msg_data
6519 );
6520 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6521 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6522 END IF;
6523 END freeze_tax_distributions;
6524
6525 /* ======================================================================*
6526 | PROCEDURE get_tax_distribution_ccids : Products call this API if they |
6527 | need to determine the code |
6528 | combination identifiers for |
6529 | tax liability and tax recovery/|
6530 | nonrecovery accounts |
6531 | There exists only the pl/sql version of the API |
6532 * ======================================================================*/
6533 PROCEDURE get_tax_distribution_ccids
6534 ( p_api_version IN NUMBER,
6535 p_init_msg_list IN VARCHAR2,
6536 p_commit IN VARCHAR2,
6537 p_validation_level IN NUMBER,
6538 x_return_status OUT NOCOPY VARCHAR2 ,
6539 x_msg_count OUT NOCOPY NUMBER ,
6540 x_msg_data OUT NOCOPY VARCHAR2,
6541 p_dist_ccid_rec IN OUT NOCOPY distccid_det_facts_rec_type
6542 ) IS
6543 l_api_name CONSTANT VARCHAR2(30) := 'GET_TAX_DISTRIBUTION_CCIDS';
6544 l_api_version CONSTANT NUMBER := 1.0;
6545 l_return_status VARCHAR2(30);
6546 l_init_msg_list VARCHAR2(1);
6547
6548 BEGIN
6549 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6550 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
6551 END IF;
6552
6553 /*--------------------------------------------------+
6554 | Standard start of API savepoint |
6555 +--------------------------------------------------*/
6556 SAVEPOINT Get_Tax_Distribution_ccids_PVT;
6557
6558 /*-----------------------------------------+
6559 | Initialize return status to SUCCESS |
6560 +-----------------------------------------*/
6561
6562 x_return_status := FND_API.G_RET_STS_SUCCESS;
6563
6564 /*--------------------------------------------------+
6565 | Standard call to check for call compatibility |
6566 +--------------------------------------------------*/
6567 IF NOT FND_API.Compatible_API_Call( l_api_version,
6568 p_api_version,
6569 l_api_name,
6570 G_PKG_NAME
6571 ) THEN
6572 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6573 END IF;
6574
6575 /*--------------------------------------------------------------+
6576 | Initialize message list if p_init_msg_list is set to TRUE |
6577 +--------------------------------------------------------------*/
6578 IF p_init_msg_list is null THEN
6579 l_init_msg_list := FND_API.G_FALSE;
6580 ELSE
6581 l_init_msg_list := p_init_msg_list;
6582 END IF;
6583
6584 IF FND_API.to_Boolean(l_init_msg_list) THEN
6585 FND_MSG_PUB.initialize;
6586 END IF;
6587
6588 /*-----------------------------------------+
6589 | Populate Global Variable |
6590 +-----------------------------------------*/
6591 G_PUB_SRVC := l_api_name;
6592 G_DATA_TRANSFER_MODE := 'PLS';
6593 G_EXTERNAL_API_CALL := 'N';
6594
6595 /*---------------------------------------------+
6596 | Missing Gl Date |
6597 +---------------------------------------------*/
6598 IF p_dist_ccid_rec.gl_date is NULL THEN
6599 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6600 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6601 'GL date of tax distribution is required');
6602 END IF;
6603 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6604 END IF;
6605
6606 /*---------------------------------------------+
6607 | Missing Tax Rate Id |
6608 +---------------------------------------------*/
6609 IF p_dist_ccid_rec.tax_rate_id is NULL THEN
6610 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6611 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6612 'Tax rate ID of tax distribution is required');
6613 END IF;
6614 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6615 END IF;
6616
6617 /*---------------------------------------------+
6618 | Missing Rec Rate Id |
6619 +---------------------------------------------*/
6620 IF p_dist_ccid_rec.recoverable_flag = 'Y' and
6621 p_dist_ccid_rec.rec_rate_id is NULL THEN
6622 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6623 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6624 'Recovery rate ID of tax distribution is required');
6625 END IF;
6626 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6627 END IF;
6628
6629 /*---------------------------------------------+
6630 | Missing Self Assessed Flag |
6631 +---------------------------------------------*/
6632
6633 IF p_dist_ccid_rec.self_assessed_flag is NULL THEN
6634 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6635 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6636 'Self-assessed flag of tax distribution is required');
6637 END IF;
6638 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6639 END IF;
6640
6641 /*---------------------------------------------+
6642 | Missing Recoverable Flag |
6643 +---------------------------------------------*/
6644
6645 IF p_dist_ccid_rec.recoverable_flag is NULL THEN
6646 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6647 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6648 'Recoverable flag of tax distribution is required');
6649 END IF;
6650 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6651 END IF;
6652
6653 /*---------------------------------------------+
6654 | Missing Tax Jurisdiction Id |
6655 +---------------------------------------------*/
6656
6657 /*IF p_dist_ccid_rec.tax_jurisdiction_id is NULL THEN
6658 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6659 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6660 'Tax jurisdiction ID of tax distribution is required');
6661 END IF;
6662 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6663 END IF;
6664 */
6665
6666 /*---------------------------------------------+
6667 | Missing Tax Regime Id |
6668 +---------------------------------------------*/
6669
6670 IF p_dist_ccid_rec.tax_regime_id is NULL THEN
6671 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6672 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6673 'Tax regime ID of tax distribution is required');
6674 END IF;
6675 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6676 END IF;
6677
6678 /*---------------------------------------------+
6679 | Missing Tax Id |
6680 +---------------------------------------------*/
6681
6682 IF p_dist_ccid_rec.tax_id is NULL THEN
6683 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6684 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6685 'Tax id of tax distribution is required');
6686 END IF;
6687 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6688 END IF;
6689
6690 /*---------------------------------------------+
6691 | Missing Tax Status Id |
6692 +---------------------------------------------*/
6693
6694 IF p_dist_ccid_rec.tax_status_id is NULL THEN
6695 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6696 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6697 'Tax status ID of tax distribution is required');
6698 END IF;
6699 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6700 END IF;
6701
6702 /*---------------------------------------------+
6703 | Missing Org Id |
6704 +---------------------------------------------*/
6705
6706 IF p_dist_ccid_rec.internal_organization_id is NULL THEN
6707 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6708 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6709 'Operating Unit is required');
6710 END IF;
6711 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6712 END IF;
6713
6714 /*---------------------------------------------+
6715 | Missing Revenue Expense CCID |
6716 +---------------------------------------------*/
6717
6718 IF p_dist_ccid_rec.revenue_expense_ccid is NULL THEN
6719 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6720 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6721 'Revenue account of tax distribution is required');
6722 END IF;
6723 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6724 END IF;
6725
6726 /*-----------------------------------------+
6727 | Get CCID |
6728 +-----------------------------------------*/
6729 ZX_TRD_SERVICES_PUB_PKG.get_ccid(p_gl_date => p_dist_ccid_rec.gl_date,
6730 p_tax_rate_id => p_dist_ccid_rec.tax_rate_id,
6731 p_rec_rate_id => p_dist_ccid_rec.rec_rate_id,
6732 p_Self_Assessed_Flag => p_dist_ccid_rec.self_assessed_flag,
6733 p_Recoverable_Flag => p_dist_ccid_rec.recoverable_flag,
6734 p_tax_jurisdiction_id => p_dist_ccid_rec.tax_jurisdiction_id,
6735 p_tax_regime_id => p_dist_ccid_rec.tax_regime_id,
6736 p_tax_id => p_dist_ccid_rec.tax_id,
6737 p_tax_status_id => p_dist_ccid_rec.tax_status_id,
6738 p_org_id => p_dist_ccid_rec.internal_organization_id,
6739 p_revenue_expense_ccid => p_dist_ccid_rec.revenue_expense_ccid,
6740 p_ledger_id => p_dist_ccid_rec.ledger_id,
6741 p_account_source_tax_rate_id => p_dist_ccid_rec.account_source_tax_rate_id,
6742 p_rec_nrec_tax_dist_id => p_dist_ccid_rec.rec_nrec_tax_dist_id,
6743 p_rec_nrec_ccid => p_dist_ccid_rec.rec_nrec_ccid,
6744 p_tax_liab_ccid => p_dist_ccid_rec.tax_liab_ccid,
6745 x_return_status => l_return_status
6746 );
6747
6748
6749 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6750 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6751 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRD_SERVICES_PUB_PKG.get_ccid returned errors');
6752 END IF;
6753 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6754 RAISE FND_API.G_EXC_ERROR;
6755 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6756 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6757 END IF;
6758 ELSE
6759 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6760 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
6761 'Recovery/NonRecovery CCID : ' ||
6762 to_char(p_dist_ccid_rec.revenue_expense_ccid) ||
6763 'Tax liability CCID : ' ||
6764 to_char(p_dist_ccid_rec.tax_liab_ccid) ||
6765 'Revenue CCID : ' ||
6766 to_char(p_dist_ccid_rec.tax_liab_ccid)
6767 );
6768 END IF;
6769 END IF;
6770
6771 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6772 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
6773 END IF;
6774
6775 /* Bug 3704651 - No need to uptake error handling as it is a PLS API*/
6776 EXCEPTION
6777 WHEN FND_API.G_EXC_ERROR THEN
6778 ROLLBACK TO Get_Tax_Distribution_Ccids_PVT;
6782 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6779 x_return_status := FND_API.G_RET_STS_ERROR ;
6780 DUMP_MSG;
6781 /*---------------------------------------------------------+
6783 | in the message stack. If there is only one message in |
6784 | the stack it retrieves this message |
6785 +---------------------------------------------------------*/
6786 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6787 p_count => x_msg_count,
6788 p_data => x_msg_data
6789 );
6790
6791 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6792 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6793 END IF;
6794
6795 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6796 ROLLBACK TO Get_Tax_Distribution_Ccids_PVT;
6797 --Bug 8410923
6798 --Assigning the return status properly
6799 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6800 DUMP_MSG;
6801 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6802 FND_MSG_PUB.Add;
6803 /*---------------------------------------------------------+
6804 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6805 | in the message stack. If there is only one message in |
6806 | the stack it retrieves this message |
6807 +---------------------------------------------------------*/
6808 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6809 p_count => x_msg_count,
6810 p_data => x_msg_data
6811 );
6812 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6813 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6814 END IF;
6815
6816 WHEN OTHERS THEN
6817 ROLLBACK TO Get_Tax_Distribution_Ccids_PVT;
6818 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6819 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6820 FND_MSG_PUB.Add;
6821 /*---------------------------------------------------------+
6822 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6823 | in the message stack. If there is only one message in |
6824 | the stack it retrieves this message |
6825 +---------------------------------------------------------*/
6826 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6827 p_count => x_msg_count,
6828 p_data => x_msg_data
6829 );
6830
6831 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6832 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6833 END IF;
6834
6835 END get_tax_distribution_ccids;
6836
6837
6838 /* ===================================================================================*
6839 | PROCEDURE Update_tax_dist_gl_date : Updates gl date of a list of Tax Distributions |
6840 | GTT involved : ZX_TAX_DIST_ID_GT |
6841 * ====================================================================================*/
6842
6843 PROCEDURE Update_Tax_dist_gl_date
6844 ( p_api_version IN NUMBER,
6845 p_init_msg_list IN VARCHAR2,
6846 p_commit IN VARCHAR2,
6847 p_validation_level IN NUMBER,
6848 x_return_status OUT NOCOPY VARCHAR2,
6849 x_msg_count OUT NOCOPY NUMBER,
6850 x_msg_data OUT NOCOPY VARCHAR2,
6851 p_gl_date IN DATE
6852 ) IS
6853 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TAX_DIST_GL_DATE';
6854 l_api_version CONSTANT NUMBER := 1.0;
6855 l_return_status VARCHAR2(30);
6856 l_context_info_rec context_info_rec_type;
6857 l_init_msg_list VARCHAR2(1);
6858
6859 BEGIN
6860 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6861 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
6862 END IF;
6863
6864 /*--------------------------------------------------+
6865 | Standard start of API savepoint |
6866 +--------------------------------------------------*/
6867 SAVEPOINT Update_Tax_Dist_GL_Date_PVT;
6868
6869 /*--------------------------------------------------+
6870 | Standard call to check for call compatibility |
6871 +--------------------------------------------------*/
6872 IF NOT FND_API.Compatible_API_Call( l_api_version,
6873 p_api_version,
6874 l_api_name,
6875 G_PKG_NAME
6876 ) THEN
6877 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6878 END IF;
6879
6880 /*--------------------------------------------------------------+
6881 | Initialize message list if p_init_msg_list is set to TRUE |
6882 +--------------------------------------------------------------*/
6883 IF p_init_msg_list is null THEN
6884 l_init_msg_list := FND_API.G_FALSE;
6885 ELSE
6886 l_init_msg_list := p_init_msg_list;
6887 END IF;
6888
6892
6889 IF FND_API.to_Boolean(l_init_msg_list) THEN
6890 FND_MSG_PUB.initialize;
6891 END IF;
6893 /*-----------------------------------------+
6894 | Initialize return status to SUCCESS |
6895 +-----------------------------------------*/
6896
6897 x_return_status := FND_API.G_RET_STS_SUCCESS;
6898
6899 /*-----------------------------------------+
6900 | Populate Global Variable |
6901 +-----------------------------------------*/
6902
6903 G_PUB_SRVC := l_api_name;
6904 G_DATA_TRANSFER_MODE := 'PLS';
6905 G_EXTERNAL_API_CALL := 'N';
6906
6907 /*--------------------------------+
6908 | Update gl date |
6909 +-------------------------------*/
6910 ZX_TRL_PUB_PKG.update_gl_date(p_gl_date =>p_gl_date,
6911 x_return_status =>l_return_status
6912 );
6913
6914 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6915 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
6916 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.update_gl_date returned errors');
6917 END IF;
6918 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6919 RAISE FND_API.G_EXC_ERROR;
6920 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6921 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6922 END IF;
6923 END IF;
6924
6925 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6926 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()+');
6927 END IF;
6928
6929 EXCEPTION
6930 WHEN FND_API.G_EXC_ERROR THEN
6931 ROLLBACK TO Update_Tax_Dist_Gl_Date_PVT;
6932 x_return_status := FND_API.G_RET_STS_ERROR ;
6933 DUMP_MSG;
6934 /*---------------------------------------------------------+
6935 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6936 | in the message stack. If there is only one message in |
6937 | the stack it retrieves this message |
6938 +---------------------------------------------------------*/
6939 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6940 p_count => x_msg_count,
6941 p_data => x_msg_data
6942 );
6943 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6944 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6945 END IF;
6946
6947 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6948 ROLLBACK TO Update_Tax_Dist_GL_Date_PVT;
6949 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6950 DUMP_MSG;
6951 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6952 FND_MSG_PUB.Add;
6953 /*---------------------------------------------------------+
6954 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6955 | in the message stack. If there is only one message in |
6956 | the stack it retrieves this message |
6957 +---------------------------------------------------------*/
6958 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6959 p_count => x_msg_count,
6960 p_data => x_msg_data
6961 );
6962 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
6963 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
6964 END IF;
6965
6966 WHEN OTHERS THEN
6967 ROLLBACK TO Update_tax_dist_gl_date_PVT;
6968 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6969 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
6970 FND_MSG_PUB.Add;
6971 /*---------------------------------------------------------+
6972 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
6973 | in the message stack. If there is only one message in |
6974 | the stack it retrieves this message |
6975 +---------------------------------------------------------*/
6976 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
6977 p_count => x_msg_count,
6978 p_data => x_msg_data
6979 );
6980 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
6981 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
6982 END IF;
6983
6984 END update_tax_dist_gl_date;
6985
6986 /* =====================================================================*
6987 | PROCEDURE Update_exchange_rate : Updates Exchange Rate |
6988 +========================================================================*/
6989
6990 PROCEDURE update_exchange_rate
6991 ( p_api_version IN NUMBER,
6992 p_init_msg_list IN VARCHAR2,
6993 p_commit IN VARCHAR2,
6994 p_validation_level IN NUMBER,
6995 x_return_status OUT NOCOPY VARCHAR2,
6996 x_msg_count OUT NOCOPY NUMBER,
6997 x_msg_data OUT NOCOPY VARCHAR2,
6998 p_transaction_rec IN transaction_rec_type,
6999 p_curr_conv_rate IN NUMBER,
7000 p_curr_conv_date IN DATE,
7001 p_curr_conv_type IN VARCHAR2
7002 ) IS
7003 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_EXCHANGE_RATE';
7004 l_api_version CONSTANT NUMBER := 1.0;
7005 l_event_class_rec event_class_rec_type;
7009
7006 l_return_status VARCHAR2(30);
7007 l_ledger_id NUMBER;
7008 l_init_msg_list VARCHAR2(1);
7010 BEGIN
7011
7012 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7013 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
7014 END IF;
7015
7016 /*--------------------------------------------------+
7017 | Standard start of API savepoint |
7018 +--------------------------------------------------*/
7019 SAVEPOINT Update_Exchange_Rate_PVT;
7020
7021 /*--------------------------------------------------+
7022 | Standard call to check for call compatibility |
7023 +--------------------------------------------------*/
7024 IF NOT FND_API.Compatible_API_Call( l_api_version,
7025 p_api_version,
7026 l_api_name,
7027 G_PKG_NAME
7028 ) THEN
7029 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7030 END IF;
7031
7032 /*--------------------------------------------------------------+
7033 | Initialize message list if p_init_msg_list is set to TRUE |
7034 +--------------------------------------------------------------*/
7035 IF p_init_msg_list is null THEN
7036 l_init_msg_list := FND_API.G_FALSE;
7037 ELSE
7038 l_init_msg_list := p_init_msg_list;
7039 END IF;
7040
7041 IF FND_API.to_Boolean(l_init_msg_list) THEN
7042 FND_MSG_PUB.initialize;
7043 END IF;
7044
7045 /*-----------------------------------------+
7046 | Initialize return status to SUCCESS |
7047 +-----------------------------------------*/
7048
7049 x_return_status := FND_API.G_RET_STS_SUCCESS;
7050
7051 /*-----------------------------------------+
7052 | Populate Global Variable |
7053 +-----------------------------------------*/
7054
7055 G_PUB_SRVC := l_api_name;
7056 G_DATA_TRANSFER_MODE := 'PLS';
7057 G_EXTERNAL_API_CALL := 'N';
7058
7059 /*---------------------------------------------+
7060 | Missing Currency Conversion Rate |
7061 +---------------------------------------------*/
7062 IF p_curr_conv_rate is NULL THEN
7063 FND_MESSAGE.SET_NAME('ZX','ZX_CURRENCY_CONVERSION_RATE_REQD');
7064 FND_MSG_PUB.Add;
7065 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7066 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
7067 'Currency conversion rate is passed as null');
7068 END IF;
7069 RAISE FND_API.G_EXC_ERROR;
7070 END IF;
7071
7072 /*---------------------------------------------+
7073 | Missing Currency Conversion Date |
7074 +---------------------------------------------*/
7075 IF p_curr_conv_date is NULL THEN
7076 FND_MESSAGE.SET_NAME('ZX','ZX_CURRENCY_CONVERSION_DATE_REQD');
7077 FND_MSG_PUB.Add;
7078 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7079 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
7080 'Currency conversion date is passed as null');
7081 END IF;
7082 RAISE FND_API.G_EXC_ERROR;
7083 END IF;
7084
7085 /*---------------------------------------------+
7086 | Missing Currency Conversion Type |
7087 +---------------------------------------------*/
7088 IF p_curr_conv_type is NULL THEN
7089 FND_MESSAGE.SET_NAME('ZX','ZX_CURRENCY_CONVERSION_TYPE_REQD');
7090 FND_MSG_PUB.Add;
7091 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7092 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
7093 'Currency conversion type is passed as null');
7094 END IF;
7095 RAISE FND_API.G_EXC_ERROR;
7096 END IF;
7097
7098 /*-----------------------------------------+
7099 | Call Check Trx Rec |
7100 +-----------------------------------------*/
7101 ZX_CHECK_REQUIRED_PARAMS_PKG.check_trx_rec(l_return_status,
7102 p_transaction_rec
7103 );
7104
7105 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7106 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7107 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TRL_PUB_PKG.update_gl_date returned errors');
7108 END IF;
7109 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7110 RAISE FND_API.G_EXC_ERROR;
7111 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7112 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7113 END IF;
7114 END IF;
7115
7116 l_event_class_rec.APPLICATION_ID := p_transaction_rec.APPLICATION_ID;
7117 l_event_class_rec.ENTITY_CODE := p_transaction_rec.ENTITY_CODE;
7118 l_event_class_rec.EVENT_CLASS_CODE := p_transaction_rec.EVENT_CLASS_CODE;
7119 l_event_class_rec.EVENT_TYPE_CODE := p_transaction_rec.EVENT_TYPE_CODE;
7120 l_event_class_rec.TRX_ID := p_transaction_rec.TRX_ID;
7121 l_event_class_rec.record_flag := NULL;
7122 l_event_class_rec.record_for_partners_flag := 'N';
7123
7124 BEGIN
7125 SELECT prod_family_grp_code
7126 INTO l_event_class_rec.prod_family_grp_code
7127 FROM zx_evnt_cls_mappings
7128 WHERE application_id = p_transaction_rec.application_id
7129 AND entity_code = p_transaction_rec.entity_code
7130 AND event_class_code = p_transaction_rec.event_class_code;
7131 EXCEPTION
7132 WHEN OTHERS THEN
7133 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7134 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Incorrect event_class_code passed: ' || p_transaction_rec.event_class_code);
7135 END IF;
7136 RETURN;
7137 END;
7138
7139 BEGIN
7140 SELECT tax_event_type_code
7141 INTO l_event_class_rec.tax_event_type_code
7142 FROM zx_evnt_typ_mappings
7143 WHERE application_id = p_transaction_rec.application_id
7144 AND entity_code = p_transaction_rec.entity_code
7145 AND event_class_code = p_transaction_rec.event_class_code
7146 AND event_type_code = p_transaction_rec.event_type_code;
7147 EXCEPTION
7148 WHEN OTHERS THEN
7149 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7150 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Incorrect event_type_code passed: ' || p_transaction_rec.event_type_code);
7151 END IF;
7152 RETURN;
7153 END;
7154 /*-------------------------------------------------+
7155 | Retrieve the ledger id to pass to TDS process |
7156 +------------------------------------------------*/
7157 SELECT ledger_id
7158 INTO l_ledger_id
7159 FROM ZX_LINES_DET_FACTORS
7160 WHERE application_id = p_transaction_rec.application_id
7161 AND entity_code = p_transaction_rec.entity_code
7162 AND event_class_code = p_transaction_rec.event_class_code
7163 AND trx_id = p_transaction_rec.trx_id
7164 AND rownum = 1;
7165
7166 /*-------------------------------------------------+
7167 | Call TDS routine update_exchange_rate |
7168 +------------------------------------------------*/
7169 ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate(p_event_class_rec => l_event_class_rec,
7170 p_ledger_id => l_ledger_id,
7171 p_currency_conversion_rate => p_curr_conv_rate,
7172 p_currency_conversion_type => p_curr_conv_type,
7173 p_currency_conversion_date => p_curr_conv_date,
7174 x_return_status => l_return_status
7175 );
7176
7177 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7178 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7179 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate returned errors');
7180 END IF;
7181 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7182 RAISE FND_API.G_EXC_ERROR;
7183 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7184 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7185 END IF;
7186 END IF;
7187 /*------------------------------------------------+
7188 | Update zx_lines_det_factors for currency info |
7189 +------------------------------------------------*/
7190 UPDATE ZX_LINES_DET_FACTORS SET
7191 CURRENCY_CONVERSION_DATE = p_curr_conv_date,
7192 CURRENCY_CONVERSION_RATE = p_curr_conv_rate,
7193 CURRENCY_CONVERSION_TYPE = p_curr_conv_type
7194 WHERE APPLICATION_ID = p_transaction_rec.APPLICATION_ID
7195 AND ENTITY_CODE = p_transaction_rec.ENTITY_CODE
7196 AND EVENT_CLASS_CODE = p_transaction_rec.EVENT_CLASS_CODE
7197 AND TRX_ID = p_transaction_rec.TRX_ID;
7198
7199 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7200 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()+');
7201 END IF;
7202
7203 EXCEPTION
7204 WHEN FND_API.G_EXC_ERROR THEN
7205 ROLLBACK TO Update_Exchange_Rate_PVT;
7206 x_return_status := FND_API.G_RET_STS_ERROR ;
7207 DUMP_MSG;
7208 /*---------------------------------------------------------+
7209 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7210 | in the message stack. If there is only one message in |
7211 | the stack it retrieves this message |
7212 +---------------------------------------------------------*/
7213 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7214 p_count => x_msg_count,
7215 p_data => x_msg_data
7216 );
7217
7218 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7219 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,SQLERRM);
7220 END IF;
7221
7222 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7223 ROLLBACK TO Update_Exchange_Rate_PVT;
7224 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7225 DUMP_MSG;
7226 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7227 FND_MSG_PUB.Add;
7228 /*---------------------------------------------------------+
7229 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7230 | in the message stack. If there is only one message in |
7231 | the stack it retrieves this message |
7232 +---------------------------------------------------------*/
7233 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7234 p_count => x_msg_count,
7235 p_data => x_msg_data
7236 );
7237 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7238 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,SQLERRM);
7239 END IF;
7240
7241 WHEN OTHERS THEN
7242 ROLLBACK TO Update_Exchange_Rate_PVT;
7243 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7244 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7245 FND_MSG_PUB.Add;
7246 /*---------------------------------------------------------+
7247 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7248 | in the message stack. If there is only one message in |
7249 | the stack it retrieves this message |
7250 +---------------------------------------------------------*/
7251 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7252 p_count => x_msg_count,
7253 p_data => x_msg_data
7254 );
7255
7256 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
7257 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
7258 END IF;
7259
7260 END Update_Exchange_Rate;
7261
7262 /* =============================================================================*
7263 | PROCEDURE Discard_tax_only_lines : Called when the whole document containing|
7264 | tax only lines is cancelled |
7265 * =============================================================================*/
7266 PROCEDURE discard_tax_only_lines
7267 ( p_api_version IN NUMBER,
7268 p_init_msg_list IN VARCHAR2,
7269 p_commit IN VARCHAR2,
7270 p_validation_level IN NUMBER,
7271 x_return_status OUT NOCOPY VARCHAR2,
7272 x_msg_count OUT NOCOPY NUMBER,
7273 x_msg_data OUT NOCOPY VARCHAR2,
7274 p_transaction_rec IN transaction_rec_type
7275 ) IS
7276 l_api_name CONSTANT VARCHAR2(30) := 'DISCARD_TAX_ONLY_LINES';
7277 l_api_version CONSTANT NUMBER := 1.0;
7278 l_return_status VARCHAR2(30);
7279 l_event_class_rec event_class_rec_type;
7280 l_init_msg_list VARCHAR2(1);
7281
7282 CURSOR get_event_class_info IS
7283 SELECT summarization_flag,
7284 retain_summ_tax_line_id_flag
7285 FROM zx_evnt_cls_mappings
7286 WHERE application_id = p_transaction_rec.application_id
7287 AND entity_code = p_transaction_rec.entity_code
7288 AND event_class_code = p_transaction_rec.event_class_code;
7289
7290 BEGIN
7291 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7292 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
7293 END IF;
7294
7295
7296 /*--------------------------------------------------+
7297 | Standard start of API savepoint |
7298 +--------------------------------------------------*/
7299 SAVEPOINT discard_tax_only_lines_PVT;
7300
7301 /*--------------------------------------------------+
7302 | Standard call to check for call compatibility |
7303 +--------------------------------------------------*/
7304 IF NOT FND_API.Compatible_API_Call( l_api_version,
7305 p_api_version,
7306 l_api_name,
7307 G_PKG_NAME
7308 ) THEN
7309 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7310 END IF;
7311
7312 /*--------------------------------------------------------------+
7313 | Initialize message list if p_init_msg_list is set to TRUE |
7314 +--------------------------------------------------------------*/
7315 IF p_init_msg_list is null THEN
7316 l_init_msg_list := FND_API.G_FALSE;
7317 ELSE
7318 l_init_msg_list := p_init_msg_list;
7319 END IF;
7320
7321 IF FND_API.to_Boolean(l_init_msg_list) THEN
7322 FND_MSG_PUB.initialize;
7323 END IF;
7324
7325 /*-----------------------------------------+
7326 | Initialize return status to SUCCESS |
7327 +-----------------------------------------*/
7328 x_return_status := FND_API.G_RET_STS_SUCCESS;
7329
7330 /*-----------------------------------------+
7331 | Populate Global Variable |
7332 +-----------------------------------------*/
7333 G_PUB_SRVC := l_api_name;
7334 G_DATA_TRANSFER_MODE := 'PLS';
7335 G_EXTERNAL_API_CALL := 'N';
7336
7337 /*------------------------------------------------------+
7338 | Validate Input Paramerters and Fetch Tax Options |
7339 +------------------------------------------------------*/
7340 ZX_VALID_INIT_PARAMS_PKG.discard_tax_only_lines(x_return_status => l_return_status ,
7341 p_trx_rec => p_transaction_rec
7342 );
7343
7344 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7345 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7346 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.discard_tax_only_lines returned errors');
7347 END IF;
7348 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7349 RAISE FND_API.G_EXC_ERROR;
7350 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7351 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7352 END IF;
7353 END IF;
7354
7355 l_event_class_rec.application_id := p_transaction_rec.application_id;
7356 l_event_class_rec.entity_code := p_transaction_rec.entity_code;
7357 l_event_class_rec.event_class_code := p_transaction_rec.event_class_code;
7358 l_event_class_rec.event_type_code := p_transaction_rec.event_type_code;
7359 l_event_class_rec.trx_id := p_transaction_rec.trx_id;
7360 l_event_class_rec.first_pty_org_id := p_transaction_rec.first_pty_org_id;
7361 l_event_class_rec.tax_event_class_code := p_transaction_rec.tax_event_class_code;
7362 l_event_class_rec.tax_event_type_code := p_transaction_rec.tax_event_type_code;
7363
7364 -- Get Event Class Info.
7365
7366 OPEN get_event_class_info;
7367 FETCH get_event_class_info INTO
7368 l_event_class_rec.summarization_flag,
7369 l_event_class_rec.retain_summ_tax_line_id_flag;
7370
7371 IF get_event_class_info%NOTFOUND THEN
7372
7373 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
7374
7375 FND_LOG.STRING(G_LEVEL_STATEMENT,
7376 G_MODULE_NAME || l_api_name,
7377 G_PKG_NAME||':'||l_api_name||': Event Class Info not retreived');
7378 END IF;
7379
7380 END IF;
7381
7382 CLOSE get_event_class_info;
7383
7384 /*--------------------------------------------------+
7385 | Call to Service Type Discard Tax Only Lines |
7386 +--------------------------------------------------*/
7387 IF ( G_LEVEL_EVENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7388 FND_LOG.STRING(G_LEVEL_EVENT,G_MODULE_NAME||l_api_name,
7389 'Updating Tax Lines for Transaction: '||
7390 to_char(p_transaction_rec.trx_id)||
7391 ' of Application: '||
7392 to_char(p_transaction_rec.application_id)||
7393 ' and Event Class: '||
7394 p_transaction_rec.event_class_code
7395 );
7396 END IF;
7397
7401
7398 ZX_SRVC_TYP_PKG.discard_tax_only_lines(p_event_class_rec => l_event_class_rec,
7399 x_return_status => l_return_status
7400 );
7402 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7403 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7404 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.discard_tax_only_lines returned errors');
7405 END IF;
7406 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7407 RAISE FND_API.G_EXC_ERROR;
7408 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7409 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7410 END IF;
7411 END IF;
7412
7413 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7414 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
7415 END IF;
7416
7417 EXCEPTION
7418 WHEN FND_API.G_EXC_ERROR THEN
7419 ROLLBACK TO discard_tax_only_lines_PVT;
7420 x_return_status := FND_API.G_RET_STS_ERROR ;
7421 DUMP_MSG;
7422 /*---------------------------------------------------------+
7423 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7424 | in the message stack. If there is only one message in |
7425 | the stack it retrieves this message |
7426 +---------------------------------------------------------*/
7427 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7428 p_count => x_msg_count,
7429 p_data => x_msg_data
7430 );
7431 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7432 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
7433 END IF;
7434
7435 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7436 ROLLBACK TO discard_tax_only_lines_PVT;
7437 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7438 DUMP_MSG;
7439 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7440 FND_MSG_PUB.Add;
7441 /*---------------------------------------------------------+
7442 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7443 | in the message stack. If there is only one message in |
7444 | the stack it retrieves this message |
7445 +---------------------------------------------------------*/
7446 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7447 p_count => x_msg_count,
7448 p_data => x_msg_data
7449 );
7450 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7451 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
7452 END IF;
7453
7454 WHEN OTHERS THEN
7455 ROLLBACK TO discard_tax_only_lines_PVT;
7456 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7457 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7458 FND_MSG_PUB.Add;
7459 /*---------------------------------------------------------+
7460 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7461 | in the message stack. If there is only one message in |
7462 | the stack it retrieves this message |
7463 +---------------------------------------------------------*/
7464 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7465 p_count => x_msg_count,
7466 p_data => x_msg_data
7467 );
7468 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
7469 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
7470 END IF;
7471 END discard_tax_only_lines;
7472
7473
7474 /* =======================================================================*
7475 | PROCEDURE validate_document_for_tax : |
7476 * =======================================================================*/
7477
7478 PROCEDURE Validate_document_for_tax
7479 ( p_api_version IN NUMBER,
7480 p_init_msg_list IN VARCHAR2 ,
7481 p_commit IN VARCHAR2,
7482 p_validation_level IN NUMBER,
7483 x_return_status OUT NOCOPY VARCHAR2 ,
7484 x_msg_count OUT NOCOPY NUMBER ,
7485 x_msg_data OUT NOCOPY VARCHAR2,
7486 p_transaction_rec IN OUT NOCOPY transaction_rec_type,
7487 x_validation_status OUT NOCOPY VARCHAR2,
7488 x_hold_codes_tbl OUT NOCOPY ZX_API_PUB.hold_codes_tbl_type
7489 ) IS
7490 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_DOCUMENT_FOR_TAX';
7491 l_api_version CONSTANT NUMBER := 1.0;
7492 l_return_status VARCHAR2(30);
7493 l_init_msg_list VARCHAR2(1);
7494 l_event_class_rec event_class_rec_type;
7495
7496 -- Added for bug#16483600 JAI ZX Integration
7497 lb_jai_exists BOOLEAN := FALSE;
7498
7499 BEGIN
7500 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7501 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
7502 END IF;
7503
7504
7505 /*--------------------------------------------------+
7506 | Standard start of API savepoint |
7507 +--------------------------------------------------*/
7508 SAVEPOINT Validate_Document_PVT;
7509
7510 /*--------------------------------------------------+
7511 | Standard call to check for call compatibility |
7512 +--------------------------------------------------*/
7513 IF NOT FND_API.Compatible_API_Call(l_api_version,
7514 p_api_version,
7515 l_api_name,
7516 G_PKG_NAME
7517 ) THEN
7518 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7519 END IF;
7520
7521 /*--------------------------------------------------------------+
7522 | Initialize message list if p_init_msg_list is set to TRUE |
7523 +--------------------------------------------------------------*/
7524 IF p_init_msg_list is null THEN
7525 l_init_msg_list := FND_API.G_FALSE;
7526 ELSE
7527 l_init_msg_list := p_init_msg_list;
7528 END IF;
7529
7530 IF FND_API.to_Boolean(l_init_msg_list) THEN
7531 FND_MSG_PUB.initialize;
7532 END IF;
7533
7534 /*-----------------------------------------+
7535 | Initialize return status to SUCCESS |
7536 +-----------------------------------------*/
7537
7538 x_return_status := FND_API.G_RET_STS_SUCCESS;
7539
7540 /*-----------------------------------------+
7541 | Populate Global Variable |
7542 +-----------------------------------------*/
7543 G_PUB_SRVC := l_api_name;
7544 G_DATA_TRANSFER_MODE := 'PLS';
7545 G_EXTERNAL_API_CALL := 'N';
7546
7547 /*------------------------------------------------------+
7548 | Validate Input Paramerters and Fetch Tax Options |
7549 +------------------------------------------------------*/
7550 ZX_VALID_INIT_PARAMS_PKG.validate_document_for_tax(x_return_status => l_return_status,
7551 p_event_class_rec => l_event_class_rec,
7552 p_trx_rec => p_transaction_rec
7553 );
7554
7555 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7556 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7557 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.validate_document_for_tax returned errors');
7558 END IF;
7559 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7560 RAISE FND_API.G_EXC_ERROR;
7561 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7562 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7563 END IF;
7564 END IF;
7565
7566 /* -------------------------------------------------------+
7567 | JAI tax processing for JAI AP Invoice Validation |
7568 | and JAI AR Invoice Completion |
7569 + -------------------------------------------------------*/
7570 -- Start : Added for JAI Trigger Elimination : Bug#16483600 JAI ZX Integration
7571 -- JAI AP INVOICE Validation/AR Completion
7572 lb_jai_exists := JAI_TAX_PROCESSING_PKG.CHECK_JAI_EXISTS_IN_ZX(pn_set_of_books_id => NULL,
7573 pn_application_id => p_transaction_rec.APPLICATION_ID, --Added by Qinglei for manaual AR invoice completion
7574 pv_entity_code => p_transaction_rec.ENTITY_CODE,
7578 IF lb_jai_exists = TRUE THEN
7575 pn_trx_id => p_transaction_rec.TRX_ID --Added by Qinglei for manaual AR invoice completion
7576 );
7577
7579
7580 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7581 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing start +');
7582 END IF;
7583
7584 --Call JAI tax processing.
7585 JAI_TAX_PROCESSING_PKG.CALCULATE_TAX(p_transaction_rec => p_transaction_rec
7586 ,p_event_class_rec => l_event_class_rec
7587 ,p_line_level_action => NULL
7588 ,p_trx_line_id => NULL
7589 ,x_return_status => l_return_status
7590 );
7591
7592 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7593 x_return_status := l_return_status;
7594 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7595 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
7596 ' JAI_TAX_PROCESSING_PKG.CALCULATE_TAX RETURN_STATUS = ' || x_return_status);
7597 END IF;
7598 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7599 RAISE FND_API.G_EXC_ERROR;
7600 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7601 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7602 END IF;
7603 END IF;
7604
7605 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7606 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JAI processing end -');
7607 END IF;
7608 END IF;
7609 -- End : Added for JAI Trigger Elimination
7610
7611 /*--------------------------------------------------+
7612 | Call Service Type Validate Document for Tax |
7613 +--------------------------------------------------*/
7614 ZX_SRVC_TYP_PKG.validate_document_for_tax(p_trx_rec => p_transaction_rec,
7615 p_event_class_rec => l_event_class_rec,
7616 x_validation_status => x_validation_status,
7617 x_hold_status_code => x_hold_codes_tbl,
7618 x_return_status => l_return_status
7619 );
7620
7621 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7622 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7623 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.validate_document_for_tax returned errors');
7624 END IF;
7625 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7626 RAISE FND_API.G_EXC_ERROR;
7627 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7628 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7629 END IF;
7630 END IF;
7631
7632 /*------------------------------------------------+
7633 | Update zx_lines_det_factors |
7634 +------------------------------------------------*/
7635 UPDATE ZX_LINES_DET_FACTORS
7636 SET TAX_EVENT_TYPE_CODE = l_event_class_rec.tax_event_type_code,
7637 DOC_EVENT_STATUS = l_event_class_rec.doc_status_code
7638 WHERE APPLICATION_ID = p_transaction_rec.APPLICATION_ID
7639 AND ENTITY_CODE = p_transaction_rec.ENTITY_CODE
7640 AND EVENT_CLASS_CODE = p_transaction_rec.EVENT_CLASS_CODE
7641 AND TRX_ID = p_transaction_rec.TRX_ID;
7642
7643 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7644 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
7645 END IF;
7646
7647 EXCEPTION
7648 WHEN FND_API.G_EXC_ERROR THEN
7649 ROLLBACK TO Validate_Document_PVT;
7650 x_return_status := FND_API.G_RET_STS_ERROR ;
7651 DUMP_MSG;
7652 /*---------------------------------------------------------+
7653 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7654 | in the message stack. If there is only one message in |
7655 | the stack it retrieves this message |
7656 +---------------------------------------------------------*/
7657 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7658 p_count => x_msg_count,
7659 p_data => x_msg_data
7660 );
7661 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7662 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
7663 END IF;
7664
7665 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7666 ROLLBACK TO Validate_Document_PVT;
7667 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7668 DUMP_MSG;
7669 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7670 FND_MSG_PUB.Add;
7671 /*---------------------------------------------------------+
7672 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7673 | in the message stack. If there is only one message in |
7674 | the stack it retrieves this message |
7675 +---------------------------------------------------------*/
7676 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7677 p_count => x_msg_count,
7678 p_data => x_msg_data
7679 );
7680 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7681 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
7682 END IF;
7683
7684
7685 WHEN OTHERS THEN
7686 ROLLBACK TO Validate_Document_PVT;
7687 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7688 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7689 FND_MSG_PUB.Add;
7690 /*---------------------------------------------------------+
7691 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7692 | in the message stack. If there is only one message in |
7693 | the stack it retrieves this message |
7694 +---------------------------------------------------------*/
7695 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7696 p_count => x_msg_count,
7697 p_data => x_msg_data
7698 );
7699
7700 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
7701 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
7702 END IF;
7703
7704 END validate_document_for_tax;
7705
7706
7707 /* =======================================================================*
7708 | PROCEDURE validate_document_for_tax for Receivables Autoinvoice |
7709 | and recurring invoice. |
7710 | Bug 5518807 |
7711 * =======================================================================*/
7712
7713 PROCEDURE Validate_document_for_tax
7714 ( p_api_version IN NUMBER,
7715 p_init_msg_list IN VARCHAR2 ,
7716 p_commit IN VARCHAR2,
7717 p_validation_level IN NUMBER,
7718 x_return_status OUT NOCOPY VARCHAR2 ,
7719 x_msg_count OUT NOCOPY NUMBER ,
7720 x_msg_data OUT NOCOPY VARCHAR2
7721 ) IS
7722 l_api_name CONSTANT VARCHAR2(30) := 'BULK_VALIDATE_DOCUMENT_FOR_TAX';
7723 l_api_version CONSTANT NUMBER := 1.0;
7724 l_return_status VARCHAR2(30);
7725 l_init_msg_list VARCHAR2(1);
7726
7727 CURSOR c_headers is
7728 SELECT zthg.application_id
7729 , zthg.entity_code
7730 , zthg.event_class_code
7731 , zthg.trx_id
7732 , zetm.event_type_code -- Bug 5598384
7733 , zect.tax_event_type_code
7734 , zect.status_code
7735 FROM ZX_TRX_HEADERS_GT zthg
7736 , ZX_EVNT_TYP_MAPPINGS zetm
7737 , ZX_EVNT_CLS_TYPS zect
7738 WHERE zthg.event_class_code = zetm.event_class_code
7739 AND zthg.entity_code = zetm.entity_code
7740 AND zthg.application_id = zetm.application_id
7741 AND zetm.event_type_code = DECODE(zetm.event_class_code, -- Bug 5598384
7742 'INVOICE', 'INV_COMPLETE',
7743 'DEBIT_MEMO', 'DM_COMPLETE',
7744 'CREDIT_MEMO', 'CM_COMPLETE'
7745 )
7746 AND zect.tax_event_class_code = zetm.tax_event_class_code
7747 AND zect.tax_event_type_code = zetm.tax_event_type_code
7748 AND (validation_check_flag is null OR
7749 validation_check_flag <> 'N');
7750
7751 l_application_id_tbl NUMBER_tbl_type;
7752 l_entity_code_tbl VARCHAR2_30_tbl_type;
7753 l_event_class_code_tbl VARCHAR2_30_tbl_type;
7754 l_trx_id_tbl NUMBER_tbl_type;
7755 l_event_type_code_tbl VARCHAR2_30_tbl_type;
7756 l_tax_event_type_code_tbl VARCHAR2_30_tbl_type;
7757 l_doc_event_status_tbl VARCHAR2_30_tbl_type;
7758
7759
7760 BEGIN
7761 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7762 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'(+)');
7763 END IF;
7764
7765
7766 /*--------------------------------------------------+
7767 | Standard start of API savepoint |
7768 +--------------------------------------------------*/
7769 SAVEPOINT Validate_Document_PVT;
7770
7771 /*--------------------------------------------------+
7772 | Standard call to check for call compatibility |
7776 l_api_name,
7773 +--------------------------------------------------*/
7774 IF NOT FND_API.Compatible_API_Call(l_api_version,
7775 p_api_version,
7777 G_PKG_NAME
7778 ) THEN
7779 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7780 END IF;
7781
7782 /*--------------------------------------------------------------+
7783 | Initialize message list if p_init_msg_list is set to TRUE |
7784 +--------------------------------------------------------------*/
7785 IF p_init_msg_list is null THEN
7786 l_init_msg_list := FND_API.G_FALSE;
7787 ELSE
7788 l_init_msg_list := p_init_msg_list;
7789 END IF;
7790
7791 IF FND_API.to_Boolean(l_init_msg_list) THEN
7792 FND_MSG_PUB.initialize;
7793 END IF;
7794
7795 /*-----------------------------------------+
7796 | Initialize return status to SUCCESS |
7797 +-----------------------------------------*/
7798
7799 x_return_status := FND_API.G_RET_STS_SUCCESS;
7800
7801 /*-----------------------------------------+
7802 | Populate Global Variable |
7803 +-----------------------------------------*/
7804 G_PUB_SRVC := l_api_name;
7805 G_DATA_TRANSFER_MODE := 'PLS';
7806 G_EXTERNAL_API_CALL := 'N';
7807
7808 BEGIN
7809 OPEN C_HEADERS;
7810 LOOP
7811 FETCH c_HEADERS BULK COLLECT INTO
7812 l_application_id_tbl,
7813 l_entity_code_tbl,
7814 l_event_class_code_tbl,
7815 l_trx_id_tbl,
7816 l_event_type_code_tbl,
7817 l_tax_event_type_code_tbl,
7818 l_doc_event_status_tbl
7819 LIMIT G_LINES_PER_FETCH;
7820
7821
7822 FORALL i IN l_application_id_tbl.FIRST .. l_application_id_tbl.LAST
7823 UPDATE ZX_LINES_DET_FACTORS
7824 SET EVENT_TYPE_CODE = l_event_type_code_tbl(i),
7825 TAX_EVENT_TYPE_CODE = l_tax_event_type_code_tbl(i),
7826 DOC_EVENT_STATUS = l_doc_event_status_tbl(i)
7827 WHERE
7828 APPLICATION_ID = l_application_id_tbl(i)
7829 AND ENTITY_CODE = l_entity_code_tbl(i)
7830 AND EVENT_CLASS_CODE = l_event_class_code_tbl(i)
7831 AND TRX_ID = l_trx_id_tbl(i);
7832
7833 exit when c_HEADERS%NOTFOUND;
7834 END LOOP;
7835
7836 close c_HEADERS;
7837 END;
7838
7839 EXCEPTION
7840 WHEN FND_API.G_EXC_ERROR THEN
7841 ROLLBACK TO Validate_Document_PVT;
7842 x_return_status := FND_API.G_RET_STS_ERROR ;
7843 DUMP_MSG;
7844 /*---------------------------------------------------------+
7845 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7846 | in the message stack. If there is only one message in |
7847 | the stack it retrieves this message |
7848 +---------------------------------------------------------*/
7849 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7850 p_count => x_msg_count,
7851 p_data => x_msg_data
7852 );
7853 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7854 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
7855 END IF;
7856
7857 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7858 ROLLBACK TO Validate_Document_PVT;
7859 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7860 DUMP_MSG;
7861 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7862 FND_MSG_PUB.Add;
7863 /*---------------------------------------------------------+
7864 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7865 | in the message stack. If there is only one message in |
7866 | the stack it retrieves this message |
7867 +---------------------------------------------------------*/
7868 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7869 p_count => x_msg_count,
7870 p_data => x_msg_data
7871 );
7872 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
7873 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
7874 END IF;
7875
7876
7877 WHEN OTHERS THEN
7878 ROLLBACK TO Validate_Document_PVT;
7879 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7880 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
7881 FND_MSG_PUB.Add;
7882 /*---------------------------------------------------------+
7883 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
7884 | in the message stack. If there is only one message in |
7885 | the stack it retrieves this message |
7886 +---------------------------------------------------------*/
7887 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
7888 p_count => x_msg_count,
7889 p_data => x_msg_data
7890 );
7891
7892 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
7893 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
7894 END IF;
7895
7896 END validate_document_for_tax;
7897
7898
7899 /* ============================================================================*
7900 | PROCEDURE get_default_tax_line_attribs : default the tax status and tax rate|
7901 | based on the tax regime and tax |
7902 * ===========================================================================*/
7903 PROCEDURE get_default_tax_line_attribs
7904 ( p_api_version IN NUMBER,
7905 p_init_msg_list IN VARCHAR2,
7906 p_commit IN VARCHAR2,
7907 p_validation_level IN NUMBER,
7908 x_return_status OUT NOCOPY VARCHAR2,
7909 x_msg_count OUT NOCOPY NUMBER,
7910 x_msg_data OUT NOCOPY VARCHAR2,
7911 p_tax_regime_code IN VARCHAR2,
7912 p_tax IN VARCHAR2,
7913 p_effective_date IN DATE,
7914 x_tax_status_code OUT NOCOPY VARCHAR2,
7915 x_tax_rate_code OUT NOCOPY VARCHAR2
7916 ) IS
7917 l_api_name CONSTANT VARCHAR2(30) := 'GET_DEFAULT_TAX_LINE_ATTRIBS';
7918 l_api_version CONSTANT NUMBER := 1.0;
7919 l_return_status VARCHAR2(30);
7920 l_error_buffer VARCHAR2(1000);
7921 l_tax_method VARCHAR2(30);
7922 l_init_msg_list VARCHAR2(1);
7923
7924 BEGIN
7925 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7926 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
7927 END IF;
7928
7929
7930 /*--------------------------------------------------+
7931 | Standard start of API savepoint |
7932 +--------------------------------------------------*/
7933 SAVEPOINT Get_Default_Tax_Line_Attrs_PVT;
7934
7935 /*--------------------------------------------------+
7936 | Standard call to check for call compatibility |
7937 +--------------------------------------------------*/
7938 IF NOT FND_API.Compatible_API_Call(l_api_version,
7939 p_api_version,
7940 l_api_name,
7941 G_PKG_NAME
7942 ) THEN
7943 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7944 END IF;
7945
7946 /*--------------------------------------------------------------+
7947 | Initialize message list if p_init_msg_list is set to TRUE |
7948 +--------------------------------------------------------------*/
7949 IF p_init_msg_list is null THEN
7950 l_init_msg_list := FND_API.G_FALSE;
7951 ELSE
7952 l_init_msg_list := p_init_msg_list;
7953 END IF;
7954
7955 IF FND_API.to_Boolean(l_init_msg_list) THEN
7956 FND_MSG_PUB.initialize;
7957 END IF;
7958
7959
7960 /*-----------------------------------------+
7961 | Initialize return status to SUCCESS |
7962 +-----------------------------------------*/
7963 x_return_status := FND_API.G_RET_STS_SUCCESS;
7964
7965 /*-----------------------------------------+
7966 | Populate Global Variable |
7967 +-----------------------------------------*/
7968 G_PUB_SRVC := l_api_name;
7969 G_DATA_TRANSFER_MODE := 'PLS';
7970 G_EXTERNAL_API_CALL := 'N';
7971
7972 /*-----------------------------------------+
7973 | Get the tax status and tax rate |
7974 +-----------------------------------------*/
7975 ZX_TCM_EXT_SERVICES_PUB.get_default_status_rates(p_tax_regime_code => p_tax_regime_code,
7976 p_tax => p_tax,
7977 p_date => p_effective_date,
7978 p_tax_status_code => x_tax_status_code,
7979 p_tax_rate_code => x_tax_rate_code,
7980 p_return_status => l_return_status
7981 );
7982
7983 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7984 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7985 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TCM_EXT_SERVICES_PUB.get_default_status_rates returned errors');
7986 END IF;
7987 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
7988 RAISE FND_API.G_EXC_ERROR;
7989 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7990 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7991 END IF;
7992 END IF;
7993
7994
7995 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
7996 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()+');
7997 END IF;
7998
7999 EXCEPTION
8000 WHEN FND_API.G_EXC_ERROR THEN
8001 ROLLBACK TO Get_Default_Tax_Line_Attrs_PVT;
8002 x_return_status := FND_API.G_RET_STS_ERROR ;
8003 DUMP_MSG;
8004 /*---------------------------------------------------------+
8005 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8006 | in the message stack. If there is only one message in |
8007 | the stack it retrieves this message |
8008 +---------------------------------------------------------*/
8009 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8010 p_count => x_msg_count,
8011 p_data => x_msg_data
8012 );
8013 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8014 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
8015 END IF;
8016
8017 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8018 ROLLBACK TO Get_Default_Tax_Line_Attrs_PVT;
8019 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8020 DUMP_MSG;
8021 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8022 FND_MSG_PUB.Add;
8023 /*---------------------------------------------------------+
8024 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8025 | in the message stack. If there is only one message in |
8026 | the stack it retrieves this message |
8027 +---------------------------------------------------------*/
8028 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8029 p_count => x_msg_count,
8030 p_data => x_msg_data
8031 );
8032 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8033 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
8034 END IF;
8035
8036 WHEN OTHERS THEN
8037 ROLLBACK TO Get_Default_Tax_Line_Attrs_PVT;
8038 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8039 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8040 FND_MSG_PUB.Add;
8041 /*---------------------------------------------------------+
8042 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8043 | in the message stack. If there is only one message in |
8044 | the stack it retrieves this message |
8045 +---------------------------------------------------------*/
8046 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8047 p_count => x_msg_count,
8048 p_data => x_msg_data
8049 );
8050
8051 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
8052 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
8053 END IF;
8054
8055 END get_default_tax_line_attribs;
8056
8057 /* =================================================================================*
8058 | OVERLOADED version till XBUILD 2 so that AP processes do not get invalidated |
8059 | NEED TO REMOVE THIS PROCEDURE ONCE AP CHANGES GO IN |
8060 | |
8061 | Procedure get_default_tax_det_attribs : default the following product fiscal |
8062 | classification based on the relevant default taxation country, application event |
8063 | class, inventory organization and inventory item values: |
8064 | * trx_business_category |
8065 | * primary_intended_use |
8066 | * product_fisc_classification |
8067 | * product_category |
8068 * ================================================================================*/
8069
8070
8071 PROCEDURE get_default_tax_det_attribs
8072 ( p_api_version IN NUMBER,
8073 p_init_msg_list IN VARCHAR2,
8074 p_commit IN VARCHAR2,
8075 p_validation_level IN NUMBER,
8076 x_return_status OUT NOCOPY VARCHAR2 ,
8077 x_msg_count OUT NOCOPY NUMBER ,
8078 x_msg_data OUT NOCOPY VARCHAR2,
8079 p_application_id IN NUMBER,
8080 p_entity_code IN VARCHAR2,
8084 p_country_code IN VARCHAR2,
8081 p_event_class_code IN VARCHAR2,
8082 p_org_id IN NUMBER,
8083 p_item_id IN NUMBER,
8085 p_effective_date IN DATE,
8086 x_trx_biz_category OUT NOCOPY VARCHAR2,
8087 x_intended_use OUT NOCOPY VARCHAR2,
8088 x_prod_category OUT NOCOPY VARCHAR2,
8089 x_prod_fisc_class_code OUT NOCOPY VARCHAR2,
8090 x_product_type OUT NOCOPY VARCHAR2
8091 ) IS
8092 BEGIN
8093 NULL;
8094 END get_default_tax_det_attribs;
8095
8096
8097 /* =================================================================================*
8098 | Procedure get_default_tax_det_attribs : default the following product fiscal |
8099 | classification based on the relevant default taxation country, application event |
8100 | class, inventory organization and inventory item values: |
8101 | * trx_business_category |
8102 | * primary_intended_use |
8103 | * product_fisc_classification |
8104 | * product_category |
8105 * ================================================================================*/
8106
8107
8108 PROCEDURE get_default_tax_det_attribs
8109 ( p_api_version IN NUMBER,
8110 p_init_msg_list IN VARCHAR2,
8111 p_commit IN VARCHAR2,
8112 p_validation_level IN NUMBER,
8113 x_return_status OUT NOCOPY VARCHAR2 ,
8114 x_msg_count OUT NOCOPY NUMBER ,
8115 x_msg_data OUT NOCOPY VARCHAR2,
8116 p_application_id IN NUMBER,
8117 p_entity_code IN VARCHAR2,
8118 p_event_class_code IN VARCHAR2,
8119 p_org_id IN NUMBER,
8120 p_item_id IN NUMBER,
8121 p_country_code IN VARCHAR2,
8122 p_effective_date IN DATE,
8123 p_source_event_class_code IN VARCHAR2,
8124 x_trx_biz_category OUT NOCOPY VARCHAR2,
8125 x_intended_use OUT NOCOPY VARCHAR2,
8126 x_prod_category OUT NOCOPY VARCHAR2,
8127 x_prod_fisc_class_code OUT NOCOPY VARCHAR2,
8128 x_product_type OUT NOCOPY VARCHAR2,
8129 p_inventory_org_id IN NUMBER
8130 ) IS
8131 l_api_name CONSTANT VARCHAR2(30) := 'GET_DEFAULT_TAX_DET_ATTRIBS';
8132 l_api_version CONSTANT NUMBER := 1.0;
8133 l_return_status VARCHAR2(30);
8134 l_error_buffer VARCHAR2(1000);
8135 l_tax_method VARCHAR2(30);
8136 l_init_msg_list VARCHAR2(1);
8137 l_internal_org_id NUMBER;
8138 l_application_id NUMBER;
8139 l_entity_code zx_evnt_cls_mappings.entity_code%TYPE;
8140 l_event_class_code zx_evnt_cls_mappings.event_class_code%TYPE;
8141 l_zx_product_options_rec ZX_GLOBAL_STRUCTURES_PKG.zx_product_options_rec_type;
8142
8143 CURSOR c_trx_biz_cat_csr (c_application_id NUMBER,
8144 c_entity_code zx_evnt_cls_mappings.entity_code%TYPE,
8145 c_event_class_code zx_evnt_cls_mappings.event_class_code%TYPE) IS
8146 SELECT tax_event_class_code, intrcmp_tx_evnt_cls_code
8147 FROM zx_evnt_cls_mappings
8148 WHERE application_id = c_application_id
8149 AND entity_code = c_entity_code
8150 AND event_class_code = c_event_class_code;
8151
8152 CURSOR c_intrcmp_code (c_application_id NUMBER,
8153 c_entity_code zx_evnt_cls_mappings.entity_code%TYPE,
8154 c_event_class_code zx_evnt_cls_mappings.event_class_code%TYPE) IS
8155 SELECT DEF_INTRCMP_TRX_BIZ_CATEGORY
8156 FROM ZX_EVNT_CLS_OPTIONS op, zx_party_tax_profile ptp
8157 WHERE op.application_id = c_application_id
8158 AND op.entity_code = c_entity_code
8159 AND op.event_class_code = c_event_class_code
8160 AND op.FIRST_PTY_ORG_ID = ptp.party_tax_profile_id
8161 AND op.effective_from <= p_effective_date
8162 AND (op.effective_to >= p_effective_date OR op.effective_to IS NULL)
8163 AND ptp.party_id = p_org_id
8164 AND ptp.party_type_code = 'OU';
8165
8166 BEGIN
8167 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8168 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
8169 END IF;
8170
8171 /*--------------------------------------------------+
8172 | Standard start of API savepoint |
8173 +--------------------------------------------------*/
8174 SAVEPOINT Get_Default_Tax_Det_Attrs_PVT;
8175
8176 /*--------------------------------------------------+
8177 | Standard call to check for call compatibility |
8178 +--------------------------------------------------*/
8179 IF NOT FND_API.Compatible_API_Call(l_api_version,
8180 p_api_version,
8181 l_api_name,
8182 G_PKG_NAME
8183 ) THEN
8184 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8185 END IF;
8186
8187 /*--------------------------------------------------------------+
8188 | Initialize message list if p_init_msg_list is set to TRUE |
8189 +--------------------------------------------------------------*/
8190 IF p_init_msg_list is null THEN
8191 l_init_msg_list := FND_API.G_FALSE;
8192 ELSE
8193 l_init_msg_list := p_init_msg_list;
8197 FND_MSG_PUB.initialize;
8194 END IF;
8195
8196 IF FND_API.to_Boolean(l_init_msg_list) THEN
8198 END IF;
8199
8200 /*-----------------------------------------+
8201 | Initialize return status to SUCCESS |
8202 +-----------------------------------------*/
8203 x_return_status := FND_API.G_RET_STS_SUCCESS;
8204
8205
8206 /*-----------------------------------------+
8207 | Populate Global Variable |
8208 +-----------------------------------------*/
8209 --Currently this procedure is being called from internal TDS services when defaulting the determining
8210 --attributes in case of calculate_tax, insert_line_det_factors,etc. So need to set the parameters only
8211 --if direct call to this API and not via other published APIs
8212 IF G_PUB_CALLING_SRVC is null THEN
8213 G_PUB_SRVC := l_api_name;
8214 G_DATA_TRANSFER_MODE := 'PLS';
8215 G_EXTERNAL_API_CALL := 'N';
8216 --ELSE
8217 -- G_PUB_CALLING_SRVC := null;
8218 END IF;
8219
8220 /*-----------------------------------------------------------------+
8221 | Populate Global Event Class Rec If Not Populated |
8222 +-----------------------------------------------------------------*/
8223
8224 l_application_id := p_application_id; --bug# 6662504
8225
8226 IF ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.application_id IS NULL THEN
8227
8228 IF p_event_class_code = 'SALES_TRANSACTION_TAX_QUOTE' THEN
8229 l_application_id := 222;
8230 l_entity_code := 'TRANSACTIONS';
8231 l_event_class_code := 'INVOICE';
8232 ELSIF p_event_class_code = 'PURCHASE_TRANSACTION_TAX_QUOTE' THEN
8233 l_application_id := 200;
8234 l_entity_code := 'AP_INVOICES';
8235 l_event_class_code := 'STANDARD INVOICES';
8236 ELSE
8237 l_application_id := p_application_id;
8238 l_entity_code := p_entity_code;
8239 l_event_class_code := p_event_class_code;
8240 END IF;
8241
8242
8243 -- Fetch tax event class and intercompany tax event class
8244
8245 OPEN c_trx_biz_cat_csr(l_application_id, l_entity_code, l_event_class_code);
8246 FETCH c_trx_biz_cat_csr INTO ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.tax_event_class_code,
8247 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.intrcmp_tx_evnt_cls_code;
8248 CLOSE c_trx_biz_cat_csr;
8249
8250 -- Fetch default transaction business category
8251
8252 OPEN c_intrcmp_code(l_application_id, l_entity_code, l_event_class_code);
8253 FETCH c_intrcmp_code INTO ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.DEF_INTRCMP_TRX_BIZ_CATEGORY;
8254 CLOSE c_intrcmp_code;
8255
8256 END IF;
8257
8258
8259 -- Fetch tax method
8260 -- Fix for bug 5102996: Fetch tax method from zx_product_options only if it is not found in the cache
8261
8262 ZX_GLOBAL_STRUCTURES_PKG.get_product_options_info
8263 (p_application_id => l_application_id,
8264 p_org_id => p_org_id,
8265 x_product_options_rec => l_zx_product_options_rec,
8266 x_return_status => x_return_status);
8267
8268 IF x_return_status = FND_API.G_RET_STS_ERROR then
8269
8270 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8271 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'Incorrect return status after calling '||
8272 'ZX_GLOBAL_STRUCTURES_PKG.get_product_options_info');
8273 END IF;
8274 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.tax_method_code := 'EBTAX';
8275
8276 ELSE
8277 ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.tax_method_code := nvl(l_zx_product_options_rec.tax_method_code,'EBTAX'); --6841552
8278 END IF;
8279
8280 l_tax_method := ZX_GLOBAL_STRUCTURES_PKG.g_event_class_rec.tax_method_code;
8281
8282
8283 IF l_tax_method = 'EBTAX' THEN
8284
8285 /*---------------------------------------------------------+
8286 | Get the default value for trx business category |
8287 +---------------------------------------------------------*/
8288 ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(p_fiscal_type_code => 'TRX_BUSINESS_CATEGORY',
8289 p_country_code => p_country_code,
8290 p_application_id => p_application_id,
8291 p_entity_code => p_entity_code,
8292 p_event_class_code => p_event_class_code,
8293 p_source_event_class_code => p_source_event_class_code,
8294 p_org_id => p_org_id,
8295 p_item_id => p_item_id,
8296 p_default_code => x_trx_biz_category,
8297 p_return_status => l_return_status
8298 );
8299 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8300 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8301 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code returned errors');
8302 END IF;
8303 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8304 RAISE FND_API.G_EXC_ERROR;
8305 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8306 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8307 END IF;
8308 ELSE
8309 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8310 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
8311 'Transaction Business Category:' || x_trx_biz_category);
8312 END IF;
8313 END IF;
8314
8315 -- Bug 11891533, intended_use is not defaulted correctly. pass inventory_org_id instead of passing internal_organization_id
8316 /*---------------------------------------------------------+
8317 | Get the default value for Intended use |
8318 +---------------------------------------------------------*/
8319 ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(p_fiscal_type_code => 'INTENDED_USE',
8320 p_country_code => p_country_code,
8321 p_application_id => p_application_id,
8322 p_entity_code => p_entity_code,
8323 p_event_class_code => p_event_class_code,
8324 p_source_event_class_code => p_source_event_class_code,
8325 p_org_id => nvl(p_inventory_org_id,p_org_id),
8326 p_item_id => p_item_id,
8327 p_default_code => x_intended_use,
8328 p_return_status => l_return_status
8329 );
8330
8331 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8332 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8333 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code returned errors');
8334 END IF;
8335 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8336 RAISE FND_API.G_EXC_ERROR;
8337 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8338 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8339 END IF;
8340 ELSE
8341 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8342 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
8343 'Intended Use :' || x_intended_use);
8344 END IF;
8345 END IF;
8346
8347 --Bug 6841552
8348 /*-----------------------------------------------------+
8349 | Get the default value for product category |
8350 +-----------------------------------------------------*/
8351 ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(p_fiscal_type_code => 'PRODUCT_CATEGORY',
8352 p_country_code => p_country_code,
8353 p_application_id => p_application_id,
8354 p_entity_code => p_entity_code,
8355 p_event_class_code => p_event_class_code,
8356 p_source_event_class_code => p_source_event_class_code,
8357 p_item_id => p_item_id,
8358 p_org_id => p_org_id,
8359 p_default_code => x_prod_category ,
8360 p_return_status => l_return_status
8361 );
8362 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8363 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8364 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code returned errors');
8365 END IF;
8366 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8367 RAISE FND_API.G_EXC_ERROR;
8368 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8369 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8370 END IF;
8371 ELSE
8372 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8373 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
8374 'Product Category :' || x_prod_category);
8375 END IF;
8376 END IF;
8377
8378 IF p_item_id is not null THEN
8379 /*---------------------------------------------------------+
8380 | Get the value for fiscal product classification |
8381 +---------------------------------------------------------*/
8382 ZX_TCM_EXT_SERVICES_PUB.get_default_product_classif(p_country_code => p_country_code,
8383 p_item_id => p_item_id,
8384 p_org_id => nvl(p_inventory_org_id,p_org_id), -- 10394157
8385 p_default_code => x_prod_fisc_class_code,
8386 p_return_status => l_return_status
8387 );
8388 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8389 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8390 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||': ZX_TCM_EXT_SERVICES_PUB.get_default_product_classif returned errors');
8391 END IF;
8392 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8393 RAISE FND_API.G_EXC_ERROR;
8394 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8395 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8396 END IF;
8397 ELSE
8398 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8399 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
8400 'Product Fiscal Classification :'|| x_prod_fisc_class_code);
8401 END IF;
8402 END IF;
8403
8404 /*-----------------------------------------------------+
8405 | Get the default value for product type |
8406 +-----------------------------------------------------*/
8407 ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(p_fiscal_type_code => 'PRODUCT_TYPE',
8408 p_country_code => p_country_code,
8409 p_application_id => p_application_id,
8410 p_entity_code => p_entity_code,
8411 p_event_class_code => p_event_class_code,
8412 p_source_event_class_code => p_source_event_class_code,
8413 p_item_id => p_item_id,
8414 p_org_id => nvl(p_inventory_org_id,p_org_id),
8415 p_default_code => x_product_type ,
8416 p_return_status => l_return_status
8417 );
8418 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8419 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8420 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code returned errors');
8421 END IF;
8422 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8423 RAISE FND_API.G_EXC_ERROR;
8424 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8425 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8426 END IF;
8427 ELSE
8428 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8429 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
8430 'Product Type :' || x_product_type);
8431 END IF;
8432 END IF;
8433
8434 ELSE --p_item_id is null
8435 x_product_type := null;
8436 x_prod_fisc_class_code := null;
8437
8438 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8439 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
8440 'Product Type :' || x_product_type||
8441 ', Product Fiscal Classification :' || x_prod_fisc_class_code);
8442 END IF;
8443 END IF; --p_item_id is not null
8444 ELSIF l_tax_method = 'LTE' THEN
8445 JL_ZZ_TAX_VALIDATE_PKG.default_tax_attr(x_return_status => l_return_status);
8446
8447 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8448 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8449 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code returned errors');
8450 END IF;
8451 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8452 RAISE FND_API.G_EXC_ERROR;
8453 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8454 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8455 END IF;
8456 END IF;
8457 END IF; --tax method condition
8458
8462
8459 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8460 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()+');
8461 END IF;
8463 EXCEPTION
8464 WHEN FND_API.G_EXC_ERROR THEN
8465 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
8466 x_return_status := FND_API.G_RET_STS_ERROR ;
8467 DUMP_MSG;
8468 /*---------------------------------------------------------+
8469 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8470 | in the message stack. If there is only one message in |
8471 | the stack it retrieves this message |
8472 +---------------------------------------------------------*/
8473 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8474 p_count => x_msg_count,
8475 p_data => x_msg_data
8476 );
8477 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8478 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,SQLERRM);
8479 END IF;
8480
8481 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8482 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
8483 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8484 DUMP_MSG;
8485 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8486 FND_MSG_PUB.Add;
8487 /*---------------------------------------------------------+
8488 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8489 | in the message stack. If there is only one message in |
8490 | the stack it retrieves this message |
8491 +---------------------------------------------------------*/
8492 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8493 p_count => x_msg_count,
8494 p_data => x_msg_data
8495 );
8496
8497 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8498 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,SQLERRM);
8499 END IF;
8500
8501 WHEN OTHERS THEN
8502 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
8503 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8504 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8505 FND_MSG_PUB.Add;
8506 /*---------------------------------------------------------+
8507 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8508 | in the message stack. If there is only one message in |
8509 | the stack it retrieves this message |
8510 +---------------------------------------------------------*/
8511 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8512 p_count => x_msg_count,
8513 p_data => x_msg_data
8514 );
8515 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
8516 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
8517 END IF;
8518 END get_default_tax_det_attribs;
8519
8520
8521
8522 /* =================================================================================*
8523 | Overloaded Procedure get_default_tax_det_attribs- for products that do not call |
8524 | ARP_TAX.get_default_tax_classification |
8525 | Default the following product fiscal |
8526 | classification based on the relevant default taxation country, application event |
8527 | class, inventory organization and inventory item values: |
8528 | * trx_business_category |
8529 | * primary_intended_use |
8530 | * product_fisc_classification |
8531 | * product_category |
8532 | Also default the tax classification code |
8533 * ================================================================================*/
8534
8535 PROCEDURE get_default_tax_det_attribs
8536 (
8537 p_api_version IN NUMBER,
8538 p_init_msg_list IN VARCHAR2,
8539 p_commit IN VARCHAR2,
8540 p_validation_level IN NUMBER,
8541 x_return_status OUT NOCOPY VARCHAR2 ,
8542 x_msg_count OUT NOCOPY NUMBER ,
8543 x_msg_data OUT NOCOPY VARCHAR2,
8544 p_defaulting_rec_type IN det_fact_defaulting_rec_type,
8545 x_trx_biz_category OUT NOCOPY VARCHAR2,
8546 x_intended_use OUT NOCOPY VARCHAR2,
8547 x_prod_category OUT NOCOPY VARCHAR2,
8548 x_prod_fisc_class_code OUT NOCOPY VARCHAR2,
8549 x_product_type OUT NOCOPY VARCHAR2,
8550 x_tax_classification_code OUT NOCOPY VARCHAR2
8551 ) IS
8552 l_api_name CONSTANT VARCHAR2(30) := 'GET_DEFAULT_TAX_DET_ATTRIBS';
8553 l_api_version CONSTANT NUMBER := 1.0;
8554 l_return_status VARCHAR2(30);
8555 l_error_buffer VARCHAR2(1000);
8556 l_init_msg_list VARCHAR2(1);
8557 l_redef_tax_class_code_rec def_tax_cls_code_info_rec_type;
8558
8559 BEGIN
8560 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8561 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
8562 END IF;
8563
8564 /*--------------------------------------------------+
8565 | Standard start of API savepoint |
8566 +--------------------------------------------------*/
8567 SAVEPOINT Get_Default_Tax_Det_Attrs_PVT;
8568
8569 /*--------------------------------------------------+
8570 | Standard call to check for call compatibility |
8571 +--------------------------------------------------*/
8572 IF NOT FND_API.Compatible_API_Call(l_api_version,
8573 p_api_version,
8574 l_api_name,
8575 G_PKG_NAME
8576 ) THEN
8577 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8578 END IF;
8579
8580 /*--------------------------------------------------------------+
8581 | Initialize message list if p_init_msg_list is set to TRUE |
8582 +--------------------------------------------------------------*/
8583 IF p_init_msg_list is null THEN
8584 l_init_msg_list := FND_API.G_FALSE;
8585 ELSE
8586 l_init_msg_list := p_init_msg_list;
8587 END IF;
8588
8589 IF FND_API.to_Boolean(l_init_msg_list) THEN
8590 FND_MSG_PUB.initialize;
8591 END IF;
8592
8593 /*-----------------------------------------+
8594 | Initialize return status to SUCCESS |
8595 +-----------------------------------------*/
8596 x_return_status := FND_API.G_RET_STS_SUCCESS;
8597
8598 /*-----------------------------------------+
8599 | Populate Global Variable |
8600 +-----------------------------------------*/
8601 G_PUB_SRVC := l_api_name;
8602 G_DATA_TRANSFER_MODE := 'PLS';
8603 G_EXTERNAL_API_CALL := 'N';
8604
8605 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8606 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
8607 'application_id: ' || to_char(p_defaulting_rec_type.application_id)||
8608 ', entity_code: ' || p_defaulting_rec_type.entity_code||
8609 ', event_class_code: ' || p_defaulting_rec_type.event_class_code||
8610 ', org_id: ' || to_char(p_defaulting_rec_type.org_id)||
8611 ', item_id: ' || to_char(p_defaulting_rec_type.item_id)||
8612 ', country_code: ' || p_defaulting_rec_type.country_code||
8613 ', effective_date: ' || to_char(p_defaulting_rec_type.effective_date)||
8614 ', trx_id: ' || to_char(p_defaulting_rec_type.trx_id)||
8615 ', item_id: ' || to_char(p_defaulting_rec_type.item_id)||
8616 ', trx_date: ' || to_char(p_defaulting_rec_type.trx_date)||
8617 ', ledger_id: ' || to_char(p_defaulting_rec_type.ledger_id)||
8618 ', ship_from_party_id: ' || to_char(p_defaulting_rec_type.ship_from_party_id)||
8619 ', ship_to_party_id: ' || to_char(p_defaulting_rec_type.ship_to_party_id)||
8620 ', bill_to_party_id: ' || to_char(p_defaulting_rec_type.bill_to_party_id)||
8621 ', ship_from_pty_site_id: ' || to_char(p_defaulting_rec_type.ship_from_pty_site_id)||
8622 ', ship_to_location_id: ' || to_char(p_defaulting_rec_type.ship_to_location_id)||
8623 ', ship_to_acct_site_use_id: ' || to_char(p_defaulting_rec_type.ship_to_acct_site_use_id)||
8624 ', bill_to_acct_site_use_id: ' || to_char(p_defaulting_rec_type.bill_to_acct_site_use_id)||
8625 ', account_ccid: ' || to_char(p_defaulting_rec_type.account_ccid)||
8626 ', account_string: ' || p_defaulting_rec_type.account_string||
8627 ', ship_third_pty_acct_id: ' || to_char(p_defaulting_rec_type.ship_third_pty_acct_id)||
8628 ', bill_third_pty_acct_id: ' || to_char(p_defaulting_rec_type.bill_third_pty_acct_id)||
8629 ', ref_doc_application_id: ' || to_char(p_defaulting_rec_type.application_id)||
8630 ', ref_doc_entity_code: ' || p_defaulting_rec_type.ref_doc_entity_code||
8631 ', ref_doc_event_class_code: ' || p_defaulting_rec_type.ref_doc_event_class_code||
8632 ', ref_doc_trx_id: ' || to_char(p_defaulting_rec_type.ref_doc_trx_id)||
8633 ', ref_doc_line_id: ' || to_char(p_defaulting_rec_type.ref_doc_line_id)||
8634 ', ref_doc_trx_level_type: ' || p_defaulting_rec_type.ref_doc_trx_level_type||
8635 ', defaulting_attribute1: ' || p_defaulting_rec_type.defaulting_attribute1||
8636 ', defaulting_attribute2: ' || p_defaulting_rec_type.defaulting_attribute2||
8637 ', defaulting_attribute3: ' || p_defaulting_rec_type.defaulting_attribute3||
8638 ', defaulting_attribute4: ' || p_defaulting_rec_type.defaulting_attribute4||
8639 ', defaulting_attribute5: ' || p_defaulting_rec_type.defaulting_attribute5||
8640 ', defaulting_attribute6: ' || p_defaulting_rec_type.defaulting_attribute6||
8641 ', defaulting_attribute7: ' || p_defaulting_rec_type.defaulting_attribute7||
8642 ', defaulting_attribute8: ' || p_defaulting_rec_type.defaulting_attribute8||
8643 ', defaulting_attribute9: ' || p_defaulting_rec_type.defaulting_attribute9||
8644 ', defaulting_attribute10: ' || p_defaulting_rec_type.defaulting_attribute10||
8645 ', legal_entity_id: ' || to_char(p_defaulting_rec_type.legal_entity_id)||
8646 ', source_event_class_code: ' || to_char(p_defaulting_rec_type.source_event_class_code));
8647 END IF;
8648
8649 /*------------------------------------------------------------------------------------------+
8650 | Call original get_default_tax_line_attribs to get the values of fiscal classifications |
8651 +-----------------------------------------------------------------------------------------*/
8652 get_default_tax_det_attribs (p_api_version,
8653 l_init_msg_list,
8654 p_commit,
8655 p_validation_level,
8656 l_return_status,
8657 x_msg_count,
8658 x_msg_data,
8659 p_defaulting_rec_type.application_id,
8660 p_defaulting_rec_type.entity_code,
8661 p_defaulting_rec_type.event_class_code,
8662 p_defaulting_rec_type.org_id,
8663 p_defaulting_rec_type.item_id,
8664 p_defaulting_rec_type.country_code,
8665 p_defaulting_rec_type.effective_date,
8666 p_defaulting_rec_type.source_event_class_code,
8667 x_trx_biz_category,
8668 x_intended_use,
8669 x_prod_category,
8670 x_prod_fisc_class_code ,
8671 x_product_type
8672 ) ;
8673
8674 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8675 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8676 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':get_default_tax_det_attribs returned errors');
8677 END IF;
8678 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8679 RAISE FND_API.G_EXC_ERROR;
8680 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8681 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8682 END IF;
8683 END IF;
8684
8685 /*---------------------------------------------------------------------------------+
8686 | Copy from input structure before calling API to default the tax classification|
8687 +--------------------------------------------------------------------------------*/
8688 l_redef_tax_class_code_rec.application_id := p_defaulting_rec_type.application_id;
8689 l_redef_tax_class_code_rec.entity_code := p_defaulting_rec_type.entity_code;
8690 l_redef_tax_class_code_rec.event_class_code := p_defaulting_rec_type.event_class_code;
8691 l_redef_tax_class_code_rec.internal_organization_id := p_defaulting_rec_type.org_id;
8692 l_redef_tax_class_code_rec.trx_id := p_defaulting_rec_type.trx_id;
8693 l_redef_tax_class_code_rec.trx_line_id := p_defaulting_rec_type.trx_line_id;
8694 l_redef_tax_class_code_rec.trx_level_type := p_defaulting_rec_type.trx_level_type;
8695 l_redef_tax_class_code_rec.ledger_id := p_defaulting_rec_type.ledger_id;
8696 l_redef_tax_class_code_rec.trx_date := p_defaulting_rec_type.trx_date;
8697 l_redef_tax_class_code_rec.ref_doc_application_id := p_defaulting_rec_type.ref_doc_application_id;
8698 l_redef_tax_class_code_rec.ref_doc_event_class_code := p_defaulting_rec_type.ref_doc_event_class_code;
8699 l_redef_tax_class_code_rec.ref_doc_entity_code := p_defaulting_rec_type.ref_doc_entity_code;
8700 l_redef_tax_class_code_rec.ref_doc_trx_id := p_defaulting_rec_type.ref_doc_trx_id;
8701 l_redef_tax_class_code_rec.ref_doc_line_id := p_defaulting_rec_type.ref_doc_line_id;
8702 l_redef_tax_class_code_rec.ref_doc_trx_level_type := p_defaulting_rec_type.ref_doc_trx_level_type;
8703 l_redef_tax_class_code_rec.account_ccid := p_defaulting_rec_type.account_ccid;
8704 l_redef_tax_class_code_rec.account_string := p_defaulting_rec_type.account_string;
8705 l_redef_tax_class_code_rec.product_id := p_defaulting_rec_type.item_id;
8706 l_redef_tax_class_code_rec.product_org_id := p_defaulting_rec_type.item_org_id;
8707 l_redef_tax_class_code_rec.receivables_trx_type_id := p_defaulting_rec_type.application_id;
8708 l_redef_tax_class_code_rec.ship_third_pty_acct_id := p_defaulting_rec_type.ship_third_pty_acct_id;
8709 l_redef_tax_class_code_rec.bill_third_pty_acct_id := p_defaulting_rec_type.bill_third_pty_acct_id;
8710 l_redef_tax_class_code_rec.ship_to_cust_acct_site_use_id := p_defaulting_rec_type.ship_to_acct_site_use_id;
8711 l_redef_tax_class_code_rec.bill_to_cust_acct_site_use_id := p_defaulting_rec_type.bill_to_acct_site_use_id;
8712 l_redef_tax_class_code_rec.ship_to_location_id := p_defaulting_rec_type.ship_to_location_id;
8713 l_redef_tax_class_code_rec.receivables_trx_type_id := p_defaulting_rec_type.trx_type_id;
8714 l_redef_tax_class_code_rec.defaulting_attribute1 := p_defaulting_rec_type.defaulting_attribute1;
8715 l_redef_tax_class_code_rec.defaulting_attribute2 := p_defaulting_rec_type.defaulting_attribute2;
8716 l_redef_tax_class_code_rec.defaulting_attribute3 := p_defaulting_rec_type.defaulting_attribute3;
8717 l_redef_tax_class_code_rec.defaulting_attribute4 := p_defaulting_rec_type.defaulting_attribute4;
8718 l_redef_tax_class_code_rec.defaulting_attribute5 := p_defaulting_rec_type.defaulting_attribute5;
8719 l_redef_tax_class_code_rec.defaulting_attribute6 := p_defaulting_rec_type.defaulting_attribute6;
8720 l_redef_tax_class_code_rec.defaulting_attribute7 := p_defaulting_rec_type.defaulting_attribute7;
8721 l_redef_tax_class_code_rec.defaulting_attribute8 := p_defaulting_rec_type.defaulting_attribute8;
8725
8722 l_redef_tax_class_code_rec.defaulting_attribute9 := p_defaulting_rec_type.defaulting_attribute9;
8723 l_redef_tax_class_code_rec.defaulting_attribute10 := p_defaulting_rec_type.defaulting_attribute10;
8724 l_redef_tax_class_code_rec.legal_entity_id := p_defaulting_rec_type.legal_entity_id;
8726
8727 /*-------------------------------------------------+
8728 | Call TDM API to default the tax classification|
8729 +-------------------------------------------------*/
8730 IF ( G_LEVEL_EVENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8731 FND_LOG.STRING(G_LEVEL_EVENT,G_MODULE_NAME||l_api_name,
8732 'Call TDM to default tax classfication'
8733 );
8734 END IF;
8735
8736 ZX_TAX_DEFAULT_PKG.get_default_tax_classification (p_definfo => l_redef_tax_class_code_rec,
8737 p_return_status => l_return_status,
8738 p_error_buffer => l_error_buffer
8739 );
8740 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8741 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8742 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TAX_DEFAULT_PKG.get_default_tax_classification returned errors');
8743 END IF;
8744 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8745 RAISE FND_API.G_EXC_ERROR;
8746 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8747 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8748 END IF;
8749 ELSE
8750 x_tax_classification_code := l_redef_tax_class_code_rec.x_tax_classification_code;
8751 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8752 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
8753 'Tax Classification: ' || x_tax_classification_code
8754 );
8755 END IF;
8756 END IF;
8757
8758 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8759 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()+');
8760 END IF;
8761
8762 EXCEPTION
8763 WHEN FND_API.G_EXC_ERROR THEN
8764 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
8765 x_return_status := FND_API.G_RET_STS_ERROR ;
8766 DUMP_MSG;
8767 /*---------------------------------------------------------+
8768 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8769 | in the message stack. If there is only one message in |
8770 | the stack it retrieves this message |
8771 +---------------------------------------------------------*/
8772 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8773 p_count => x_msg_count,
8774 p_data => x_msg_data
8775 );
8776 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8777 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,SQLERRM);
8778 END IF;
8779
8780 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8781 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
8782 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8783 DUMP_MSG;
8784 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8785 FND_MSG_PUB.Add;
8786 /*---------------------------------------------------------+
8787 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8788 | in the message stack. If there is only one message in |
8789 | the stack it retrieves this message |
8790 +---------------------------------------------------------*/
8791 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8792 p_count => x_msg_count,
8793 p_data => x_msg_data
8794 );
8795
8796 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8797 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,SQLERRM);
8798 END IF;
8799
8800 WHEN OTHERS THEN
8801 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
8802 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8803 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8804 FND_MSG_PUB.Add;
8805 /*---------------------------------------------------------+
8806 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8807 | in the message stack. If there is only one message in |
8808 | the stack it retrieves this message |
8809 +---------------------------------------------------------*/
8810 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8811 p_count => x_msg_count,
8812 p_data => x_msg_data
8813 );
8814 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
8815 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
8816 END IF;
8817
8818 END get_default_tax_det_attribs;
8819
8820 /* =======================================================================*
8821 | PROCEDURE set_tax_security_context : Sets the security context based |
8822 | on OU and LE of transaction |
8823 * =======================================================================*/
8824 PROCEDURE set_tax_security_context
8825 ( p_api_version IN NUMBER,
8826 p_init_msg_list IN VARCHAR2,
8827 p_commit IN VARCHAR2,
8828 p_validation_level IN NUMBER,
8829 x_return_status OUT NOCOPY VARCHAR2 ,
8830 x_msg_count OUT NOCOPY NUMBER ,
8831 x_msg_data OUT NOCOPY VARCHAR2,
8832 p_internal_org_id IN NUMBER,
8833 p_legal_entity_id IN NUMBER,
8834 p_transaction_date IN DATE,
8835 p_related_doc_date IN DATE,
8836 p_adjusted_doc_date IN DATE,
8837 x_effective_date OUT NOCOPY DATE
8838 )IS
8839 l_api_name CONSTANT VARCHAR2(30) := 'SET_TAX_SECURITY_CONTEXT';
8840 l_api_version CONSTANT NUMBER := 1.0;
8841 l_return_status VARCHAR2(30);
8842 l_init_msg_list VARCHAR2(1);
8843
8844 l_effective_date DATE;
8845
8846 BEGIN
8847 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8848 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
8849 END IF;
8850
8851 /*--------------------------------------------------+
8852 | Standard start of API savepoint |
8853 +--------------------------------------------------*/
8854 SAVEPOINT Set_Tax_Security_Context_PVT;
8855
8856 /*--------------------------------------------------+
8857 | Standard call to check for call compatibility |
8858 +--------------------------------------------------*/
8859 IF NOT FND_API.Compatible_API_Call(l_api_version,
8860 p_api_version,
8861 l_api_name,
8862 G_PKG_NAME
8863 ) THEN
8864 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8865 END IF;
8866
8867 /*--------------------------------------------------------------+
8868 | Initialize message list if p_init_msg_list is set to TRUE |
8869 +--------------------------------------------------------------*/
8870 IF p_init_msg_list is null THEN
8871 l_init_msg_list := FND_API.G_FALSE;
8872 ELSE
8873 l_init_msg_list := p_init_msg_list;
8874 END IF;
8875
8876 IF FND_API.to_Boolean(l_init_msg_list) THEN
8877 FND_MSG_PUB.initialize;
8878 END IF;
8879
8880 /*-----------------------------------------+
8881 | Initialize return status to SUCCESS |
8882 +-----------------------------------------*/
8883 x_return_status := FND_API.G_RET_STS_SUCCESS;
8884
8885
8886 /*--------------------------------------------+
8887 | Call to zx_security.set_security_context |
8888 +--------------------------------------------*/
8889
8890 x_effective_date := determine_effective_date(p_transaction_date,
8891 p_related_doc_date,
8892 p_adjusted_doc_date);
8893 l_effective_date := x_effective_date;
8894
8895 ZX_SECURITY.set_security_context(p_legal_entity_id,
8896 p_internal_org_id,
8897 l_effective_date,
8898 l_return_status
8899 );
8900
8901 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8902 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8903 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SECURITY.set_security_context returned errors');
8904 END IF;
8905 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
8906 RAISE FND_API.G_EXC_ERROR;
8907 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
8908 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8909 END IF;
8910 END IF;
8911
8912 /*---------------------------------------------------------+
8913 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8914 | in the message stack. If there is only one message in |
8915 | the stack it retrieves this message |
8916 +---------------------------------------------------------*/
8917 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8918 p_count => x_msg_count,
8919 p_data => x_msg_data
8920 );
8921
8922 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
8923 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
8924 END IF;
8925
8926 EXCEPTION
8927 WHEN FND_API.G_EXC_ERROR THEN
8928 ROLLBACK TO Set_Tax_Security_Context_PVT;
8929 x_return_status := FND_API.G_RET_STS_ERROR ;
8930 DUMP_MSG;
8931 /*---------------------------------------------------------+
8932 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8933 | in the message stack. If there is only one message in |
8934 | the stack it retrieves this message |
8935 +---------------------------------------------------------*/
8936 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8937 p_count => x_msg_count,
8938 p_data => x_msg_data
8939 );
8940
8941 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8942 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
8943 END IF;
8944
8945 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8946 ROLLBACK TO Set_Tax_Security_Context_PVT;
8947 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8948 DUMP_MSG;
8949 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8950 FND_MSG_PUB.Add;
8951 /*---------------------------------------------------------+
8952 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8953 | in the message stack. If there is only one message in |
8954 | the stack it retrieves this message |
8955 +---------------------------------------------------------*/
8956 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8957 p_count => x_msg_count,
8958 p_data => x_msg_data
8959 );
8960
8961 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
8962 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
8963 END IF;
8964
8965 WHEN OTHERS THEN
8966 ROLLBACK TO set_tax_security_context_PVT;
8967 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
8968 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
8969 FND_MSG_PUB.Add;
8970 /*---------------------------------------------------------+
8971 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
8972 | in the message stack. If there is only one message in |
8973 | the stack it retrieves this message |
8974 +---------------------------------------------------------*/
8975 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
8976 p_count => x_msg_count,
8977 p_data => x_msg_data
8978 );
8979 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
8980 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
8981 END IF;
8982 END set_tax_security_context;
8983
8984
8985
8986 /* =======================================================================*
8987 | Overloaded PROCEDURE set_tax_security_context: for Lease Management |
8988 | Also includes setting the date based on provnl_tax_determination_date |
8989 * =======================================================================*/
8990 PROCEDURE set_tax_security_context
8991 ( p_api_version IN NUMBER,
8992 p_init_msg_list IN VARCHAR2,
8993 p_commit IN VARCHAR2,
8994 p_validation_level IN NUMBER,
8995 x_return_status OUT NOCOPY VARCHAR2 ,
8996 x_msg_count OUT NOCOPY NUMBER ,
8997 x_msg_data OUT NOCOPY VARCHAR2,
8998 p_internal_org_id IN NUMBER,
8999 p_legal_entity_id IN NUMBER,
9000 p_transaction_date IN DATE,
9001 p_related_doc_date IN DATE,
9002 p_adjusted_doc_date IN DATE,
9003 p_provnl_tax_det_date IN DATE,
9004 x_effective_date OUT NOCOPY DATE
9005 )IS
9006 l_api_name CONSTANT VARCHAR2(30) := 'SET_TAX_SECURITY_CONTEXT';
9007 l_api_version CONSTANT NUMBER := 1.0;
9008 l_return_status VARCHAR2(30);
9009 l_init_msg_list VARCHAR2(1);
9010
9011 BEGIN
9012 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9013 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
9014 END IF;
9015
9016 /*--------------------------------------------------+
9017 | Standard start of API savepoint |
9018 +--------------------------------------------------*/
9019 SAVEPOINT Set_Tax_Security_Context_PVT;
9020
9021 /*--------------------------------------------------+
9022 | Standard call to check for call compatibility |
9023 +--------------------------------------------------*/
9024 IF NOT FND_API.Compatible_API_Call(l_api_version,
9025 p_api_version,
9026 l_api_name,
9027 G_PKG_NAME
9028 ) THEN
9029 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9030 END IF;
9031
9032 /*--------------------------------------------------------------+
9033 | Initialize message list if p_init_msg_list is set to TRUE |
9034 +--------------------------------------------------------------*/
9035 IF p_init_msg_list is null THEN
9036 l_init_msg_list := FND_API.G_FALSE;
9037 ELSE
9038 l_init_msg_list := p_init_msg_list;
9039 END IF;
9040
9041 IF FND_API.to_Boolean(l_init_msg_list) THEN
9042 FND_MSG_PUB.initialize;
9043 END IF;
9044
9045 /*-----------------------------------------+
9046 | Initialize return status to SUCCESS |
9047 +-----------------------------------------*/
9048 x_return_status := FND_API.G_RET_STS_SUCCESS;
9049
9050
9051 /*--------------------------------------------+
9052 | Call to zx_security.set_security_context |
9053 +--------------------------------------------*/
9054 ZX_SECURITY.set_security_context(p_legal_entity_id,
9055 p_internal_org_id,
9056 determine_effective_date(p_transaction_date,
9057 p_related_doc_date,
9058 p_adjusted_doc_date,
9059 p_provnl_tax_det_date),
9060 l_return_status
9061 );
9062
9063 x_effective_date := ZX_SECURITY.G_EFFECTIVE_DATE;
9064
9065 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9066 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9067 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SECURITY.set_security_context returned errors');
9068 END IF;
9069 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9070 RAISE FND_API.G_EXC_ERROR;
9071 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9072 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9073 END IF;
9074 END IF;
9075
9076 /*---------------------------------------------------------+
9077 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9078 | in the message stack. If there is only one message in |
9079 | the stack it retrieves this message |
9080 +---------------------------------------------------------*/
9081 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9082 p_count => x_msg_count,
9083 p_data => x_msg_data
9084 );
9085
9086 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9087 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
9088 END IF;
9089
9090 EXCEPTION
9091 WHEN FND_API.G_EXC_ERROR THEN
9092 ROLLBACK TO Set_Tax_Security_Context_PVT;
9093 x_return_status := FND_API.G_RET_STS_ERROR ;
9094 DUMP_MSG;
9095 /*---------------------------------------------------------+
9096 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9097 | in the message stack. If there is only one message in |
9098 | the stack it retrieves this message |
9099 +---------------------------------------------------------*/
9100 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9101 p_count => x_msg_count,
9102 p_data => x_msg_data
9103 );
9104
9105 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
9106 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
9107 END IF;
9108
9109 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9110 ROLLBACK TO Set_Tax_Security_Context_PVT;
9111 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9112 DUMP_MSG;
9113 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
9114 FND_MSG_PUB.Add;
9115 /*---------------------------------------------------------+
9116 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9117 | in the message stack. If there is only one message in |
9118 | the stack it retrieves this message |
9119 +---------------------------------------------------------*/
9120 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9121 p_count => x_msg_count,
9122 p_data => x_msg_data
9123 );
9124
9125 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
9126 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
9127 END IF;
9128
9129 WHEN OTHERS THEN
9130 ROLLBACK TO set_tax_security_context_PVT;
9131 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9132 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
9133 FND_MSG_PUB.Add;
9134 /*---------------------------------------------------------+
9135 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9136 | in the message stack. If there is only one message in |
9137 | the stack it retrieves this message |
9138 +---------------------------------------------------------*/
9139 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9140 p_count => x_msg_count,
9141 p_data => x_msg_data
9142 );
9143 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
9144 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
9145 END IF;
9146 END set_tax_security_context;
9147
9148
9149
9150 /* =======================================================================*
9151 | PROCEDURE validate_and_default_tax_attr : |
9152 | This api supports multiple document processing |
9153 * =======================================================================*/
9154 PROCEDURE validate_and_default_tax_attr
9155 (
9156 p_api_version IN NUMBER,
9157 p_init_msg_list IN VARCHAR2,
9158 p_commit IN VARCHAR2,
9159 p_validation_level IN NUMBER,
9160 x_return_status OUT NOCOPY VARCHAR2 ,
9161 x_msg_count OUT NOCOPY NUMBER ,
9162 x_msg_data OUT NOCOPY VARCHAR2
9163 ) IS
9164 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_AND_DEFAULT_TAX_ATTR';
9165 l_api_version CONSTANT NUMBER := 1.0;
9166 l_tax_method VARCHAR2(30);
9167 l_app_id NUMBER;
9168 l_return_status VARCHAR2(30);
9169 l_context_info_rec context_info_rec_type;
9170 l_init_msg_list VARCHAR2(1);
9171 l_internal_organization_id NUMBER;
9172 l_zx_product_options_rec ZX_GLOBAL_STRUCTURES_PKG.zx_product_options_rec_type;
9173
9174 BEGIN
9175 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9176 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
9177 END IF;
9178
9179 /*--------------------------------------------------+
9180 | Standard start of API savepoint |
9181 +--------------------------------------------------*/
9182 SAVEPOINT Validate_And_Default_Tax_Attr;
9183
9184 /*--------------------------------------------------+
9185 | Standard call to check for call compatibility |
9186 +--------------------------------------------------*/
9187 IF NOT FND_API.Compatible_API_Call(l_api_version,
9188 p_api_version,
9189 l_api_name,
9190 G_PKG_NAME
9191 ) THEN
9192 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9193 END IF;
9194
9195 /*--------------------------------------------------------------+
9196 | Initialize message list if p_init_msg_list is set to TRUE |
9197 +--------------------------------------------------------------*/
9198 IF p_init_msg_list is null THEN
9199 l_init_msg_list := FND_API.G_FALSE;
9200 ELSE
9201 l_init_msg_list := p_init_msg_list;
9202 END IF;
9203
9204 IF FND_API.to_Boolean(l_init_msg_list) THEN
9205 FND_MSG_PUB.initialize;
9206 END IF;
9207
9208 /*-----------------------------------------+
9209 | Initialize return status to SUCCESS |
9210 +-----------------------------------------*/
9211 x_return_status := FND_API.G_RET_STS_SUCCESS;
9212
9213 /*-----------------------------------------+
9214 | Populate Global Variable |
9215 +-----------------------------------------*/
9216 G_PUB_SRVC := l_api_name;
9217 G_DATA_TRANSFER_MODE := 'TAB';
9218 G_EXTERNAL_API_CALL := 'N';
9219
9220 BEGIN
9221 SELECT internal_organization_id,
9222 application_id
9223 INTO l_internal_organization_id,
9224 l_app_id
9225 FROM ZX_TRX_HEADERS_GT headers
9226 WHERE rownum =1;
9227
9228 EXCEPTION
9229 WHEN NO_DATA_FOUND THEN
9230 l_tax_method := 'EBTAX';
9231 END;
9232
9233 ZX_GLOBAL_STRUCTURES_PKG.get_product_options_info
9234 (p_application_id => l_app_id,
9235 p_org_id => l_internal_organization_id,
9236 x_product_options_rec => l_zx_product_options_rec,
9237 x_return_status => x_return_status);
9238
9239 IF x_return_status = FND_API.G_RET_STS_ERROR then
9240
9241 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9242 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Incorrect return status after calling '||
9243 'ZX_GLOBAL_STRUCTURES_PKG.get_product_options_info');
9244 END IF;
9245 l_tax_method := 'EBTAX';
9246 ELSE
9247 -- Bug 7528340
9248 l_tax_method := NVL(l_zx_product_options_rec.tax_method_code,'EBTAX');
9249 END IF;
9250
9251 IF l_app_id = 200 AND l_tax_method IS NULL THEN
9252 l_tax_method := 'EBTAX';
9253 END IF;
9254
9255 IF l_tax_method = 'EBTAX' THEN
9256 ZX_VALIDATE_API_PKG.default_and_validate_tax_attr(p_api_version,
9257 l_init_msg_list,
9258 p_commit,
9259 p_validation_level,
9260 l_return_status,
9261 x_msg_count,
9262 x_msg_data
9263 );
9264 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9265 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9266 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALIDATE_API_PKG.default_and_validate_tax_attr returned errors');
9267 END IF;
9268 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9269 RAISE FND_API.G_EXC_ERROR;
9270 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9271 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9272 END IF;
9273 END IF;
9274 ELSIF l_tax_method = 'LTE' THEN
9275 JL_ZZ_TAX_VALIDATE_PKG.default_and_validate_tax_attr(p_api_version,
9276 l_init_msg_list,
9277 p_commit,
9278 p_validation_level,
9279 l_return_status,
9280 x_msg_count,
9281 x_msg_data
9282 );
9283 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9284 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9285 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':JL_ZZ_TAX_VALIDATE_PKG.default_and_validate_tax_attr returned errors');
9286 END IF;
9287 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9288 RAISE FND_API.G_EXC_ERROR;
9289 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9290 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9291 END IF;
9292 END IF;
9293 END IF; --l_tax_method
9294
9295
9296 EXCEPTION
9297 WHEN FND_API.G_EXC_ERROR THEN
9298 --Since this API only inserts into the errors GT and updates the header and line GTTs
9299 --we shouldnt be rolling back here as that data too will be lost
9300 --ROLLBACK TO Validate_And_Default_Tax_Attr;
9301 x_return_status := FND_API.G_RET_STS_ERROR ;
9302 --Messages are inserted into ZX_VALIDATION_ERRORS_GT for this API
9303 DUMP_MSG;
9304 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
9305 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
9306 END IF;
9307
9308 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9309 ROLLBACK TO Validate_And_Default_Tax_Attr;
9310 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9311 DUMP_MSG;
9312 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
9313 FND_MSG_PUB.Add;
9314 /*---------------------------------------------------------+
9315 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9316 | in the message stack. If there is only one message in |
9317 | the stack it retrieves this message |
9318 +---------------------------------------------------------*/
9319 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9320 p_count => x_msg_count,
9321 p_data => x_msg_data
9322 );
9323
9324 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
9325 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
9326 END IF;
9327
9328 WHEN OTHERS THEN
9329 ROLLBACK TO Validate_And_Default_Tax_Attr;
9330 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9331 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
9332 FND_MSG_PUB.Add;
9333 /*---------------------------------------------------------+
9334 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9335 | in the message stack. If there is only one message in |
9336 | the stack it retrieves this message |
9337 +---------------------------------------------------------*/
9338 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
9339 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
9340 END IF;
9341 END validate_and_default_tax_attr;
9342
9343
9344
9345 /* ==========================================================================*
9346 | PROCEDURE rollback_for_tax : Communicate to the Tax Partners to rollback|
9347 | transactions in their system |
9348 * =========================================================================*/
9349 PROCEDURE rollback_for_tax
9350 ( p_api_version IN NUMBER,
9351 p_init_msg_list IN VARCHAR2,
9352 p_commit IN VARCHAR2,
9353 p_validation_level IN NUMBER,
9354 x_return_status OUT NOCOPY VARCHAR2 ,
9355 x_msg_count OUT NOCOPY NUMBER ,
9356 x_msg_data OUT NOCOPY VARCHAR2
9357 )IS
9358 l_api_name CONSTANT VARCHAR2(30) := 'ROLLBACK_FOR_TAX';
9359 l_api_version CONSTANT NUMBER := 1.0;
9360
9361 BEGIN
9362 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9363 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
9364 END IF;
9365
9366 END rollback_for_tax;
9367
9368 /* ========================================================================*
9369 | PROCEDURE commit_for_tax : Communicate to the Tax Partners to commit |
9370 | transactions in their system |
9371 * =======================================================================*/
9372
9373 PROCEDURE commit_for_tax
9374 ( p_api_version IN NUMBER,
9375 p_init_msg_list IN VARCHAR2,
9376 p_commit IN VARCHAR2,
9377 p_validation_level IN NUMBER ,
9378 x_return_status OUT NOCOPY VARCHAR2 ,
9379 x_msg_count OUT NOCOPY NUMBER ,
9380 x_msg_data OUT NOCOPY VARCHAR2
9381 )IS
9382 l_api_name CONSTANT VARCHAR2(30) := 'COMMIT_FOR_TAX';
9383 l_api_version CONSTANT NUMBER := 1.0;
9384
9385 BEGIN
9386 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9387 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
9388 END IF;
9389
9390 END commit_for_tax;
9391
9392 /* =======================================================================*
9393 | PROCEDURE add_msg : Adds the message to the fnd message stack or |
9394 | local plsql table to be dumped later into the |
9395 | errors GT. |
9396 * =======================================================================*/
9397
9398 PROCEDURE add_msg (p_context_info_rec IN context_info_rec_type)
9399 IS
9400 l_count BINARY_INTEGER;
9401 l_mesg VARCHAR2(2000);
9402 l_api_name CONSTANT VARCHAR2(30) := 'ADD_MSG';
9403 BEGIN
9404 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9405 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
9406 END IF;
9407 --Add unexpected errors to fnd_stack
9408 IF p_context_info_rec.application_id is null THEN
9409 FND_MSG_PUB.Add();
9410 END IF;
9411
9412 IF G_DATA_TRANSFER_MODE = 'PLS' OR
9413 G_DATA_TRANSFER_MODE = 'WIN' THEN
9414 /*If G_EXTERNAL_API_CALL is 'Y' reset it back to 'N' and no need to add to stack
9415 since message is already in stack.*/
9416 IF G_EXTERNAL_API_CALL = 'Y' THEN
9417 G_EXTERNAL_API_CALL := 'N';
9418 ELSE
9419 FND_MSG_PUB.Add();
9420 END IF;
9421 ELSIF G_DATA_TRANSFER_MODE = 'TAB' THEN
9422 l_count:= errors_tbl.application_id.COUNT;
9423 IF G_EXTERNAL_API_CALL = 'Y' THEN
9424 LOOP
9425 l_mesg := FND_MSG_PUB.Get(FND_MSG_PUB.G_NEXT, FND_API.G_FALSE);
9426 IF l_mesg IS NULL THEN
9427 EXIT;
9428 ELSE
9429 errors_tbl.application_id(l_count+1) := p_context_info_rec.application_id;
9430 errors_tbl.entity_code(l_count+1) := p_context_info_rec.entity_code;
9431 errors_tbl.event_class_code(l_count+1) := p_context_info_rec.event_class_code;
9432 errors_tbl.trx_id(l_count+1) := Nvl(p_context_info_rec.trx_id,-1);
9433 errors_tbl.trx_level_type(l_count+1) := p_context_info_rec.trx_level_type;
9434 errors_tbl.trx_line_id(l_count+1) := p_context_info_rec.trx_line_id;
9435 errors_tbl.summary_tax_line_number(l_count+1) := p_context_info_rec.summary_tax_line_number;
9436 errors_tbl.tax_line_id(l_count+1) := p_context_info_rec.tax_line_id;
9437 errors_tbl.trx_line_dist_id(l_count+1) := p_context_info_rec.trx_line_dist_id;
9438 errors_tbl.message_text(l_count+1) := l_mesg;
9439 END IF;
9440 END LOOP;
9441 G_EXTERNAL_API_CALL := 'N'; -- reset G_EXTERNAL_API_CALL
9442 ELSE --G_EXTERNAL_API_CALL is 'N' then retrieve message from fnd_stack
9443 errors_tbl.application_id(l_count+1) := p_context_info_rec.application_id;
9444 errors_tbl.entity_code(l_count+1) := p_context_info_rec.entity_code;
9445 errors_tbl.event_class_code(l_count+1) := p_context_info_rec.event_class_code;
9446 errors_tbl.trx_id(l_count+1) := Nvl(p_context_info_rec.trx_id,-1);
9447 errors_tbl.trx_level_type(l_count+1) := p_context_info_rec.trx_level_type;
9448 errors_tbl.trx_line_id(l_count+1) := p_context_info_rec.trx_line_id;
9449 errors_tbl.summary_tax_line_number(l_count+1) := p_context_info_rec.summary_tax_line_number;
9450 errors_tbl.tax_line_id(l_count+1) := p_context_info_rec.tax_line_id;
9451 errors_tbl.trx_line_dist_id(l_count+1) := p_context_info_rec.trx_line_dist_id;
9452 errors_tbl.message_text(l_count+1) := fnd_message.get();
9453 END IF; --G_EXTERNAL_API_CALL
9454 l_count:=errors_tbl.application_id.COUNT;
9455 END IF; --G_DATA_TRANSFER_MODE
9456
9457 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9458 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
9459 END IF;
9460 END add_msg;
9461
9462 /* ============================================================================*
9463 | PROCEDURE dump_msg : Dump all error messages from pl/sql structure to table |
9464 * ============================================================================*/
9465 PROCEDURE dump_msg
9466 IS
9467 l_api_name CONSTANT VARCHAR2(30) := 'DUMP_MSG';
9468 BEGIN
9469 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9470 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
9471 END IF;
9472 FORALL i IN 1 .. nvl(errors_tbl.application_id.LAST,-99)
9473 INSERT INTO ZX_ERRORS_GT (application_id,
9474 entity_code,
9475 event_class_code,
9476 trx_id,
9477 trx_line_id,
9478 trx_level_type,
9479 summary_tax_line_number,
9480 tax_line_id,
9481 trx_line_dist_id,
9482 message_text)
9483 values (errors_tbl.application_id(i),
9484 errors_tbl.entity_code(i),
9485 errors_tbl.event_class_code(i),
9486 errors_tbl.trx_id(i),
9487 errors_tbl.trx_line_id(i),
9488 errors_tbl.trx_level_type(i),
9489 errors_tbl.summary_tax_line_number(i),
9490 errors_tbl.tax_line_id(i),
9491 errors_tbl.trx_line_dist_id(i),
9492 NVL(errors_tbl.message_text(i),'UNEXPECTED_ERROR_DUMP_MSG')
9493 );
9494
9495 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9496 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,SQL%ROWCOUNT||' Error Message(s) dumped into Zx_Errors_GT.');
9497 END IF;
9498
9499 errors_tbl.application_id.delete;
9500 errors_tbl.entity_code.delete;
9501 errors_tbl.event_class_code.delete;
9502 errors_tbl.trx_id.delete;
9503 errors_tbl.trx_line_id.delete;
9504 errors_tbl.trx_level_type.delete;
9505 errors_tbl.summary_tax_line_number.delete;
9506 errors_tbl.tax_line_id.delete;
9507 errors_tbl.trx_line_dist_id.delete;
9508 errors_tbl.message_text.delete;
9509 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9510 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()-');
9511 END IF;
9512 END dump_msg;
9513
9514 /* =======================================================================*
9515 | FUNCTION determine_effective_date : |
9516 * =======================================================================*/
9517
9518 FUNCTION determine_effective_date
9519 ( p_transaction_date IN DATE,
9520 p_related_doc_date IN DATE,
9521 p_adjusted_doc_date IN DATE
9522 ) RETURN DATE IS
9523
9524 BEGIN
9525 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9526 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||'DETERMINE_EFFECTIVE_DATE.BEGIN','ZX_API_PUB: DETERMINE_EFFECTIVE_DATE()+');
9527 END IF;
9528
9529 IF p_related_doc_date IS NOT NULL THEN
9530 return(p_related_doc_date);
9531 ELSIF p_adjusted_doc_date IS NOT NULL THEN
9532 return(p_adjusted_doc_date);
9533 ELSIF p_transaction_date IS NOT NULL THEN
9534 return(p_transaction_date);
9535 ELSE
9536 return(SYSDATE);
9537 END IF;
9538
9539 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9540 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||'DETERMINE_EFFECTIVE_DATE.END','ZX_API_PUB: DETERMINE_EFFECTIVE_DATE()-');
9541 END IF;
9542
9543 END determine_effective_date;
9544
9545
9546 /* =======================================================================*
9547 | Function Get_Default_Tax_Reg : Returns the Default Registration Number|
9548 | for a Given Party |
9549 * =======================================================================*/
9550
9551 FUNCTION get_default_tax_reg(
9552 p_api_version IN NUMBER,
9553 p_init_msg_list IN VARCHAR2,
9554 p_commit IN VARCHAR2,
9555 p_validation_level IN NUMBER,
9556 x_return_status OUT NOCOPY VARCHAR2,
9557 x_msg_count OUT NOCOPY NUMBER,
9558 x_msg_data OUT NOCOPY VARCHAR2,
9559 p_party_id IN ZX_PARTY_TAX_PROFILE.party_id%type,
9560 p_party_type IN ZX_PARTY_TAX_PROFILE.party_type_code%type,
9561 p_effective_date IN ZX_REGISTRATIONS.effective_from%type
9562 ) RETURN Varchar2 IS
9563 l_api_name CONSTANT VARCHAR2(30) := 'GET_DEFAULT_TAX_REG';
9564 l_api_version CONSTANT NUMBER := 1.0;
9565 l_reg_number VARCHAR2(50);
9566 l_return_status VARCHAR2(1);
9567 l_context_info_rec context_info_rec_type;
9568 l_init_msg_list VARCHAR2(1);
9569 BEGIN
9570 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9571 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
9572 END IF;
9573
9574 /*--------------------------------------------------+
9575 | Standard start of API savepoint |
9576 +--------------------------------------------------*/
9577 -- Commenting this save point as per bug# 5395191
9578 -- SAVEPOINT Get_Default_Tax_Reg_PVT;
9579
9580 /*--------------------------------------------------+
9581 | Standard call to check for call compatibility |
9582 +--------------------------------------------------*/
9583 IF NOT FND_API.Compatible_API_Call(l_api_version,
9584 p_api_version,
9585 l_api_name,
9586 G_PKG_NAME
9590
9587 ) THEN
9588 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9589 END IF;
9591 /*--------------------------------------------------------------+
9592 | Initialize message list if p_init_msg_list is set to TRUE |
9593 +--------------------------------------------------------------*/
9594 IF p_init_msg_list is null THEN
9595 l_init_msg_list := FND_API.G_FALSE;
9596 ELSE
9597 l_init_msg_list := p_init_msg_list;
9598 END IF;
9599
9600 IF FND_API.to_Boolean(l_init_msg_list) THEN
9601 FND_MSG_PUB.initialize;
9602 END IF;
9603
9604 /*-----------------------------------------+
9605 | Initialize return status to SUCCESS |
9606 +-----------------------------------------*/
9607 x_return_status := FND_API.G_RET_STS_SUCCESS;
9608
9609 /*-----------------------------------------+
9610 | Populate Global Variable |
9611 +-----------------------------------------*/
9612 G_PUB_SRVC := l_api_name;
9613 G_DATA_TRANSFER_MODE := 'PLS';
9614 G_EXTERNAL_API_CALL := 'N';
9615
9616
9617 /*-----------------------------------------------------+
9618 | Get the default value for product category |
9619 +-----------------------------------------------------*/
9620 l_reg_number:= ZX_TCM_EXT_SERVICES_PUB.get_default_tax_reg(p_party_id,
9621 p_party_type,
9622 p_effective_date,
9623 l_return_status
9624 );
9625
9626 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9627 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9628 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_TCM_EXT_SERVICES_PUB.get_default_tax_reg returned errors');
9629 END IF;
9630 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9631 RAISE FND_API.G_EXC_ERROR;
9632 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9633 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9634 END IF;
9635 ELSE
9636 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9637 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
9638 'Registration Number: '|| l_reg_number
9639 );
9640 END IF;
9641 RETURN l_reg_number;
9642 END IF;
9643
9644
9645 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9646 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
9647 END IF;
9648
9649 EXCEPTION
9650 WHEN FND_API.G_EXC_ERROR THEN
9651 -- Commented rollback as per bug 5395191
9652 -- ROLLBACK TO Get_Default_Tax_Reg_PVT;
9653 x_return_status := FND_API.G_RET_STS_ERROR ;
9654 DUMP_MSG;
9655 /*---------------------------------------------------------+
9656 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9657 | in the message stack. If there is only one message in |
9658 | the stack it retrieves this message |
9659 +---------------------------------------------------------*/
9660 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9661 p_count => x_msg_count,
9662 p_data => x_msg_data
9663 );
9664 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
9665 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
9666 END IF;
9667
9668 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9669 -- Commented rollback as per bug 5395191
9670 -- ROLLBACK TO Get_Default_Tax_Reg_PVT;
9671 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9672 DUMP_MSG;
9673 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
9674 FND_MSG_PUB.Add;
9675 /*---------------------------------------------------------+
9676 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9677 | in the message stack. If there is only one message in |
9678 | the stack it retrieves this message |
9679 +---------------------------------------------------------*/
9680 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9681 p_count => x_msg_count,
9682 p_data => x_msg_data
9683 );
9684 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
9685 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
9686 END IF;
9687
9688 WHEN OTHERS THEN
9689 -- Commented rollback as per bug 5395191
9690 -- ROLLBACK TO Get_Default_Tax_Reg_PVT;
9691 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
9692 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
9693 FND_MSG_PUB.Add;
9694 /*---------------------------------------------------------+
9695 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
9696 | in the message stack. If there is only one message in |
9697 | the stack it retrieves this message |
9698 +---------------------------------------------------------*/
9699 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9700 p_count => x_msg_count,
9701 p_data => x_msg_data
9705 END IF;
9702 );
9703 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
9704 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
9706
9707 END get_default_tax_reg;
9708
9709 /* ========================================================================*
9710 | PROCEDURE insert_line_det_factors : This procedure should be called by |
9711 | products when creating a document or inserting a new transaction line |
9712 | for existing document. This line will be flagged to be picked up by the |
9713 | tax calculation process |
9714 * =======================================================================*/
9715 PROCEDURE insert_line_det_factors (
9716 p_api_version IN NUMBER,
9717 p_init_msg_list IN VARCHAR2,
9718 p_commit IN VARCHAR2,
9719 p_validation_level IN NUMBER,
9720 x_return_status OUT NOCOPY VARCHAR2,
9721 x_msg_count OUT NOCOPY NUMBER,
9722 x_msg_data OUT NOCOPY VARCHAR2,
9723 p_duplicate_line_rec IN transaction_line_rec_type
9724 ) IS
9725 l_api_name CONSTANT VARCHAR2(30) := 'INSERT_LINE_DET_FACTORS';
9726 l_api_version CONSTANT NUMBER := 1.0;
9727 l_return_status VARCHAR2(1);
9728 l_event_class_rec event_class_rec_type;
9729 l_line_det_rec ZX_LINES_DET_FACTORS%rowtype;
9730 l_line_exists NUMBER;
9731 l_record_exists BOOLEAN;
9732 l_init_msg_list VARCHAR2(1);
9733 l_tax_classification_code VARCHAR2(50);
9734 l_do_defaulting BOOLEAN;
9735 l_upg_trx_info_rec ZX_ON_FLY_TRX_UPGRADE_PKG.zx_upg_trx_info_rec_type;
9736 BEGIN
9737 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
9738 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'1()+');
9739 END IF;
9740
9741 /*--------------------------------------------------+
9742 | Standard start of API savepoint |
9743 +--------------------------------------------------*/
9744 SAVEPOINT Insert_Line_Det_Factors_PVT;
9745
9746 /*--------------------------------------------------+
9747 | Standard call to check for call compatibility |
9748 +--------------------------------------------------*/
9749 IF NOT FND_API.Compatible_API_Call(l_api_version,
9750 p_api_version,
9751 l_api_name,
9752 G_PKG_NAME
9753 ) THEN
9754 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9755 END IF;
9756
9757 /*--------------------------------------------------------------+
9758 | Initialize message list if p_init_msg_list is set to TRUE |
9759 +--------------------------------------------------------------*/
9760 IF p_init_msg_list is null THEN
9761 l_init_msg_list := FND_API.G_FALSE;
9762 ELSE
9763 l_init_msg_list := p_init_msg_list;
9764 END IF;
9765
9766 IF FND_API.to_Boolean(l_init_msg_list) THEN
9767 FND_MSG_PUB.initialize;
9768 END IF;
9769
9770 /*-----------------------------------------+
9771 | Initialize return status to SUCCESS |
9772 +-----------------------------------------*/
9773 x_return_status := FND_API.G_RET_STS_SUCCESS;
9774
9775 /*-----------------------------------------+
9776 | Populate Global Variable |
9777 +-----------------------------------------*/
9778 G_PUB_SRVC := l_api_name;
9779 G_PUB_CALLING_SRVC := l_api_name;
9780 G_DATA_TRANSFER_MODE := 'PLS';
9781 G_EXTERNAL_API_CALL := 'N';
9782
9783 /*-----------------------------------------+
9784 |Populate the event class record structure|
9785 +-----------------------------------------*/
9786 l_event_class_rec.INTERNAL_ORGANIZATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(1);
9787 l_event_class_rec.LEGAL_ENTITY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(1);
9788 l_event_class_rec.LEDGER_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEDGER_ID(1);
9789 l_event_class_rec.APPLICATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(1);
9790 l_event_class_rec.ENTITY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ENTITY_CODE(1);
9791 l_event_class_rec.EVENT_CLASS_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_CLASS_CODE(1);
9792 l_event_class_rec.EVENT_TYPE_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_TYPE_CODE(1);
9793 l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(1);
9794 l_event_class_rec.TRX_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_ID(1);
9795 l_event_class_rec.TRX_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(1);
9796 l_event_class_rec.REL_DOC_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RELATED_DOC_DATE(1);
9797 l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:= ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(1);
9798 l_event_class_rec.TRX_CURRENCY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_CURRENCY_CODE(1);
9799 l_event_class_rec.PRECISION := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRECISION(1);
9800 l_event_class_rec.CURRENCY_CONVERSION_TYPE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(1);
9804 l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID(1);
9801 l_event_class_rec.CURRENCY_CONVERSION_RATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(1);
9802 l_event_class_rec.CURRENCY_CONVERSION_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(1);
9803 l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID(1);
9805 l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(1);
9806 l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID(1);
9807 l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID(1);
9808 l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID(1);
9809 l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID(1);
9810 l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID(1);
9811
9812 --Check if need to upgrade
9813 l_record_exists := FALSE;
9814 IF l_event_class_rec.event_type_code = 'INV_UPDATE' THEN
9815 FOR l_line_det_rec in lock_line_det_factors_for_doc(l_event_class_rec)
9816 LOOP
9817 l_record_exists := TRUE;
9818 l_event_class_rec.event_id := l_line_det_rec.event_id;
9819 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(1) := l_line_det_rec.default_taxation_country;
9820 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.document_sub_type(1) := l_line_det_rec.document_sub_type;
9821 EXIT;
9822 END LOOP;
9823 IF NOT(l_record_exists) THEN
9824 --Bugfix 4486946 -Call on the fly upgrade if the transaction if not found
9825 l_upg_trx_info_rec.application_id := l_event_class_rec.application_id;
9826 l_upg_trx_info_rec.entity_code := l_event_class_rec.entity_code;
9827 l_upg_trx_info_rec.event_class_code := l_event_class_rec.event_class_code;
9828 l_upg_trx_info_rec.trx_id := l_event_class_rec.trx_id;
9829 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(p_upg_trx_info_rec => l_upg_trx_info_rec,
9830 x_return_status => l_return_status
9831 );
9832 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9833 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9834 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly returned errors');
9835 END IF;
9836 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9837 RAISE FND_API.G_EXC_ERROR;
9838 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9839 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9840 END IF;
9841 END IF;
9842 FOR l_line_det_rec in lock_line_det_factors_for_doc(l_event_class_rec)
9843 LOOP
9844 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9845 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
9846 'Lock the document so that no updates can happen for transaction :' || to_char(l_event_class_rec.trx_id));
9847 END IF;
9848 l_record_exists := TRUE;
9849 l_event_class_rec.event_id := l_line_det_rec.event_id;
9850 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(1) := l_line_det_rec.default_taxation_country;
9851 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.document_sub_type(1) := l_line_det_rec.document_sub_type;
9852 EXIT;
9853 END LOOP;
9854 END IF; --record does not exist so upgrade
9855 --Bugfix 4486946 - on-the-fly upgrade end
9856 END IF; --event_type_code
9857
9858 IF NOT(l_record_exists) THEN
9859 SELECT ZX_LINES_DET_FACTORS_S.nextval
9860 INTO l_event_class_rec.event_id
9861 FROM dual;
9862 END IF;
9863
9864 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9865 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
9866 'application_id: '||to_char(l_event_class_rec.application_id)||
9867 ', entity_code: '||l_event_class_rec.entity_code||
9868 ', event_class_code: '||l_event_class_rec.event_class_code||
9869 ', event_type_code: '||l_event_class_rec.event_type_code||
9870 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
9871 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
9872 ', ledger_id: '||to_char(l_event_class_rec.ledger_id)||
9873 ', legal_entity_id: '||to_char(l_event_class_rec.legal_entity_id)||
9874 ', trx_date: '||to_char(l_event_class_rec.trx_date)||
9875 ', related_document_date: '||to_char(l_event_class_rec.rel_doc_date)||
9876 ', provnl_tax_determination_date: '||to_char(l_event_class_rec.provnl_tax_determination_date)||
9877 ', trx_currency_code: '||l_event_class_rec.trx_currency_code||
9878 ', currency_conversion_type: '||l_event_class_rec.currency_conversion_type||
9879 ', currency_conversion_rate: '||to_char(l_event_class_rec.currency_conversion_rate)||
9880 ', currency_conversion_date: '||to_char(l_event_class_rec.currency_conversion_date)||
9881 ', rounding_ship_to_party_id: '||to_char(l_event_class_rec.rounding_ship_to_party_id)||
9882 ', rounding_ship_from_party_id: '||to_char(l_event_class_rec.rounding_ship_from_party_id)||
9883 ', rounding_bill_to_party_id: '||to_char(l_event_class_rec.rounding_bill_to_party_id)||
9887 ', rndg_bill_to_party_site_id: '||to_char(l_event_class_rec.rndg_bill_to_party_site_id)||
9884 ', rounding_bill_from_party_id: '||to_char(l_event_class_rec.rounding_bill_from_party_id)||
9885 ', rndg_ship_to_party_site_id: '||to_char(l_event_class_rec.rndg_ship_to_party_site_id)||
9886 ', rndg_ship_from_party_site_id: '||to_char(l_event_class_rec.rndg_ship_from_party_site_id)||
9888 ', rndg_bill_from_party_site_id: '||to_char(l_event_class_rec.rndg_bill_from_party_site_id)
9889 );
9890 END IF;
9891
9892 -- Bug 5676960: Set a flag to indicate if currency information passed at header/line
9893 IF l_event_class_rec.trx_currency_code is not null AND
9894 l_event_class_rec.precision is not null THEN
9895 l_event_class_rec.header_level_currency_flag := 'Y';
9896 END IF;
9897
9898 /*------------------------------------------------------+
9899 | Validate and Initializate parameters for Inserting |
9900 | into line_det_factors |
9901 +------------------------------------------------------*/
9902 ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors(p_event_class_rec =>l_event_class_rec,
9903 p_trx_line_index => 1,
9904 x_return_status =>l_return_status
9905 );
9906
9907 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9908 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9909 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors returned errors');
9910 END IF;
9911 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9912 RAISE FND_API.G_EXC_ERROR;
9913 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9914 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9915 END IF;
9916 END IF;
9917
9918 -- Fix for Bug 5038953
9919 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_EVENT_CLASS_CODE(1) := l_event_class_rec.TAX_EVENT_CLASS_CODE;
9920 -- End fix for Bug 5038953
9921
9922 /* ==============================================*
9923 |Determine if we need to default the parameters|
9924 * ============================================*/
9925 l_do_defaulting := ZX_SRVC_TYP_PKG.decide_call_redefault_APIs (p_trx_line_index => 1);
9926
9927 IF l_do_defaulting THEN
9928 /*If the Duplicate Source Document Line identifiers are passed, then derive the values
9929 of the tax determining factors from ZX_LINES_DET_FACTORS for the duplicate source document line.*/
9930 IF p_duplicate_line_rec.application_id is not null THEN
9931 --Default determining factors from Duplicated Line
9932 SELECT
9933 default_taxation_country,
9934 document_sub_type,
9935 trx_business_category,
9936 line_intended_use,
9937 user_defined_fisc_class,
9938 product_fisc_classification,
9939 product_category,
9940 assessable_value,
9941 product_type,
9942 decode(l_event_class_rec.prod_family_grp_code,'P2P',input_tax_classification_code,
9943 'O2C',output_tax_classification_code)
9944 INTO
9945 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(1),
9946 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.document_sub_type(1),
9947 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_business_category(1),
9948 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_intended_use(1),
9949 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.user_defined_fisc_class(1),
9950 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_fisc_classification(1),
9951 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_category(1),
9952 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.assessable_value(1),
9953 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_type(1),
9954 l_tax_classification_code
9955 FROM ZX_LINES_DET_FACTORS
9956 WHERE application_id = p_duplicate_line_rec.application_id
9957 AND entity_code = p_duplicate_line_rec.entity_code
9958 AND event_class_code = p_duplicate_line_rec.event_class_code
9959 AND trx_id = p_duplicate_line_rec.trx_id
9960 AND trx_line_id = p_duplicate_line_rec.trx_line_id
9961 AND trx_level_type = p_duplicate_line_rec.trx_level_type;
9962
9963 --AR always passes the tax classification code so do not override the passed value
9964 IF l_event_class_rec.prod_family_grp_code = 'P2P' THEN
9965 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.input_tax_classification_code(1) := l_tax_classification_code;
9966 ELSIF l_event_class_rec.prod_family_grp_code = 'O2C' AND
9967 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.output_tax_classification_code is null THEN
9968 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.output_tax_classification_code(1) := l_tax_classification_code;
9969 END IF;
9970 /*If the applied from, adjusted, source document information is passed with
9971 the transaction line, then derive the values tax determining factors from
9972 ZX_LINES_DET_FACTORS or call TDS defaulting API*/
9973 ELSE ZX_SRVC_TYP_PKG.default_tax_attrs_wrapper (p_trx_line_index => 1,
9974 p_event_class_rec => l_event_class_rec,
9975 x_return_status => l_return_status
9976 );
9977 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9978 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
9979 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.default_tax_attrs_wrapper returned errors');
9980 END IF;
9981 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
9982 RAISE FND_API.G_EXC_ERROR;
9983 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
9984 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9985 END IF;
9986 END IF;
9987 END IF; --duplicate check
9988 END IF; --l_do_defaulting
9989
9990
9991 /*------------------------------------------+
9992 |Call to insert the lines |
9993 +------------------------------------------*/
9994 ZX_SRVC_TYP_PKG.insupd_line_det_factors(p_event_class_rec => l_event_class_rec,
9995 x_return_status => l_return_status
9996 );
9997
9998 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9999 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10000 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.insupd_line_det_factors returned errors');
10001 END IF;
10002 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10003 RAISE FND_API.G_EXC_ERROR;
10004 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10005 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10006 END IF;
10007 END IF;
10008
10009 --Delete from the global structures so that there are no hanging/redundant
10010 --records sitting there
10011 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
10012
10013 --Reset G_PUB_CALLING_SRVC at end of API
10014 ZX_API_PUB.G_PUB_CALLING_SRVC := null;
10015
10016 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10017 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
10018 END IF;
10019
10020 EXCEPTION
10021 WHEN FND_API.G_EXC_ERROR THEN
10022 ROLLBACK TO Insert_Line_Det_Factors_PVT;
10023 x_return_status := FND_API.G_RET_STS_ERROR ;
10024 DUMP_MSG;
10025 /*---------------------------------------------------------+
10026 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
10027 | in the message stack. If there is only one message in |
10028 | the stack it retrieves this message |
10029 +---------------------------------------------------------*/
10030 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
10031 p_count => x_msg_count,
10035 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
10032 p_data => x_msg_data
10033 );
10034
10036 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
10037 END IF;
10038
10039 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10040 ROLLBACK TO Insert_Line_Det_Factors_PVT;
10041 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10042 DUMP_MSG;
10043 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
10044 FND_MSG_PUB.Add;
10045 /*---------------------------------------------------------+
10046 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
10047 | in the message stack. If there is only one message in |
10048 | the stack it retrieves this message |
10049 +---------------------------------------------------------*/
10050 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
10051 p_count => x_msg_count,
10052 p_data => x_msg_data
10053 );
10054 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
10055 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
10056 END IF;
10057
10058 WHEN OTHERS THEN
10059 ROLLBACK TO Insert_Line_Det_Factors_PVT;
10060 IF (SQLCODE = 54) THEN
10061 x_return_status := FND_API.G_RET_STS_ERROR ;
10062 FND_MESSAGE.SET_NAME('ZX','ZX_RESOURCE_BUSY');
10063 ELSE
10064 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10065 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
10066 END IF;
10067 FND_MSG_PUB.Add;
10068 /*---------------------------------------------------------+
10069 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
10070 | in the message stack. If there is only one message in |
10071 | the stack it retrieves this message |
10072 +---------------------------------------------------------*/
10073 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
10074 p_count => x_msg_count,
10075 p_data => x_msg_data
10076 );
10077
10078 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
10079 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
10080 END IF;
10081 END insert_line_det_factors;
10082
10083 /* ============================================================================*
10084 | PROCEDURE insert_line_det_factors : This overloaded procedure will be called|
10085 | by iProcurement to insert all the transaction lines with defaulted tax |
10086 | determining attributes into zx_lines_det_factors after complying with the |
10087 | validation process |
10088 * ============================================================================*/
10089 PROCEDURE insert_line_det_factors (
10090 p_api_version IN NUMBER,
10091 p_init_msg_list IN VARCHAR2,
10092 p_commit IN VARCHAR2,
10093 p_validation_level IN NUMBER,
10094 x_return_status OUT NOCOPY VARCHAR2,
10095 x_msg_count OUT NOCOPY NUMBER,
10096 x_msg_data OUT NOCOPY VARCHAR2
10097 ) IS
10098 l_api_name CONSTANT VARCHAR2(30) := 'INSERT_LINE_DET_FACTORS';
10099 l_api_version CONSTANT NUMBER := 1.0;
10100 l_return_status VARCHAR2(1);
10101 l_event_class_rec event_class_rec_type;
10102 l_line_det_rec ZX_LINES_DET_FACTORS%rowtype;
10103 l_line_exists NUMBER;
10104 l_record_exists BOOLEAN;
10105 l_init_msg_list VARCHAR2(1);
10106 l_upg_trx_info_rec ZX_ON_FLY_TRX_UPGRADE_PKG.zx_upg_trx_info_rec_type;
10107
10108 BEGIN
10109 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10110 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'2()+');
10111 END IF;
10112
10113 /*--------------------------------------------------+
10114 | Standard start of API savepoint |
10115 +--------------------------------------------------*/
10116 SAVEPOINT Insert_Line_Det_Factors_PVT;
10117
10118 /*--------------------------------------------------+
10119 | Standard call to check for call compatibility |
10120 +--------------------------------------------------*/
10121 IF NOT FND_API.Compatible_API_Call(l_api_version,
10122 p_api_version,
10123 l_api_name,
10124 G_PKG_NAME
10125 ) THEN
10126 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10127 END IF;
10128
10129 /*--------------------------------------------------------------+
10130 | Initialize message list if p_init_msg_list is set to TRUE |
10131 +--------------------------------------------------------------*/
10132 IF p_init_msg_list is null THEN
10133 l_init_msg_list := FND_API.G_FALSE;
10134 ELSE
10135 l_init_msg_list := p_init_msg_list;
10136 END IF;
10137
10138 IF FND_API.to_Boolean(l_init_msg_list) THEN
10139 FND_MSG_PUB.initialize;
10140 END IF;
10141
10142 /*-----------------------------------------+
10143 | Initialize return status to SUCCESS |
10144 +-----------------------------------------*/
10145 x_return_status := FND_API.G_RET_STS_SUCCESS;
10146
10147 /*-----------------------------------------+
10148 | Populate Global Variable |
10149 +-----------------------------------------*/
10150 G_PUB_SRVC := l_api_name;
10151 G_DATA_TRANSFER_MODE := 'PLS';
10152 G_EXTERNAL_API_CALL := 'N';
10153
10154
10155 /*-----------------------------------------+
10156 |Populate the event class record structure|
10157 +-----------------------------------------*/
10158 l_event_class_rec.INTERNAL_ORGANIZATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(1);
10159 l_event_class_rec.LEGAL_ENTITY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(1);
10160 l_event_class_rec.LEDGER_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEDGER_ID(1);
10161 l_event_class_rec.APPLICATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(1);
10162 l_event_class_rec.ENTITY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ENTITY_CODE(1);
10163 l_event_class_rec.EVENT_CLASS_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_CLASS_CODE(1);
10164 l_event_class_rec.EVENT_TYPE_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_TYPE_CODE(1);
10165 l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(1);
10166 l_event_class_rec.TRX_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_ID(1);
10167 l_event_class_rec.TRX_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(1);
10168 l_event_class_rec.REL_DOC_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RELATED_DOC_DATE(1);
10169 l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:= ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(1);
10170 l_event_class_rec.TRX_CURRENCY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_CURRENCY_CODE(1);
10171 l_event_class_rec.PRECISION := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRECISION(1);
10172 l_event_class_rec.CURRENCY_CONVERSION_TYPE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(1);
10173 l_event_class_rec.CURRENCY_CONVERSION_RATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(1);
10174 l_event_class_rec.CURRENCY_CONVERSION_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(1);
10175 l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID(1);
10176 l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID(1);
10177 l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(1);
10178 l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID(1);
10179 l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID(1);
10180 l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID(1);
10181 l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID(1);
10182 l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID(1);
10183
10184 --Check if need to upgrade
10185 l_record_exists := FALSE;
10186 IF l_event_class_rec.event_type_code = 'INV_UPDATE' THEN
10187 FOR l_line_det_rec in lock_line_det_factors_for_doc(l_event_class_rec)
10188 LOOP
10189 l_record_exists := TRUE;
10190 l_event_class_rec.event_id := l_line_det_rec.event_id;
10191 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(1) := l_line_det_rec.default_taxation_country;
10192 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.document_sub_type(1) := l_line_det_rec.document_sub_type;
10193 EXIT;
10194 END LOOP;
10195 IF NOT(l_record_exists) THEN
10196 --Bugfix 4486946 -Call on the fly upgrade if the transaction if not found
10197 l_upg_trx_info_rec.application_id := l_event_class_rec.application_id;
10198 l_upg_trx_info_rec.entity_code := l_event_class_rec.entity_code;
10199 l_upg_trx_info_rec.event_class_code := l_event_class_rec.event_class_code;
10200 l_upg_trx_info_rec.trx_id := l_event_class_rec.trx_id;
10201 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(p_upg_trx_info_rec => l_upg_trx_info_rec,
10202 x_return_status => l_return_status
10203 );
10204 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10205 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10206 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly returned errors');
10207 END IF;
10208 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10209 RAISE FND_API.G_EXC_ERROR;
10210 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10211 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10212 END IF;
10213 END IF;
10214 FOR l_line_det_rec in lock_line_det_factors_for_doc(l_event_class_rec)
10215 LOOP
10216 l_record_exists := TRUE;
10217 l_event_class_rec.event_id := l_line_det_rec.event_id;
10218 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(1) := l_line_det_rec.default_taxation_country;
10219 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.document_sub_type(1) := l_line_det_rec.document_sub_type;
10220 EXIT;
10221 END LOOP;
10222 END IF; --record does not exist so upgrade
10223 --Bugfix 4486946 - on-the-fly upgrade end
10224 END IF; --event_type_code
10225
10226 /*------------------------------------------------------------------------------------------+
10227 | Set the event id for the whole document- Since this API is called for each transaction |
10228 | line, the event id needs to be generated from the sequence only for the first transaction|
10229 | line. For other lines, we need to retrieve the event id from the table. |
10230 +-----------------------------------------------------------------------------------------*/
10231 IF NOT(l_record_exists) THEN
10232 SELECT ZX_LINES_DET_FACTORS_S.nextval
10233 INTO l_event_class_rec.event_id
10234 FROM dual;
10235 END IF;
10236
10237 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10238 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
10239 'application_id: '||to_char(l_event_class_rec.application_id)||
10240 ', entity_code: '||l_event_class_rec.entity_code||
10241 ', event_class_code: '||l_event_class_rec.event_class_code||
10242 ', event_type_code: '||l_event_class_rec.event_type_code||
10243 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
10244 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
10245 ', ledger_id: '||to_char(l_event_class_rec.ledger_id)||
10246 ', legal_entity_id: '||to_char(l_event_class_rec.legal_entity_id)||
10247 ', trx_date: '||to_char(l_event_class_rec.trx_date)||
10248 ', related_document_date: '||to_char(l_event_class_rec.rel_doc_date)||
10249 ', provnl_tax_determination_date: '||to_char(l_event_class_rec.provnl_tax_determination_date)||
10250 ', trx_currency_code: '||l_event_class_rec.trx_currency_code||
10251 ', currency_conversion_type: '||l_event_class_rec.currency_conversion_type||
10252 ', currency_conversion_rate: '||to_char(l_event_class_rec.currency_conversion_rate)||
10253 ', currency_conversion_date: '||to_char(l_event_class_rec.currency_conversion_date)||
10254 ', rounding_ship_to_party_id: '||to_char(l_event_class_rec.rounding_ship_to_party_id)||
10255 ', rounding_ship_from_party_id: '||to_char(l_event_class_rec.rounding_ship_from_party_id)||
10256 ', rounding_bill_to_party_id: '||to_char(l_event_class_rec.rounding_bill_to_party_id)||
10257 ', rounding_bill_from_party_id: '||to_char(l_event_class_rec.rounding_bill_from_party_id)||
10258 ', rndg_ship_to_party_site_id: '||to_char(l_event_class_rec.rndg_ship_to_party_site_id)||
10259 ', rndg_ship_from_party_site_id: '||to_char(l_event_class_rec.rndg_ship_from_party_site_id)||
10260 ', rndg_bill_to_party_site_id: '||to_char(l_event_class_rec.rndg_bill_to_party_site_id)||
10261 ', rndg_bill_from_party_site_id: '||to_char(l_event_class_rec.rndg_bill_from_party_site_id)
10262 );
10263 END IF;
10264
10265 /*------------------------------------------------------+
10266 | Validate and Initializate parameters for Inserting |
10267 | into line_det_factors |
10268 +------------------------------------------------------*/
10269 ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors(p_event_class_rec =>l_event_class_rec,
10270 p_trx_line_index =>1,
10271 x_return_status =>l_return_status
10272 );
10273
10274 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10275 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10276 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors returned errors');
10277 END IF;
10278 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10279 RAISE FND_API.G_EXC_ERROR;
10280 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10281 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10282 END IF;
10283 END IF;
10284
10285 /*------------------------------------------+
10286 |Call to insert the lines |
10287 +------------------------------------------*/
10288 ZX_SRVC_TYP_PKG.insupd_line_det_factors(p_event_class_rec => l_event_class_rec,
10289 x_return_status => l_return_status
10290 );
10291
10292 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10293 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10294 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_SRVC_TYP_PKG.insupd_line_det_factors returned errors');
10295 END IF;
10296 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10297 RAISE FND_API.G_EXC_ERROR;
10298 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10299 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10300 END IF;
10301 END IF;
10302
10303 --Delete from the global structures so that there are no hanging/redundant
10304 --records sitting there
10305 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
10306
10307 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10308 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
10309 END IF;
10310
10311 EXCEPTION
10312 WHEN FND_API.G_EXC_ERROR THEN
10313 ROLLBACK TO Insert_Line_Det_Factors_PVT;
10314 x_return_status := FND_API.G_RET_STS_ERROR ;
10315 DUMP_MSG;
10316 /*---------------------------------------------------------+
10317 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
10318 | in the message stack. If there is only one message in |
10319 | the stack it retrieves this message |
10320 +---------------------------------------------------------*/
10321 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
10322 p_count => x_msg_count,
10323 p_data => x_msg_data
10324 );
10325
10326 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
10327 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
10328 END IF;
10329
10330 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10331 ROLLBACK TO Insert_Line_Det_Factors_PVT;
10332 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10333 DUMP_MSG;
10334 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
10335 FND_MSG_PUB.Add;
10336 /*---------------------------------------------------------+
10337 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
10338 | in the message stack. If there is only one message in |
10339 | the stack it retrieves this message |
10340 +---------------------------------------------------------*/
10341 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
10342 p_count => x_msg_count,
10343 p_data => x_msg_data
10344 );
10345 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
10346 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
10347 END IF;
10348
10349 WHEN OTHERS THEN
10350 /*-------------------------------------------------------+
10351 | Handle application errors that result from trapable |
10352 | error conditions. The error messages have already |
10353 | been put on the error stack. |
10354 +-------------------------------------------------------*/
10355 ROLLBACK TO Insert_Line_Det_Factors_PVT;
10356 IF (SQLCODE = 54) THEN
10357 x_return_status := FND_API.G_RET_STS_ERROR ;
10358 FND_MESSAGE.SET_NAME('ZX','ZX_RESOURCE_BUSY');
10359 ELSE
10360 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10361 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
10362 END IF;
10363 FND_MSG_PUB.Add;
10364 /*---------------------------------------------------------+
10365 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
10366 | in the message stack. If there is only one message in |
10367 | the stack it retrieves this message |
10368 +---------------------------------------------------------*/
10369 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
10370 p_count => x_msg_count,
10371 p_data => x_msg_data
10372 );
10373
10374 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
10375 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
10376 END IF;
10377 END insert_line_det_factors;
10378
10379
10380 /* ========================================================================*
10381 | PROCEDURE update_det_factors_hdr: This procedure should be called by |
10382 | products when updating any of the header attributes on the transaction |
10383 | so that the tax repository is also in sync with the header level updates|
10384 | |
10385 | NOTES: Products will pass intended nullable values as null while they |
10386 | will pass G_MISS_NUM/G_MISS_DATE/G_MISS_CHAR for the attributes where |
10387 | intention is to retain the original values as stored in tax repository |
10388 * =======================================================================*/
10389
10390 PROCEDURE update_det_factors_hdr
10391 (
10392 p_api_version IN NUMBER,
10393 p_init_msg_list IN VARCHAR2,
10394 p_commit IN VARCHAR2,
10395 p_validation_level IN NUMBER,
10396 x_return_status OUT NOCOPY VARCHAR2,
10397 x_msg_count OUT NOCOPY NUMBER,
10398 x_msg_data OUT NOCOPY VARCHAR2,
10399 p_hdr_det_factors_rec IN header_det_factors_rec_type
10400 )IS
10401 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_DET_FACTORS_HDR';
10402 l_api_version CONSTANT NUMBER := 1.0;
10403 l_return_status VARCHAR2(1);
10404 l_event_class_rec event_class_rec_type;
10405 l_init_msg_list VARCHAR2(1);
10406 l_rdng_ship_to_ptp_id NUMBER;
10407 l_rdng_bill_to_ptp_id NUMBER;
10408 l_rdng_ship_from_ptp_id NUMBER;
10409 l_rdng_bill_from_ptp_id NUMBER;
10410 l_rdng_bill_to_ptp_st_id NUMBER;
10411 l_rdng_bill_from_ptp_st_id NUMBER;
10412 l_rdng_ship_to_ptp_st_id NUMBER;
10413 l_rdng_ship_from_ptp_st_id NUMBER;
10414 l_ship_to_ptp_id NUMBER;
10415 l_ship_from_ptp_id NUMBER;
10416 l_bill_to_ptp_id NUMBER;
10417 l_bill_from_ptp_id NUMBER;
10418 l_ship_to_ptp_site_id NUMBER;
10419 l_ship_from_ptp_site_id NUMBER;
10420 l_bill_to_ptp_site_id NUMBER;
10421 l_bill_from_ptp_site_id NUMBER;
10422 l_poa_ptp_id NUMBER;
10423 l_poo_ptp_id NUMBER;
10424 l_poo_ptp_site_id NUMBER;
10425 l_poa_ptp_site_id NUMBER;
10426 l_hq_estb_ptp_id NUMBER;
10427 l_party_type VARCHAR2(30);
10428 l_transaction_rec transaction_rec_type;
10429 l_upg_trx_info_rec ZX_ON_FLY_TRX_UPGRADE_PKG.zx_upg_trx_info_rec_type;
10430 l_incomplete_scenario number;
10431
10432 BEGIN
10433 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
10434 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
10435 END IF;
10436
10437 /*--------------------------------------------------+
10438 | Standard start of API savepoint |
10439 +--------------------------------------------------*/
10440 SAVEPOINT Update_Det_Factors_Hdr_PVT;
10441
10442 /*--------------------------------------------------+
10443 | Standard call to check for call compatibility |
10444 +--------------------------------------------------*/
10445 IF NOT FND_API.Compatible_API_Call(l_api_version,
10446 p_api_version,
10447 l_api_name,
10448 G_PKG_NAME
10449 ) THEN
10450 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10451 END IF;
10452
10453 /*--------------------------------------------------------------+
10454 | Initialize message list if p_init_msg_list is set to TRUE |
10455 +--------------------------------------------------------------*/
10456 IF p_init_msg_list is null THEN
10457 l_init_msg_list := FND_API.G_FALSE;
10458 ELSE
10459 l_init_msg_list := p_init_msg_list;
10460 END IF;
10461
10462 IF FND_API.to_Boolean(l_init_msg_list) THEN
10463 FND_MSG_PUB.initialize;
10464 END IF;
10465
10466 /*-----------------------------------------+
10467 | Initialize return status to SUCCESS |
10468 +-----------------------------------------*/
10469 x_return_status := FND_API.G_RET_STS_SUCCESS;
10470
10471 /*-----------------------------------------+
10472 | Populate Global Variable |
10473 +-----------------------------------------*/
10474 G_PUB_SRVC := 'UPDATE_DET_FACTORS_HDR';
10475 G_DATA_TRANSFER_MODE := 'PLS';
10476 G_EXTERNAL_API_CALL := 'N';
10477 /*
10478 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10479 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Passed in data: APPLICATION_ID: '||to_char(p_hdr_det_factors_rec.application_id)||
10480 ', ENTITY_CODE: '||p_hdr_det_factors_rec.entity_code||
10481 ', EVENT_CLASS_CODE: '||p_hdr_det_factors_rec.event_class_code||
10485 ', INTERNAL_ORG_LOCATION_ID : '|| to_char(p_hdr_det_factors_rec.internal_org_location_id)||
10482 ', EVENT_TYPE_CODE: '||p_hdr_det_factors_rec.event_type_code||
10483 ', TRX_ID: '||to_char(p_hdr_det_factors_rec.trx_id)||
10484 ', INTERNAL_ORGANIZATION_ID: '|| to_char(p_hdr_det_factors_rec.internal_organization_id)||
10486 ', LEGAL_ENTITY_ID :'||to_char(p_hdr_det_factors_rec.legal_entity_id)||
10487 ', LEDGER_ID :' ||to_char(p_hdr_det_factors_rec.ledger_id)||
10488 ', TRX_DATE :' ||to_char(p_hdr_det_factors_rec.trx_date)||
10489 ', TRX_DOC_REVISION :' ||p_hdr_det_factors_rec.trx_doc_revision||
10490 ', TRX_CURRENCY_CODE :' ||p_hdr_det_factors_rec.trx_currency_code ||
10491 ', CURRENCY_CONVERSION_TYPE :' ||p_hdr_det_factors_rec.currency_conversion_type ||
10492 ', CURRENCY_CONVERSION_RATE :' ||to_char(p_hdr_det_factors_rec.currency_conversion_rate) ||
10493 ', CURRENCY_CONVERSION_DATE :' ||to_char(p_hdr_det_factors_rec.currency_conversion_date) ||
10494 ', MINIMUM_ACCOUNTABLE_UNIT: ' ||to_char(p_hdr_det_factors_rec.minimum_accountable_unit)||
10495 ', PRECISION:' ||to_char(p_hdr_det_factors_rec.precision) ||
10496 ', ROUNDING_SHIP_TO_PARTY_ID : '||to_char(p_hdr_det_factors_rec.rounding_ship_to_party_id)||
10497 ', ROUNDING_SHIP_FROM_PARTY_ID: '||to_char(p_hdr_det_factors_rec.rounding_ship_from_party_id)||
10498 ', ROUNDING_BILL_TO_PARTY_ID: '||to_char(p_hdr_det_factors_rec.rounding_bill_to_party_id)||
10499 ', ROUNDING_BILL_FROM_PARTY_ID :'||to_char(p_hdr_det_factors_rec.rounding_bill_from_party_id)||
10500 ', RNDG_SHIP_TO_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.rndg_ship_to_party_site_id)||
10501 ', RNDG_SHIP_FROM_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.rndg_ship_from_party_site_id)||
10502 ', RNDG_BILL_TO_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.rndg_bill_to_party_site_id)||
10503 ', RNDG_BILL_FROM_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.rndg_bill_from_party_site_id)||
10504 ', QUOTE_FLAG :'||p_hdr_det_factors_rec.quote_flag||
10505 ', ESTABLISHMENT_ID :'||to_char(p_hdr_det_factors_rec.establishment_id)||
10506 ', RECEIVABLES_TRX_TYPE_ID :'||to_char(p_hdr_det_factors_rec.receivables_trx_type_id)||
10507 ', RELATED_DOC_APPLICATION_ID :'||to_char(p_hdr_det_factors_rec.related_doc_application_id)||
10508 ', RELATED_DOC_ENTITY_CODE :'||p_hdr_det_factors_rec.related_doc_entity_code||
10509 ', RELATED_DOC_EVENT_CLASS_CODE :'||p_hdr_det_factors_rec.related_doc_event_class_code||
10510 ', RELATED_DOC_TRX_ID :'||to_char(p_hdr_det_factors_rec.related_doc_trx_id)||
10511 ', RELATED_DOC_NUMBER :'||to_char(p_hdr_det_factors_rec.related_doc_number)||
10512 ', RELATED_DOC_DATE :'||to_char(p_hdr_det_factors_rec.related_doc_date)||
10513 ', DEFAULT_TAXATION_COUNTRY :'||p_hdr_det_factors_rec.default_taxation_country||
10514 ', CTRL_TOTAL_HDR_TX_AMT :'||to_char(p_hdr_det_factors_rec.ctrl_total_hdr_tx_amt)||
10515 ', TRX_NUMBER :'||p_hdr_det_factors_rec.trx_number||
10516 ', TRX_DESCRIPTION :'||p_hdr_det_factors_rec.trx_description||
10517 ', TRX_COMMUNICATED_DATE :'||to_char(p_hdr_det_factors_rec.trx_communicated_date)||
10518 ', BATCH_SOURCE_ID :'||to_char(p_hdr_det_factors_rec.batch_source_id)||
10519 ', BATCH_SOURCE_NAME :'||p_hdr_det_factors_rec.batch_source_name||
10520 ', DOC_SEQ_ID :'||to_char(p_hdr_det_factors_rec.doc_seq_id)||
10521 ', DOC_SEQ_NAME :'||p_hdr_det_factors_rec.doc_seq_id||
10522 ', DOC_SEQ_VALUE :'||p_hdr_det_factors_rec.doc_seq_value||
10523 ', TRX_DUE_DATE :'||to_char(p_hdr_det_factors_rec.trx_due_date)||
10524 ', TRX_TYPE_DESCRIPTION :'||p_hdr_det_factors_rec.trx_type_description
10525 );
10526 END IF;
10527 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10528 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
10529 ', DOCUMENT_SUB_TYPE :'||p_hdr_det_factors_rec.document_sub_type||
10530 ', SUPPLIER_TAX_INVOICE_NUMBER :'||p_hdr_det_factors_rec.supplier_tax_invoice_number||
10531 ', SUPPLIER_TAX_INVOICE_DATE :'||to_char(p_hdr_det_factors_rec.supplier_tax_invoice_date)||
10532 ', SUPPLIER_EXCHANGE_RATE :'||to_char(p_hdr_det_factors_rec.supplier_exchange_rate)||
10533 ', TAX_INVOICE_DATE :'||to_char(p_hdr_det_factors_rec.tax_invoice_date)||
10534 ', TAX_INVOICE_NUMBER :'||p_hdr_det_factors_rec.tax_invoice_date||
10535 ', FIRST_PTY_ORG_ID :'||to_char(p_hdr_det_factors_rec.first_pty_org_id)||
10536 ', TAX_EVENT_CLASS_CODE :'||p_hdr_det_factors_rec.tax_event_class_code||
10537 ', TAX_EVENT_TYPE_CODE :'||p_hdr_det_factors_rec.tax_event_type_code||
10538 ', DOC_EVENT_STATUS :'||p_hdr_det_factors_rec.doc_event_status||
10539 ', PORT_OF_ENTRY_CODE :'||p_hdr_det_factors_rec.port_of_entry_code||
10540 ', TAX_REPORTING_FLAG :'||p_hdr_det_factors_rec.tax_reporting_flag||
10541 ', PROVNL_TAX_DETERMINATION_DATE :'||to_char(p_hdr_det_factors_rec.provnl_tax_determination_date)||
10542 ', SHIP_THIRD_PTY_ACCT_ID :'||to_char(p_hdr_det_factors_rec.ship_third_pty_acct_id)||
10543 ', BILL_THIRD_PTY_ACCT_ID :'||to_char(p_hdr_det_factors_rec.bill_third_pty_acct_id)||
10544 ', SHIP_THIRD_PTY_ACCT_SITE_ID :'||to_char(p_hdr_det_factors_rec.ship_third_pty_acct_site_id)||
10545 ', BILL_THIRD_PTY_ACCT_SITE_ID :'||to_char(p_hdr_det_factors_rec.bill_third_pty_acct_site_id)||
10546 ', SHIP_TO_CUST_ACCT_SITE_USE_ID :'||to_char(p_hdr_det_factors_rec.ship_to_cust_acct_site_use_id)||
10547 ', BILL_TO_CUST_ACCT_SITE_USE_ID :'||to_char(p_hdr_det_factors_rec.bill_to_cust_acct_site_use_id)||
10548 ', TRX_BATCH_ID :'||to_char(p_hdr_det_factors_rec.trx_batch_id)||
10549 ', APPLIED_TO_TRX_NUMBER :'||p_hdr_det_factors_rec.applied_to_trx_number||
10550 ', APPLICATION_DOC_STATUS :'||p_hdr_det_factors_rec.application_doc_status||
10551 ', SHIP_TO_PARTY_ID :'||to_char(p_hdr_det_factors_rec.ship_to_party_id)||
10552 ', SHIP_FROM_PARTY_ID :'||to_char(p_hdr_det_factors_rec.ship_from_party_id)||
10553 ', POA_PARTY_ID :'||to_char(p_hdr_det_factors_rec.poa_party_id)||
10554 ', POO_PARTY_ID :'||to_char(p_hdr_det_factors_rec.poo_party_id)||
10555 ', BILL_TO_PARTY_ID :'||to_char(p_hdr_det_factors_rec.bill_to_party_id)||
10556 ', BILL_FROM_PARTY_ID :'||to_char(p_hdr_det_factors_rec.bill_from_party_id)||
10557 ', MERCHANT_PARTY_ID :'||to_char(p_hdr_det_factors_rec.merchant_party_id)||
10558 ', SHIP_TO_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.ship_to_party_site_id)||
10559 ', SHIP_FROM_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.ship_from_party_site_id)||
10560 ', POA_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.poa_party_site_id)||
10561 ', POO_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.poo_party_site_id)||
10562 ', BILL_TO_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.bill_to_party_site_id)||
10563 ', BILL_FROM_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.bill_from_party_site_id)||
10564 ', SHIP_TO_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.ship_to_location_id)||
10565 ', SHIP_FROM_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.ship_from_location_id)||
10566 ', POA_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.poa_location_id)||
10567 ', POO_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.poo_location_id)||
10568 ', BILL_TO_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.bill_to_location_id)||
10569 ', BILL_FROM_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.bill_from_location_id)||
10570 ', PAYING_PARTY_ID :'||to_char(p_hdr_det_factors_rec.paying_party_id)||
10571 ', OWN_HQ_PARTY_ID :'||to_char(p_hdr_det_factors_rec.own_hq_party_id)||
10572 ', TRADING_HQ_PARTY_ID :'||to_char(p_hdr_det_factors_rec.trading_hq_party_id)||
10573 ', POI_PARTY_ID :'||to_char(p_hdr_det_factors_rec.poi_party_id)
10574 );
10575 END IF;
10576 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10577 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
10578 ', POD_PARTY_ID :'||to_char(p_hdr_det_factors_rec.pod_party_id)||
10579 ', TITLE_TRANSFER_PARTY_ID :'||to_char(p_hdr_det_factors_rec.title_transfer_party_id)||
10580 ', PAYING_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.paying_party_site_id)||
10581 ', OWN_HQ_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.own_hq_party_site_id)||
10582 ', TRADING_HQ_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.trading_hq_party_site_id)||
10583 ', POI_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.poi_party_site_id)||
10584 ', POD_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.pod_party_site_id)||
10585 ', TITLE_TRANSFER_PARTY_SITE_ID :'||to_char(p_hdr_det_factors_rec.title_transfer_party_site_id)||
10586 ', PAYING_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.paying_location_id)||
10587 ', OWN_HQ_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.own_hq_location_id)||
10588 ', TRADING_HQ_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.trading_hq_location_id)||
10589 ', POC_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.poc_location_id)||
10590 ', POI_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.poi_location_id)||
10591 ', POD_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.pod_location_id)||
10592 ', TITLE_TRANSFER_LOCATION_ID :'||to_char(p_hdr_det_factors_rec.title_transfer_location_id)
10593 );
10594 END IF;
10595 */
10596 /*------------------------------------------------------+
10597 | Populate the event class record structure |
10598 +------------------------------------------------------*/
10599 l_event_class_rec.application_id := p_hdr_det_factors_rec.application_id;
10600 l_event_class_rec.entity_code := p_hdr_det_factors_rec.entity_code;
10601 l_event_class_rec.event_class_code := p_hdr_det_factors_rec.event_class_code;
10602 l_event_class_rec.event_type_code := p_hdr_det_factors_rec.event_type_code;
10603 l_event_class_rec.trx_id := p_hdr_det_factors_rec.trx_id;
10604 l_event_class_rec.trx_date := p_hdr_det_factors_rec.trx_date;
10605 l_event_class_rec.internal_organization_id := p_hdr_det_factors_rec.internal_organization_id;
10606 l_event_class_rec.legal_entity_id := p_hdr_det_factors_rec.legal_entity_id;
10607 l_event_class_rec.rel_doc_date := p_hdr_det_factors_rec.related_doc_date;
10608 l_event_class_rec.trx_currency_code := p_hdr_det_factors_rec.trx_currency_code;
10609 l_event_class_rec.precision := p_hdr_det_factors_rec.precision;
10610 l_event_class_rec.currency_conversion_type := p_hdr_det_factors_rec.currency_conversion_type;
10611 l_event_class_rec.currency_conversion_rate := p_hdr_det_factors_rec.currency_conversion_rate;
10612 l_event_class_rec.currency_conversion_date := p_hdr_det_factors_rec.currency_conversion_date;
10613 l_event_class_rec.rounding_ship_to_party_id := p_hdr_det_factors_rec.rounding_ship_to_party_id;
10614 l_event_class_rec.rounding_ship_from_party_id := p_hdr_det_factors_rec.rounding_ship_from_party_id;
10615 l_event_class_rec.rounding_bill_to_party_id := p_hdr_det_factors_rec.rounding_bill_to_party_id;
10616 l_event_class_rec.rounding_bill_from_party_id := p_hdr_det_factors_rec.rounding_bill_from_party_id;
10617 l_event_class_rec.rndg_ship_to_party_site_id := p_hdr_det_factors_rec.rndg_ship_to_party_site_id;
10618 l_event_class_rec.rndg_ship_from_party_site_id := p_hdr_det_factors_rec.rndg_ship_from_party_site_id;
10619 l_event_class_rec.rndg_bill_to_party_site_id := p_hdr_det_factors_rec.rndg_bill_to_party_site_id;
10620 l_event_class_rec.rndg_bill_from_party_site_id := p_hdr_det_factors_rec.rndg_bill_from_party_site_id;
10621
10622 OPEN lock_line_det_factors_for_doc(l_event_class_rec);
10623 CLOSE lock_line_det_factors_for_doc;
10624
10625 /*------------------------------------------------------+
10626 | Bug 5371288: Check if AR has called this API |
10627 | to incomplete the transaction |
10628 +------------------------------------------------------*/
10629
10630 IF p_hdr_det_factors_rec.application_id = 222 THEN
10631 l_incomplete_scenario := 0;
10632 BEGIN
10633 SELECT 1
10634 INTO l_incomplete_scenario
10635 FROM zx_lines_det_factors
10636 WHERE event_class_code = p_hdr_det_factors_rec.event_class_code
10637 AND application_id = p_hdr_det_factors_rec.application_id
10638 AND entity_code = p_hdr_det_factors_rec.entity_code
10639 AND trx_id = p_hdr_det_factors_rec.trx_id
10640 AND tax_event_type_code = 'VALIDATE_FOR_TAX'
10641 AND rownum = 1;
10642 EXCEPTION
10643 WHEN OTHERS THEN
10644 l_incomplete_scenario := 0;
10645 END;
10646
10647 IF l_incomplete_scenario = 1 THEN
10648 BEGIN
10649 SELECT zxevnttyp.tax_event_type_code,
10650 zxevnttyp.status_code
10651 INTO l_event_class_rec.tax_event_type_code,
10652 l_event_class_rec.doc_status_code
10653 FROM ZX_EVNT_TYP_MAPPINGS zxevntmap,
10654 ZX_EVNT_CLS_TYPS zxevnttyp
10655 WHERE zxevntmap.event_class_code = p_hdr_det_factors_rec.event_class_code
10656 AND zxevntmap.application_id = p_hdr_det_factors_rec.application_id
10657 AND zxevntmap.entity_code = p_hdr_det_factors_rec.entity_code
10658 AND zxevntmap.event_type_code = p_hdr_det_factors_rec.event_type_code
10659 AND zxevnttyp.tax_event_type_code = zxevntmap.tax_event_type_code
10660 AND zxevnttyp.tax_event_class_code = zxevntmap.tax_event_class_code
10661 AND zxevntmap.enabled_flag = 'Y';
10662 EXCEPTION
10663 WHEN NO_DATA_FOUND THEN
10664 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10665 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10666 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
10667 ' Incorrect event information passed in for event type :' ||p_hdr_det_factors_rec.event_type_code ||' Please Check!');
10668 END IF;
10669 END;
10670 BEGIN
10671 UPDATE ZX_LINES_DET_FACTORS
10672 SET TAX_EVENT_TYPE_CODE = l_event_class_rec.tax_event_type_code,
10673 DOC_EVENT_STATUS = l_event_class_rec.doc_status_code
10674 WHERE APPLICATION_ID = p_hdr_det_factors_rec.APPLICATION_ID
10675 AND ENTITY_CODE = p_hdr_det_factors_rec.ENTITY_CODE
10676 AND EVENT_CLASS_CODE = p_hdr_det_factors_rec.EVENT_CLASS_CODE
10677 AND TRX_ID = p_hdr_det_factors_rec.TRX_ID;
10678 END;
10679 RETURN;
10680 END IF;
10681 END IF;
10682
10683 /*------------------------------------------------------+
10684 | Validate and Initializate parameters for Inserting |
10685 | into line_det_factors |
10686 +------------------------------------------------------*/
10687 ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors(p_event_class_rec =>l_event_class_rec,
10688 p_trx_line_index => NULL,
10689 x_return_status =>l_return_status
10690 );
10691
10692 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10693 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10694 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors returned errors');
10695 END IF;
10696 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10697 RAISE FND_API.G_EXC_ERROR;
10698 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10699 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10700 END IF;
10701 END IF;
10702
10703 /*-----------------------------------------+
10704 |Derive the PTPs |
10705 +-----------------------------------------*/
10706 IF p_hdr_det_factors_rec.rounding_ship_to_party_id is NOT NULL AND
10707 p_hdr_det_factors_rec.rounding_ship_to_party_id <> FND_API.G_MISS_NUM THEN
10708 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10709 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rounding_ship_to_party_id: '||
10710 to_char(p_hdr_det_factors_rec.rounding_ship_to_party_id));
10711 END IF;
10712 ZX_TCM_PTP_PKG.get_ptp(p_hdr_det_factors_rec.rounding_ship_to_party_id
10713 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_to_party_type
10714 ,p_hdr_det_factors_rec.legal_entity_id
10715 ,p_hdr_det_factors_rec.ship_to_location_id
10716 ,l_rdng_ship_to_ptp_id
10717 ,l_return_status
10718 );
10719
10720 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10721 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10722 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10723 ':ZX_TCM_PTP_PKG.get_ptp for rounding_ship_to_party_id returned errors');
10724 END IF;
10725 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10726 RAISE FND_API.G_EXC_ERROR;
10727 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10728 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10729 END IF;
10730 END IF;
10731 END IF;
10732
10733 IF p_hdr_det_factors_rec.rounding_ship_from_party_id is NOT NULL AND
10734 p_hdr_det_factors_rec.rounding_ship_from_party_id <> FND_API.G_MISS_NUM THEN
10735 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10736 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rounding_ship_from_party_id: '||
10737 to_char(p_hdr_det_factors_rec.rounding_ship_from_party_id));
10738 END IF;
10739 ZX_TCM_PTP_PKG.get_ptp(p_hdr_det_factors_rec.rounding_ship_from_party_id
10740 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_from_party_type
10741 ,p_hdr_det_factors_rec.legal_entity_id
10742 ,p_hdr_det_factors_rec.ship_from_location_id
10743 ,l_rdng_ship_from_ptp_id
10744 ,l_return_status
10745 );
10746
10747 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10748 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10749 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10750 ':ZX_TCM_PTP_PKG.get_ptp for rounding_ship_from_party_id returned errors');
10751 END IF;
10752 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10753 RAISE FND_API.G_EXC_ERROR;
10754 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10755 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10756 END IF;
10757 END IF;
10758 END IF;
10759
10760 IF p_hdr_det_factors_rec.rndg_ship_to_party_site_id is NOT NULL AND
10761 p_hdr_det_factors_rec.rndg_ship_to_party_site_id <> FND_API.G_MISS_NUM THEN
10762 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10763 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rndg_ship_to_party_site_id: '||
10764 to_char(p_hdr_det_factors_rec.rndg_ship_to_party_site_id));
10765 END IF;
10766 ZX_TCM_PTP_PKG.get_ptp( p_hdr_det_factors_rec.rndg_ship_to_party_site_id
10767 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_to_pty_site_type
10768 ,p_hdr_det_factors_rec.legal_entity_id
10769 ,null
10770 ,l_rdng_ship_to_ptp_st_id
10771 ,l_return_status
10772 );
10773
10774 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10775 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10776 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10777 ':ZX_TCM_PTP_PKG.get_ptp for rndg_ship_to_party_site_id returned errors');
10778 END IF;
10779 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10780 RAISE FND_API.G_EXC_ERROR;
10781 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10782 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10783 END IF;
10784 END IF;
10785 END IF;
10786
10787 IF p_hdr_det_factors_rec.rndg_ship_from_party_site_id is NOT NULL AND
10788 p_hdr_det_factors_rec.rndg_ship_from_party_site_id <> FND_API.G_MISS_NUM THEN
10789 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10790 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rndg_ship_from_party_site_id: '||
10791 to_char(p_hdr_det_factors_rec.rndg_ship_from_party_site_id));
10792 END IF;
10793 ZX_TCM_PTP_PKG.get_ptp( p_hdr_det_factors_rec.rndg_ship_from_party_site_id
10794 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_from_pty_site_type
10795 ,p_hdr_det_factors_rec.legal_entity_id
10796 ,null
10797 ,l_rdng_ship_from_ptp_st_id
10798 ,l_return_status
10799 );
10800
10801 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10802 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10803 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10804 ':ZX_TCM_PTP_PKG.get_ptp for rndg_ship_from_party_site_id returned errors');
10805 END IF;
10806 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10807 RAISE FND_API.G_EXC_ERROR;
10808 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10809 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10810 END IF;
10811 END IF;
10812 END IF;
10813
10814 IF p_hdr_det_factors_rec.rounding_bill_to_party_id is NOT NULL AND
10815 p_hdr_det_factors_rec.rounding_bill_to_party_id <> FND_API.G_MISS_NUM THEN
10816 IF (p_hdr_det_factors_rec.rounding_bill_to_party_id <> p_hdr_det_factors_rec.rounding_ship_to_party_id)
10817 OR (ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_to_party_type <> ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_to_party_type)
10818 OR p_hdr_det_factors_rec.rounding_ship_to_party_id is null THEN
10819 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10820 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rounding_bill_to_party_id: '||
10821 to_char(p_hdr_det_factors_rec.rounding_bill_to_party_id));
10822 END IF;
10823 ZX_TCM_PTP_PKG.get_ptp(p_hdr_det_factors_rec.rounding_bill_to_party_id
10824 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_to_party_type
10825 ,p_hdr_det_factors_rec.legal_entity_id
10826 ,p_hdr_det_factors_rec.bill_to_location_id
10827 ,l_rdng_bill_to_ptp_id
10828 ,l_return_status
10829 );
10830
10831 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10832 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10833 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10834 ':ZX_TCM_PTP_PKG.get_ptp for rounding_bill_to_party_id returned errors');
10835 END IF;
10836 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10837 RAISE FND_API.G_EXC_ERROR;
10838 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10839 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10840 END IF;
10841 END IF;
10842 ELSE
10843 l_rdng_bill_to_ptp_id := l_rdng_ship_to_ptp_id;
10844 END IF;
10845 END IF;
10846
10847 IF p_hdr_det_factors_rec.rounding_bill_from_party_id is NOT NULL AND
10848 p_hdr_det_factors_rec.rounding_bill_from_party_id <> FND_API.G_MISS_NUM THEN
10849 IF (p_hdr_det_factors_rec.rounding_bill_from_party_id <> p_hdr_det_factors_rec.rounding_ship_from_party_id)
10850 OR (ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_from_party_type <> ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_from_party_type)
10851 OR p_hdr_det_factors_rec.rounding_ship_from_party_id is null THEN
10852 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10853 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rounding_bill_from_party_id: '||
10854 to_char(p_hdr_det_factors_rec.rounding_bill_from_party_id));
10855 END IF;
10856 ZX_TCM_PTP_PKG.get_ptp(p_hdr_det_factors_rec.rounding_bill_from_party_id
10857 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_from_party_type
10858 ,p_hdr_det_factors_rec.legal_entity_id
10859 ,p_hdr_det_factors_rec.bill_from_location_id
10860 ,l_rdng_bill_from_ptp_id
10861 ,l_return_status
10862 );
10863
10864 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10865 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10866 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10867 ':ZX_TCM_PTP_PKG.get_ptp for rounding_bill_from_party_id returned errors');
10868 END IF;
10869 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10870 RAISE FND_API.G_EXC_ERROR;
10871 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10872 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10873 END IF;
10874 END IF;
10875 ELSE
10876 l_rdng_bill_from_ptp_id := l_rdng_ship_from_ptp_id;
10877 END IF;
10878 END IF;
10879
10880 IF p_hdr_det_factors_rec.rndg_bill_to_party_site_id is NOT NULL AND
10881 p_hdr_det_factors_rec.rndg_bill_to_party_site_id <> FND_API.G_MISS_NUM THEN
10882 IF (p_hdr_det_factors_rec.rndg_bill_to_party_site_id <> p_hdr_det_factors_rec.rndg_ship_to_party_site_id)
10883 OR (ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_to_pty_site_type <> ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_to_pty_site_type)
10884 OR p_hdr_det_factors_rec.rndg_ship_to_party_site_id is null THEN
10885 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10886 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rndg_bill_to_party_site_id: '||
10887 to_char(p_hdr_det_factors_rec.rndg_bill_to_party_site_id));
10888 END IF;
10889 ZX_TCM_PTP_PKG.get_ptp(p_hdr_det_factors_rec.rndg_bill_to_party_site_id
10890 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_to_pty_site_type
10891 ,p_hdr_det_factors_rec.legal_entity_id
10892 ,null
10893 ,l_rdng_bill_to_ptp_st_id
10894 ,l_return_status
10895 );
10896
10897 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10898 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10899 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10900 ':ZX_TCM_PTP_PKG.get_ptp for rndg_bill_to_party_site_id returned errors');
10901 END IF;
10902 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10903 RAISE FND_API.G_EXC_ERROR;
10904 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10905 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10906 END IF;
10907 END IF;
10908 ELSE
10909 l_rdng_bill_to_ptp_st_id := l_rdng_ship_to_ptp_st_id;
10910 END IF;
10911 END IF;
10912
10913 IF p_hdr_det_factors_rec.rndg_bill_from_party_site_id is NOT NULL AND
10914 p_hdr_det_factors_rec.rndg_bill_to_party_site_id <> FND_API.G_MISS_NUM THEN
10915 IF p_hdr_det_factors_rec.rndg_bill_from_party_site_id <> p_hdr_det_factors_rec.rndg_ship_from_party_site_id
10916 OR (ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_from_pty_site_type <> ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_from_pty_site_type)
10917 OR p_hdr_det_factors_rec.rndg_ship_from_party_site_id is null THEN
10918 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10919 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' Call TCM API to get ptp for rndg_bill_from_party_site_id: '||
10920 to_char(p_hdr_det_factors_rec.rndg_bill_from_party_site_id));
10921 END IF;
10922 ZX_TCM_PTP_PKG.get_ptp(p_hdr_det_factors_rec.rndg_bill_from_party_site_id
10923 ,ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_from_pty_site_type
10924 ,p_hdr_det_factors_rec.legal_entity_id
10925 ,null
10926 ,l_rdng_bill_from_ptp_st_id
10927 ,l_return_status
10928 );
10929
10930 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10931 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10932 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10933 ':ZX_TCM_PTP_PKG.get_ptp for rndg_bill_from_party_site_id returned errors');
10934 END IF;
10935 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10936 RAISE FND_API.G_EXC_ERROR;
10937 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10938 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10939 END IF;
10940 END IF;
10941 ELSE
10942 l_rdng_bill_from_ptp_st_id := l_rdng_ship_from_ptp_st_id;
10943 END IF;
10944 END IF;
10945
10946 --get_tax_profile_ids expects the following data legal entity id in zx_global_structures table.
10947 zx_global_structures_pkg.trx_line_dist_tbl.LEGAL_ENTITY_ID(1) := p_hdr_det_factors_rec.legal_entity_id;
10948
10949 IF p_hdr_det_factors_rec.ship_to_party_id is not NULL AND
10950 p_hdr_det_factors_rec.ship_to_party_id <> FND_API.G_MISS_NUM THEN
10951 IF ((p_hdr_det_factors_rec.rounding_ship_to_party_id is NULL)
10952 OR ((p_hdr_det_factors_rec.rounding_ship_to_party_id is NOT NULL)
10953 AND (p_hdr_det_factors_rec.ship_to_party_id <>
10954 p_hdr_det_factors_rec.rounding_ship_to_party_id))) THEN
10955 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10956 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Ship To Party Id: '||
10957 to_char(p_hdr_det_factors_rec.ship_to_party_id));
10958 END IF;
10959 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_to_party_type;
10960 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
10961 l_party_type,
10962 p_hdr_det_factors_rec.ship_to_party_id,
10963 p_hdr_det_factors_rec.ship_to_location_id,
10964 NULL,
10965 l_ship_to_ptp_id
10966 );
10967
10968 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10969 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10970 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10971 ':ZX_TCM_PTP_PKG.get_ptp for ship_to_party_id returned errors');
10972 END IF;
10973 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
10974 RAISE FND_API.G_EXC_ERROR;
10975 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
10976 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
10977 END IF;
10978 END IF;
10979 ELSE /* Ship To Party is same as Rounding Ship To Party */
10980 l_ship_to_ptp_id := l_rdng_ship_to_ptp_id;
10981 END IF;
10982 END IF; /* Completed Condition Check for Ship To Party */
10983
10984
10985 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10986 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Call TCM API to get ptp for Legal Entity: '||
10987 to_char(p_hdr_det_factors_rec.legal_entity_id));
10988 END IF;
10989
10990 ZX_TCM_PTP_PKG.get_ptp_hq(p_hdr_det_factors_rec.legal_entity_id,
10991 l_hq_estb_ptp_id,
10992 l_return_status
10993 );
10994
10995 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10996 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10997 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
10998 ':ZX_TCM_PTP_PKG.get_ptp for legal_entity_id returned errors');
10999 END IF;
11000 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11001 RAISE FND_API.G_EXC_ERROR;
11002 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11003 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11004 END IF;
11005 END IF;
11006
11007 IF p_hdr_det_factors_rec.ship_from_party_id is NOT NULL AND
11008 p_hdr_det_factors_rec.ship_from_party_id <> FND_API.G_MISS_NUM THEN
11009 IF ((p_hdr_det_factors_rec.rounding_ship_from_party_id is NULL)
11010 OR ((p_hdr_det_factors_rec.rounding_ship_from_party_id is NOT NULL)
11011 AND (p_hdr_det_factors_rec.ship_from_party_id <> p_hdr_det_factors_rec.rounding_ship_from_party_id))) THEN
11012 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11013 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Ship From Party Id: '||
11014 to_char(p_hdr_det_factors_rec.ship_from_party_id));
11015 END IF;
11016 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_from_party_type;
11017 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11018 l_party_type,
11019 p_hdr_det_factors_rec.ship_from_party_id,
11020 p_hdr_det_factors_rec.ship_from_location_id,
11021 NULL,
11022 l_ship_from_ptp_id
11023 );
11024
11025 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11026 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11027 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11028 ':ZX_TCM_PTP_PKG.get_ptp for ship_from_party_id returned errors');
11029 END IF;
11030 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11031 RAISE FND_API.G_EXC_ERROR;
11032 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11033 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11034 END IF;
11035 END IF;
11036 ELSE /* Ship from party is same as rounding ship from party */
11037 l_ship_from_ptp_id := l_rdng_ship_from_ptp_id;
11038 END IF;
11039 END IF; /* Completed condition check for ship from party */
11040
11041 IF p_hdr_det_factors_rec.poa_party_tax_prof_id is NOT NULL AND
11042 p_hdr_det_factors_rec.poa_party_tax_prof_id <> FND_API.G_MISS_NUM THEN
11043 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11044 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for POA Party Id: '
11045 || to_char(p_hdr_det_factors_rec.poa_party_id));
11046 END IF;
11047
11048 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.poa_party_type;
11049 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11050 l_party_type ,
11051 p_hdr_det_factors_rec.poa_party_id,
11052 p_hdr_det_factors_rec.poa_location_id,
11053 NULL,
11054 l_poa_ptp_id
11055 );
11056
11057 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11058 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11059 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11060 ':ZX_TCM_PTP_PKG.get_ptp for poa_party_id returned errors');
11061 END IF;
11062 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11063 RAISE FND_API.G_EXC_ERROR;
11064 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11065 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11066 END IF;
11067 END IF;
11068 END IF; /* Completed condition check for poa party */
11069
11070
11071 IF p_hdr_det_factors_rec.poo_party_id is NOT NULL AND
11072 p_hdr_det_factors_rec.poa_party_tax_prof_id <> FND_API.G_MISS_NUM THEN
11073 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11074 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for POO Party Id: '||
11075 to_char(p_hdr_det_factors_rec.poo_party_id));
11076 END IF;
11077
11078 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.poo_party_type;
11079 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11080 l_party_type,
11081 p_hdr_det_factors_rec.poo_party_id,
11082 p_hdr_det_factors_rec.poo_location_id,
11083 NULL,
11084 l_poo_ptp_id
11085 );
11086
11087 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11088 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11089 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11090 ':ZX_TCM_PTP_PKG.get_ptp for poo_party_id returned errors');
11091 END IF;
11092 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11093 RAISE FND_API.G_EXC_ERROR;
11094 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11095 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11096 END IF;
11097 END IF;
11098 END IF; /* Completed condition check for poo party */
11099
11100 IF p_hdr_det_factors_rec.bill_to_party_id is NOT NULL AND
11101 p_hdr_det_factors_rec.bill_to_party_id <> FND_API.G_MISS_NUM THEN
11102 IF ((p_hdr_det_factors_rec.rounding_bill_to_party_id is NULL)
11103 OR ((p_hdr_det_factors_rec.rounding_bill_to_party_id is NOT NULL)
11104 AND (p_hdr_det_factors_rec.bill_to_party_id
11105 <> p_hdr_det_factors_rec.rounding_bill_to_party_id))) THEN
11106
11107 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11108 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Bill To Party Id: '||
11109 to_char(p_hdr_det_factors_rec.bill_to_party_id));
11110 END IF;
11111
11112 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_to_party_type;
11113 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11114 l_party_type,
11115 p_hdr_det_factors_rec.bill_to_party_id,
11116 p_hdr_det_factors_rec.bill_to_location_id,
11117 NULL,
11118 l_bill_to_ptp_id
11119 );
11120
11121 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11122 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11123 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11124 ':ZX_TCM_PTP_PKG.get_ptp for bill_to_party_id returned errors');
11125 END IF;
11126 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11127 RAISE FND_API.G_EXC_ERROR;
11128 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11129 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11130 END IF;
11131 END IF;
11132 ELSE /* Bill to party is same as rounding bill to party */
11133 l_bill_to_ptp_id := l_rdng_bill_to_ptp_id;
11134 END IF;
11135 END IF; /* Completed condition check for bill to party */
11136
11137
11138 IF p_hdr_det_factors_rec.bill_from_party_id is NOT NULL AND
11142 AND (p_hdr_det_factors_rec.bill_from_party_id
11139 p_hdr_det_factors_rec.bill_from_party_id <> FND_API.G_MISS_NUM THEN
11140 IF ((p_hdr_det_factors_rec.rounding_bill_from_party_id is NULL)
11141 OR ((p_hdr_det_factors_rec.rounding_bill_from_party_id is NOT NULL)
11143 <> p_hdr_det_factors_rec.rounding_bill_from_party_id))) THEN
11144
11145 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11146 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Bill From Party Id: '||
11147 to_char(p_hdr_det_factors_rec.bill_from_party_id));
11148 END IF;
11149
11150 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_from_party_type;
11151 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11152 l_party_type,
11153 p_hdr_det_factors_rec.bill_from_party_id,
11154 p_hdr_det_factors_rec.bill_from_location_id ,
11155 NULL,
11156 l_bill_from_ptp_id
11157 );
11158
11159 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11160 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11161 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11162 ':ZX_TCM_PTP_PKG.get_ptp for bill_from_party_id returned errors');
11163 END IF;
11164 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11165 RAISE FND_API.G_EXC_ERROR;
11166 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11167 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11168 END IF;
11169 END IF;
11170 ELSE /* Bill from party is same as rounding bill from party */
11171 l_bill_from_ptp_id := l_rdng_bill_from_ptp_id;
11172 END IF;
11173 END IF; /* Completed condition check for bill from party */
11174
11175 IF p_hdr_det_factors_rec.ship_to_party_site_id is NOT NULL AND
11176 p_hdr_det_factors_rec.ship_to_party_site_id <> FND_API.G_MISS_NUM THEN
11177 IF ((p_hdr_det_factors_rec.rndg_ship_to_party_site_id is NULL)
11178 OR ((p_hdr_det_factors_rec.rndg_ship_to_party_site_id is NOT NULL)
11179 AND (p_hdr_det_factors_rec.ship_to_party_site_id
11180 <> p_hdr_det_factors_rec.rndg_ship_to_party_site_id))) THEN
11181
11182 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11183 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Ship To Party Site Id: '||
11184 to_char(p_hdr_det_factors_rec.ship_to_party_site_id));
11185 END IF;
11186 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_to_pty_site_type;
11187 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11188 l_party_type,
11189 NULL,
11190 NULL,
11191 p_hdr_det_factors_rec.ship_to_party_site_id ,
11192 l_ship_to_ptp_site_id
11193 );
11194
11195 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11196 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11197 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11198 ':ZX_TCM_PTP_PKG.get_ptp for ship_to_party_site_id returned errors');
11199 END IF;
11200 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11201 RAISE FND_API.G_EXC_ERROR;
11202 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11203 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11204 END IF;
11205 END IF;
11206 ELSE /* Ship to site is same as rounding ship to site */
11207 l_ship_to_ptp_site_id := l_rdng_ship_to_ptp_st_id;
11208 END IF;
11209 END IF; /* Completed condition check for ship to party site */
11210
11211 IF p_hdr_det_factors_rec.ship_from_party_site_id is NOT NULL AND
11212 p_hdr_det_factors_rec.ship_to_party_site_id <> FND_API.G_MISS_NUM THEN
11213 IF ((p_hdr_det_factors_rec.rndg_ship_from_party_site_id is NULL)
11214 OR ((p_hdr_det_factors_rec.rndg_ship_from_party_site_id is NOT NULL)
11215 AND (p_hdr_det_factors_rec.ship_from_party_site_id
11216 <> p_hdr_det_factors_rec.rndg_ship_from_party_site_id))) THEN
11217
11218 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11219 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Ship From Party Site Id: '||
11220 to_char(p_hdr_det_factors_rec.ship_from_party_site_id));
11221 END IF;
11222
11223 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.ship_from_pty_site_type;
11224 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11225 l_party_type,
11226 NULL,
11227 NULL,
11228 p_hdr_det_factors_rec.ship_from_party_site_id,
11229 l_ship_from_ptp_site_id
11230 );
11231
11232 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11233 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11234 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11235 ':ZX_TCM_PTP_PKG.get_ptp for ship_from_party_site_id returned errors');
11236 END IF;
11237 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11238 RAISE FND_API.G_EXC_ERROR;
11239 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11240 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11241 END IF;
11242 END IF;
11243 ELSE /* Ship from site is same as rounding ship from site */
11244 l_ship_from_ptp_site_id := l_rdng_ship_from_ptp_st_id;
11245 END IF;
11246 END IF; /* Completed condition check for ship from site*/
11247
11248 IF p_hdr_det_factors_rec.poa_party_site_id is NOT NULL AND
11249 p_hdr_det_factors_rec.poa_party_site_id <> FND_API.G_MISS_NUM THEN
11250
11251 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11252 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for POA Party Site Id: '||
11253 to_char(p_hdr_det_factors_rec.poa_party_site_id));
11254 END IF;
11255 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.poa_pty_site_type;
11256 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11257 l_party_type,
11258 NULL,
11259 NULL,
11260 p_hdr_det_factors_rec.poa_party_site_id,
11261 l_poa_ptp_site_id
11262 );
11263
11264 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11265 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11266 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11267 ':ZX_TCM_PTP_PKG.get_ptp for poa_party_site_id returned errors');
11268 END IF;
11269 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11270 RAISE FND_API.G_EXC_ERROR;
11271 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11272 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11273 END IF;
11274 END IF;
11275 END IF; /* Completed condition check for poa party site */
11276
11277
11278 IF p_hdr_det_factors_rec.poo_party_site_id is NOT NULL AND
11279 p_hdr_det_factors_rec.poo_party_site_id <> FND_API.G_MISS_NUM THEN
11280 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11281 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for POO Party Site Id: '||
11282 to_char(p_hdr_det_factors_rec.poo_party_site_id));
11283 END IF;
11284 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.poo_pty_site_type;
11285 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11286 l_party_type,
11287 NULL,
11288 NULL,
11289 p_hdr_det_factors_rec.poo_party_site_id,
11290 l_poo_ptp_site_id
11291 );
11292
11293 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11294 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11295 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11296 ':ZX_TCM_PTP_PKG.get_ptp for poo_party_site_id returned errors');
11297 END IF;
11298 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11299 RAISE FND_API.G_EXC_ERROR;
11300 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11301 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11302 END IF;
11303 END IF;
11304 END IF; /* Completed condition check for poo party site */
11305
11306 IF p_hdr_det_factors_rec.bill_to_party_site_id is NOT NULL AND
11307 p_hdr_det_factors_rec.bill_to_party_site_id <> FND_API.G_MISS_NUM THEN
11308 IF ((p_hdr_det_factors_rec.rndg_bill_to_party_site_id is NULL)
11309 OR ((p_hdr_det_factors_rec.rndg_bill_to_party_site_id is NOT NULL)
11310 AND (p_hdr_det_factors_rec.bill_to_party_site_id
11311 <> p_hdr_det_factors_rec.rndg_bill_to_party_site_id))) THEN
11312
11313 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11314 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Bill To Party Site Id: '||
11315 to_char(p_hdr_det_factors_rec.bill_to_party_site_id));
11316 END IF;
11317 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_to_pty_site_type;
11318 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11319 l_party_type,
11320 NULL,
11321 NULL,
11322 p_hdr_det_factors_rec.bill_to_party_site_id,
11323 l_bill_to_ptp_site_id
11324 );
11325
11326 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11327 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11328 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11329 ':ZX_TCM_PTP_PKG.get_ptp for bill_to_party_site_id returned errors');
11330 END IF;
11331 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11332 RAISE FND_API.G_EXC_ERROR;
11333 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11334 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11335 END IF;
11336 END IF;
11337 ELSE /* Bill to site is same as rounding bill to site */
11338 l_bill_to_ptp_site_id := l_rdng_bill_to_ptp_st_id;
11339 END IF;
11340 END IF; /* Completed condition check for bill to site */
11341
11342
11343 IF p_hdr_det_factors_rec.bill_from_party_site_id is NOT NULL AND
11344 p_hdr_det_factors_rec.bill_from_party_site_id <> FND_API.G_MISS_NUM THEN
11345 IF ((p_hdr_det_factors_rec.rndg_bill_from_party_site_id is NULL)
11346 OR ((p_hdr_det_factors_rec.rndg_bill_from_party_site_id is NOT NULL)
11347 AND (p_hdr_det_factors_rec.bill_from_party_site_id
11348 <> p_hdr_det_factors_rec.rndg_bill_from_party_site_id))) THEN
11349
11350 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11351 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Get PTP Id for Bill From Party Site Id: '||
11352 to_char(p_hdr_det_factors_rec.bill_from_party_site_id));
11353 END IF;
11354 l_party_type := ZX_VALID_INIT_PARAMS_PKG.source_rec.bill_from_pty_site_type;
11355 ZX_SRVC_TYP_PKG.get_tax_profile_ids(l_return_status,
11356 l_party_type,
11357 NULL,
11358 NULL,
11359 p_hdr_det_factors_rec.bill_from_party_site_id,
11360 l_bill_from_ptp_site_id
11361 );
11362
11363 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11364 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11365 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
11366 ':ZX_TCM_PTP_PKG.get_ptp for bill_from_party_site_id returned errors');
11367 END IF;
11368 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11369 RAISE FND_API.G_EXC_ERROR;
11370 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11371 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11372 END IF;
11373 END IF;
11374 ELSE /* Bill from site is same as rounding bill from site */
11375 l_bill_from_ptp_site_id := l_rdng_bill_from_ptp_st_id;
11376 END IF;
11377 END IF; /* Completed condition check for rounding bill from site */
11378
11379 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11380 x_return_status := l_return_status;
11381 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11382 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
11383 ' RETURN_STATUS = ' || x_return_status);
11384 END IF;
11385 RETURN;
11386 END IF;
11387
11388 ZX_R11I_TAX_PARTNER_PKG.copy_trx_line_for_ptnr_bef_upd(NULL,
11389 l_event_class_rec,
11390 NULL,
11391 'N',
11392 NULL,
11393 NULL,
11394 l_return_status
11395 );
11396 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11397 x_return_status := l_return_status ;
11398 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11399 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_R11I_TAX_PARTNER_PKG.copy_trx_line_for_ptnr_bef_upd returned errors');
11400 END IF;
11401 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11402 RAISE FND_API.G_EXC_ERROR;
11403 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11404 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11405 END IF;
11406 END IF;
11407
11408 /*-----------------------------------------------+
11409 |Update the headers only in zx_line_det_factors |
11410 +----------------------------------------------*/
11411 UPDATE ZX_LINES_DET_FACTORS SET
11412 APPLICATION_ID = p_hdr_det_factors_rec.APPLICATION_ID,
11413 ENTITY_CODE = p_hdr_det_factors_rec.ENTITY_CODE,
11414 EVENT_CLASS_CODE = p_hdr_det_factors_rec.EVENT_CLASS_CODE,
11415 EVENT_TYPE_CODE = p_hdr_det_factors_rec.EVENT_TYPE_CODE,
11416 INTERNAL_ORGANIZATION_ID = p_hdr_det_factors_rec.INTERNAL_ORGANIZATION_ID,
11417 LEGAL_ENTITY_ID = p_hdr_det_factors_rec.LEGAL_ENTITY_ID,
11418 TRX_ID = p_hdr_det_factors_rec.TRX_ID,
11419 TRX_DOC_REVISION = decode(p_hdr_det_factors_rec.TRX_DOC_REVISION,FND_API.G_MISS_CHAR,
11420 TRX_DOC_REVISION,
11421 p_hdr_det_factors_rec.TRX_DOC_REVISION),
11422 TRX_DATE = decode(p_hdr_det_factors_rec.TRX_DATE,FND_API.G_MISS_DATE,
11423 TRX_DATE,
11424 p_hdr_det_factors_rec.TRX_DATE),
11425 LEDGER_ID = decode(p_hdr_det_factors_rec.LEDGER_ID,FND_API.G_MISS_NUM,
11426 LEDGER_ID,
11427 p_hdr_det_factors_rec.LEDGER_ID),
11428 INTERNAL_ORG_LOCATION_ID = decode(p_hdr_det_factors_rec.INTERNAL_ORG_LOCATION_ID,FND_API.G_MISS_NUM,
11429 INTERNAL_ORG_LOCATION_ID,
11430 p_hdr_det_factors_rec.INTERNAL_ORG_LOCATION_ID),
11431 TRX_CURRENCY_CODE = decode(p_hdr_det_factors_rec.TRX_CURRENCY_CODE,FND_API.G_MISS_CHAR,
11432 TRX_CURRENCY_CODE,
11433 p_hdr_det_factors_rec.TRX_CURRENCY_CODE),
11434 CURRENCY_CONVERSION_TYPE = decode(p_hdr_det_factors_rec.CURRENCY_CONVERSION_TYPE,FND_API.G_MISS_CHAR,
11435 CURRENCY_CONVERSION_TYPE,
11436 p_hdr_det_factors_rec.CURRENCY_CONVERSION_TYPE),
11437 CURRENCY_CONVERSION_RATE = decode(p_hdr_det_factors_rec.CURRENCY_CONVERSION_RATE,FND_API.G_MISS_NUM,
11438 CURRENCY_CONVERSION_RATE,
11439 p_hdr_det_factors_rec.CURRENCY_CONVERSION_RATE),
11440 CURRENCY_CONVERSION_DATE = decode(p_hdr_det_factors_rec.CURRENCY_CONVERSION_DATE,FND_API.G_MISS_DATE,
11441 CURRENCY_CONVERSION_DATE,
11442 p_hdr_det_factors_rec.CURRENCY_CONVERSION_DATE),
11443 MINIMUM_ACCOUNTABLE_UNIT = decode(p_hdr_det_factors_rec.MINIMUM_ACCOUNTABLE_UNIT,FND_API.G_MISS_NUM,
11444 MINIMUM_ACCOUNTABLE_UNIT,
11445 p_hdr_det_factors_rec.MINIMUM_ACCOUNTABLE_UNIT),
11446 PRECISION = decode(p_hdr_det_factors_rec.PRECISION,FND_API.G_MISS_NUM,
11447 PRECISION,
11448 p_hdr_det_factors_rec.PRECISION),
11449 ESTABLISHMENT_ID = decode(p_hdr_det_factors_rec.ESTABLISHMENT_ID,FND_API.G_MISS_NUM,
11450 ESTABLISHMENT_ID,
11451 p_hdr_det_factors_rec.ESTABLISHMENT_ID),
11452 RECEIVABLES_TRX_TYPE_ID = decode(p_hdr_det_factors_rec.RECEIVABLES_TRX_TYPE_ID,FND_API.G_MISS_NUM,
11453 RECEIVABLES_TRX_TYPE_ID,
11454 p_hdr_det_factors_rec.RECEIVABLES_TRX_TYPE_ID),
11455 RELATED_DOC_APPLICATION_ID = decode(p_hdr_det_factors_rec.RELATED_DOC_APPLICATION_ID,FND_API.G_MISS_NUM,
11456 RELATED_DOC_APPLICATION_ID,
11457 p_hdr_det_factors_rec.RELATED_DOC_APPLICATION_ID),
11458 RELATED_DOC_ENTITY_CODE = decode(p_hdr_det_factors_rec.RELATED_DOC_ENTITY_CODE,FND_API.G_MISS_CHAR,
11459 RELATED_DOC_ENTITY_CODE,
11460 p_hdr_det_factors_rec.RELATED_DOC_ENTITY_CODE),
11461 RELATED_DOC_EVENT_CLASS_CODE = decode(p_hdr_det_factors_rec.RELATED_DOC_EVENT_CLASS_CODE,FND_API.G_MISS_CHAR,
11462 RELATED_DOC_EVENT_CLASS_CODE,
11463 p_hdr_det_factors_rec.RELATED_DOC_EVENT_CLASS_CODE),
11464 RELATED_DOC_TRX_ID = decode(p_hdr_det_factors_rec.RELATED_DOC_TRX_ID,FND_API.G_MISS_NUM,
11465 RELATED_DOC_TRX_ID,
11466 p_hdr_det_factors_rec.RELATED_DOC_TRX_ID),
11467 RELATED_DOC_NUMBER = decode(p_hdr_det_factors_rec.RELATED_DOC_NUMBER,FND_API.G_MISS_CHAR,
11468 RELATED_DOC_NUMBER,
11469 p_hdr_det_factors_rec.RELATED_DOC_NUMBER),
11470 RELATED_DOC_DATE = decode(p_hdr_det_factors_rec.RELATED_DOC_DATE,FND_API.G_MISS_DATE,
11471 RELATED_DOC_DATE,
11472 p_hdr_det_factors_rec.RELATED_DOC_DATE),
11473 DEFAULT_TAXATION_COUNTRY = decode(p_hdr_det_factors_rec.DEFAULT_TAXATION_COUNTRY,FND_API.G_MISS_CHAR,
11474 DEFAULT_TAXATION_COUNTRY,
11475 p_hdr_det_factors_rec.DEFAULT_TAXATION_COUNTRY),
11476 TRX_NUMBER = decode(p_hdr_det_factors_rec.TRX_NUMBER,FND_API.G_MISS_CHAR,
11477 TRX_NUMBER,
11478 p_hdr_det_factors_rec.TRX_NUMBER),
11479 TRX_DESCRIPTION = decode(p_hdr_det_factors_rec.TRX_DESCRIPTION,FND_API.G_MISS_CHAR,
11480 TRX_DESCRIPTION,
11484 p_hdr_det_factors_rec.TRX_COMMUNICATED_DATE),
11481 p_hdr_det_factors_rec.TRX_DESCRIPTION),
11482 TRX_COMMUNICATED_DATE = decode(p_hdr_det_factors_rec.TRX_COMMUNICATED_DATE,FND_API.G_MISS_DATE,
11483 TRX_COMMUNICATED_DATE,
11485 BATCH_SOURCE_ID = decode(p_hdr_det_factors_rec.BATCH_SOURCE_ID,FND_API.G_MISS_NUM,
11486 BATCH_SOURCE_ID,
11487 p_hdr_det_factors_rec.BATCH_SOURCE_ID),
11488 BATCH_SOURCE_NAME = decode(p_hdr_det_factors_rec.BATCH_SOURCE_NAME,FND_API.G_MISS_CHAR,
11489 BATCH_SOURCE_NAME,
11490 p_hdr_det_factors_rec.BATCH_SOURCE_NAME),
11491 DOC_SEQ_ID = decode(p_hdr_det_factors_rec.DOC_SEQ_ID,FND_API.G_MISS_NUM,
11492 DOC_SEQ_ID,
11493 p_hdr_det_factors_rec.DOC_SEQ_ID),
11494 DOC_SEQ_NAME = decode(p_hdr_det_factors_rec.DOC_SEQ_NAME,FND_API.G_MISS_CHAR,
11495 DOC_SEQ_NAME,
11496 p_hdr_det_factors_rec.DOC_SEQ_NAME),
11497 DOC_SEQ_VALUE = decode(p_hdr_det_factors_rec.DOC_SEQ_VALUE,FND_API.G_MISS_CHAR,
11498 DOC_SEQ_VALUE,
11499 p_hdr_det_factors_rec.DOC_SEQ_VALUE),
11500 TRX_DUE_DATE = decode(p_hdr_det_factors_rec.TRX_DUE_DATE,FND_API.G_MISS_DATE,
11501 TRX_DUE_DATE,
11502 p_hdr_det_factors_rec.TRX_DUE_DATE),
11503 TRX_TYPE_DESCRIPTION = decode(p_hdr_det_factors_rec.TRX_TYPE_DESCRIPTION,FND_API.G_MISS_CHAR,
11504 TRX_TYPE_DESCRIPTION,
11505 p_hdr_det_factors_rec.TRX_TYPE_DESCRIPTION),
11506 DOCUMENT_SUB_TYPE = decode(p_hdr_det_factors_rec.DOCUMENT_SUB_TYPE,FND_API.G_MISS_CHAR,
11507 DOCUMENT_SUB_TYPE,
11508 p_hdr_det_factors_rec.DOCUMENT_SUB_TYPE),
11509 SUPPLIER_TAX_INVOICE_NUMBER = decode(p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,
11510 SUPPLIER_TAX_INVOICE_NUMBER,
11511 p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_NUMBER),
11512 SUPPLIER_TAX_INVOICE_DATE = decode(p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_DATE,FND_API.G_MISS_DATE,
11513 SUPPLIER_TAX_INVOICE_DATE,
11514 p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_DATE),
11515 SUPPLIER_EXCHANGE_RATE = decode(p_hdr_det_factors_rec.SUPPLIER_EXCHANGE_RATE,FND_API.G_MISS_NUM,
11516 SUPPLIER_EXCHANGE_RATE,
11517 p_hdr_det_factors_rec.SUPPLIER_EXCHANGE_RATE),
11518 TAX_INVOICE_DATE = decode(p_hdr_det_factors_rec.TAX_INVOICE_DATE,FND_API.G_MISS_DATE,
11519 TAX_INVOICE_DATE,
11520 p_hdr_det_factors_rec.TAX_INVOICE_DATE),
11521 TAX_INVOICE_NUMBER = decode(p_hdr_det_factors_rec.TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,
11522 TAX_INVOICE_NUMBER,
11523 p_hdr_det_factors_rec.TAX_INVOICE_NUMBER),
11524 CTRL_TOTAL_HDR_TX_AMT = decode(p_hdr_det_factors_rec.CTRL_TOTAL_HDR_TX_AMT,FND_API.G_MISS_NUM,
11525 ctrl_total_hdr_tx_amt,
11526 p_hdr_det_factors_rec.CTRL_TOTAL_HDR_TX_AMT),
11527 FIRST_PTY_ORG_ID = l_event_class_rec.first_pty_org_id,
11528 TAX_EVENT_CLASS_CODE = l_event_class_rec.TAX_EVENT_CLASS_CODE,
11529 TAX_EVENT_TYPE_CODE = l_event_class_rec.TAX_EVENT_TYPE_CODE,
11530 DOC_EVENT_STATUS = l_event_class_rec.DOC_STATUS_CODE,
11531 TRX_BATCH_ID = decode(p_hdr_det_factors_rec.TRX_BATCH_ID,FND_API.G_MISS_NUM,
11532 TRX_BATCH_ID,
11536 p_hdr_det_factors_rec.APPLIED_TO_TRX_NUMBER),
11533 p_hdr_det_factors_rec.TRX_BATCH_ID),
11534 APPLIED_TO_TRX_NUMBER = decode(p_hdr_det_factors_rec.APPLIED_TO_TRX_NUMBER,FND_API.G_MISS_CHAR,
11535 APPLIED_TO_TRX_NUMBER,
11537 APPLICATION_DOC_STATUS = decode(p_hdr_det_factors_rec.APPLICATION_DOC_STATUS,FND_API.G_MISS_CHAR,
11538 APPLICATION_DOC_STATUS,
11539 p_hdr_det_factors_rec.APPLICATION_DOC_STATUS),
11540 RDNG_SHIP_TO_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_SHIP_TO_PARTY_ID,FND_API.G_MISS_NUM,
11541 RDNG_SHIP_TO_PTY_TX_PROF_ID,
11542 l_rdng_ship_to_ptp_id),
11543 RDNG_SHIP_FROM_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_SHIP_FROM_PARTY_ID,FND_API.G_MISS_NUM,
11544 RDNG_SHIP_FROM_PTY_TX_PROF_ID,
11545 l_rdng_ship_from_ptp_id),
11546 RDNG_BILL_TO_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_BILL_TO_PARTY_ID,FND_API.G_MISS_NUM,
11547 RDNG_BILL_TO_PTY_TX_PROF_ID,
11548 l_rdng_bill_to_ptp_id),
11549 RDNG_BILL_FROM_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_BILL_FROM_PARTY_ID,FND_API.G_MISS_NUM,
11550 RDNG_BILL_FROM_PTY_TX_PROF_ID,
11551 l_rdng_bill_from_ptp_id),
11552 RDNG_SHIP_TO_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_SHIP_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11553 RDNG_SHIP_TO_PTY_TX_P_ST_ID,
11554 l_rdng_ship_to_ptp_st_id),
11555 RDNG_SHIP_FROM_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_SHIP_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11556 RDNG_SHIP_FROM_PTY_TX_P_ST_ID,
11557 l_rdng_ship_from_ptp_st_id),
11558 RDNG_BILL_TO_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_BILL_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11559 RDNG_BILL_TO_PTY_TX_P_ST_ID,
11560 l_rdng_bill_to_ptp_st_id),
11561 RDNG_BILL_FROM_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_BILL_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11562 RDNG_BILL_FROM_PTY_TX_P_ST_ID,
11563 l_rdng_bill_from_ptp_st_id),
11564 PORT_OF_ENTRY_CODE = decode(p_hdr_det_factors_rec.PORT_OF_ENTRY_CODE,FND_API.G_MISS_CHAR,
11565 PORT_OF_ENTRY_CODE,
11566 p_hdr_det_factors_rec.PORT_OF_ENTRY_CODE),
11567 TAX_REPORTING_FLAG = decode(p_hdr_det_factors_rec.TAX_REPORTING_FLAG,FND_API.G_MISS_CHAR,
11568 TAX_REPORTING_FLAG,
11569 p_hdr_det_factors_rec.TAX_REPORTING_FLAG),
11570 PROVNL_TAX_DETERMINATION_DATE = decode(p_hdr_det_factors_rec.PROVNL_TAX_DETERMINATION_DATE,FND_API.G_MISS_DATE,
11571 PROVNL_TAX_DETERMINATION_DATE,
11572 p_hdr_det_factors_rec.PROVNL_TAX_DETERMINATION_DATE),
11573 SHIP_THIRD_PTY_ACCT_ID = decode(p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_ID,FND_API.G_MISS_NUM,
11574 SHIP_THIRD_PTY_ACCT_ID,
11575 p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_ID),
11576 BILL_THIRD_PTY_ACCT_ID = decode(p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_ID,FND_API.G_MISS_NUM,
11577 BILL_THIRD_PTY_ACCT_ID,
11578 p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_ID),
11579 SHIP_THIRD_PTY_ACCT_SITE_ID = decode(p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_SITE_ID,FND_API.G_MISS_NUM,
11580 SHIP_THIRD_PTY_ACCT_SITE_ID,
11581 p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_SITE_ID),
11582 BILL_THIRD_PTY_ACCT_SITE_ID = decode(p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_SITE_ID,FND_API.G_MISS_NUM,
11586 SHIP_TO_CUST_ACCT_SITE_USE_ID,
11583 BILL_THIRD_PTY_ACCT_SITE_ID,
11584 p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_SITE_ID),
11585 SHIP_TO_CUST_ACCT_SITE_USE_ID = decode(p_hdr_det_factors_rec.SHIP_TO_CUST_ACCT_SITE_USE_ID,FND_API.G_MISS_NUM,
11587 p_hdr_det_factors_rec.SHIP_TO_CUST_ACCT_SITE_USE_ID),
11588 BILL_TO_CUST_ACCT_SITE_USE_ID = decode(p_hdr_det_factors_rec.BILL_TO_CUST_ACCT_SITE_USE_ID,FND_API.G_MISS_NUM,
11589 BILL_TO_CUST_ACCT_SITE_USE_ID,
11590 p_hdr_det_factors_rec.BILL_TO_CUST_ACCT_SITE_USE_ID),
11591 SHIP_TO_LOCATION_ID = decode(p_hdr_det_factors_rec.SHIP_TO_LOCATION_ID,FND_API.G_MISS_NUM,
11592 SHIP_TO_LOCATION_ID,
11593 p_hdr_det_factors_rec.SHIP_TO_LOCATION_ID),
11594 SHIP_FROM_LOCATION_ID = decode(p_hdr_det_factors_rec.SHIP_FROM_LOCATION_ID,FND_API.G_MISS_NUM,
11595 SHIP_FROM_LOCATION_ID,
11596 p_hdr_det_factors_rec.SHIP_FROM_LOCATION_ID),
11597 BILL_TO_LOCATION_ID = decode(p_hdr_det_factors_rec.BILL_TO_LOCATION_ID,FND_API.G_MISS_NUM,
11598 BILL_TO_LOCATION_ID,
11599 p_hdr_det_factors_rec.BILL_TO_LOCATION_ID),
11600 BILL_FROM_LOCATION_ID = decode(p_hdr_det_factors_rec.BILL_FROM_LOCATION_ID,FND_API.G_MISS_NUM,
11601 BILL_FROM_LOCATION_ID,
11602 p_hdr_det_factors_rec.BILL_FROM_LOCATION_ID),
11603 POA_LOCATION_ID = decode(p_hdr_det_factors_rec.POA_LOCATION_ID,FND_API.G_MISS_NUM,
11604 POA_LOCATION_ID,
11605 p_hdr_det_factors_rec.POA_LOCATION_ID),
11606 POO_LOCATION_ID = decode(p_hdr_det_factors_rec.POO_LOCATION_ID,FND_API.G_MISS_NUM,
11607 POO_LOCATION_ID,
11608 p_hdr_det_factors_rec.POO_LOCATION_ID),
11609 PAYING_LOCATION_ID = decode(p_hdr_det_factors_rec.PAYING_LOCATION_ID,FND_API.G_MISS_NUM,
11610 PAYING_LOCATION_ID,
11611 p_hdr_det_factors_rec.PAYING_LOCATION_ID),
11612 OWN_HQ_LOCATION_ID = decode(p_hdr_det_factors_rec.OWN_HQ_LOCATION_ID,FND_API.G_MISS_NUM,
11613 OWN_HQ_LOCATION_ID,
11614 p_hdr_det_factors_rec.OWN_HQ_LOCATION_ID),
11615 TRADING_HQ_LOCATION_ID = decode(p_hdr_det_factors_rec.TRADING_HQ_LOCATION_ID,FND_API.G_MISS_NUM,
11616 TRADING_HQ_LOCATION_ID,
11617 p_hdr_det_factors_rec.TRADING_HQ_LOCATION_ID),
11618 POC_LOCATION_ID = decode(p_hdr_det_factors_rec.POC_LOCATION_ID,FND_API.G_MISS_NUM,
11619 POC_LOCATION_ID,
11620 p_hdr_det_factors_rec.POC_LOCATION_ID),
11621 POI_LOCATION_ID = decode(p_hdr_det_factors_rec.POI_LOCATION_ID,FND_API.G_MISS_NUM,
11622 POI_LOCATION_ID,
11623 p_hdr_det_factors_rec.POI_LOCATION_ID),
11624 POD_LOCATION_ID = decode(p_hdr_det_factors_rec.POD_LOCATION_ID,FND_API.G_MISS_NUM,
11625 POD_LOCATION_ID,
11626 p_hdr_det_factors_rec.POD_LOCATION_ID),
11627 TITLE_TRANSFER_LOCATION_ID = decode(p_hdr_det_factors_rec.TITLE_TRANSFER_LOCATION_ID,FND_API.G_MISS_NUM,
11628 TITLE_TRANSFER_LOCATION_ID,
11629 p_hdr_det_factors_rec.TITLE_TRANSFER_LOCATION_ID),
11630 SHIP_TO_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_TO_PARTY_ID,FND_API.G_MISS_NUM,
11631 SHIP_TO_PARTY_TAX_PROF_ID,
11632 l_ship_to_ptp_id),
11636 POA_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POA_PARTY_ID,FND_API.G_MISS_NUM,
11633 SHIP_FROM_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_FROM_PARTY_ID,FND_API.G_MISS_NUM,
11634 SHIP_FROM_PARTY_TAX_PROF_ID,
11635 l_ship_from_ptp_id),
11637 POA_PARTY_TAX_PROF_ID,
11638 l_poa_ptp_id),
11639 POO_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POO_PARTY_ID,FND_API.G_MISS_NUM,
11640 POO_PARTY_TAX_PROF_ID,
11641 l_poo_ptp_id),
11642 PAYING_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.PAYING_PARTY_ID,FND_API.G_MISS_NUM,
11643 PAYING_PARTY_TAX_PROF_ID,
11644 p_hdr_det_factors_rec.PAYING_PARTY_TAX_PROF_ID),
11645 OWN_HQ_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.OWN_HQ_PARTY_ID,FND_API.G_MISS_NUM,
11646 OWN_HQ_PARTY_TAX_PROF_ID,
11647 p_hdr_det_factors_rec.OWN_HQ_PARTY_TAX_PROF_ID),
11648 TRADING_HQ_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.TRADING_HQ_PARTY_ID,FND_API.G_MISS_NUM,
11649 TRADING_HQ_PARTY_TAX_PROF_ID,
11650 p_hdr_det_factors_rec.TRADING_HQ_PARTY_TAX_PROF_ID),
11651 POI_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POI_PARTY_ID,FND_API.G_MISS_NUM,
11652 POI_PARTY_TAX_PROF_ID,
11653 p_hdr_det_factors_rec.POI_PARTY_TAX_PROF_ID),
11654 POD_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POD_PARTY_ID,FND_API.G_MISS_NUM,
11655 POD_PARTY_TAX_PROF_ID,
11656 p_hdr_det_factors_rec.POD_PARTY_TAX_PROF_ID),
11657 BILL_TO_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_TO_PARTY_ID,FND_API.G_MISS_NUM,
11658 BILL_TO_PARTY_TAX_PROF_ID,
11659 l_bill_to_ptp_id),
11660 BILL_FROM_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_FROM_PARTY_ID,FND_API.G_MISS_NUM,
11661 BILL_FROM_PARTY_TAX_PROF_ID,
11662 l_bill_from_ptp_id),
11663 TITLE_TRANS_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.TITLE_TRANSFER_PARTY_ID,FND_API.G_MISS_NUM,
11664 TITLE_TRANS_PARTY_TAX_PROF_ID,
11665 p_hdr_det_factors_rec.TITLE_TRANS_PARTY_TAX_PROF_ID),
11666 SHIP_TO_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11667 SHIP_TO_SITE_TAX_PROF_ID,
11668 l_ship_to_ptp_site_id),
11669 SHIP_FROM_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11670 SHIP_FROM_SITE_TAX_PROF_ID,
11671 l_ship_from_ptp_site_id),
11672 BILL_TO_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11673 BILL_TO_SITE_TAX_PROF_ID,
11674 l_bill_to_ptp_site_id),
11675 BILL_FROM_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11676 BILL_FROM_SITE_TAX_PROF_ID,
11677 l_bill_from_ptp_site_id),
11678 POA_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POA_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11679 POA_SITE_TAX_PROF_ID,
11680 l_poa_ptp_site_id),
11681 POO_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11682 POO_SITE_TAX_PROF_ID,
11683 l_poo_ptp_site_id),
11684 PAYING_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.PAYING_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11688 OWN_HQ_SITE_TAX_PROF_ID,
11685 PAYING_SITE_TAX_PROF_ID,
11686 p_hdr_det_factors_rec.PAYING_SITE_TAX_PROF_ID),
11687 OWN_HQ_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.OWN_HQ_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11689 p_hdr_det_factors_rec.OWN_HQ_SITE_TAX_PROF_ID),
11690 POI_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POI_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11691 POI_SITE_TAX_PROF_ID,
11692 p_hdr_det_factors_rec.POI_SITE_TAX_PROF_ID),
11693 POD_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POD_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11694 POD_SITE_TAX_PROF_ID,
11695 p_hdr_det_factors_rec.POD_SITE_TAX_PROF_ID),
11696 TITLE_TRANS_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.TITLE_TRANSFER_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11697 TITLE_TRANS_SITE_TAX_PROF_ID,
11698 p_hdr_det_factors_rec.TITLE_TRANS_SITE_TAX_PROF_ID),
11699 HQ_ESTB_PARTY_TAX_PROF_ID = l_hq_estb_ptp_id,
11700 LINE_LEVEL_ACTION = decode(LINE_LEVEL_ACTION, 'CREATE','UPDATE',
11701 'SYNCHRONIZE','UPDATE',
11702 'COPY_AND_CREATE','UPDATE',
11703 LINE_LEVEL_ACTION),
11704 TAX_PROCESSING_COMPLETED_FLAG = 'N',
11705 LAST_UPDATE_DATE = sysdate,
11706 LAST_UPDATED_BY = fnd_global.user_id,
11707 LAST_UPDATE_LOGIN = fnd_global.conc_login_id
11708 WHERE APPLICATION_ID = p_hdr_det_factors_rec.APPLICATION_ID
11709 AND ENTITY_CODE = p_hdr_det_factors_rec.ENTITY_CODE
11710 AND EVENT_CLASS_CODE = p_hdr_det_factors_rec.EVENT_CLASS_CODE
11711 AND TRX_ID = p_hdr_det_factors_rec.TRX_ID;
11712 --Bugfix 4486946 -Call on the fly upgrade if the transaction if not found
11713 IF sql%NOTFOUND THEN
11714 l_upg_trx_info_rec.application_id := l_event_class_rec.application_id;
11715 l_upg_trx_info_rec.entity_code := l_event_class_rec.entity_code;
11716 l_upg_trx_info_rec.event_class_code := l_event_class_rec.event_class_code;
11717 l_upg_trx_info_rec.trx_id := l_event_class_rec.trx_id;
11718 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(p_upg_trx_info_rec => l_upg_trx_info_rec,
11719 x_return_status => l_return_status
11720 );
11721 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11722 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11723 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly returned errors');
11724 END IF;
11725 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11726 RAISE FND_API.G_EXC_ERROR;
11727 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11728 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11729 END IF;
11730 END IF;
11731
11732 ZX_R11I_TAX_PARTNER_PKG.copy_trx_line_for_ptnr_bef_upd(NULL,
11733 l_event_class_rec,
11734 NULL,
11735 'N',
11736 NULL,
11737 NULL,
11738 l_return_status
11739 );
11740 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11741 x_return_status := l_return_status ;
11742 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
11743 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_R11I_TAX_PARTNER_PKG.copy_trx_line_for_ptnr_bef_upd returned errors');
11744 END IF;
11745 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
11746 RAISE FND_API.G_EXC_ERROR;
11747 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
11748 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
11749 END IF;
11750 END IF;
11751
11752 /*-----------------------------------------------+
11753 |Update the headers only in zx_line_det_factors |
11754 +----------------------------------------------*/
11755 UPDATE ZX_LINES_DET_FACTORS SET
11756 APPLICATION_ID = p_hdr_det_factors_rec.APPLICATION_ID,
11757 ENTITY_CODE = p_hdr_det_factors_rec.ENTITY_CODE,
11758 EVENT_CLASS_CODE = p_hdr_det_factors_rec.EVENT_CLASS_CODE,
11762 TRX_ID = p_hdr_det_factors_rec.TRX_ID,
11759 EVENT_TYPE_CODE = p_hdr_det_factors_rec.EVENT_TYPE_CODE,
11760 INTERNAL_ORGANIZATION_ID = p_hdr_det_factors_rec.INTERNAL_ORGANIZATION_ID,
11761 LEGAL_ENTITY_ID = p_hdr_det_factors_rec.LEGAL_ENTITY_ID,
11763 TRX_DOC_REVISION = decode(p_hdr_det_factors_rec.TRX_DOC_REVISION,FND_API.G_MISS_CHAR,
11764 TRX_DOC_REVISION,
11765 p_hdr_det_factors_rec.TRX_DOC_REVISION),
11766 TRX_DATE = decode(p_hdr_det_factors_rec.TRX_DATE,FND_API.G_MISS_DATE,
11767 TRX_DATE,
11768 p_hdr_det_factors_rec.TRX_DATE),
11769 LEDGER_ID = decode(p_hdr_det_factors_rec.LEDGER_ID,FND_API.G_MISS_NUM,
11770 LEDGER_ID,
11771 p_hdr_det_factors_rec.LEDGER_ID),
11772 INTERNAL_ORG_LOCATION_ID = decode(p_hdr_det_factors_rec.INTERNAL_ORG_LOCATION_ID,FND_API.G_MISS_NUM,
11773 INTERNAL_ORG_LOCATION_ID,
11774 p_hdr_det_factors_rec.INTERNAL_ORG_LOCATION_ID),
11775 TRX_CURRENCY_CODE = decode(p_hdr_det_factors_rec.TRX_CURRENCY_CODE,FND_API.G_MISS_CHAR,
11776 TRX_CURRENCY_CODE,
11777 p_hdr_det_factors_rec.TRX_CURRENCY_CODE),
11778 CURRENCY_CONVERSION_TYPE = decode(p_hdr_det_factors_rec.CURRENCY_CONVERSION_TYPE,FND_API.G_MISS_CHAR,
11779 CURRENCY_CONVERSION_TYPE,
11780 p_hdr_det_factors_rec.CURRENCY_CONVERSION_TYPE),
11781 CURRENCY_CONVERSION_RATE = decode(p_hdr_det_factors_rec.CURRENCY_CONVERSION_RATE,FND_API.G_MISS_NUM,
11782 CURRENCY_CONVERSION_RATE,
11783 p_hdr_det_factors_rec.CURRENCY_CONVERSION_RATE),
11784 CURRENCY_CONVERSION_DATE = decode(p_hdr_det_factors_rec.CURRENCY_CONVERSION_DATE,FND_API.G_MISS_DATE,
11785 CURRENCY_CONVERSION_DATE,
11786 p_hdr_det_factors_rec.CURRENCY_CONVERSION_DATE),
11787 MINIMUM_ACCOUNTABLE_UNIT = decode(p_hdr_det_factors_rec.MINIMUM_ACCOUNTABLE_UNIT,FND_API.G_MISS_NUM,
11788 MINIMUM_ACCOUNTABLE_UNIT,
11789 p_hdr_det_factors_rec.MINIMUM_ACCOUNTABLE_UNIT),
11790 PRECISION = decode(p_hdr_det_factors_rec.PRECISION,FND_API.G_MISS_NUM,
11791 PRECISION,
11792 p_hdr_det_factors_rec.PRECISION),
11793 ESTABLISHMENT_ID = decode(p_hdr_det_factors_rec.ESTABLISHMENT_ID,FND_API.G_MISS_NUM,
11794 ESTABLISHMENT_ID,
11795 p_hdr_det_factors_rec.ESTABLISHMENT_ID),
11796 RECEIVABLES_TRX_TYPE_ID = decode(p_hdr_det_factors_rec.RECEIVABLES_TRX_TYPE_ID,FND_API.G_MISS_NUM,
11797 RECEIVABLES_TRX_TYPE_ID,
11798 p_hdr_det_factors_rec.RECEIVABLES_TRX_TYPE_ID),
11799 RELATED_DOC_APPLICATION_ID = decode(p_hdr_det_factors_rec.RELATED_DOC_APPLICATION_ID,FND_API.G_MISS_NUM,
11800 RELATED_DOC_APPLICATION_ID,
11801 p_hdr_det_factors_rec.RELATED_DOC_APPLICATION_ID),
11802 RELATED_DOC_ENTITY_CODE = decode(p_hdr_det_factors_rec.RELATED_DOC_ENTITY_CODE,FND_API.G_MISS_CHAR,
11803 RELATED_DOC_ENTITY_CODE,
11804 p_hdr_det_factors_rec.RELATED_DOC_ENTITY_CODE),
11805 RELATED_DOC_EVENT_CLASS_CODE = decode(p_hdr_det_factors_rec.RELATED_DOC_EVENT_CLASS_CODE,FND_API.G_MISS_CHAR,
11806 RELATED_DOC_EVENT_CLASS_CODE,
11807 p_hdr_det_factors_rec.RELATED_DOC_EVENT_CLASS_CODE),
11808 RELATED_DOC_TRX_ID = decode(p_hdr_det_factors_rec.RELATED_DOC_TRX_ID,FND_API.G_MISS_NUM,
11812 RELATED_DOC_NUMBER,
11809 RELATED_DOC_TRX_ID,
11810 p_hdr_det_factors_rec.RELATED_DOC_TRX_ID),
11811 RELATED_DOC_NUMBER = decode(p_hdr_det_factors_rec.RELATED_DOC_NUMBER,FND_API.G_MISS_CHAR,
11813 p_hdr_det_factors_rec.RELATED_DOC_NUMBER),
11814 RELATED_DOC_DATE = decode(p_hdr_det_factors_rec.RELATED_DOC_DATE,FND_API.G_MISS_DATE,
11815 RELATED_DOC_DATE,
11816 p_hdr_det_factors_rec.RELATED_DOC_DATE),
11817 DEFAULT_TAXATION_COUNTRY = decode(p_hdr_det_factors_rec.DEFAULT_TAXATION_COUNTRY,FND_API.G_MISS_CHAR,
11818 DEFAULT_TAXATION_COUNTRY,
11819 p_hdr_det_factors_rec.DEFAULT_TAXATION_COUNTRY),
11820 TRX_NUMBER = decode(p_hdr_det_factors_rec.TRX_NUMBER,FND_API.G_MISS_CHAR,
11821 TRX_NUMBER,
11822 p_hdr_det_factors_rec.TRX_NUMBER),
11823 TRX_DESCRIPTION = decode(p_hdr_det_factors_rec.TRX_DESCRIPTION,FND_API.G_MISS_CHAR,
11824 TRX_DESCRIPTION,
11825 p_hdr_det_factors_rec.TRX_DESCRIPTION),
11826 TRX_COMMUNICATED_DATE = decode(p_hdr_det_factors_rec.TRX_COMMUNICATED_DATE,FND_API.G_MISS_DATE,
11827 TRX_COMMUNICATED_DATE,
11828 p_hdr_det_factors_rec.TRX_COMMUNICATED_DATE),
11829 BATCH_SOURCE_ID = decode(p_hdr_det_factors_rec.BATCH_SOURCE_ID,FND_API.G_MISS_NUM,
11830 BATCH_SOURCE_ID,
11831 p_hdr_det_factors_rec.BATCH_SOURCE_ID),
11832 BATCH_SOURCE_NAME = decode(p_hdr_det_factors_rec.BATCH_SOURCE_NAME,FND_API.G_MISS_CHAR,
11833 BATCH_SOURCE_NAME,
11834 p_hdr_det_factors_rec.BATCH_SOURCE_NAME),
11835 DOC_SEQ_ID = decode(p_hdr_det_factors_rec.DOC_SEQ_ID,FND_API.G_MISS_NUM,
11836 DOC_SEQ_ID,
11837 p_hdr_det_factors_rec.DOC_SEQ_ID),
11838 DOC_SEQ_NAME = decode(p_hdr_det_factors_rec.DOC_SEQ_NAME,FND_API.G_MISS_CHAR,
11839 DOC_SEQ_NAME,
11840 p_hdr_det_factors_rec.DOC_SEQ_NAME),
11841 DOC_SEQ_VALUE = decode(p_hdr_det_factors_rec.DOC_SEQ_VALUE,FND_API.G_MISS_CHAR,
11842 DOC_SEQ_VALUE,
11843 p_hdr_det_factors_rec.DOC_SEQ_VALUE),
11844 TRX_DUE_DATE = decode(p_hdr_det_factors_rec.TRX_DUE_DATE,FND_API.G_MISS_DATE,
11845 TRX_DUE_DATE,
11846 p_hdr_det_factors_rec.TRX_DUE_DATE),
11847 TRX_TYPE_DESCRIPTION = decode(p_hdr_det_factors_rec.TRX_TYPE_DESCRIPTION,FND_API.G_MISS_CHAR,
11848 TRX_TYPE_DESCRIPTION,
11849 p_hdr_det_factors_rec.TRX_TYPE_DESCRIPTION),
11850 DOCUMENT_SUB_TYPE = decode(p_hdr_det_factors_rec.DOCUMENT_SUB_TYPE,FND_API.G_MISS_CHAR,
11851 DOCUMENT_SUB_TYPE,
11852 p_hdr_det_factors_rec.DOCUMENT_SUB_TYPE),
11853 SUPPLIER_TAX_INVOICE_NUMBER = decode(p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,
11854 SUPPLIER_TAX_INVOICE_NUMBER,
11855 p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_NUMBER),
11856 SUPPLIER_TAX_INVOICE_DATE = decode(p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_DATE,FND_API.G_MISS_DATE,
11857 SUPPLIER_TAX_INVOICE_DATE,
11858 p_hdr_det_factors_rec.SUPPLIER_TAX_INVOICE_DATE),
11862 TAX_INVOICE_DATE = decode(p_hdr_det_factors_rec.TAX_INVOICE_DATE,FND_API.G_MISS_DATE,
11859 SUPPLIER_EXCHANGE_RATE = decode(p_hdr_det_factors_rec.SUPPLIER_EXCHANGE_RATE,FND_API.G_MISS_NUM,
11860 SUPPLIER_EXCHANGE_RATE,
11861 p_hdr_det_factors_rec.SUPPLIER_EXCHANGE_RATE),
11863 TAX_INVOICE_DATE,
11864 p_hdr_det_factors_rec.TAX_INVOICE_DATE),
11865 TAX_INVOICE_NUMBER = decode(p_hdr_det_factors_rec.TAX_INVOICE_NUMBER,FND_API.G_MISS_CHAR,
11866 TAX_INVOICE_NUMBER,
11867 p_hdr_det_factors_rec.TAX_INVOICE_NUMBER),
11868 CTRL_TOTAL_HDR_TX_AMT = decode(p_hdr_det_factors_rec.CTRL_TOTAL_HDR_TX_AMT,FND_API.G_MISS_NUM,
11869 ctrl_total_hdr_tx_amt,
11870 p_hdr_det_factors_rec.CTRL_TOTAL_HDR_TX_AMT),
11871 FIRST_PTY_ORG_ID = l_event_class_rec.first_pty_org_id,
11872 TAX_EVENT_CLASS_CODE = l_event_class_rec.TAX_EVENT_CLASS_CODE,
11873 TAX_EVENT_TYPE_CODE = l_event_class_rec.TAX_EVENT_TYPE_CODE,
11874 DOC_EVENT_STATUS = l_event_class_rec.DOC_STATUS_CODE,
11875 TRX_BATCH_ID = decode(p_hdr_det_factors_rec.TRX_BATCH_ID,FND_API.G_MISS_NUM,
11876 TRX_BATCH_ID,
11877 p_hdr_det_factors_rec.TRX_BATCH_ID),
11878 APPLIED_TO_TRX_NUMBER = decode(p_hdr_det_factors_rec.APPLIED_TO_TRX_NUMBER,FND_API.G_MISS_CHAR,
11879 APPLIED_TO_TRX_NUMBER,
11880 p_hdr_det_factors_rec.APPLIED_TO_TRX_NUMBER),
11881 APPLICATION_DOC_STATUS = decode(p_hdr_det_factors_rec.APPLICATION_DOC_STATUS,FND_API.G_MISS_CHAR,
11882 APPLICATION_DOC_STATUS,
11883 p_hdr_det_factors_rec.APPLICATION_DOC_STATUS),
11884 RDNG_SHIP_TO_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_SHIP_TO_PARTY_ID,FND_API.G_MISS_NUM,
11885 RDNG_SHIP_TO_PTY_TX_PROF_ID,
11886 l_rdng_ship_to_ptp_id),
11887 RDNG_SHIP_FROM_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_SHIP_FROM_PARTY_ID,FND_API.G_MISS_NUM,
11888 RDNG_SHIP_FROM_PTY_TX_PROF_ID,
11889 l_rdng_ship_from_ptp_id),
11890 RDNG_BILL_TO_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_BILL_TO_PARTY_ID,FND_API.G_MISS_NUM,
11891 RDNG_BILL_TO_PTY_TX_PROF_ID,
11892 l_rdng_bill_to_ptp_id),
11893 RDNG_BILL_FROM_PTY_TX_PROF_ID = decode(p_hdr_det_factors_rec.ROUNDING_BILL_FROM_PARTY_ID,FND_API.G_MISS_NUM,
11894 RDNG_BILL_FROM_PTY_TX_PROF_ID,
11895 l_rdng_bill_from_ptp_id),
11896 RDNG_SHIP_TO_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_SHIP_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11897 RDNG_SHIP_TO_PTY_TX_P_ST_ID,
11898 l_rdng_ship_to_ptp_st_id),
11899 RDNG_SHIP_FROM_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_SHIP_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11900 RDNG_SHIP_FROM_PTY_TX_P_ST_ID,
11901 l_rdng_ship_from_ptp_st_id),
11902 RDNG_BILL_TO_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_BILL_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11903 RDNG_BILL_TO_PTY_TX_P_ST_ID,
11904 l_rdng_bill_to_ptp_st_id),
11905 RDNG_BILL_FROM_PTY_TX_P_ST_ID = decode(p_hdr_det_factors_rec.RNDG_BILL_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
11906 RDNG_BILL_FROM_PTY_TX_P_ST_ID,
11907 l_rdng_bill_from_ptp_st_id),
11908 PORT_OF_ENTRY_CODE = decode(p_hdr_det_factors_rec.PORT_OF_ENTRY_CODE,FND_API.G_MISS_CHAR,
11909 PORT_OF_ENTRY_CODE,
11913 p_hdr_det_factors_rec.TAX_REPORTING_FLAG),
11910 p_hdr_det_factors_rec.PORT_OF_ENTRY_CODE),
11911 TAX_REPORTING_FLAG = decode(p_hdr_det_factors_rec.TAX_REPORTING_FLAG,FND_API.G_MISS_CHAR,
11912 TAX_REPORTING_FLAG,
11914 PROVNL_TAX_DETERMINATION_DATE = decode(p_hdr_det_factors_rec.PROVNL_TAX_DETERMINATION_DATE,FND_API.G_MISS_DATE,
11915 PROVNL_TAX_DETERMINATION_DATE,
11916 p_hdr_det_factors_rec.PROVNL_TAX_DETERMINATION_DATE),
11917 SHIP_THIRD_PTY_ACCT_ID = decode(p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_ID,FND_API.G_MISS_NUM,
11918 SHIP_THIRD_PTY_ACCT_ID,
11919 p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_ID),
11920 BILL_THIRD_PTY_ACCT_ID = decode(p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_ID,FND_API.G_MISS_NUM,
11921 BILL_THIRD_PTY_ACCT_ID,
11922 p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_ID),
11923 SHIP_THIRD_PTY_ACCT_SITE_ID = decode(p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_SITE_ID,FND_API.G_MISS_NUM,
11924 SHIP_THIRD_PTY_ACCT_SITE_ID,
11925 p_hdr_det_factors_rec.SHIP_THIRD_PTY_ACCT_SITE_ID),
11926 BILL_THIRD_PTY_ACCT_SITE_ID = decode(p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_SITE_ID,FND_API.G_MISS_NUM,
11927 BILL_THIRD_PTY_ACCT_SITE_ID,
11928 p_hdr_det_factors_rec.BILL_THIRD_PTY_ACCT_SITE_ID),
11929 SHIP_TO_CUST_ACCT_SITE_USE_ID = decode(p_hdr_det_factors_rec.SHIP_TO_CUST_ACCT_SITE_USE_ID,FND_API.G_MISS_NUM,
11930 SHIP_TO_CUST_ACCT_SITE_USE_ID,
11931 p_hdr_det_factors_rec.SHIP_TO_CUST_ACCT_SITE_USE_ID),
11932 BILL_TO_CUST_ACCT_SITE_USE_ID = decode(p_hdr_det_factors_rec.BILL_TO_CUST_ACCT_SITE_USE_ID,FND_API.G_MISS_NUM,
11933 BILL_TO_CUST_ACCT_SITE_USE_ID,
11934 p_hdr_det_factors_rec.BILL_TO_CUST_ACCT_SITE_USE_ID),
11935 SHIP_TO_LOCATION_ID = decode(p_hdr_det_factors_rec.SHIP_TO_LOCATION_ID,FND_API.G_MISS_NUM,
11936 SHIP_TO_LOCATION_ID,
11937 p_hdr_det_factors_rec.SHIP_TO_LOCATION_ID),
11938 SHIP_FROM_LOCATION_ID = decode(p_hdr_det_factors_rec.SHIP_FROM_LOCATION_ID,FND_API.G_MISS_NUM,
11939 SHIP_FROM_LOCATION_ID,
11940 p_hdr_det_factors_rec.SHIP_FROM_LOCATION_ID),
11941 BILL_TO_LOCATION_ID = decode(p_hdr_det_factors_rec.BILL_TO_LOCATION_ID,FND_API.G_MISS_NUM,
11942 BILL_TO_LOCATION_ID,
11943 p_hdr_det_factors_rec.BILL_TO_LOCATION_ID),
11944 BILL_FROM_LOCATION_ID = decode(p_hdr_det_factors_rec.BILL_FROM_LOCATION_ID,FND_API.G_MISS_NUM,
11945 BILL_FROM_LOCATION_ID,
11946 p_hdr_det_factors_rec.BILL_FROM_LOCATION_ID),
11947 POA_LOCATION_ID = decode(p_hdr_det_factors_rec.POA_LOCATION_ID,FND_API.G_MISS_NUM,
11948 POA_LOCATION_ID,
11949 p_hdr_det_factors_rec.POA_LOCATION_ID),
11950 POO_LOCATION_ID = decode(p_hdr_det_factors_rec.POO_LOCATION_ID,FND_API.G_MISS_NUM,
11951 POO_LOCATION_ID,
11952 p_hdr_det_factors_rec.POO_LOCATION_ID),
11953 PAYING_LOCATION_ID = decode(p_hdr_det_factors_rec.PAYING_LOCATION_ID,FND_API.G_MISS_NUM,
11954 PAYING_LOCATION_ID,
11955 p_hdr_det_factors_rec.PAYING_LOCATION_ID),
11956 OWN_HQ_LOCATION_ID = decode(p_hdr_det_factors_rec.OWN_HQ_LOCATION_ID,FND_API.G_MISS_NUM,
11957 OWN_HQ_LOCATION_ID,
11958 p_hdr_det_factors_rec.OWN_HQ_LOCATION_ID),
11959 TRADING_HQ_LOCATION_ID = decode(p_hdr_det_factors_rec.TRADING_HQ_LOCATION_ID,FND_API.G_MISS_NUM,
11963 POC_LOCATION_ID,
11960 TRADING_HQ_LOCATION_ID,
11961 p_hdr_det_factors_rec.TRADING_HQ_LOCATION_ID),
11962 POC_LOCATION_ID = decode(p_hdr_det_factors_rec.POC_LOCATION_ID,FND_API.G_MISS_NUM,
11964 p_hdr_det_factors_rec.POC_LOCATION_ID),
11965 POI_LOCATION_ID = decode(p_hdr_det_factors_rec.POI_LOCATION_ID,FND_API.G_MISS_NUM,
11966 POI_LOCATION_ID,
11967 p_hdr_det_factors_rec.POI_LOCATION_ID),
11968 POD_LOCATION_ID = decode(p_hdr_det_factors_rec.POD_LOCATION_ID,FND_API.G_MISS_NUM,
11969 POD_LOCATION_ID,
11970 p_hdr_det_factors_rec.POD_LOCATION_ID),
11971 TITLE_TRANSFER_LOCATION_ID = decode(p_hdr_det_factors_rec.TITLE_TRANSFER_LOCATION_ID,FND_API.G_MISS_NUM,
11972 TITLE_TRANSFER_LOCATION_ID,
11973 p_hdr_det_factors_rec.TITLE_TRANSFER_LOCATION_ID),
11974 SHIP_TO_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_TO_PARTY_ID,FND_API.G_MISS_NUM,
11975 SHIP_TO_PARTY_TAX_PROF_ID,
11976 l_ship_to_ptp_id),
11977 SHIP_FROM_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_FROM_PARTY_ID,FND_API.G_MISS_NUM,
11978 SHIP_FROM_PARTY_TAX_PROF_ID,
11979 l_ship_from_ptp_id),
11980 POA_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POA_PARTY_ID,FND_API.G_MISS_NUM,
11981 POA_PARTY_TAX_PROF_ID,
11982 l_poa_ptp_id),
11983 POO_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POO_PARTY_ID,FND_API.G_MISS_NUM,
11984 POO_PARTY_TAX_PROF_ID,
11985 l_poo_ptp_id),
11986 PAYING_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.PAYING_PARTY_ID,FND_API.G_MISS_NUM,
11987 PAYING_PARTY_TAX_PROF_ID,
11988 p_hdr_det_factors_rec.PAYING_PARTY_TAX_PROF_ID),
11989 OWN_HQ_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.OWN_HQ_PARTY_ID,FND_API.G_MISS_NUM,
11990 OWN_HQ_PARTY_TAX_PROF_ID,
11991 p_hdr_det_factors_rec.OWN_HQ_PARTY_TAX_PROF_ID),
11992 TRADING_HQ_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.TRADING_HQ_PARTY_ID,FND_API.G_MISS_NUM,
11993 TRADING_HQ_PARTY_TAX_PROF_ID,
11994 p_hdr_det_factors_rec.TRADING_HQ_PARTY_TAX_PROF_ID),
11995 POI_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POI_PARTY_ID,FND_API.G_MISS_NUM,
11996 POI_PARTY_TAX_PROF_ID,
11997 p_hdr_det_factors_rec.POI_PARTY_TAX_PROF_ID),
11998 POD_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POD_PARTY_ID,FND_API.G_MISS_NUM,
11999 POD_PARTY_TAX_PROF_ID,
12000 p_hdr_det_factors_rec.POD_PARTY_TAX_PROF_ID),
12001 BILL_TO_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_TO_PARTY_ID,FND_API.G_MISS_NUM,
12002 BILL_TO_PARTY_TAX_PROF_ID,
12003 l_bill_to_ptp_id),
12004 BILL_FROM_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_FROM_PARTY_ID,FND_API.G_MISS_NUM,
12005 BILL_FROM_PARTY_TAX_PROF_ID,
12006 l_bill_from_ptp_id),
12007 TITLE_TRANS_PARTY_TAX_PROF_ID = decode(p_hdr_det_factors_rec.TITLE_TRANSFER_PARTY_ID,FND_API.G_MISS_NUM,
12008 TITLE_TRANS_PARTY_TAX_PROF_ID,
12009 p_hdr_det_factors_rec.TITLE_TRANS_PARTY_TAX_PROF_ID),
12013 SHIP_FROM_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12010 SHIP_TO_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.SHIP_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12011 SHIP_TO_SITE_TAX_PROF_ID,
12012 l_ship_to_ptp_site_id),
12014 SHIP_FROM_SITE_TAX_PROF_ID,
12015 l_ship_from_ptp_site_id),
12016 BILL_TO_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_TO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12017 BILL_TO_SITE_TAX_PROF_ID,
12018 l_bill_to_ptp_site_id),
12019 BILL_FROM_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.BILL_FROM_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12020 BILL_FROM_SITE_TAX_PROF_ID,
12021 l_bill_from_ptp_site_id),
12022 POA_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POA_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12023 POA_SITE_TAX_PROF_ID,
12024 l_poa_ptp_site_id),
12025 POO_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POO_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12026 POO_SITE_TAX_PROF_ID,
12027 l_poo_ptp_site_id),
12028 PAYING_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.PAYING_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12029 PAYING_SITE_TAX_PROF_ID,
12030 p_hdr_det_factors_rec.PAYING_SITE_TAX_PROF_ID),
12031 OWN_HQ_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.OWN_HQ_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12032 OWN_HQ_SITE_TAX_PROF_ID,
12033 p_hdr_det_factors_rec.OWN_HQ_SITE_TAX_PROF_ID),
12034 POI_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POI_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12035 POI_SITE_TAX_PROF_ID,
12036 p_hdr_det_factors_rec.POI_SITE_TAX_PROF_ID),
12037 POD_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.POD_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12038 POD_SITE_TAX_PROF_ID,
12039 p_hdr_det_factors_rec.POD_SITE_TAX_PROF_ID),
12040 TITLE_TRANS_SITE_TAX_PROF_ID = decode(p_hdr_det_factors_rec.TITLE_TRANSFER_PARTY_SITE_ID,FND_API.G_MISS_NUM,
12041 TITLE_TRANS_SITE_TAX_PROF_ID,
12042 p_hdr_det_factors_rec.TITLE_TRANS_SITE_TAX_PROF_ID),
12043 HQ_ESTB_PARTY_TAX_PROF_ID = l_hq_estb_ptp_id,
12044 LINE_LEVEL_ACTION = decode(LINE_LEVEL_ACTION, 'CREATE','UPDATE',
12045 'SYNCHRONIZE','UPDATE',
12046 LINE_LEVEL_ACTION),
12047 TAX_PROCESSING_COMPLETED_FLAG = 'N',
12048 LAST_UPDATE_DATE = sysdate,
12049 LAST_UPDATED_BY = fnd_global.user_id,
12050 LAST_UPDATE_LOGIN = fnd_global.conc_login_id
12051 WHERE APPLICATION_ID = p_hdr_det_factors_rec.APPLICATION_ID
12052 AND ENTITY_CODE = p_hdr_det_factors_rec.ENTITY_CODE
12053 AND EVENT_CLASS_CODE = p_hdr_det_factors_rec.EVENT_CLASS_CODE
12054 AND TRX_ID = p_hdr_det_factors_rec.TRX_ID;
12055 END IF;
12056 --Bugfix 4486946 - on-the-fly upgrade end
12057
12058 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12059 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
12060 END IF;
12061
12062 EXCEPTION
12063 WHEN FND_API.G_EXC_ERROR THEN
12064 ROLLBACK TO Update_Det_Factors_Hdr_PVT;
12065 x_return_status := FND_API.G_RET_STS_ERROR ;
12066 DUMP_MSG;
12067 /*---------------------------------------------------------+
12068 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12069 | in the message stack. If there is only one message in |
12070 | the stack it retrieves this message |
12071 +---------------------------------------------------------*/
12072 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12073 p_count => x_msg_count,
12074 p_data => x_msg_data
12078 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12075 );
12076
12077 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12079 END IF;
12080
12081 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12082 ROLLBACK TO Update_Det_Factors_Hdr_PVT;
12083 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12084 DUMP_MSG;
12085 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12086 FND_MSG_PUB.Add;
12087 /*---------------------------------------------------------+
12088 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12089 | in the message stack. If there is only one message in |
12090 | the stack it retrieves this message |
12091 +---------------------------------------------------------*/
12092 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12093 p_count => x_msg_count,
12094 p_data => x_msg_data
12095 );
12096 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12097 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12098 END IF;
12099 WHEN OTHERS THEN
12100 ROLLBACK TO Update_Det_Factors_Hdr_PVT;
12101 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12102 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12103 FND_MSG_PUB.Add;
12104 /*---------------------------------------------------------+
12105 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12106 | in the message stack. If there is only one message in |
12107 | the stack it retrieves this message |
12108 +---------------------------------------------------------*/
12109 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12110 p_count => x_msg_count,
12111 p_data => x_msg_data
12112 );
12113
12114 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
12115 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
12116 END IF;
12117 END update_det_factors_hdr;
12118
12119
12120 /* ========================================================================*
12121 | PROCEDURE update_line_det_factors : This procedure should be called by |
12122 | products when updating any of the line attributes on the transaction |
12123 | so that the tax repository is also in sync with the line level updates |
12124 | This line will be flagged to be picked up by the tax calculation process|
12125 * =======================================================================*/
12126
12127 PROCEDURE update_line_det_factors (
12128 p_api_version IN NUMBER,
12129 p_init_msg_list IN VARCHAR2,
12130 p_commit IN VARCHAR2,
12131 p_validation_level IN NUMBER,
12132 x_return_status OUT NOCOPY VARCHAR2,
12133 x_msg_count OUT NOCOPY NUMBER,
12134 x_msg_data OUT NOCOPY VARCHAR2
12135 ) IS
12136 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_LINE_DET_FACTORS';
12137 l_api_version CONSTANT NUMBER := 1.0;
12138 l_return_status VARCHAR2(1);
12139 l_init_msg_list VARCHAR2(1);
12140 l_user_updated_flag VARCHAR2(1);
12141 l_call_default_APIs BOOLEAN;
12142 l_upg_trx_info_rec ZX_ON_FLY_TRX_UPGRADE_PKG.zx_upg_trx_info_rec_type;
12143 l_event_class_rec event_class_rec_type;
12144
12145 BEGIN
12146 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12147 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
12148 END IF;
12149
12150 /*--------------------------------------------------+
12151 | Standard start of API savepoint |
12152 +--------------------------------------------------*/
12153 SAVEPOINT Update_Line_Det_Factors_PVT;
12154
12155 /*--------------------------------------------------+
12156 | Standard call to check for call compatibility |
12157 +--------------------------------------------------*/
12158 IF NOT FND_API.Compatible_API_Call(l_api_version,
12159 p_api_version,
12160 l_api_name,
12161 G_PKG_NAME
12162 ) THEN
12163 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12164 END IF;
12165
12166 /*--------------------------------------------------------------+
12167 | Initialize message list if p_init_msg_list is set to TRUE |
12168 +--------------------------------------------------------------*/
12169 IF p_init_msg_list is null THEN
12170 l_init_msg_list := FND_API.G_FALSE;
12171 ELSE
12172 l_init_msg_list := p_init_msg_list;
12173 END IF;
12174
12175 IF FND_API.to_Boolean(l_init_msg_list) THEN
12176 FND_MSG_PUB.initialize;
12177 END IF;
12178
12179 /*-----------------------------------------+
12180 | Initialize return status to SUCCESS |
12181 +-----------------------------------------*/
12182 x_return_status := FND_API.G_RET_STS_SUCCESS;
12183
12184 /*-----------------------------------------+
12185 | Populate Global Variable |
12186 +-----------------------------------------*/
12187 G_PUB_SRVC := l_api_name;
12191 l_event_class_rec.INTERNAL_ORGANIZATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(1);
12188 G_DATA_TRANSFER_MODE := 'PLS';
12189 G_EXTERNAL_API_CALL := 'N';
12190
12192 l_event_class_rec.LEGAL_ENTITY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(1);
12193 l_event_class_rec.LEDGER_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEDGER_ID(1);
12194 l_event_class_rec.APPLICATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(1);
12195 l_event_class_rec.ENTITY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ENTITY_CODE(1);
12196 l_event_class_rec.EVENT_CLASS_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_CLASS_CODE(1);
12197 l_event_class_rec.EVENT_TYPE_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_TYPE_CODE(1);
12198 l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(1);
12199 l_event_class_rec.TRX_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_ID(1);
12200 l_event_class_rec.TRX_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(1);
12201 l_event_class_rec.REL_DOC_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RELATED_DOC_DATE(1);
12202 l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:= ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(1);
12203 l_event_class_rec.TRX_CURRENCY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_CURRENCY_CODE(1);
12204 l_event_class_rec.PRECISION := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRECISION(1);
12205 l_event_class_rec.CURRENCY_CONVERSION_TYPE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(1);
12206 l_event_class_rec.CURRENCY_CONVERSION_RATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(1);
12207 l_event_class_rec.CURRENCY_CONVERSION_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(1);
12208 l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID(1);
12209 l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID(1);
12210 l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(1);
12211 l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID(1);
12212 l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID(1);
12213 l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID(1);
12214 l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID(1);
12215 l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID(1);
12216
12217
12218 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12219 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
12220 'application_id: '||to_char(l_event_class_rec.application_id)||
12221 ', entity_code: '||l_event_class_rec.entity_code||
12222 ', event_class_code: '||l_event_class_rec.event_class_code||
12223 ', event_type_code: '||l_event_class_rec.event_type_code||
12224 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
12225 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
12226 ', ledger_id: '||to_char(l_event_class_rec.ledger_id)||
12227 ', legal_entity_id: '||to_char(l_event_class_rec.legal_entity_id)||
12228 ', trx_date: '||to_char(l_event_class_rec.trx_date)||
12229 ', related_document_date: '||to_char(l_event_class_rec.rel_doc_date)||
12230 ', provnl_tax_determination_date: '||to_char(l_event_class_rec.provnl_tax_determination_date)||
12231 ', trx_currency_code: '||l_event_class_rec.trx_currency_code||
12232 ', currency_conversion_type: '||l_event_class_rec.currency_conversion_type||
12233 ', currency_conversion_rate: '||to_char(l_event_class_rec.currency_conversion_rate)||
12234 ', currency_conversion_date: '||to_char(l_event_class_rec.currency_conversion_date)||
12235 ', rounding_ship_to_party_id: '||to_char(l_event_class_rec.rounding_ship_to_party_id)||
12236 ', rounding_ship_from_party_id: '||to_char(l_event_class_rec.rounding_ship_from_party_id)||
12237 ', rounding_bill_to_party_id: '||to_char(l_event_class_rec.rounding_bill_to_party_id)||
12238 ', rounding_bill_from_party_id: '||to_char(l_event_class_rec.rounding_bill_from_party_id)||
12239 ', rndg_ship_to_party_site_id: '||to_char(l_event_class_rec.rndg_ship_to_party_site_id)||
12240 ', rndg_ship_from_party_site_id: '||to_char(l_event_class_rec.rndg_ship_from_party_site_id)||
12241 ', rndg_bill_to_party_site_id: '||to_char(l_event_class_rec.rndg_bill_to_party_site_id)||
12242 ', rndg_bill_from_party_site_id: '||to_char(l_event_class_rec.rndg_bill_from_party_site_id)
12243 );
12244 END IF;
12245
12246
12247 /*Lock the line so no updates by another user can happen*/
12248 BEGIN
12249 SELECT event_id,
12250 nvl(user_upd_det_factors_flag,'N')
12251 INTO l_event_class_rec.event_id,
12252 l_user_updated_flag
12253 FROM ZX_LINES_DET_FACTORS
12254 WHERE application_id = l_event_class_rec.application_id
12255 AND entity_code = l_event_class_rec.entity_code
12256 AND event_class_code = l_event_class_rec.event_class_code
12257 AND trx_id = l_event_class_rec.trx_id
12258 AND trx_line_id = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(1)
12262 EXCEPTION
12259 AND trx_level_type = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(1)
12260 FOR UPDATE NOWAIT; --locks the line
12261
12263 WHEN NO_DATA_FOUND THEN
12264 l_upg_trx_info_rec.application_id := l_event_class_rec.application_id;
12265 l_upg_trx_info_rec.entity_code := l_event_class_rec.entity_code;
12266 l_upg_trx_info_rec.event_class_code := l_event_class_rec.event_class_code;
12267 l_upg_trx_info_rec.trx_id := l_event_class_rec.trx_id;
12268 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(p_upg_trx_info_rec => l_upg_trx_info_rec,
12269 x_return_status => l_return_status
12270 );
12271 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12272 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12273 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||':ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly returned errors');
12274 END IF;
12275 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
12276 RAISE FND_API.G_EXC_ERROR;
12277 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
12278 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12279 END IF;
12280 END IF;
12281 /*Lock the line so no updates by another user can happen*/
12282 SELECT event_id,
12283 nvl(user_upd_det_factors_flag,'N')
12284 INTO l_event_class_rec.event_id,
12285 l_user_updated_flag
12286 FROM ZX_LINES_DET_FACTORS
12287 WHERE application_id = l_event_class_rec.application_id
12288 AND entity_code = l_event_class_rec.entity_code
12289 AND event_class_code = l_event_class_rec.event_class_code
12290 AND trx_id = l_event_class_rec.trx_id
12291 AND trx_line_id = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(1)
12292 AND trx_level_type = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(1)
12293 FOR UPDATE NOWAIT; --locks the line
12294 END;
12295
12296 /*------------------------------------------------------+
12297 | Validate and Initializate parameters for Inserting |
12298 | into line_det_factors |
12299 +------------------------------------------------------*/
12300
12301 IF ( G_LEVEL_EVENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12302 FND_LOG.STRING(G_LEVEL_EVENT,G_MODULE_NAME||l_api_name,
12303 'Validating Transaction: '||
12304 to_char(l_event_class_rec.trx_id)||
12305 ' of Application: '||
12306 to_char(l_event_class_rec.application_id) ||
12307 ' and Event Class: '||
12308 l_event_class_rec.event_class_code
12309 );
12310 END IF;
12311
12312 ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors(p_event_class_rec =>l_event_class_rec,
12313 p_trx_line_index => 1,
12314 x_return_status =>l_return_status
12315 );
12316
12317 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12318 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12319 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
12320 ':ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors returned errors');
12321 END IF;
12322 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
12323 RAISE FND_API.G_EXC_ERROR;
12324 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
12325 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12326 END IF;
12327 END IF;
12328
12329 -- Fix for Bug 5038953
12330 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TAX_EVENT_CLASS_CODE(1) := l_event_class_rec.TAX_EVENT_CLASS_CODE;
12331 -- End fix for Bug 5038953
12332
12333 /*----------------------------------------------------------------------------+
12334 |Call the defaulting API to default the determining attributes if user has not|
12335 |already overridden them in the determining factors window in which case we |
12336 |need to honor the overridden values |
12337 +----------------------------------------------------------------------------*/
12338 IF l_user_updated_flag = 'N' THEN
12339 --Call the redefaulting APIs only if all tax determining attributes passed as null
12340 l_call_default_APIs := ZX_SRVC_TYP_PKG.decide_call_redefault_APIs (p_trx_line_index => 1);
12341
12342 IF l_call_default_APIs THEN
12343 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(1) = 'UPDATE' THEN
12344 ZX_SRVC_TYP_PKG.call_redefaulting_APIs(p_event_class_rec => l_event_class_rec,
12345 p_trx_line_index => 1,
12346 x_return_status => l_return_status
12347 );
12348 END IF;
12349 END IF;
12350
12351 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12352 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12353 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
12354 ':ZX_SRVC_TYP_PKG.call_redefaulting_APIs returned errors');
12355 END IF;
12356 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
12357 RAISE FND_API.G_EXC_ERROR;
12358 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
12359 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12360 END IF;
12361 END IF;
12362 END IF;
12363
12367 ZX_SRVC_TYP_PKG.insupd_line_det_factors(p_event_class_rec => l_event_class_rec,
12364 /*------------------------------------------+
12365 |Call to update the lines |
12366 +------------------------------------------*/
12368 x_return_status => l_return_status
12369 );
12370
12371 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12372 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12373 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
12374 ':ZX_SRVC_TYP_PKG.insupd_line_det_factors returned errors');
12375 END IF;
12376 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
12377 RAISE FND_API.G_EXC_ERROR;
12378 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
12379 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12380 END IF;
12381 END IF;
12382
12383 --Delete from the global structures so that there are no hanging/redundant
12384 --records sitting there
12385 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
12386
12387 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12388 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
12389 END IF;
12390
12391 EXCEPTION
12392 WHEN FND_API.G_EXC_ERROR THEN
12393 ROLLBACK TO Update_Line_Det_Factors_PVT;
12394 x_return_status := FND_API.G_RET_STS_ERROR ;
12395 DUMP_MSG;
12396 /*---------------------------------------------------------+
12397 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12398 | in the message stack. If there is only one message in |
12399 | the stack it retrieves this message |
12400 +---------------------------------------------------------*/
12401 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12402 p_count => x_msg_count,
12403 p_data => x_msg_data
12404 );
12405
12406 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12407 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12408 END IF;
12409
12410 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12411 ROLLBACK TO Update_Line_Det_Factors_PVT;
12412 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12413 DUMP_MSG;
12414 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12415 FND_MSG_PUB.Add;
12416 /*---------------------------------------------------------+
12417 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12418 | in the message stack. If there is only one message in |
12419 | the stack it retrieves this message |
12420 +---------------------------------------------------------*/
12421 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12422 p_count => x_msg_count,
12423 p_data => x_msg_data
12424 );
12425 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12426 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12427 END IF;
12428
12429 WHEN OTHERS THEN
12430 /*-------------------------------------------------------+
12431 | Handle application errors that result from trapable |
12432 | error conditions. The error messages have already |
12433 | been put on the error stack. |
12434 +-------------------------------------------------------*/
12435 ROLLBACK TO Update_Line_Det_Factors_PVT;
12436 IF (SQLCODE = 54) THEN
12437 x_return_status := FND_API.G_RET_STS_ERROR ;
12438 FND_MESSAGE.SET_NAME('ZX','ZX_RESOURCE_BUSY');
12439 ELSE
12440 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12441 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12442 END IF;
12443 FND_MSG_PUB.Add;
12444 /*---------------------------------------------------------+
12445 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12446 | in the message stack. If there is only one message in |
12447 | the stack it retrieves this message |
12448 +---------------------------------------------------------*/
12449 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12450 p_count => x_msg_count,
12451 p_data => x_msg_data
12452 );
12453
12454 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
12455 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
12456 END IF;
12457 END update_line_det_factors;
12458
12459 /* ============================================================================*
12460 | PROCEDURE copy_insert_line_det_factors : This procedure will be called |
12461 | by iProcurement to insert all the transaction lines into zx_lines_det_factors|
12462 | after copying the tax determining attributes from the source document |
12463 | information passed in. All lines thus inserted will be flagged to be picked |
12464 | up by the tax calculation process |
12465 * ============================================================================*/
12466
12467 PROCEDURE copy_insert_line_det_factors(
12468 p_api_version IN NUMBER,
12469 p_init_msg_list IN VARCHAR2,
12473 x_msg_count OUT NOCOPY NUMBER,
12470 p_commit IN VARCHAR2,
12471 p_validation_level IN NUMBER,
12472 x_return_status OUT NOCOPY VARCHAR2,
12474 x_msg_data OUT NOCOPY VARCHAR2
12475 )IS
12476 l_api_name CONSTANT VARCHAR2(30) := 'COPY_INSERT_LINE_DET_FACTORS';
12477 l_api_version CONSTANT NUMBER := 1.0;
12478 l_return_status VARCHAR2(1);
12479 l_event_class_rec event_class_rec_type;
12480 l_line_det_rec ZX_LINES_DET_FACTORS%rowtype;
12481 l_line_exists NUMBER;
12482 l_record_exists BOOLEAN;
12483 l_init_msg_list VARCHAR2(1);
12484 l_tax_classification_code VARCHAR2(50);
12485 BEGIN
12486 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12487 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
12488 END IF;
12489
12490 /*--------------------------------------------------+
12491 | Standard start of API savepoint |
12492 +--------------------------------------------------*/
12493 SAVEPOINT Copy_Ins_Line_Det_Factors_PVT;
12494
12495 /*--------------------------------------------------+
12496 | Standard call to check for call compatibility |
12497 +--------------------------------------------------*/
12498 IF NOT FND_API.Compatible_API_Call(l_api_version,
12499 p_api_version,
12500 l_api_name,
12501 G_PKG_NAME
12502 ) THEN
12503 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12504 END IF;
12505
12506 /*--------------------------------------------------------------+
12507 | Initialize message list if p_init_msg_list is set to TRUE |
12508 +--------------------------------------------------------------*/
12509 IF p_init_msg_list is null THEN
12510 l_init_msg_list := FND_API.G_FALSE;
12511 ELSE
12512 l_init_msg_list := p_init_msg_list;
12513 END IF;
12514
12515 IF FND_API.to_Boolean(l_init_msg_list) THEN
12516 FND_MSG_PUB.initialize;
12517 END IF;
12518
12519 /*-----------------------------------------+
12520 | Initialize return status to SUCCESS |
12521 +-----------------------------------------*/
12522 x_return_status := FND_API.G_RET_STS_SUCCESS;
12523
12524 /*-----------------------------------------+
12525 | Populate Global Variable |
12526 +-----------------------------------------*/
12527 G_PUB_SRVC := l_api_name;
12528 G_DATA_TRANSFER_MODE := 'PLS';
12529 G_EXTERNAL_API_CALL := 'N';
12530
12531
12532 /*-----------------------------------------+
12533 |Populate the event class record structure|
12534 +-----------------------------------------*/
12535 l_event_class_rec.INTERNAL_ORGANIZATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(1);
12536 l_event_class_rec.LEGAL_ENTITY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEGAL_ENTITY_ID(1);
12537 l_event_class_rec.LEDGER_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.LEDGER_ID(1);
12538 l_event_class_rec.APPLICATION_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.APPLICATION_ID(1);
12539 l_event_class_rec.ENTITY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ENTITY_CODE(1);
12540 l_event_class_rec.EVENT_CLASS_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_CLASS_CODE(1);
12541 l_event_class_rec.EVENT_TYPE_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.EVENT_TYPE_CODE(1);
12542 l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CTRL_TOTAL_HDR_TX_AMT(1);
12543 l_event_class_rec.TRX_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_ID(1);
12544 l_event_class_rec.TRX_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_DATE(1);
12545 l_event_class_rec.REL_DOC_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RELATED_DOC_DATE(1);
12546 l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:= ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PROVNL_TAX_DETERMINATION_DATE(1);
12547 l_event_class_rec.TRX_CURRENCY_CODE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_CURRENCY_CODE(1);
12548 l_event_class_rec.CURRENCY_CONVERSION_TYPE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(1);
12549 l_event_class_rec.CURRENCY_CONVERSION_RATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(1);
12550 l_event_class_rec.CURRENCY_CONVERSION_DATE := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(1);
12551 l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_TO_PARTY_ID(1);
12552 l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_SHIP_FROM_PARTY_ID(1);
12553 l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_TO_PARTY_ID(1);
12554 l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ROUNDING_BILL_FROM_PARTY_ID(1);
12555 l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_TO_PARTY_SITE_ID(1);
12556 l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_SHIP_FROM_PARTY_SITE_ID(1);
12557 l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_TO_PARTY_SITE_ID(1);
12558 l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RNDG_BILL_FROM_PARTY_SITE_ID(1);
12562 | Set the event id for the whole document- Since this API is called for each transaction |
12559
12560
12561 /*------------------------------------------------------------------------------------------+
12563 | line, the event id needs to be generated from the sequence only for the first transaction|
12564 | line. For other lines, we need to retrieve the event id from the table. |
12565 | Also store the taxation country, document sub type from the line to be passed to |
12566 | defaulting API which will honor these header attributes of the line instead of trying to |
12567 | redefault them again |
12568 +-----------------------------------------------------------------------------------------*/
12569 l_record_exists := FALSE;
12570 FOR l_line_det_rec in lock_line_det_factors_for_doc(l_event_class_rec)
12571 LOOP
12572 l_record_exists := TRUE;
12573 l_event_class_rec.event_id := l_line_det_rec.event_id;
12574 exit;
12575 END LOOP;
12576
12577
12578 IF NOT(l_record_exists) THEN
12579 SELECT zx_lines_det_factors_s.nextval
12580 INTO l_event_class_rec.event_id
12581 FROM dual;
12582 END IF;
12583
12584 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12585 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
12586 'application_id: '||to_char(l_event_class_rec.application_id)||
12587 ', entity_code: '||l_event_class_rec.entity_code||
12588 ', event_class_code: '||l_event_class_rec.event_class_code||
12589 ', event_type_code: '||l_event_class_rec.event_type_code||
12590 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
12591 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
12592 ', ledger_id: '||to_char(l_event_class_rec.ledger_id)||
12593 ', legal_entity_id: '||to_char(l_event_class_rec.legal_entity_id)||
12594 ', trx_date: '||to_char(l_event_class_rec.trx_date)||
12595 ', related_document_date: '||to_char(l_event_class_rec.rel_doc_date)||
12596 ', provnl_tax_determination_date: '||to_char(l_event_class_rec.provnl_tax_determination_date)||
12597 ', trx_currency_code: '||l_event_class_rec.trx_currency_code||
12598 ', currency_conversion_type: '||l_event_class_rec.currency_conversion_type||
12599 ', currency_conversion_rate: '||to_char(l_event_class_rec.currency_conversion_rate)||
12600 ', currency_conversion_date: '||to_char(l_event_class_rec.currency_conversion_date)||
12601 ', rounding_ship_to_party_id: '||to_char(l_event_class_rec.rounding_ship_to_party_id)||
12602 ', rounding_ship_from_party_id: '||to_char(l_event_class_rec.rounding_ship_from_party_id)||
12603 ', rounding_bill_to_party_id: '||to_char(l_event_class_rec.rounding_bill_to_party_id)||
12604 ', rounding_bill_from_party_id: '||to_char(l_event_class_rec.rounding_bill_from_party_id)||
12605 ', rndg_ship_to_party_site_id: '||to_char(l_event_class_rec.rndg_ship_to_party_site_id)||
12606 ', rndg_ship_from_party_site_id: '||to_char(l_event_class_rec.rndg_ship_from_party_site_id)||
12607 ', rndg_bill_to_party_site_id: '||to_char(l_event_class_rec.rndg_bill_to_party_site_id)||
12608 ', rndg_bill_from_party_site_id: '||to_char(l_event_class_rec.rndg_bill_from_party_site_id)
12609 );
12610 END IF;
12611
12612 /*------------------------------------------------------+
12613 | Validate and Initializate parameters for Inserting |
12614 | into line_det_factors |
12615 +------------------------------------------------------*/
12616 ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors(p_event_class_rec =>l_event_class_rec,
12617 p_trx_line_index => 1,
12618 x_return_status =>l_return_status
12619 );
12620
12621 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12622 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12623 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
12624 ':ZX_VALID_INIT_PARAMS_PKG.insupd_line_det_factors returned errors');
12625 END IF;
12626 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
12627 RAISE FND_API.G_EXC_ERROR;
12628 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
12629 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12630 END IF;
12631 END IF;
12632
12633 /* =============================================*
12634 |Default the tax determining attributes |
12635 * ============================================*/
12636 /*If the Source Document Line identifiers are passed, then derive the values
12637 of the tax determining factors from ZX_LINES_DET_FACTORS for the source document line.*/
12638 FOR i in 1 .. nvl(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id.LAST,-99)
12639 LOOP
12640 SELECT
12641 default_taxation_country,
12642 document_sub_type,
12643 trx_business_category,
12644 line_intended_use,
12645 user_defined_fisc_class,
12646 product_fisc_classification,
12647 product_category,
12648 assessable_value,
12649 product_type,
12650 decode(l_event_class_rec.prod_family_grp_code,'P2P',input_tax_classification_code,
12651 'O2C',output_tax_classification_code),
12652 user_upd_det_factors_flag --Bug11694368
12653 INTO
12657 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_intended_use(i),
12654 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.default_taxation_country(i),
12655 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.document_sub_type(i),
12656 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_business_category(i),
12658 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.user_defined_fisc_class(i),
12659 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_fisc_classification(i),
12660 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_category(i),
12661 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.assessable_value(i),
12662 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_type(i),
12663 l_tax_classification_code,
12664 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.user_upd_det_factors_flag(i)
12665 FROM ZX_LINES_DET_FACTORS
12666 WHERE application_id = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_application_id(i)
12667 AND entity_code = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_entity_code(i)
12668 AND event_class_code = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(i)
12669 AND trx_id = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(i)
12670 AND trx_line_id = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_line_id(i)
12671 AND trx_level_type = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_level_type(i);
12672
12673 IF l_event_class_rec.prod_family_grp_code = 'P2P' THEN
12674 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.input_tax_classification_code(i) := l_tax_classification_code;
12675 ELSIF l_event_class_rec.prod_family_grp_code = 'O2C' AND --AR passes the tax classification code so do not override
12676 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.output_tax_classification_code(i) is null THEN
12677 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.output_tax_classification_code(i) := l_tax_classification_code;
12678 END IF;
12679 END LOOP;
12680 /*------------------------------------------+
12681 |Call to insert the lines |
12682 +------------------------------------------*/
12683 ZX_SRVC_TYP_PKG.insupd_line_det_factors(p_event_class_rec => l_event_class_rec,
12684 x_return_status => l_return_status
12685 );
12686
12687 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12688 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12689 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
12690 ':ZX_SRVC_TYP_PKG.insupd_line_det_factors returned errors');
12691 END IF;
12692 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
12693 RAISE FND_API.G_EXC_ERROR;
12694 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
12695 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12696 END IF;
12697 END IF;
12698
12699 --Delete from the global structures so that there are no hanging/redundant
12700 --records sitting there
12701 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
12702
12703 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12704 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
12705 END IF;
12706
12707 EXCEPTION
12708 WHEN FND_API.G_EXC_ERROR THEN
12709 ROLLBACK TO Copy_Ins_Line_Det_Factors_PVT;
12710 x_return_status := FND_API.G_RET_STS_ERROR ;
12711 DUMP_MSG;
12712 /*---------------------------------------------------------+
12713 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12714 | in the message stack. If there is only one message in |
12715 | the stack it retrieves this message |
12716 +---------------------------------------------------------*/
12717 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12718 p_count => x_msg_count,
12719 p_data => x_msg_data
12720 );
12721
12722 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12723 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12724 END IF;
12725
12726 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12727 ROLLBACK TO Copy_Ins_Line_Det_Factors_PVT;
12728 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12729 DUMP_MSG;
12730 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12731 FND_MSG_PUB.Add;
12732 /*---------------------------------------------------------+
12733 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12734 | in the message stack. If there is only one message in |
12735 | the stack it retrieves this message |
12736 +---------------------------------------------------------*/
12737 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12738 p_count => x_msg_count,
12739 p_data => x_msg_data
12740 );
12741 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12742 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12743 END IF;
12744
12745 WHEN OTHERS THEN
12746 /*-------------------------------------------------------+
12747 | Handle application errors that result from trapable |
12748 | error conditions. The error messages have already |
12749 | been put on the error stack. |
12750 +-------------------------------------------------------*/
12751 ROLLBACK TO Copy_Ins_Line_Det_Factors_PVT;
12752 IF (SQLCODE = 54) THEN
12753 x_return_status := FND_API.G_RET_STS_ERROR ;
12757 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12754 FND_MESSAGE.SET_NAME('ZX','ZX_RESOURCE_BUSY');
12755 ELSE
12756 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12758 END IF;
12759 FND_MSG_PUB.Add;
12760 /*---------------------------------------------------------+
12761 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12762 | in the message stack. If there is only one message in |
12763 | the stack it retrieves this message |
12764 +---------------------------------------------------------*/
12765 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12766 p_count => x_msg_count,
12767 p_data => x_msg_data
12768 );
12769
12770 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
12771 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
12772 END IF;
12773 END copy_insert_line_det_factors;
12774
12775
12776 /* ============================================================================*
12777 | PROCEDURE is_recoverability_affected : This procedure will determine |
12778 | whether some accounting related information can be modified on the item |
12779 | distribution from tax point of view. |
12780 * ============================================================================*/
12781 PROCEDURE is_recoverability_affected(
12782 p_api_version IN NUMBER,
12783 p_init_msg_list IN VARCHAR2,
12784 p_commit IN VARCHAR2,
12785 p_validation_level IN NUMBER,
12786 x_return_status OUT NOCOPY VARCHAR2,
12787 x_msg_count OUT NOCOPY NUMBER,
12788 x_msg_data OUT NOCOPY VARCHAR2,
12789 p_pa_item_info_tbl IN OUT NOCOPY pa_item_info_tbl_type
12790 )IS
12791 l_api_name CONSTANT VARCHAR2(30) := 'IS_RECOVERABILITY_AFFECTED';
12792 l_api_version CONSTANT NUMBER := 1.0;
12793 l_return_status VARCHAR2(1);
12794 l_init_msg_list VARCHAR2(1);
12795
12796 BEGIN
12797 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12798 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
12799 END IF;
12800
12801 /*--------------------------------------------------+
12802 | Standard start of API savepoint |
12803 +--------------------------------------------------*/
12804 SAVEPOINT Is_Recoverability_Affected_PVT;
12805
12806 /*--------------------------------------------------+
12807 | Standard call to check for call compatibility |
12808 +--------------------------------------------------*/
12809 IF NOT FND_API.Compatible_API_Call(l_api_version,
12810 p_api_version,
12811 l_api_name,
12812 G_PKG_NAME
12813 ) THEN
12814 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12815 END IF;
12816
12817 /*--------------------------------------------------------------+
12818 | Initialize message list if p_init_msg_list is set to TRUE |
12819 +--------------------------------------------------------------*/
12820 IF p_init_msg_list is null THEN
12821 l_init_msg_list := FND_API.G_FALSE;
12822 ELSE
12823 l_init_msg_list := p_init_msg_list;
12824 END IF;
12825
12826 IF FND_API.to_Boolean(l_init_msg_list) THEN
12827 FND_MSG_PUB.initialize;
12828 END IF;
12829
12830 /*-----------------------------------------+
12831 | Initialize return status to SUCCESS |
12832 +-----------------------------------------*/
12833 x_return_status := FND_API.G_RET_STS_SUCCESS;
12834
12835 /*-----------------------------------------+
12836 | Populate Global Variable |
12837 +-----------------------------------------*/
12838 G_PUB_SRVC := l_api_name;
12839 G_DATA_TRANSFER_MODE := 'PLS';
12840 G_EXTERNAL_API_CALL := 'N';
12841
12842 IF ( G_LEVEL_EVENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12843 FND_LOG.STRING(G_LEVEL_EVENT,G_MODULE_NAME||l_api_name,
12844 'Call TRD service to determine if accouting info on distributions can be modified'
12845 );
12846 END IF;
12847
12848 ZX_TRD_SERVICES_PUB_PKG.is_recoverability_affected(p_pa_item_info_tbl => p_pa_item_info_tbl,
12849 x_return_status => l_return_status
12850 );
12851
12852 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12853 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12854 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
12855 ':ZX_TRD_SERVICES_PUB_PKG.is_recoverability_affected returned errors');
12856 END IF;
12857 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
12858 RAISE FND_API.G_EXC_ERROR;
12859 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
12860 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12861 END IF;
12862 END IF;
12863
12864 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12865 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
12866 END IF;
12867
12868 EXCEPTION
12869 WHEN FND_API.G_EXC_ERROR THEN
12870 ROLLBACK TO Is_Recoverability_Affected_PVT;
12871 x_return_status := FND_API.G_RET_STS_ERROR ;
12872 DUMP_MSG;
12876 | the stack it retrieves this message |
12873 /*---------------------------------------------------------+
12874 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12875 | in the message stack. If there is only one message in |
12877 +---------------------------------------------------------*/
12878 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12879 p_count => x_msg_count,
12880 p_data => x_msg_data
12881 );
12882
12883 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12884 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12885 END IF;
12886
12887 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
12888 ROLLBACK TO Is_Recoverability_Affected_PVT;
12889 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12890 DUMP_MSG;
12891 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12892 FND_MSG_PUB.Add;
12893 /*---------------------------------------------------------+
12894 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12895 | in the message stack. If there is only one message in |
12896 | the stack it retrieves this message |
12897 +---------------------------------------------------------*/
12898 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12899 p_count => x_msg_count,
12900 p_data => x_msg_data
12901 );
12902
12903 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
12904 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
12905 END IF;
12906
12907 WHEN OTHERS THEN
12908 ROLLBACK TO Is_Recoverability_Affected_PVT;
12909 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
12910 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
12911 FND_MSG_PUB.Add;
12912 /*---------------------------------------------------------+
12913 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
12914 | in the message stack. If there is only one message in |
12915 | the stack it retrieves this message |
12916 +---------------------------------------------------------*/
12917 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12918 p_count => x_msg_count,
12919 p_data => x_msg_data
12920 );
12921 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
12922 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
12923 END IF;
12924
12925 END is_recoverability_affected;
12926
12927 /* ======================================================================*
12928 | PROCEDURE delete_tax_line_and_distributions: |
12929 * ======================================================================*/
12930
12931 PROCEDURE del_tax_line_and_distributions(
12932 p_api_version IN NUMBER,
12933 p_init_msg_list IN VARCHAR2,
12934 p_commit IN VARCHAR2,
12935 p_validation_level IN NUMBER,
12936 x_return_status OUT NOCOPY VARCHAR2 ,
12937 x_msg_count OUT NOCOPY NUMBER ,
12938 x_msg_data OUT NOCOPY VARCHAR2 ,
12939 p_transaction_line_rec IN OUT NOCOPY transaction_line_rec_type
12940 )IS
12941 l_api_name CONSTANT VARCHAR2(30) := 'DEL_TAX_LINE_AND_DISTRIBUTIONS';
12942 l_api_version CONSTANT NUMBER := 1.0;
12943 l_return_status VARCHAR2(1);
12944 l_init_msg_list VARCHAR2(1);
12945
12946 --Added for Bug#16483600 JAI ZX Integration
12947 lb_jai_exists BOOLEAN := FALSE;
12948 l_transaction_rec ZX_API_PUB.transaction_rec_type;
12949
12950 BEGIN
12951 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
12952 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
12953 END IF;
12954
12955 /*--------------------------------------------------+
12956 | Standard start of API savepoint |
12957 +--------------------------------------------------*/
12958 SAVEPOINT Del_Tax_Line_And_Dists_PVT;
12959
12960 /*--------------------------------------------------+
12961 | Standard call to check for call compatibility |
12962 +--------------------------------------------------*/
12963 IF NOT FND_API.Compatible_API_Call(l_api_version,
12964 p_api_version,
12965 l_api_name,
12966 G_PKG_NAME
12967 ) THEN
12968 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12969 END IF;
12970
12971 /*--------------------------------------------------------------+
12972 | Initialize message list if p_init_msg_list is set to TRUE |
12973 +--------------------------------------------------------------*/
12974 IF p_init_msg_list is null THEN
12975 l_init_msg_list := FND_API.G_FALSE;
12976 ELSE
12977 l_init_msg_list := p_init_msg_list;
12978 END IF;
12979
12980 IF FND_API.to_Boolean(l_init_msg_list) THEN
12981 FND_MSG_PUB.initialize;
12982 END IF;
12983
12984 /*-----------------------------------------+
12985 | Initialize return status to SUCCESS |
12986 +-----------------------------------------*/
12987 x_return_status := FND_API.G_RET_STS_SUCCESS;
12988
12992 G_PUB_SRVC := l_api_name;
12989 /*-----------------------------------------+
12990 | Populate Global Variable |
12991 +-----------------------------------------*/
12993 G_DATA_TRANSFER_MODE := 'PLS';
12994 G_EXTERNAL_API_CALL := 'N';
12995
12996 /*--------------------------------------------+
12997 | Added for JAI Trigger Elimination |
12998 | for JAI PO document and line delete |
12999 +---------------------------------------------*/
13000 -- Start : Added for JAI Trigger Elimination : Bug#16483600 JAI ZX Integration
13001 lb_jai_exists := JAI_TAX_PROCESSING_PKG.CHECK_JAI_EXISTS_IN_ZX(
13002 pn_set_of_books_id => NULL,
13003 pv_entity_code => p_transaction_line_rec.entity_code,
13004 pn_trx_id => p_transaction_line_rec.trx_id
13005
13006 );
13007 IF lb_jai_exists THEN
13008 IF p_transaction_line_rec.entity_code = 'PURCHASE_ORDER'
13009 AND p_transaction_line_rec.event_class_code = 'PO_PA'
13010 AND p_transaction_line_rec.event_type_code ='PO_PA_ADJUSTED'
13011 AND p_transaction_line_rec.application_id = 7000
13012 THEN
13013 --Reset the application_id to 201 since application id in p_transaction_line_rec is 7000
13014 --and get all the required parameters from global variables
13015 l_transaction_rec.application_id := 201;
13016 l_transaction_rec.entity_code := p_transaction_line_rec.entity_code;
13017 l_transaction_rec.event_class_code := p_transaction_line_rec.event_class_code;
13018 l_transaction_rec.event_type_code := p_transaction_line_rec.event_type_code;
13019 l_transaction_rec.trx_id := p_transaction_line_rec.trx_id;
13020 --JAI call placed here for processing delete JAI records
13021 JAI_TAX_PROCESSING_PKG.CALCULATE_TAX(p_transaction_rec => l_transaction_rec
13022 ,p_event_class_rec => NULL
13023 ,p_line_level_action => NULL
13024 ,p_trx_line_id => p_transaction_line_rec.trx_line_id
13025 ,x_return_status => l_return_status
13026 );
13027
13028 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13029 x_return_status := l_return_status;
13030 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13031 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
13032 ' JAI_TAX_PROCESSING_PKG.CALCULATE_TAX RETURN_STATUS = ' || x_return_status);
13033 END IF;
13034 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
13035 RAISE FND_API.G_EXC_ERROR;
13036 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
13037 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13038 END IF;
13039 END IF;
13040 END IF;
13041 END IF;
13042 -- End : Added for JAI Trigger Elimination
13043
13044 /*-----------------------------------------+
13045 | Delete transaction line |
13046 +-----------------------------------------*/
13047
13048 DELETE from ZX_LINES_DET_FACTORS
13049 WHERE application_id = p_transaction_line_rec.application_id
13050 AND entity_code = p_transaction_line_rec.entity_code
13051 AND event_class_code = p_transaction_line_rec.event_class_code
13052 AND trx_id = p_transaction_line_rec.trx_id
13053 AND trx_line_id = p_transaction_line_rec.trx_line_id
13054 AND trx_level_type = p_transaction_line_rec.trx_level_type;
13055
13056
13057 /*-----------------------------------------+
13058 | Delete tax line and distributions |
13059 +-----------------------------------------*/
13060 ZX_TRL_PUB_PKG.delete_tax_lines_and_dists(p_application_id => p_transaction_line_rec.application_id,
13061 p_entity_code => p_transaction_line_rec.entity_code,
13062 p_event_class_code => p_transaction_line_rec.event_class_code,
13063 p_trx_id => p_transaction_line_rec.trx_id,
13064 p_trx_line_id => p_transaction_line_rec.trx_line_id,
13065 p_trx_level_type => p_transaction_line_rec.trx_level_type,
13066 x_return_status => l_return_status
13067 );
13068 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13069 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13070 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13071 ':ZX_TRL_PUB_PKG.delete_tax_lines_and_dists returned errors');
13072 END IF;
13073 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
13074 RAISE FND_API.G_EXC_ERROR;
13075 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
13076 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13077 END IF;
13078 END IF;
13079
13080 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13081 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
13082 END IF;
13083
13084 EXCEPTION
13085 WHEN FND_API.G_EXC_ERROR THEN
13086 ROLLBACK TO Del_Tax_Line_And_Dists_PVT;
13087 x_return_status := FND_API.G_RET_STS_ERROR ;
13088 DUMP_MSG;
13089 /*---------------------------------------------------------+
13090 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13094 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13091 | in the message stack. If there is only one message in |
13092 | the stack it retrieves this message |
13093 +---------------------------------------------------------*/
13095 p_count => x_msg_count,
13096 p_data => x_msg_data
13097 );
13098
13099 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13100 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13101 END IF;
13102
13103 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13104 ROLLBACK TO Del_Tax_Line_And_Dists_PVT;
13105 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13106 DUMP_MSG;
13107 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13108 FND_MSG_PUB.Add;
13109 /*---------------------------------------------------------+
13110 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13111 | in the message stack. If there is only one message in |
13112 | the stack it retrieves this message |
13113 +---------------------------------------------------------*/
13114 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13115 p_count => x_msg_count,
13116 p_data => x_msg_data
13117 );
13118
13119 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13120 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13121 END IF;
13122
13123 WHEN OTHERS THEN
13124 ROLLBACK TO Del_Tax_Line_And_Dists_PVT;
13125 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13126 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13127 FND_MSG_PUB.Add;
13128 /*---------------------------------------------------------+
13129 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13130 | in the message stack. If there is only one message in |
13131 | the stack it retrieves this message |
13132 +---------------------------------------------------------*/
13133 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13134 p_count => x_msg_count,
13135 p_data => x_msg_data
13136 );
13137 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
13138 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
13139 END IF;
13140
13141 END del_tax_line_and_distributions;
13142
13143 /* ======================================================================*
13144 | PROCEDURE delete_tax_distributions: |
13145 * ======================================================================*/
13146
13147 PROCEDURE delete_tax_distributions(
13148 p_api_version IN NUMBER,
13149 p_init_msg_list IN VARCHAR2,
13150 p_commit IN VARCHAR2,
13151 p_validation_level IN NUMBER,
13152 x_return_status OUT NOCOPY VARCHAR2 ,
13153 x_msg_count OUT NOCOPY NUMBER ,
13154 x_msg_data OUT NOCOPY VARCHAR2 ,
13155 p_transaction_line_rec IN OUT NOCOPY transaction_line_rec_type
13156 )IS
13157 l_api_name CONSTANT VARCHAR2(30) := 'DEL_TAX_DISTRIBUTIONS';
13158 l_api_version CONSTANT NUMBER := 1.0;
13159 l_return_status VARCHAR2(1);
13160 l_init_msg_list VARCHAR2(1);
13161
13162 BEGIN
13163 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13164 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
13165 END IF;
13166
13167 /*--------------------------------------------------+
13168 | Standard start of API savepoint |
13169 +--------------------------------------------------*/
13170 SAVEPOINT Del_Tax_Distributions_PVT;
13171
13172 /*--------------------------------------------------+
13173 | Standard call to check for call compatibility |
13174 +--------------------------------------------------*/
13175 IF NOT FND_API.Compatible_API_Call(l_api_version,
13176 p_api_version,
13177 l_api_name,
13178 G_PKG_NAME
13179 ) THEN
13180 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13181 END IF;
13182
13183 /*--------------------------------------------------------------+
13184 | Initialize message list if p_init_msg_list is set to TRUE |
13185 +--------------------------------------------------------------*/
13186 IF p_init_msg_list is null THEN
13187 l_init_msg_list := FND_API.G_FALSE;
13188 ELSE
13189 l_init_msg_list := p_init_msg_list;
13190 END IF;
13191
13192 IF FND_API.to_Boolean(l_init_msg_list) THEN
13193 FND_MSG_PUB.initialize;
13194 END IF;
13195
13196 /*-----------------------------------------+
13197 | Initialize return status to SUCCESS |
13198 +-----------------------------------------*/
13199 x_return_status := FND_API.G_RET_STS_SUCCESS;
13200
13201 /*-----------------------------------------+
13202 | Populate Global Variable |
13206 G_EXTERNAL_API_CALL := 'N';
13203 +-----------------------------------------*/
13204 G_PUB_SRVC := l_api_name;
13205 G_DATA_TRANSFER_MODE := 'PLS';
13207
13208 /*-----------------------------------------+
13209 | Delete tax distributions |
13210 +-----------------------------------------*/
13211 IF ( G_LEVEL_EVENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13212 FND_LOG.STRING(G_LEVEL_EVENT,G_MODULE_NAME||l_api_name,
13213 'Call TRL service to delete tax distributions'
13214 );
13215 END IF;
13216
13217 ZX_TRL_PUB_PKG.delete_tax_dists (p_application_id => p_transaction_line_rec.application_id,
13218 p_entity_code => p_transaction_line_rec.entity_code,
13219 p_event_class_code => p_transaction_line_rec.event_class_code,
13220 p_trx_id => p_transaction_line_rec.trx_id,
13221 p_trx_line_id => p_transaction_line_rec.trx_line_id,
13222 p_trx_level_type => p_transaction_line_rec.trx_level_type,
13223 x_return_status => l_return_status
13224 );
13225 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13226 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13227 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13228 ':ZX_TRL_PUB_PKG.delete_tax_dists returned errors');
13229 END IF;
13230 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
13231 RAISE FND_API.G_EXC_ERROR;
13232 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
13233 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13234 END IF;
13235 END IF;
13236
13237 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13238 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
13239 END IF;
13240
13241 EXCEPTION
13242 WHEN FND_API.G_EXC_ERROR THEN
13243 ROLLBACK TO Del_Tax_Distributions_PVT;
13244 x_return_status := FND_API.G_RET_STS_ERROR ;
13245 DUMP_MSG;
13246 /*---------------------------------------------------------+
13247 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13248 | in the message stack. If there is only one message in |
13249 | the stack it retrieves this message |
13250 +---------------------------------------------------------*/
13251 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13252 p_count => x_msg_count,
13253 p_data => x_msg_data
13254 );
13255
13256 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13257 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13258 END IF;
13259
13260 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13261 ROLLBACK TO Del_Tax_Distributions_PVT;
13262 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13263 DUMP_MSG;
13264 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13265 FND_MSG_PUB.Add;
13266 /*---------------------------------------------------------+
13267 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13268 | in the message stack. If there is only one message in |
13269 | the stack it retrieves this message |
13270 +---------------------------------------------------------*/
13271 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13272 p_count => x_msg_count,
13273 p_data => x_msg_data
13274 );
13275
13276 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13277 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13278 END IF;
13279
13280 WHEN OTHERS THEN
13281 ROLLBACK TO Del_Tax_Distributions_PVT;
13282 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13283 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13284 FND_MSG_PUB.Add;
13285 /*---------------------------------------------------------+
13286 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13287 | in the message stack. If there is only one message in |
13288 | the stack it retrieves this message |
13289 +---------------------------------------------------------*/
13290 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13291 p_count => x_msg_count,
13292 p_data => x_msg_data
13293 );
13294 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
13295 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
13296 END IF;
13297
13298 END delete_tax_distributions;
13299
13300 -----------------------------------------------------------------------
13301 -- PUBLIC PROCEDURE
13302 -- get_default_tax_det_attrs
13303 --
13304 -- DESCRIPTION
13305 -- This overloaded procedure acts as a wrapper on TDS default_tax_attribs
13306 -- procedure to default the tax determining attributes. It follows the
13307 -- following logic defaulting the determining attributes.
13308 --
13309 -- Fetch from zx_trx_headers_gt and zx_trx_transaction_lines_gt into
13310 -- global structure zx_global_structures_pkg.trx_line_dist_tbl
13311 -- For records in trx_line_dist_tbl
13312 -- Loop
13313 -- If line_level_action is UPDATE
13314 -- If all tax determining attributes are passed null
13318 -- if item/item_org_id/assessable value has changed
13315 -- Fetch all attributes from zx_lines_det_factors
13316 -- if item/item_org_id/country has changed
13317 -- call RE-defaulting API for intended_use, product_fiscal_classification
13319 -- call redefaulting API for assessable value
13320 -- Always call the tax classification defaulting API
13321 -- ELSIF line level action is CREATE
13322 -- IF historical_tax_code_id/global_attribute_category/global_Attribute1 passed
13323 -- redefault the tax attributes for PO (on the fly migration)
13324 -- elsif historical tax code id/global_attribute_category/global_attribute1 null
13325 -- If adjusted_doc informaiton passed
13326 -- default from adjusted_doc
13327 -- elsif applied_from information passed
13328 -- default from applied_from
13329 -- elsif soure_doc information passed
13330 -- default from source
13331 -- else
13332 -- call the TDM default API
13333 -- End loop
13334 -- Update the GTTs with the defaulting attributes derived here.
13335
13336 -- CALLED BY
13337 -- populateTaxAttributes java method given to iP/PO
13338 -- directly from forms
13339 ----------------------------------------------------------------------
13340 PROCEDURE get_default_tax_det_attribs(
13341 p_api_version IN NUMBER,
13342 p_init_msg_list IN VARCHAR2,
13343 p_commit IN VARCHAR2,
13344 p_validation_level IN NUMBER,
13345 x_return_status OUT NOCOPY VARCHAR2,
13346 x_msg_count OUT NOCOPY NUMBER,
13347 x_msg_data OUT NOCOPY VARCHAR2
13348 )IS
13349 l_api_name CONSTANT VARCHAR2(30) := 'GET_DEFAULT_TAX_DET_ATTRIBS';
13350 l_api_version CONSTANT NUMBER := 1.0;
13351 l_return_status VARCHAR2(1);
13352 l_init_msg_list VARCHAR2(1);
13353 l_event_class_rec event_class_rec_type;
13354 l_context_info_rec context_info_rec_type;
13355 l_transaction_header_rec transaction_header_rec_type;
13356
13357 CURSOR headers_doc IS
13358 SELECT INTERNAL_ORGANIZATION_ID,
13359 LEGAL_ENTITY_ID,
13360 LEDGER_ID,
13361 APPLICATION_ID,
13362 ENTITY_CODE,
13363 EVENT_CLASS_CODE,
13364 EVENT_TYPE_CODE,
13365 CTRL_TOTAL_HDR_TX_AMT,
13366 TRX_ID,
13367 TRX_DATE,
13368 RELATED_DOC_DATE,
13369 PROVNL_TAX_DETERMINATION_DATE,
13370 TRX_CURRENCY_CODE,
13371 PRECISION,
13372 CURRENCY_CONVERSION_TYPE,
13373 CURRENCY_CONVERSION_RATE,
13374 CURRENCY_CONVERSION_DATE,
13375 ROUNDING_SHIP_TO_PARTY_ID,
13376 ROUNDING_SHIP_FROM_PARTY_ID,
13377 ROUNDING_BILL_TO_PARTY_ID,
13378 ROUNDING_BILL_FROM_PARTY_ID,
13379 RNDG_SHIP_TO_PARTY_SITE_ID,
13380 RNDG_SHIP_FROM_PARTY_SITE_ID,
13381 RNDG_BILL_TO_PARTY_SITE_ID,
13382 RNDG_BILL_FROM_PARTY_SITE_ID,
13383 QUOTE_FLAG,
13384 ESTABLISHMENT_ID
13385 FROM ZX_TRX_HEADERS_GT;
13386
13387 BEGIN
13388 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13389 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
13390 END IF;
13391
13392 /*--------------------------------------------------+
13393 | Standard start of API savepoint |
13394 +--------------------------------------------------*/
13395 SAVEPOINT Get_Default_Tax_Det_Attrs_PVT;
13396
13397 /*--------------------------------------------------+
13398 | Standard call to check for call compatibility |
13399 +--------------------------------------------------*/
13400 IF NOT FND_API.Compatible_API_Call(l_api_version,
13401 p_api_version,
13402 l_api_name,
13403 G_PKG_NAME
13404 ) THEN
13405 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13406 END IF;
13407
13408 /*--------------------------------------------------------------+
13409 | Initialize message list if p_init_msg_list is set to TRUE |
13410 +--------------------------------------------------------------*/
13411 IF p_init_msg_list is null THEN
13412 l_init_msg_list := FND_API.G_FALSE;
13413 ELSE
13414 l_init_msg_list := p_init_msg_list;
13415 END IF;
13416
13417 IF FND_API.to_Boolean(l_init_msg_list) THEN
13418 FND_MSG_PUB.initialize;
13419 END IF;
13420
13421 /*-----------------------------------------+
13422 | Initialize return status to SUCCESS |
13423 +-----------------------------------------*/
13424 x_return_status := FND_API.G_RET_STS_SUCCESS;
13425
13426 /*-----------------------------------------+
13427 | Populate Global Variable |
13428 +-----------------------------------------*/
13429 G_PUB_SRVC := l_api_name;
13430 G_DATA_TRANSFER_MODE := 'TAB';
13431 G_EXTERNAL_API_CALL := 'N';
13432
13433 OPEN headers_doc;
13434 LOOP
13435 FETCH headers_doc BULK COLLECT INTO
13436 l_transaction_header_rec.INTERNAL_ORGANIZATION_ID,
13437 l_transaction_header_rec.LEGAL_ENTITY_ID,
13438 l_transaction_header_rec.LEDGER_ID,
13439 l_transaction_header_rec.APPLICATION_ID,
13440 l_transaction_header_rec.ENTITY_CODE,
13444 l_transaction_header_rec.TRX_ID,
13441 l_transaction_header_rec.EVENT_CLASS_CODE,
13442 l_transaction_header_rec.EVENT_TYPE_CODE,
13443 l_transaction_header_rec.CTRL_TOTAL_HDR_TX_AMT,
13445 l_transaction_header_rec.TRX_DATE,
13446 l_transaction_header_rec.REL_DOC_DATE,
13447 l_transaction_header_rec.PROVNL_TAX_DETERMINATION_DATE,
13448 l_transaction_header_rec.TRX_CURRENCY_CODE,
13449 l_transaction_header_rec.PRECISION,
13450 l_transaction_header_rec.CURRENCY_CONVERSION_TYPE,
13451 l_transaction_header_rec.CURRENCY_CONVERSION_RATE,
13452 l_transaction_header_rec.CURRENCY_CONVERSION_DATE,
13453 l_transaction_header_rec.ROUNDING_SHIP_TO_PARTY_ID,
13454 l_transaction_header_rec.ROUNDING_SHIP_FROM_PARTY_ID,
13455 l_transaction_header_rec.ROUNDING_BILL_TO_PARTY_ID,
13456 l_transaction_header_rec.ROUNDING_BILL_FROM_PARTY_ID,
13457 l_transaction_header_rec.RNDG_SHIP_TO_PARTY_SITE_ID,
13458 l_transaction_header_rec.RNDG_SHIP_FROM_PARTY_SITE_ID,
13459 l_transaction_header_rec.RNDG_BILL_TO_PARTY_SITE_ID,
13460 l_transaction_header_rec.RNDG_BILL_FROM_PARTY_SITE_ID,
13461 l_transaction_header_rec.QUOTE_FLAG,
13462 l_transaction_header_rec.ESTABLISHMENT_ID
13463 LIMIT G_LINES_PER_FETCH;
13464
13465 FOR l_index IN 1..nvl(l_transaction_header_rec.application_id.LAST,0)
13466 LOOP
13467 BEGIN
13468 SAVEPOINT Get_Def_Tax_Det_Attrs_Doc_PVT;
13469 l_event_class_rec.INTERNAL_ORGANIZATION_ID := l_transaction_header_rec.INTERNAL_ORGANIZATION_ID(l_index);
13470 l_event_class_rec.LEGAL_ENTITY_ID := l_transaction_header_rec.LEGAL_ENTITY_ID(l_index);
13471 l_event_class_rec.LEDGER_ID := l_transaction_header_rec.LEDGER_ID(l_index);
13472 l_event_class_rec.APPLICATION_ID := l_transaction_header_rec.APPLICATION_ID(l_index);
13473 l_event_class_rec.ENTITY_CODE := l_transaction_header_rec.ENTITY_CODE(l_index);
13474 l_event_class_rec.EVENT_CLASS_CODE := l_transaction_header_rec.EVENT_CLASS_CODE(l_index);
13475 l_event_class_rec.EVENT_TYPE_CODE := l_transaction_header_rec.EVENT_TYPE_CODE(l_index);
13476 l_event_class_rec.CTRL_TOTAL_HDR_TX_AMT := l_transaction_header_rec.CTRL_TOTAL_HDR_TX_AMT(l_index);
13477 l_event_class_rec.TRX_ID := l_transaction_header_rec.TRX_ID(l_index);
13478 l_event_class_rec.TRX_DATE := l_transaction_header_rec.TRX_DATE(l_index);
13479 l_event_class_rec.REL_DOC_DATE := l_transaction_header_rec.REL_DOC_DATE(l_index);
13480 l_event_class_rec.PROVNL_TAX_DETERMINATION_DATE:= l_transaction_header_rec.PROVNL_TAX_DETERMINATION_DATE(l_index);
13481 l_event_class_rec.TRX_CURRENCY_CODE := l_transaction_header_rec.TRX_CURRENCY_CODE(l_index);
13482 l_event_class_rec.PRECISION := l_transaction_header_rec.PRECISION(l_index);
13483 l_event_class_rec.CURRENCY_CONVERSION_TYPE := l_transaction_header_rec.CURRENCY_CONVERSION_TYPE(l_index);
13484 l_event_class_rec.CURRENCY_CONVERSION_RATE := l_transaction_header_rec.CURRENCY_CONVERSION_RATE(l_index);
13485 l_event_class_rec.CURRENCY_CONVERSION_DATE := l_transaction_header_rec.CURRENCY_CONVERSION_DATE(l_index);
13486 l_event_class_rec.ROUNDING_SHIP_TO_PARTY_ID := l_transaction_header_rec.ROUNDING_SHIP_TO_PARTY_ID(l_index);
13487 l_event_class_rec.ROUNDING_SHIP_FROM_PARTY_ID := l_transaction_header_rec.ROUNDING_SHIP_FROM_PARTY_ID(l_index);
13488 l_event_class_rec.ROUNDING_BILL_TO_PARTY_ID := l_transaction_header_rec.ROUNDING_BILL_TO_PARTY_ID(l_index);
13489 l_event_class_rec.ROUNDING_BILL_FROM_PARTY_ID := l_transaction_header_rec.ROUNDING_BILL_FROM_PARTY_ID(l_index);
13490 l_event_class_rec.RNDG_SHIP_TO_PARTY_SITE_ID := l_transaction_header_rec.RNDG_SHIP_TO_PARTY_SITE_ID(l_index);
13491 l_event_class_rec.RNDG_SHIP_FROM_PARTY_SITE_ID := l_transaction_header_rec.RNDG_SHIP_FROM_PARTY_SITE_ID(l_index);
13492 l_event_class_rec.RNDG_BILL_TO_PARTY_SITE_ID := l_transaction_header_rec.RNDG_BILL_TO_PARTY_SITE_ID(l_index);
13493 l_event_class_rec.RNDG_BILL_FROM_PARTY_SITE_ID := l_transaction_header_rec.RNDG_BILL_FROM_PARTY_SITE_ID(l_index);
13494 l_event_class_rec.QUOTE_FLAG := nvl(l_transaction_header_rec.QUOTE_FLAG(l_index),'N');
13495
13496 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13497 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
13498 'application_id: '||to_char(l_event_class_rec.application_id)||
13499 ', entity_code: '||l_event_class_rec.entity_code||
13500 ', event_class_code: '||l_event_class_rec.event_class_code||
13501 ', event_type_code: '||l_event_class_rec.event_type_code||
13502 ', trx_id: '||to_char(l_event_class_rec.trx_id)||
13503 ', internal_organization_id: '||to_char(l_event_class_rec.internal_organization_id)||
13504 ', ledger_id: '||to_char(l_event_class_rec.ledger_id)||
13505 ', legal_entity_id: '||to_char(l_event_class_rec.legal_entity_id)||
13506 ', trx_date: '||to_char(l_event_class_rec.trx_date)||
13507 ', related_document_date: '||to_char(l_event_class_rec.rel_doc_date)||
13508 ', provnl_tax_determination_date: '||to_char(l_event_class_rec.provnl_tax_determination_date)||
13509 ', trx_currency_code: '||l_event_class_rec.trx_currency_code||
13510 ', currency_conversion_type: '||l_event_class_rec.currency_conversion_type||
13511 ', currency_conversion_rate: '||to_char(l_event_class_rec.currency_conversion_rate)||
13512 ', currency_conversion_date: '||to_char(l_event_class_rec.currency_conversion_date)||
13516 ', rounding_bill_from_party_id: '||to_char(l_event_class_rec.rounding_bill_from_party_id)||
13513 ', rounding_ship_to_party_id: '||to_char(l_event_class_rec.rounding_ship_to_party_id)||
13514 ', rounding_ship_from_party_id: '||to_char(l_event_class_rec.rounding_ship_from_party_id)||
13515 ', rounding_bill_to_party_id: '||to_char(l_event_class_rec.rounding_bill_to_party_id)||
13517 ', rndg_ship_to_party_site_id: '||to_char(l_event_class_rec.rndg_ship_to_party_site_id)||
13518 ', rndg_ship_from_party_site_id: '||to_char(l_event_class_rec.rndg_ship_from_party_site_id)||
13519 ', rndg_bill_to_party_site_id: '||to_char(l_event_class_rec.rndg_bill_to_party_site_id)||
13520 ', rndg_bill_from_party_site_id: '||to_char(l_event_class_rec.rndg_bill_from_party_site_id));
13521 END IF;
13522
13523 /*------------------------------------------------------+
13524 | Validate and Initializate parameters for Calculate |
13525 | tax |
13526 +------------------------------------------------------*/
13527 ZX_VALID_INIT_PARAMS_PKG.get_default_tax_det_attrs(p_event_class_rec => l_event_class_rec,
13528 x_return_status => l_return_status
13529 );
13530
13531 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13532 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13533 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13534 ':ZX_VALID_INIT_PARAMS_PKG.get_default_tax_det_attrs returned errors');
13535 END IF;
13536 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
13537 RAISE FND_API.G_EXC_ERROR;
13538 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
13539 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13540 END IF;
13541 END IF;
13542
13543 /*------------------------------------------------------+
13544 | Call the redefaulting APIs |
13545 +------------------------------------------------------*/
13546 ZX_SRVC_TYP_PKG.get_default_tax_det_attrs(p_event_class_rec => l_event_class_rec,
13547 x_return_status => l_return_status
13548 );
13549
13550 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13551 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13552 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13553 ':ZX_SRVC_TYP_PKG.get_default_tax_det_attrs returned errors');
13554 END IF;
13555 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
13556 RAISE FND_API.G_EXC_ERROR;
13557 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
13558 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13559 END IF;
13560 END IF;
13561
13562 --Delete from the global structure for every loop on header
13563 --so that there are no hanging/redundant records sitting there
13564 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13565 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
13566 'Calling routine to delete the global structures ');
13567 END IF;
13568 ZX_GLOBAL_STRUCTURES_PKG.delete_trx_line_dist_tbl;
13569
13570 EXCEPTION
13571 WHEN FND_API.G_EXC_ERROR THEN
13572 ROLLBACK TO Get_Def_Tax_Det_Attrs_Doc_PVT;
13573 x_return_status := FND_API.G_RET_STS_ERROR ;
13574 --Call API to dump into zx_errors_gt
13575 DUMP_MSG;
13576 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13577 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13578 END IF;
13579 END;
13580 END LOOP;--for headers_doc
13581 EXIT WHEN headers_doc%NOTFOUND;
13582 END LOOP;
13583 CLOSE headers_doc;
13584
13585 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13586 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
13587 END IF;
13588
13589 EXCEPTION
13590 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13591 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
13592 --Close all open cursors
13593 IF headers_doc%ISOPEN THEN CLOSE headers_doc; END IF;
13594 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13595 DUMP_MSG;
13596 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13597 FND_MSG_PUB.Add;
13598 /*---------------------------------------------------------+
13599 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13600 | in the message stack. If there is only one message in |
13601 | the stack it retrieves this message |
13602 +---------------------------------------------------------*/
13603 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13604 p_count => x_msg_count,
13605 p_data => x_msg_data
13606 );
13607 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13608 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13612 ROLLBACK TO Get_Default_Tax_Det_Attrs_PVT;
13609 END IF;
13610
13611 WHEN OTHERS THEN
13613 --Close all open cursors
13614 IF headers_doc%ISOPEN THEN CLOSE headers_doc; END IF;
13615 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13616 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13617 FND_MSG_PUB.Add;
13618 /*---------------------------------------------------------+
13619 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13620 | in the message stack. If there is only one message in |
13621 | the stack it retrieves this message |
13622 +---------------------------------------------------------*/
13623 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
13624 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
13625 END IF;
13626 END get_default_tax_det_attribs;
13627
13628 /* ======================================================================*
13629 | PROCEDURE redefault_intended_use: Redefault intended use |
13630 * ======================================================================*/
13631
13632 PROCEDURE redefault_intended_use(
13633 p_api_version IN NUMBER,
13634 p_init_msg_list IN VARCHAR2,
13635 p_commit IN VARCHAR2,
13636 p_validation_level IN NUMBER,
13637 x_return_status OUT NOCOPY VARCHAR2,
13638 x_msg_count OUT NOCOPY NUMBER ,
13639 x_msg_data OUT NOCOPY VARCHAR2,
13640 p_application_id IN NUMBER,
13641 p_entity_code IN VARCHAR2,
13642 p_event_class_code IN VARCHAR2,
13643 p_internal_org_id IN NUMBER,
13644 p_country_code IN VARCHAR2,
13645 p_item_id IN NUMBER,
13646 p_item_org_id IN NUMBER,
13647 x_intended_use OUT NOCOPY VARCHAR2
13648 )IS
13649 l_api_name CONSTANT VARCHAR2(30) := 'REDEFAULT_INTENDED_USE';
13650 l_api_version CONSTANT NUMBER := 1.0;
13651 l_return_status VARCHAR2(1);
13652 l_init_msg_list VARCHAR2(1);
13653
13654 BEGIN
13655 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13656 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
13657 END IF;
13658
13659 /*--------------------------------------------------+
13660 | Standard start of API savepoint |
13661 +--------------------------------------------------*/
13662 SAVEPOINT Redefault_Intended_Use_PVT;
13663
13664 /*--------------------------------------------------+
13665 | Standard call to check for call compatibility |
13666 +--------------------------------------------------*/
13667 IF NOT FND_API.Compatible_API_Call(l_api_version,
13668 p_api_version,
13669 l_api_name,
13670 G_PKG_NAME
13671 ) THEN
13672 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13673 END IF;
13674
13675 /*--------------------------------------------------------------+
13676 | Initialize message list if p_init_msg_list is set to TRUE |
13677 +--------------------------------------------------------------*/
13678 IF p_init_msg_list is null THEN
13679 l_init_msg_list := FND_API.G_FALSE;
13680 ELSE
13681 l_init_msg_list := p_init_msg_list;
13682 END IF;
13683
13684 IF FND_API.to_Boolean(l_init_msg_list) THEN
13685 FND_MSG_PUB.initialize;
13686 END IF;
13687
13688 /*-----------------------------------------+
13689 | Initialize return status to SUCCESS |
13690 +-----------------------------------------*/
13691 x_return_status := FND_API.G_RET_STS_SUCCESS;
13692
13693 /*-----------------------------------------+
13694 | Populate Global Variable |
13695 +-----------------------------------------*/
13696 G_PUB_SRVC := l_api_name;
13697 G_DATA_TRANSFER_MODE := 'PLS';
13698 G_EXTERNAL_API_CALL := 'N';
13699
13700 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13701 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
13702 'application_id: ' || to_char(p_application_id)||
13703 ', entity_code: ' || p_entity_code||
13704 ', event_class_code: ' || p_event_class_code||
13705 ', country_code: ' || p_country_code||
13706 ', org_id: ' || to_char(p_internal_org_id)||
13707 ', product_id: ' || to_char(p_item_id)||
13708 ', product_org_id: ' || to_char(p_item_org_id));
13709 END IF;
13710
13711 ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use(p_application_id,
13712 p_entity_code,
13713 p_event_class_code,
13714 p_internal_org_id,
13715 p_country_code,
13716 p_item_id,
13717 p_item_org_id,
13718 x_intended_use,
13719 x_return_status
13720 );
13721
13722 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13723 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13727 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
13724 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13725 ':ZX_DEFAULT_AUTOMATION_PKG.redefault_intended_use returned errors');
13726 END IF;
13728 RAISE FND_API.G_EXC_ERROR;
13729 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
13730 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13731 END IF;
13732 ELSE
13733 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13734 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13735 ':Intended Use :' || x_intended_use);
13736 END IF;
13737 END IF;
13738
13739 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13740 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
13741 END IF;
13742
13743 EXCEPTION
13744 WHEN FND_API.G_EXC_ERROR THEN
13745 ROLLBACK TO Redefault_Intended_Use_PVT;
13746 x_return_status := FND_API.G_RET_STS_ERROR ;
13747 DUMP_MSG;
13748 /*---------------------------------------------------------+
13749 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13750 | in the message stack. If there is only one message in |
13751 | the stack it retrieves this message |
13752 +---------------------------------------------------------*/
13753 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13754 p_count => x_msg_count,
13755 p_data => x_msg_data
13756 );
13757 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13758 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13759 END IF;
13760
13761 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13762 ROLLBACK TO Redefault_Intended_Use_PVT;
13763 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13764 DUMP_MSG;
13765 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13766 FND_MSG_PUB.Add;
13767 /*---------------------------------------------------------+
13768 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13769 | in the message stack. If there is only one message in |
13770 | the stack it retrieves this message |
13771 +---------------------------------------------------------*/
13772 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13773 p_count => x_msg_count,
13774 p_data => x_msg_data
13775 );
13776 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13777 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13778 END IF;
13779
13780 WHEN OTHERS THEN
13781 ROLLBACK TO Redefault_Intended_Use_PVT;
13782 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13783 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13784 FND_MSG_PUB.Add;
13785 /*---------------------------------------------------------+
13786 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13787 | in the message stack. If there is only one message in |
13788 | the stack it retrieves this message |
13789 +---------------------------------------------------------*/
13790 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13791 p_count => x_msg_count,
13792 p_data => x_msg_data
13793 );
13794 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
13795 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
13796 END IF;
13797 END redefault_intended_use;
13798
13799 /* ======================================================================*
13800 | PROCEDURE redefault_prod_fisc_class_code: Redefault product fiscal |
13801 | classification |
13802 * ======================================================================*/
13803 PROCEDURE redefault_prod_fisc_class_code(
13804 p_api_version IN NUMBER,
13805 p_init_msg_list IN VARCHAR2,
13806 p_commit IN VARCHAR2,
13807 p_validation_level IN NUMBER,
13808 x_return_status OUT NOCOPY VARCHAR2,
13809 x_msg_count OUT NOCOPY NUMBER ,
13810 x_msg_data OUT NOCOPY VARCHAR2,
13811 p_application_id IN NUMBER,
13812 p_entity_code IN VARCHAR2,
13813 p_event_class_code IN VARCHAR2,
13814 p_internal_org_id IN NUMBER,
13815 p_country_code IN VARCHAR2,
13816 p_item_id IN NUMBER,
13817 p_item_org_id IN NUMBER,
13818 x_prod_fisc_class_code OUT NOCOPY VARCHAR2
13819 )IS
13820 l_api_name CONSTANT VARCHAR2(30) := 'REDEFAULT_PROD_FISC_CLASS_CODE';
13821 l_api_version CONSTANT NUMBER := 1.0;
13822 l_return_status VARCHAR2(1);
13823 l_init_msg_list VARCHAR2(1);
13824
13825 BEGIN
13826 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13827 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
13828 END IF;
13829
13833 SAVEPOINT Redef_Prod_Fisc_Class_Code_PVT;
13830 /*--------------------------------------------------+
13831 | Standard start of API savepoint |
13832 +--------------------------------------------------*/
13834
13835 /*--------------------------------------------------+
13836 | Standard call to check for call compatibility |
13837 +--------------------------------------------------*/
13838 IF NOT FND_API.Compatible_API_Call(l_api_version,
13839 p_api_version,
13840 l_api_name,
13841 G_PKG_NAME
13842 ) THEN
13843 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13844 END IF;
13845
13846 /*--------------------------------------------------------------+
13847 | Initialize message list if p_init_msg_list is set to TRUE |
13848 +--------------------------------------------------------------*/
13849 IF p_init_msg_list is null THEN
13850 l_init_msg_list := FND_API.G_FALSE;
13851 ELSE
13852 l_init_msg_list := p_init_msg_list;
13853 END IF;
13854
13855 IF FND_API.to_Boolean(l_init_msg_list) THEN
13856 FND_MSG_PUB.initialize;
13857 END IF;
13858
13859 /*-----------------------------------------+
13860 | Initialize return status to SUCCESS |
13861 +-----------------------------------------*/
13862 x_return_status := FND_API.G_RET_STS_SUCCESS;
13863
13864 /*-----------------------------------------+
13865 | Populate Global Variable |
13866 +-----------------------------------------*/
13867 G_PUB_SRVC := l_api_name;
13868 G_DATA_TRANSFER_MODE := 'PLS';
13869 G_EXTERNAL_API_CALL := 'N';
13870
13871 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13872 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
13873 'application_id: ' || to_char(p_application_id)||
13874 ', entity_code: ' || p_entity_code||
13875 ', event_class_code: ' || p_event_class_code||
13876 ', country_code: ' || p_country_code||
13877 ', org_id: ' || to_char(p_internal_org_id)||
13878 ', product_id: ' || to_char(p_item_id)||
13879 ', product_org_id: ' || to_char(p_item_org_id));
13880 END IF;
13881
13882 ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code(p_application_id,
13883 p_entity_code,
13884 p_event_class_code,
13885 p_internal_org_id,
13886 p_country_code,
13887 p_item_id,
13888 p_item_org_id,
13889 x_prod_fisc_class_code,
13890 x_return_status
13891 );
13892 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13893 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13894 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13895 ':ZX_DEFAULT_AUTOMATION_PKG.redefault_prod_fisc_class_code returned errors');
13896 END IF;
13897 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
13898 RAISE FND_API.G_EXC_ERROR;
13899 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
13900 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
13901 END IF;
13902 ELSE
13903 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
13904 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
13905 ':Product Fiscal Classification Code :' || x_prod_fisc_class_code);
13906 END IF;
13907 END IF;
13908
13909 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
13910 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
13911 END IF;
13912
13913 EXCEPTION
13914 WHEN FND_API.G_EXC_ERROR THEN
13915 ROLLBACK TO Redef_Prod_Fisc_Class_Code_PVT;
13916 x_return_status := FND_API.G_RET_STS_ERROR ;
13917 DUMP_MSG;
13918 /*---------------------------------------------------------+
13919 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13920 | in the message stack. If there is only one message in |
13921 | the stack it retrieves this message |
13922 +---------------------------------------------------------*/
13923 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13924 p_count => x_msg_count,
13925 p_data => x_msg_data
13926 );
13927
13928 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13929 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13930 END IF;
13931
13932 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13933 ROLLBACK TO Redef_Prod_Fisc_Class_Code_PVT;
13934 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13935 DUMP_MSG;
13936 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13937 FND_MSG_PUB.Add;
13938 /*---------------------------------------------------------+
13939 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13943 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13940 | in the message stack. If there is only one message in |
13941 | the stack it retrieves this message |
13942 +---------------------------------------------------------*/
13944 p_count => x_msg_count,
13945 p_data => x_msg_data
13946 );
13947 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
13948 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
13949 END IF;
13950
13951 WHEN OTHERS THEN
13952 ROLLBACK TO Redef_Prod_Fisc_Class_Code_PVT;
13953 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
13954 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
13955 FND_MSG_PUB.Add;
13956 /*---------------------------------------------------------+
13957 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
13958 | in the message stack. If there is only one message in |
13959 | the stack it retrieves this message |
13960 +---------------------------------------------------------*/
13961 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13962 p_count => x_msg_count,
13963 p_data => x_msg_data
13964 );
13965 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
13966 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
13967 END IF;
13968 END redefault_prod_fisc_class_code;
13969
13970
13971 /* ======================================================================*
13972 | PROCEDURE redefault_assessable_value: Redefault assessable value |
13973 * ======================================================================*/
13974
13975 PROCEDURE redefault_assessable_value(
13976 p_api_version IN NUMBER,
13977 p_init_msg_list IN VARCHAR2,
13978 p_commit IN VARCHAR2,
13979 p_validation_level IN NUMBER,
13980 x_return_status OUT NOCOPY VARCHAR2,
13981 x_msg_count OUT NOCOPY NUMBER ,
13982 x_msg_data OUT NOCOPY VARCHAR2,
13983 p_application_id IN NUMBER,
13984 p_entity_code IN VARCHAR2,
13985 p_event_class_code IN VARCHAR2,
13986 p_internal_org_id IN NUMBER,
13987 p_trx_id IN NUMBER,
13988 p_trx_line_id IN NUMBER,
13989 p_trx_level_type IN VARCHAR2,
13990 p_item_id IN NUMBER,
13991 p_item_org_id IN NUMBER,
13992 p_line_amt IN NUMBER,
13993 x_assessable_value OUT NOCOPY NUMBER
13994 )IS
13995 l_api_name CONSTANT VARCHAR2(30) := 'REDEFAULT_ASSESSABLE_VALUE';
13996 l_api_version CONSTANT NUMBER := 1.0;
13997 l_return_status VARCHAR2(1);
13998 l_init_msg_list VARCHAR2(1);
13999
14000 BEGIN
14001 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14002 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
14003 END IF;
14004
14005 /*--------------------------------------------------+
14006 | Standard start of API savepoint |
14007 +--------------------------------------------------*/
14008 SAVEPOINT Redefault_Assessable_Value_PVT;
14009
14010 /*--------------------------------------------------+
14011 | Standard call to check for call compatibility |
14012 +--------------------------------------------------*/
14013 IF NOT FND_API.Compatible_API_Call(l_api_version,
14014 p_api_version,
14015 l_api_name,
14016 G_PKG_NAME
14017 ) THEN
14018 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14019 END IF;
14020
14021 /*--------------------------------------------------------------+
14022 | Initialize message list if p_init_msg_list is set to TRUE |
14023 +--------------------------------------------------------------*/
14024 IF p_init_msg_list is null THEN
14025 l_init_msg_list := FND_API.G_FALSE;
14026 ELSE
14027 l_init_msg_list := p_init_msg_list;
14028 END IF;
14029
14030 IF FND_API.to_Boolean(l_init_msg_list) THEN
14031 FND_MSG_PUB.initialize;
14032 END IF;
14033
14034 /*-----------------------------------------+
14035 | Initialize return status to SUCCESS |
14036 +-----------------------------------------*/
14037 x_return_status := FND_API.G_RET_STS_SUCCESS;
14038
14039 /*-----------------------------------------+
14040 | Populate Global Variable |
14041 +-----------------------------------------*/
14042 G_PUB_SRVC := l_api_name;
14043 G_DATA_TRANSFER_MODE := 'PLS';
14044 G_EXTERNAL_API_CALL := 'N';
14045
14046 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14047 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
14048 'application_id: ' || to_char(p_application_id)||
14049 ', entity_code: ' || p_entity_code||
14050 ', event_class_code: ' || p_event_class_code||
14051 ', org_id: ' || to_char(p_internal_org_id)||
14052 ', product_id: ' || to_char(p_item_id)||
14056 ', trx_level_type: ' || to_char(p_trx_level_type)||
14053 ', product_org_id: ' || to_char(p_item_org_id)||
14054 ', trx_id: ' || to_char(p_trx_id)||
14055 ', trx_line_id: ' || to_char(p_trx_line_id)||
14057 ', line_amount: ' || to_char(p_line_amt));
14058 END IF;
14059
14060 ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value(p_application_id,
14061 p_entity_code,
14062 p_event_class_code,
14063 p_internal_org_id,
14064 p_trx_id,
14065 p_trx_line_id,
14066 p_trx_level_type,
14067 p_item_id,
14068 p_item_org_id,
14069 p_line_amt,
14070 x_assessable_value,
14071 x_return_status
14072 );
14073
14074 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
14075 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14076 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14077 ':ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value returned errors');
14078 END IF;
14079 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
14080 RAISE FND_API.G_EXC_ERROR;
14081 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
14082 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14083 END IF;
14084 ELSE
14085 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14086 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14087 'Reassessable Value :' || to_char(x_assessable_value));
14088 END IF;
14089 END IF;
14090
14091 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14092 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
14093 END IF;
14094
14095 EXCEPTION
14096 WHEN FND_API.G_EXC_ERROR THEN
14097 ROLLBACK TO Redefault_Assessable_Value_PVT;
14098 x_return_status := FND_API.G_RET_STS_ERROR ;
14099 DUMP_MSG;
14100 /*---------------------------------------------------------+
14101 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14102 | in the message stack. If there is only one message in |
14103 | the stack it retrieves this message |
14104 +---------------------------------------------------------*/
14105 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14106 p_count => x_msg_count,
14107 p_data => x_msg_data
14108 );
14109 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14110 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14111 END IF;
14112
14113 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14114 ROLLBACK TO Redefault_Assessable_Value_PVT;
14115 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14116 DUMP_MSG;
14117 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14118 FND_MSG_PUB.Add;
14119 /*---------------------------------------------------------+
14120 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14121 | in the message stack. If there is only one message in |
14122 | the stack it retrieves this message |
14123 +---------------------------------------------------------*/
14124 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14125 p_count => x_msg_count,
14126 p_data => x_msg_data
14127 );
14128 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14129 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14130 END IF;
14131
14132 WHEN OTHERS THEN
14133 ROLLBACK TO Redefault_Assessable_Value_PVT;
14134 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14135 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14136 FND_MSG_PUB.Add;
14137 /*---------------------------------------------------------+
14138 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14139 | in the message stack. If there is only one message in |
14140 | the stack it retrieves this message |
14141 +---------------------------------------------------------*/
14142 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14143 p_count => x_msg_count,
14144 p_data => x_msg_data
14145 );
14146 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
14147 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
14148 END IF;
14149 END redefault_assessable_value;
14150
14151 /* ======================================================================*
14155 PROCEDURE redefault_product_type(
14152 | PROCEDURE redefault_product_type: Redefault product type |
14153 * ======================================================================*/
14154
14156 p_api_version IN NUMBER,
14157 p_init_msg_list IN VARCHAR2,
14158 p_commit IN VARCHAR2,
14159 p_validation_level IN NUMBER,
14160 x_return_status OUT NOCOPY VARCHAR2,
14161 x_msg_count OUT NOCOPY NUMBER ,
14162 x_msg_data OUT NOCOPY VARCHAR2,
14163 p_application_id IN NUMBER,
14164 p_entity_code IN VARCHAR2,
14165 p_event_class_code IN VARCHAR2,
14166 p_country_code IN VARCHAR2,
14167 p_item_id IN NUMBER,
14168 p_org_id IN NUMBER,
14169 x_product_type OUT NOCOPY VARCHAR2
14170 )IS
14171 l_api_name CONSTANT VARCHAR2(30) := 'REDEFAULT_ASSESSABLE_VALUE';
14172 l_api_version CONSTANT NUMBER := 1.0;
14173 l_return_status VARCHAR2(1);
14174 l_init_msg_list VARCHAR2(1);
14175
14176 BEGIN
14177 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14178 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
14179 END IF;
14180
14181 /*--------------------------------------------------+
14182 | Standard start of API savepoint |
14183 +--------------------------------------------------*/
14184 SAVEPOINT Redefault_Assessable_Value_PVT;
14185
14186 /*--------------------------------------------------+
14187 | Standard call to check for call compatibility |
14188 +--------------------------------------------------*/
14189 IF NOT FND_API.Compatible_API_Call(l_api_version,
14190 p_api_version,
14191 l_api_name,
14192 G_PKG_NAME
14193 ) THEN
14194 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14195 END IF;
14196
14197 /*--------------------------------------------------------------+
14198 | Initialize message list if p_init_msg_list is set to TRUE |
14199 +--------------------------------------------------------------*/
14200 IF p_init_msg_list is null THEN
14201 l_init_msg_list := FND_API.G_FALSE;
14202 ELSE
14203 l_init_msg_list := p_init_msg_list;
14204 END IF;
14205
14206 IF FND_API.to_Boolean(l_init_msg_list) THEN
14207 FND_MSG_PUB.initialize;
14208 END IF;
14209
14210 /*-----------------------------------------+
14211 | Initialize return status to SUCCESS |
14212 +-----------------------------------------*/
14213 x_return_status := FND_API.G_RET_STS_SUCCESS;
14214
14215 /*-----------------------------------------+
14216 | Populate Global Variable |
14217 +-----------------------------------------*/
14218 G_PUB_SRVC := l_api_name;
14219 G_DATA_TRANSFER_MODE := 'PLS';
14220 G_EXTERNAL_API_CALL := 'N';
14221
14222
14223 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14224 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
14225 'application_id: ' || to_char(p_application_id)||
14226 ', entity_code: ' || p_entity_code||
14227 ', event_class_code: ' || p_event_class_code||
14228 ', country_code: ' || p_country_code||
14229 ', org_id: ' || to_char(p_org_id)||
14230 ', product_id: ' || to_char(p_item_id));
14231 END IF;
14232
14233 ZX_TCM_EXT_SERVICES_PUB.get_default_classif_code(p_fiscal_type_code => 'PRODUCT_TYPE',
14234 p_country_code => p_country_code,
14235 p_application_id => p_application_id,
14236 p_entity_code => p_entity_code,
14237 p_event_class_code => p_event_class_code,
14238 p_source_event_class_code => null,
14239 p_item_id => p_item_id,
14240 p_org_id => p_org_id,
14241 p_default_code => x_product_type ,
14242 p_return_status => l_return_status
14243 );
14244
14245 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
14246 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14247 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14248 ':ZX_DEFAULT_AUTOMATION_PKG.redefault_assessable_value returned errors');
14249 END IF;
14250 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
14251 RAISE FND_API.G_EXC_ERROR;
14252 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
14253 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14254 END IF;
14255 ELSE
14256 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14257 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14258 'Product Type :' || x_product_type);
14259 END IF;
14260 END IF;
14261
14262 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14266 EXCEPTION
14263 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
14264 END IF;
14265
14267 WHEN FND_API.G_EXC_ERROR THEN
14268 ROLLBACK TO Redefault_Assessable_Value_PVT;
14269 x_return_status := FND_API.G_RET_STS_ERROR ;
14270 DUMP_MSG;
14271 /*---------------------------------------------------------+
14272 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14273 | in the message stack. If there is only one message in |
14274 | the stack it retrieves this message |
14275 +---------------------------------------------------------*/
14276 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14277 p_count => x_msg_count,
14278 p_data => x_msg_data
14279 );
14280 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14281 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14282 END IF;
14283
14284 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14285 ROLLBACK TO Redefault_Assessable_Value_PVT;
14286 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14287 DUMP_MSG;
14288 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14289 FND_MSG_PUB.Add;
14290 /*---------------------------------------------------------+
14291 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14292 | in the message stack. If there is only one message in |
14293 | the stack it retrieves this message |
14294 +---------------------------------------------------------*/
14295 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14296 p_count => x_msg_count,
14297 p_data => x_msg_data
14298 );
14299 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14300 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14301 END IF;
14302
14303 WHEN OTHERS THEN
14304 ROLLBACK TO Redefault_Assessable_Value_PVT;
14305 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14306 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14307 FND_MSG_PUB.Add;
14308 /*---------------------------------------------------------+
14309 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14310 | in the message stack. If there is only one message in |
14311 | the stack it retrieves this message |
14312 +---------------------------------------------------------*/
14313 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14314 p_count => x_msg_count,
14315 p_data => x_msg_data
14316 );
14317 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
14318 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
14319 END IF;
14320 END redefault_product_type;
14321 /* ======================================================================*
14322 | PROCEDURE redef_tax_classification_code: ReDefault tax classification |
14323 * ======================================================================*/
14324 PROCEDURE redef_tax_classification_code(
14325 p_api_version IN NUMBER,
14326 p_init_msg_list IN VARCHAR2,
14327 p_commit IN VARCHAR2,
14328 p_validation_level IN NUMBER,
14329 x_msg_count OUT NOCOPY NUMBER ,
14330 x_msg_data OUT NOCOPY VARCHAR2,
14331 x_return_status OUT NOCOPY VARCHAR2,
14332 p_redef_tax_cls_code_info_rec IN OUT NOCOPY def_tax_cls_code_info_rec_type
14333 ) IS
14334 l_api_name CONSTANT VARCHAR2(30) := 'REDEF_TAX_CLASSIFICATION_CODE';
14335 l_api_version CONSTANT NUMBER := 1.0;
14336 l_return_status VARCHAR2(1);
14337 l_init_msg_list VARCHAR2(1);
14338 l_error_buffer VARCHAR2(1000);
14339
14340 BEGIN
14341 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14342 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
14343 END IF;
14344
14345 /*--------------------------------------------------+
14346 | Standard start of API savepoint |
14347 +--------------------------------------------------*/
14348 SAVEPOINT Redef_Tax_Class_Code_PVT;
14349
14350 /*--------------------------------------------------+
14351 | Standard call to check for call compatibility |
14352 +--------------------------------------------------*/
14353 IF NOT FND_API.Compatible_API_Call(l_api_version,
14354 p_api_version,
14355 l_api_name,
14356 G_PKG_NAME
14357 ) THEN
14358 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14359 END IF;
14360
14361 /*--------------------------------------------------------------+
14362 | Initialize message list if p_init_msg_list is set to TRUE |
14363 +--------------------------------------------------------------*/
14367 l_init_msg_list := p_init_msg_list;
14364 IF p_init_msg_list is null THEN
14365 l_init_msg_list := FND_API.G_FALSE;
14366 ELSE
14368 END IF;
14369
14370 IF FND_API.to_Boolean(l_init_msg_list) THEN
14371 FND_MSG_PUB.initialize;
14372 END IF;
14373
14374 /*-----------------------------------------+
14375 | Initialize return status to SUCCESS |
14376 +-----------------------------------------*/
14377 x_return_status := FND_API.G_RET_STS_SUCCESS;
14378
14379 /*-----------------------------------------+
14380 | Populate Global Variable |
14381 +-----------------------------------------*/
14382 G_PUB_SRVC := l_api_name;
14383 G_DATA_TRANSFER_MODE := 'PLS';
14384 G_EXTERNAL_API_CALL := 'N';
14385
14386
14387 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14388 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
14389 'application_id: ' || to_char(p_redef_tax_cls_code_info_rec.application_id)||
14390 ', entity_code: ' || p_redef_tax_cls_code_info_rec.entity_code||
14391 ', event_class_code: ' || p_redef_tax_cls_code_info_rec.event_class_code||
14392 ', org_id: ' || to_char(p_redef_tax_cls_code_info_rec.internal_organization_id)||
14393 ', product_id: ' || to_char(p_redef_tax_cls_code_info_rec.product_id)||
14394 ', product_org_id: ' || to_char(p_redef_tax_cls_code_info_rec.product_org_id)||
14395 ', trx_date: ' || to_char(p_redef_tax_cls_code_info_rec.trx_date)||
14396 ', trx_id: ' || to_char(p_redef_tax_cls_code_info_rec.trx_id)||
14397 ', trx_line_id: ' || to_char(p_redef_tax_cls_code_info_rec.trx_line_id)||
14398 ', trx_level_type: ' || p_redef_tax_cls_code_info_rec.trx_level_type||
14399 ', trx_date: ' || to_char(p_redef_tax_cls_code_info_rec.trx_date)||
14400 ', ledger_id: ' || to_char(p_redef_tax_cls_code_info_rec.ledger_id)||
14401 ', ship_third_pty_acct_id: ' || to_char(p_redef_tax_cls_code_info_rec.ship_third_pty_acct_id)||
14402 ', ship_third_pty_acct_site_id: ' || to_char(p_redef_tax_cls_code_info_rec.ship_third_pty_acct_site_id)||
14403 ', bill_third_pty_acct_id: ' || to_char(p_redef_tax_cls_code_info_rec.bill_third_pty_acct_id)||
14404 ', bill_third_pty_acct_site_id: ' || to_char(p_redef_tax_cls_code_info_rec.bill_third_pty_acct_site_id)||
14405 ', ship_to_cust_acct_site_use_id: ' || to_char(p_redef_tax_cls_code_info_rec.ship_to_cust_acct_site_use_id)||
14406 ', bill_to_cust_acct_site_use_id: ' || to_char(p_redef_tax_cls_code_info_rec.bill_to_cust_acct_site_use_id)||
14407 ', ship_to_location_id: ' || to_char(p_redef_tax_cls_code_info_rec.ship_to_location_id)||
14408 ', account_ccid: ' || to_char(p_redef_tax_cls_code_info_rec.account_ccid)||
14409 ', account_string: ' || p_redef_tax_cls_code_info_rec.account_string||
14410 ', ref_doc_application_id: ' || to_char(p_redef_tax_cls_code_info_rec.application_id)||
14411 ', ref_doc_entity_code: ' || p_redef_tax_cls_code_info_rec.ref_doc_entity_code||
14412 ', ref_doc_event_class_code: ' || p_redef_tax_cls_code_info_rec.ref_doc_event_class_code||
14413 ', ref_doc_trx_id: ' || to_char(p_redef_tax_cls_code_info_rec.ref_doc_trx_id)||
14414 ', ref_doc_line_id: ' || to_char(p_redef_tax_cls_code_info_rec.ref_doc_line_id)||
14415 ', ref_doc_trx_level_type: ' || p_redef_tax_cls_code_info_rec.ref_doc_trx_level_type||
14416 ', tax_user_override_flag: ' || p_redef_tax_cls_code_info_rec.tax_user_override_flag||
14417 ', overridden_tax_cls_code : ' || p_redef_tax_cls_code_info_rec.overridden_tax_cls_code ||
14418 ', defaulting_attribute10: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute10||
14419 ', defaulting_attribute1: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute1||
14420 ', defaulting_attribute2: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute2||
14421 ', defaulting_attribute3: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute3||
14422 ', defaulting_attribute4: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute4||
14423 ', defaulting_attribute5: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute5||
14424 ', defaulting_attribute6: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute6||
14425 ', defaulting_attribute7: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute7||
14426 ', defaulting_attribute8: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute8||
14427 ', defaulting_attribute9: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute9||
14428 ', defaulting_attribute10: ' || p_redef_tax_cls_code_info_rec.defaulting_attribute10);
14429 END IF;
14430
14431
14432 /*-------------------------------------------------+
14433 | Call TDM API to default the tax classification|
14434 +-------------------------------------------------*/
14435 ZX_TAX_DEFAULT_PKG.get_default_tax_classification (p_definfo => p_redef_tax_cls_code_info_rec,
14436 p_return_status => l_return_status,
14437 p_error_buffer => l_error_buffer
14438 );
14439 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
14440 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14441 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14442 ':ZX_TAX_DEFAULT_PKG.get_default_tax_classification returned errors');
14443 END IF;
14444 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
14445 RAISE FND_API.G_EXC_ERROR;
14446 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
14447 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14448 END IF;
14449 ELSE
14450 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14454 END IF;
14451 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14452 'Tax Classification: ' || p_redef_tax_cls_code_info_rec.x_tax_classification_code
14453 );
14455 END IF;
14456
14457 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14458 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
14459 END IF;
14460
14461 EXCEPTION
14462 WHEN FND_API.G_EXC_ERROR THEN
14463 ROLLBACK TO Redef_Tax_Class_Code_PVT;
14464 x_return_status := FND_API.G_RET_STS_ERROR ;
14465 DUMP_MSG;
14466 /*---------------------------------------------------------+
14467 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14468 | in the message stack. If there is only one message in |
14469 | the stack it retrieves this message |
14470 +---------------------------------------------------------*/
14471 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14472 p_count => x_msg_count,
14473 p_data => x_msg_data
14474 );
14475 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14476 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14477 END IF;
14478
14479 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14480 ROLLBACK TO Redef_Tax_Class_Code_PVT;
14481 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14482 DUMP_MSG;
14483 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14484 FND_MSG_PUB.Add;
14485 /*---------------------------------------------------------+
14486 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14487 | in the message stack. If there is only one message in |
14488 | the stack it retrieves this message |
14489 +---------------------------------------------------------*/
14490 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14491 p_count => x_msg_count,
14492 p_data => x_msg_data
14493 );
14494 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14495 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14496 END IF;
14497
14498 WHEN OTHERS THEN
14499 ROLLBACK TO Redef_Tax_Class_Code_PVT;
14500 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14501 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14502 FND_MSG_PUB.Add;
14503 /*---------------------------------------------------------+
14504 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14505 | in the message stack. If there is only one message in |
14506 | the stack it retrieves this message |
14507 +---------------------------------------------------------*/
14508 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14509 p_count => x_msg_count,
14510 p_data => x_msg_data
14511 );
14512 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
14513 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
14514 END IF;
14515 END redef_tax_classification_code;
14516
14517 /* =========================================================================*
14518 | PROCEDURE purge_tax_repository: Purges the transaction lines and tax data|
14519 | GTT : ZX_PURGE_TRANSACTIONS_GT |
14520 * ========================================================================*/
14521 PROCEDURE purge_tax_repository(
14522 p_api_version IN NUMBER,
14523 p_init_msg_list IN VARCHAR2,
14524 p_commit IN VARCHAR2,
14525 p_validation_level IN NUMBER,
14526 x_msg_count OUT NOCOPY NUMBER ,
14527 x_msg_data OUT NOCOPY VARCHAR2,
14528 x_return_status OUT NOCOPY VARCHAR2
14529 )IS
14530 l_api_name CONSTANT VARCHAR2(30) := 'PURGE_TAX_REPOSITORY';
14531 l_api_version CONSTANT NUMBER := 1.0;
14532 l_init_msg_list VARCHAR2(1);
14533 l_summarization_flag VARCHAR2(1);
14534 l_tax_recovery_flag VARCHAR2(1);
14535 l_tax_reporting_flag VARCHAR2(1);
14536 l_row_count NUMBER;
14537 l_context_info_rec context_info_rec_type;
14538 l_application_id NUMBER;
14539 l_entity_code VARCHAR2(30);
14540 l_event_class_code VARCHAR2(30);
14541
14542 BEGIN
14543 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14544 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
14545 END IF;
14546
14547 /*--------------------------------------------------+
14548 | Standard start of API savepoint |
14549 +--------------------------------------------------*/
14550 SAVEPOINT Purge_Tax_Repository_PVT;
14551
14552 /*--------------------------------------------------+
14553 | Standard call to check for call compatibility |
14554 +--------------------------------------------------*/
14555 IF NOT FND_API.Compatible_API_Call(l_api_version,
14559 ) THEN
14556 p_api_version,
14557 l_api_name,
14558 G_PKG_NAME
14560 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14561 END IF;
14562
14563 /*--------------------------------------------------------------+
14564 | Initialize message list if p_init_msg_list is set to TRUE |
14565 +--------------------------------------------------------------*/
14566 IF p_init_msg_list is null THEN
14567 l_init_msg_list := FND_API.G_FALSE;
14568 ELSE
14569 l_init_msg_list := p_init_msg_list;
14570 END IF;
14571
14572 IF FND_API.to_Boolean(l_init_msg_list) THEN
14573 FND_MSG_PUB.initialize;
14574 END IF;
14575
14576 /*-----------------------------------------+
14577 | Initialize return status to SUCCESS |
14578 +-----------------------------------------*/
14579 x_return_status := FND_API.G_RET_STS_SUCCESS;
14580
14581 /*-----------------------------------------+
14582 | Populate Global Variable |
14583 +------ -----------------------------------*/
14584 G_PUB_SRVC := l_api_name;
14585 G_DATA_TRANSFER_MODE := 'TAB';
14586 G_EXTERNAL_API_CALL := 'N';
14587
14588 SELECT application_id,
14589 entity_code,
14590 event_class_code
14591 INTO l_application_id,
14592 l_entity_code,
14593 l_event_class_code
14594 FROM ZX_PURGE_TRANSACTIONS_GT
14595 WHERE rownum=1;
14596
14597 IF l_event_class_code = 'SALES_TRANSACTION_TAX_QUOTE' THEN
14598 SELECT summarization_flag,
14599 tax_reporting_flag,
14600 tax_recovery_flag
14601 INTO l_summarization_flag,
14602 l_tax_reporting_flag,
14603 l_tax_recovery_flag
14604 FROM ZX_EVNT_CLS_MAPPINGS
14605 WHERE APPLICATION_ID = 222
14606 AND ENTITY_CODE = 'TRANSACTIONS'
14607 AND EVENT_CLASS_CODE = 'INVOICE';
14608 ELSIF l_event_class_code = 'PURCHASE_TRANSACTION_TAX_QUOTE' THEN
14609 SELECT summarization_flag,
14610 tax_reporting_flag,
14611 tax_recovery_flag
14612 INTO l_summarization_flag,
14613 l_tax_reporting_flag,
14614 l_tax_recovery_flag
14615 FROM ZX_EVNT_CLS_MAPPINGS
14616 WHERE APPLICATION_ID = 200
14617 AND ENTITY_CODE = 'AP_INVOICES'
14618 AND EVENT_CLASS_CODE = 'STANDARD INVOICE';
14619 ELSE
14620 SELECT summarization_flag,
14621 tax_reporting_flag,
14622 tax_recovery_flag
14623 INTO l_summarization_flag,
14624 l_tax_reporting_flag,
14625 l_tax_recovery_flag
14626 FROM ZX_EVNT_CLS_MAPPINGS
14627 WHERE APPLICATION_ID = l_application_id
14628 AND ENTITY_CODE = l_entity_code
14629 AND EVENT_CLASS_CODE = l_event_class_code;
14630 END IF;
14631
14632 --PO does not report taxes so go ahead and delete the tax repository
14633 IF l_tax_reporting_flag = 'N' THEN
14634 DELETE
14635 FROM ZX_LINES tax
14636 WHERE (APPLICATION_ID, ENTITY_CODE,EVENT_CLASS_CODE, TRX_ID)
14637 IN (SELECT /*+ INDEX (ZX_PURGE_TRANSACTIONS_GT ZX_PURGE_TRANSACTIONS_GT_U1)*/
14638 APPLICATION_ID,
14639 ENTITY_CODE,
14640 EVENT_CLASS_CODE,
14641 TRX_ID
14642 FROM ZX_PURGE_TRANSACTIONS_GT purge);
14643
14644 IF SQL%FOUND THEN
14645 l_row_count := SQL%ROWCOUNT;
14646 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
14647 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name ,
14648 'Number of rows deleted from ZX_LINES = '|| to_char(l_row_count));
14649 END IF;
14650 END IF;
14651
14652 IF l_summarization_flag = 'Y' THEN
14653 DELETE
14654 FROM ZX_LINES_SUMMARY summ
14655 WHERE (APPLICATION_ID, ENTITY_CODE,EVENT_CLASS_CODE,TRX_ID)
14656 IN (SELECT /*+ INDEX (ZX_PURGE_TRANSACTIONS_GT ZX_PURGE_TRANSACTIONS_GT_U1)*/
14657 APPLICATION_ID,
14658 ENTITY_CODE,
14659 EVENT_CLASS_CODE,
14660 TRX_ID
14661 FROM ZX_PURGE_TRANSACTIONS_GT purge);
14662
14663 IF SQL%FOUND THEN
14664 l_row_count := SQL%ROWCOUNT;
14665 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
14666 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name ,
14667 'Number of rows deleted from ZX_LINES_SUMMARY = '||to_char(l_row_count));
14668 END IF;
14669 END IF;
14670 END IF; --summarization_flag is Y
14671
14672 IF l_tax_recovery_flag ='Y' THEN
14673 DELETE
14674 FROM ZX_REC_NREC_DIST dist
14675 WHERE (APPLICATION_ID, ENTITY_CODE,EVENT_CLASS_CODE,TRX_ID)
14676 IN (SELECT /*+ INDEX (ZX_PURGE_TRANSACTIONS_GT ZX_PURGE_TRANSACTIONS_GT_U1)*/
14677 APPLICATION_ID,
14678 ENTITY_CODE,
14679 EVENT_CLASS_CODE,
14680 TRX_ID
14681 FROM ZX_PURGE_TRANSACTIONS_GT purge);
14682
14683
14684 IF SQL%FOUND THEN
14685 l_row_count := SQL%ROWCOUNT;
14686 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
14690 END IF;
14687 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name ,
14688 'Number of rows deleted from ZX_REC_NREC_DIST = '||to_char(l_row_count));
14689 END IF;
14691 END IF; --tax recovery is Y
14692
14693 DELETE
14694 FROM ZX_LINES_DET_FACTORS lines
14695 WHERE (APPLICATION_ID, ENTITY_CODE,EVENT_CLASS_CODE, TRX_ID)
14696 IN (SELECT /*+ INDEX (ZX_PURGE_TRANSACTIONS_GT ZX_PURGE_TRANSACTIONS_GT_U1)*/
14697 APPLICATION_ID,
14698 ENTITY_CODE,
14699 EVENT_CLASS_CODE,
14700 TRX_ID
14701 FROM ZX_PURGE_TRANSACTIONS_GT purge);
14702
14703 IF SQL%FOUND THEN
14704 l_row_count := SQL%ROWCOUNT;
14705 IF (G_LEVEL_PROCEDURE >= g_current_runtime_level ) THEN
14706 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name ,
14707 'Number of rows deleted from ZX_LINES_DET_FACTORS = '||to_char(l_row_count));
14708 END IF;
14709 END IF;
14710 --ELSIF tax_reporting_flag = 'Y' --AR/AP cases wherein we need to purge only if tax lines are frozen --TBD on requirement basis
14711 END IF; --tax reporting flag is N
14712
14713
14714 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14715 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
14716 END IF;
14717
14718 EXCEPTION
14719 WHEN FND_API.G_EXC_ERROR THEN
14720 ROLLBACK TO Purge_Tax_Repository_PVT;
14721 x_return_status := FND_API.G_RET_STS_ERROR ;
14722 --Call API to dump into zx_errors_gt
14723 DUMP_MSG;
14724 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14725 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14726 END IF;
14727
14728 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14729 ROLLBACK TO Purge_Tax_Repository_PVT;
14730 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14731 DUMP_MSG;
14732 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14733 FND_MSG_PUB.Add;
14734 /*---------------------------------------------------------+
14735 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14736 | in the message stack. If there is only one message in |
14737 | the stack it retrieves this message |
14738 +---------------------------------------------------------*/
14739 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14740 p_count => x_msg_count,
14741 p_data => x_msg_data
14742 );
14743 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14744 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14745 END IF;
14746
14747 WHEN OTHERS THEN
14748 ROLLBACK TO Purge_Tax_Repository_PVT;
14749 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14750 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14751 FND_MSG_PUB.Add;
14752 /*---------------------------------------------------------+
14753 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14754 | in the message stack. If there is only one message in |
14755 | the stack it retrieves this message |
14756 +---------------------------------------------------------*/
14757 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14758 p_count => x_msg_count,
14759 p_data => x_msg_data
14760 );
14761 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
14762 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
14763 END IF;
14764
14765 END purge_tax_repository;
14766
14767 /* ======================================================================*
14768 | API TO GET LE FOR AP IMPORT TRANSACTIONS |
14769 * ======================================================================*/
14770 FUNCTION get_le_from_tax_registration(
14771 p_api_version IN NUMBER,
14772 p_init_msg_list IN VARCHAR2,
14773 p_commit IN VARCHAR2,
14774 p_validation_level IN NUMBER,
14775 x_return_status OUT NOCOPY VARCHAR2,
14776 x_msg_count OUT NOCOPY NUMBER,
14777 x_msg_data OUT NOCOPY VARCHAR2,
14778 p_registration_num IN ZX_REGISTRATIONS.Registration_Number%type,
14779 p_effective_date IN ZX_REGISTRATIONS.effective_from%type,
14780 p_country IN ZX_PARTY_TAX_PROFILE.Country_code%type
14781 ) RETURN Number IS
14782 l_api_name CONSTANT VARCHAR2(30) := 'GET_LE_FROM_TAX_REGISTRATION';
14783 l_api_version CONSTANT NUMBER := 1.0;
14784 l_init_msg_list VARCHAR2(1);
14785 l_legal_entity_id NUMBER;
14786 l_return_status VARCHAR2(1);
14787
14788 BEGIN
14789 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14790 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
14791 END IF;
14792
14793 /*--------------------------------------------------+
14794 | Standard start of API savepoint |
14795 +--------------------------------------------------*/
14796 SAVEPOINT GET_LE_FROM_TAX_REGISTRATN_PVT;
14800 +--------------------------------------------------*/
14797
14798 /*--------------------------------------------------+
14799 | Standard call to check for call compatibility |
14801 IF NOT FND_API.Compatible_API_Call(l_api_version,
14802 p_api_version,
14803 l_api_name,
14804 G_PKG_NAME
14805 ) THEN
14806 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14807 END IF;
14808
14809 /*--------------------------------------------------------------+
14810 | Initialize message list if p_init_msg_list is set to TRUE |
14811 +--------------------------------------------------------------*/
14812 IF p_init_msg_list is null THEN
14813 l_init_msg_list := FND_API.G_FALSE;
14814 ELSE
14815 l_init_msg_list := p_init_msg_list;
14816 END IF;
14817
14818 IF FND_API.to_Boolean(l_init_msg_list) THEN
14819 FND_MSG_PUB.initialize;
14820 END IF;
14821
14822 /*-----------------------------------------+
14823 | Initialize return status to SUCCESS |
14824 +-----------------------------------------*/
14825 x_return_status := FND_API.G_RET_STS_SUCCESS;
14826
14827 /*-----------------------------------------+
14828 | Populate Global Variable |
14829 +-----------------------------------------*/
14830 G_PUB_SRVC := l_api_name;
14831 G_DATA_TRANSFER_MODE := 'PLS';
14832 G_EXTERNAL_API_CALL := 'N';
14833
14834
14835 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14836 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
14837 'Registration Number: ' || to_char(p_registration_num)||
14838 ', Country Code: ' || p_country ||
14839 ', Effective_date: ' || to_char(p_effective_date));
14840 END IF;
14841
14842
14843 /*-------------------------------------------------+
14844 | Call TDM API to default the tax classification|
14845 +-------------------------------------------------*/
14846
14847 l_legal_entity_id := ZX_TCM_EXT_SERVICES_PUB.get_le_from_tax_registration (x_return_status,
14848 p_registration_num,
14849 p_effective_date,
14850 p_country
14851 );
14852 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
14853 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14854 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14855 ':ZX_TCM_EXT_SERVICES.get_le_from_tax_registration returned errors');
14856 END IF;
14857 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
14858 RAISE FND_API.G_EXC_ERROR;
14859 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
14860 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14861 END IF;
14862 ELSE
14863 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14864 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
14865 'Legal Entity : ' || to_char(l_legal_entity_id)
14866 );
14867 END IF;
14868 RETURN l_legal_entity_id;
14869 END IF;
14870
14871 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14872 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
14873 END IF;
14874 EXCEPTION
14875 WHEN FND_API.G_EXC_ERROR THEN
14876 ROLLBACK TO GET_LE_FROM_TAX_REGISTRATN_PVT;
14877 x_return_status := FND_API.G_RET_STS_ERROR ;
14878 DUMP_MSG;
14879 /*---------------------------------------------------------+
14880 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14881 | in the message stack. If there is only one message in |
14882 | the stack it retrieves this message |
14883 +---------------------------------------------------------*/
14884 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14885 p_count => x_msg_count,
14886 p_data => x_msg_data
14887 );
14888 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14889 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14890 END IF;
14891
14892 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
14893 ROLLBACK TO GET_LE_FROM_TAX_REGISTRATN_PVT;
14894 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14895 DUMP_MSG;
14896 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14897 FND_MSG_PUB.Add;
14898 /*---------------------------------------------------------+
14899 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14900 | in the message stack. If there is only one message in |
14901 | the stack it retrieves this message |
14902 +---------------------------------------------------------*/
14903 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14904 p_count => x_msg_count,
14905 p_data => x_msg_data
14906 );
14910
14907 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
14908 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
14909 END IF;
14911 WHEN OTHERS THEN
14912 ROLLBACK TO GET_LE_FROM_TAX_REGISTRATN_PVT;
14913 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
14914 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
14915 FND_MSG_PUB.Add;
14916 /*---------------------------------------------------------+
14917 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
14918 | in the message stack. If there is only one message in |
14919 | the stack it retrieves this message |
14920 +---------------------------------------------------------*/
14921 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14922 p_count => x_msg_count,
14923 p_data => x_msg_data
14924 );
14925 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
14926 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
14927 END IF;
14928 END get_le_from_tax_registration;
14929
14930 /* ============================================================================*
14931 | PROCEDURE update_posting_flag : This procedure will update the posting_flag|
14932 | for the tax distribution ids that are passed in from product. |
14933 * ============================================================================*/
14934 PROCEDURE update_posting_flag(
14935 p_api_version IN NUMBER,
14936 p_init_msg_list IN VARCHAR2,
14937 p_commit IN VARCHAR2,
14938 p_validation_level IN NUMBER,
14939 x_return_status OUT NOCOPY VARCHAR2,
14940 x_msg_count OUT NOCOPY NUMBER,
14941 x_msg_data OUT NOCOPY VARCHAR2,
14942 p_tax_dist_id_tbl IN tax_dist_id_tbl_type
14943 )IS
14944 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_POSTING_FLAG';
14945 l_api_version CONSTANT NUMBER := 1.0;
14946 l_return_status VARCHAR2(1);
14947 l_init_msg_list VARCHAR2(1);
14948
14949 BEGIN
14950 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
14951 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
14952 END IF;
14953
14954 /*--------------------------------------------------+
14955 | Standard start of API savepoint |
14956 +--------------------------------------------------*/
14957 SAVEPOINT update_posting_flag_PVT;
14958
14959 /*--------------------------------------------------+
14960 | Standard call to check for call compatibility |
14961 +--------------------------------------------------*/
14962 IF NOT FND_API.Compatible_API_Call(l_api_version,
14963 p_api_version,
14964 l_api_name,
14965 G_PKG_NAME
14966 ) THEN
14967 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14968 END IF;
14969
14970 /*--------------------------------------------------------------+
14971 | Initialize message list if p_init_msg_list is set to TRUE |
14972 +--------------------------------------------------------------*/
14973 IF p_init_msg_list is null THEN
14974 l_init_msg_list := FND_API.G_FALSE;
14975 ELSE
14976 l_init_msg_list := p_init_msg_list;
14977 END IF;
14978
14979 IF FND_API.to_Boolean(l_init_msg_list) THEN
14980 FND_MSG_PUB.initialize;
14981 END IF;
14982
14983 /*-----------------------------------------+
14984 | Initialize return status to SUCCESS |
14985 +-----------------------------------------*/
14986 x_return_status := FND_API.G_RET_STS_SUCCESS;
14987
14988 /*-----------------------------------------+
14989 | Populate Global Variable |
14990 +-----------------------------------------*/
14991 G_PUB_SRVC := l_api_name;
14992 G_DATA_TRANSFER_MODE := 'PLS';
14993 G_EXTERNAL_API_CALL := 'N';
14994
14995 IF ( G_LEVEL_EVENT >= G_CURRENT_RUNTIME_LEVEL) THEN
14996 FND_LOG.STRING(G_LEVEL_EVENT,G_MODULE_NAME||l_api_name,
14997 'Call TRD service to update posting flag'
14998 );
14999 END IF;
15000
15001 ZX_TRD_SERVICES_PUB_PKG.update_posting_flag(p_tax_dist_id_tbl => p_tax_dist_id_tbl,
15002 x_return_status => l_return_status
15003 );
15004
15005 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
15006 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
15007 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,G_PKG_NAME||': '||l_api_name||
15008 ':ZX_TRD_SERVICES_PUB_PKG.update_posting_flag returned errors');
15009 END IF;
15010 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
15011 RAISE FND_API.G_EXC_ERROR;
15012 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
15013 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
15014 END IF;
15015 END IF;
15016
15017 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
15018 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END','ZX_API_PUB: '||l_api_name||'()-');
15019 END IF;
15020
15021 EXCEPTION
15022 WHEN FND_API.G_EXC_ERROR THEN
15023 ROLLBACK TO update_posting_flag_PVT;
15024 x_return_status := FND_API.G_RET_STS_ERROR ;
15025 DUMP_MSG;
15029 | the stack it retrieves this message |
15026 /*---------------------------------------------------------+
15027 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
15028 | in the message stack. If there is only one message in |
15030 +---------------------------------------------------------*/
15031 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
15032 p_count => x_msg_count,
15033 p_data => x_msg_data
15034 );
15035
15036 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
15037 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
15038 END IF;
15039
15040 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
15041 ROLLBACK TO update_posting_flag_PVT;
15042 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
15043 DUMP_MSG;
15044 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
15045 FND_MSG_PUB.Add;
15046 /*---------------------------------------------------------+
15047 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
15048 | in the message stack. If there is only one message in |
15049 | the stack it retrieves this message |
15050 +---------------------------------------------------------*/
15051 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
15052 p_count => x_msg_count,
15053 p_data => x_msg_data
15054 );
15055
15056 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
15057 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'');
15058 END IF;
15059
15060 WHEN OTHERS THEN
15061 ROLLBACK TO update_posting_flag_PVT;
15062 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
15063 FND_MESSAGE.SET_NAME ('ZX','ZX_UNEXPECTED_ERROR');
15064 FND_MSG_PUB.Add;
15065 /*---------------------------------------------------------+
15066 | FND_MSG_PUB.Count_And_Get used to get the count of mesg.|
15067 | in the message stack. If there is only one message in |
15068 | the stack it retrieves this message |
15069 +---------------------------------------------------------*/
15070 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
15071 p_count => x_msg_count,
15072 p_data => x_msg_data
15073 );
15074 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
15075 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
15076 END IF;
15077
15078 END update_posting_flag;
15079
15080 PROCEDURE unapply_applied_cm
15081 ( p_api_version IN NUMBER,
15082 p_init_msg_list IN VARCHAR2,
15083 p_commit IN VARCHAR2,
15084 p_validation_level IN NUMBER,
15085 p_trx_id IN NUMBER,
15086 x_return_status OUT NOCOPY VARCHAR2,
15087 x_msg_count OUT NOCOPY NUMBER,
15088 x_msg_data OUT NOCOPY VARCHAR2
15089 ) IS
15090
15091 l_api_name CONSTANT VARCHAR2(30) := 'UNAPPLY_APPLIED_CM';
15092 l_api_version CONSTANT NUMBER := 1.0;
15093 l_init_msg_list VARCHAR2(1);
15094 BEGIN
15095 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
15096 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()+');
15097 END IF;
15098
15099 /*--------------------------------------------------+
15100 | Standard start of API savepoint |
15101 +--------------------------------------------------*/
15102 SAVEPOINT unapply_applied_cm_PVT;
15103
15104 /*-------------------------------------------------+
15105 | Standard call to check for call compatibility |
15106 +--------------------------------------------------*/
15107 IF NOT FND_API.Compatible_API_Call(l_api_version,
15108 p_api_version,
15109 l_api_name,
15110 G_PKG_NAME
15111 ) THEN
15112 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
15113 END IF;
15114
15115 /*-------------------------------------------------------------+
15116 | Initialize message list if p_init_msg_list is set to TRUE |
15117 +--------------------------------------------------------------*/
15118 IF p_init_msg_list is null THEN
15119 l_init_msg_list := FND_API.G_FALSE;
15120 ELSE
15121 l_init_msg_list := p_init_msg_list;
15122 END IF;
15123
15124 IF FND_API.to_Boolean(l_init_msg_list) THEN
15125 FND_MSG_PUB.initialize;
15126 END IF;
15127
15128 /*----------------------------------------+
15129 | Initialize return status to SUCCESS |
15130 +-----------------------------------------*/
15131
15132 x_return_status := FND_API.G_RET_STS_SUCCESS;
15133
15134 /*----------------------------------------+
15135 | Populate Global Variable |
15136 +-----------------------------------------*/
15137
15138 G_DATA_TRANSFER_MODE := 'WIN';
15139
15140 update zx_lines
15141 set adjusted_doc_application_id = null,
15142 adjusted_doc_entity_code = null,
15143 adjusted_doc_event_class_code = null,
15144 adjusted_doc_trx_id = null,
15145 adjusted_doc_line_id = null,
15146 adjusted_doc_number = null,
15147 adjusted_doc_date = null,
15151 and entity_code = 'TRANSACTIONS'
15148 adjusted_doc_trx_level_type = null,
15149 adjusted_doc_tax_line_id = null
15150 where application_id = 222
15152 and event_class_code = 'CREDIT_MEMO'
15153 and trx_id = p_trx_id;
15154
15155 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
15156 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
15157 'Number of Rows updated in zx_lines: '||SQL%ROWCOUNT);
15158 END IF;
15159
15160 update zx_lines_det_factors
15161 set adjusted_doc_application_id = null,
15162 adjusted_doc_entity_code = null,
15163 adjusted_doc_event_class_code = null,
15164 adjusted_doc_trx_id = null,
15165 adjusted_doc_line_id = null,
15166 adjusted_doc_number = null,
15167 adjusted_doc_trx_level_type = null,
15168 adjusted_doc_date = null
15169 where application_id = 222
15170 and entity_code = 'TRANSACTIONS'
15171 and event_class_code = 'CREDIT_MEMO'
15172 and trx_id = p_trx_id;
15173
15174 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
15175 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name,
15176 'Number of Rows updated in zx_lines_det_factors: '||SQL%ROWCOUNT);
15177 FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN','ZX_API_PUB: '||l_api_name||'()-');
15178 END IF;
15179 EXCEPTION
15180 WHEN FND_API.G_EXC_ERROR THEN
15181 ROLLBACK TO unapply_applied_cm_PVT;
15182 x_return_status := FND_API.G_RET_STS_ERROR ;
15183 DUMP_MSG;
15184 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
15185 p_count => x_msg_count,
15186 p_data => x_msg_data
15187 );
15188 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
15189 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'Exception(-)');
15190 END IF;
15191 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
15192 ROLLBACK TO unapply_applied_cm_PVT;
15193 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
15194 DUMP_MSG;
15195 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
15196 p_count => x_msg_count,
15197 p_data => x_msg_data
15198 );
15199 IF ( G_LEVEL_ERROR >= G_CURRENT_RUNTIME_LEVEL) THEN
15200 FND_LOG.STRING(G_LEVEL_ERROR,G_MODULE_NAME||l_api_name,'Unexpected Error(-)');
15201 END IF;
15202 WHEN OTHERS THEN
15203 ROLLBACK TO unapply_applied_cm_PVT;
15204 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
15205 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
15206 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||l_api_name,SQLERRM);
15207 END IF;
15208 END unapply_applied_cm;
15209
15210 END ZX_API_PUB;