[Home] [Help]
PACKAGE BODY: APPS.ZX_TCM_GET_EXEMPT_PKG
Source
1 PACKAGE BODY ZX_TCM_GET_EXEMPT_PKG AS
2 /* $Header: zxcgetexemptb.pls 120.31 2010/05/24 11:38:25 tsen ship $ */
3
4 G_CURRENT_RUNTIME_LEVEL NUMBER;
5 G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
6 G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
7 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
8 G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
9 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
10 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
11 G_MODULE_NAME CONSTANT VARCHAR2(30) := 'ZX.PLSQL.ZX_TCM_GET_EXEMPT_PKG';
12 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
13 procedure period_date_range( p_tax_date in date,
14 p_ledger_id IN NUMBER,
15 start_date out NOCOPY date,
16 end_date out NOCOPY date ) is
17
18 cursor sel_date( p_tax_date in date ) is
19 select p.start_date, p.end_date
20 from gl_period_statuses p, gl_sets_of_books g
21 where p.application_id = 222
22 and p.set_of_books_id = p_ledger_id
23 and trunc(p_tax_date) between p.start_date and p.end_date
24 and g.set_of_books_id = p.set_of_books_id
25 and g.accounted_period_type = p.period_type;
26
27
28 begin
29
30 open sel_date( p_tax_date );
31 fetch sel_date into start_date, end_date;
32 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
33 l_log_msg := 'start_date '||to_char(start_date);
34 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions.period_date_range', l_log_msg);
35 END IF;
36
37
38 if sel_date%notfound
39 then
40 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
41 l_log_msg := 'No Data found';
42 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions.period_date_range', l_log_msg);
43 END IF;
44
45 close sel_date;
46
47 end if;
48 if sel_date%isopen then
49 close sel_date;
50 end if;
51
52 end;
53
54 PROCEDURE get_exemptions(
55 p_ptp_id IN NUMBER,
56 p_cust_account_id IN NUMBER,
57 p_site_use_id IN NUMBER,
58 p_inventory_item_id IN NUMBER,
59 p_tax_date IN DATE,
60 p_exempt_certificate_number IN VARCHAR2,
61 p_reason_code IN VARCHAR2,
62 p_exempt_control_flag IN VARCHAR2,
63 p_tax_regime_code IN VARCHAR2,
64 p_tax IN VARCHAR2,
65 p_tax_status_code IN VARCHAR2,
66 p_tax_rate_code IN VARCHAR2,
67 p_tax_jurisdiction_id IN NUMBER,
68 p_event_class_rec IN zx_api_pub.event_class_rec_type,
69 x_exemption_rec OUT NOCOPY zx_tcm_get_exempt_pkg.exemption_rec_type) IS
70 /*--- Bug 7893788 CURSOR exemptions splitted into three cursor for proformance improvement. */
71 /*
72 CURSOR exemptions(p_ptp_id NUMBER,
73 p_cust_account_id IN NUMBER,
74 p_site_use_id IN NUMBER,
75 p_inventory_item_id NUMBER,
76 p_tax_date DATE,
77 p_exempt_certificate_number VARCHAR2,
78 p_reason_code VARCHAR2,
79 p_exempt_control_flag VARCHAR2,
80 p_tax_regime_code VARCHAR2,
81 p_tax VARCHAR2,
82 p_tax_status_code VARCHAR2,
83 p_tax_rate_code VARCHAR2,
84 p_tax_jurisdiction_id NUMBER
85 ) IS
86 SELECT tax_exemption_id, exemption_type_code, rate_modifier, apply_to_lower_levels_flag,
87 decode(product_id, null, decode(site_use_id, null, decode(cust_account_id, null,4,3),2), 1) select_order1,
88 decode(exemption_status_code,'PRIMARY',1,'MANUAL',2,'UNAPPROVED',3) select_order2,
89 tax_rate_code, tax_jurisdiction_id, tax_status_code, tax, exempt_reason_code, exempt_certificate_number
90 FROM zx_exemptions
91 WHERE party_tax_profile_id = p_ptp_id
92 AND ((p_exempt_control_flag = 'S' and exemption_status_code = 'PRIMARY' )
93 OR ( p_exempt_control_flag = 'E'
94 AND exemption_status_code IN ( 'PRIMARY', 'MANUAL', 'UNAPPROVED' )
95 AND exempt_reason_code = p_reason_code
96 AND ( (rtrim(ltrim(exempt_certificate_number)) = p_exempt_certificate_number)
97 or (exempt_certificate_number IS NULL AND
98 p_exempt_certificate_number IS NULL)) ))
99 AND duplicate_exemption = 0
100 AND tax_regime_code = p_tax_regime_code
101 AND (cust_account_id is null or cust_account_id = p_cust_account_id)
102 AND (site_use_id is null or site_use_id = p_site_use_id)
103 AND (tax is null or tax = p_tax)
104 AND (tax_status_code is null or tax_status_code = p_tax_status_code)
105 AND (tax_rate_code is null or tax_rate_code = p_tax_rate_code)
106 AND (tax_jurisdiction_id is null or tax_jurisdiction_id = p_tax_jurisdiction_id)
107 AND (product_id is null or product_id = p_inventory_item_id)
108 AND effective_from <= p_tax_date
109 AND (effective_to >= p_tax_date or effective_to is null)
110 order by select_order2,
111 select_order1,
112 tax_rate_code NULLS LAST, tax_jurisdiction_id NULLS LAST, tax_status_code NULLS LAST, tax NULLS LAST;
113
114
115 */
116 --bug 7893788
117 CURSOR exemptions1(p_ptp_id NUMBER,
118 p_cust_account_id IN NUMBER,
119 p_site_use_id IN NUMBER,
120 p_inventory_item_id NUMBER,
121 p_tax_date DATE,
122 p_exempt_certificate_number VARCHAR2,
123 p_reason_code VARCHAR2,
124 p_exempt_control_flag VARCHAR2,
125 p_tax_regime_code VARCHAR2,
126 p_tax VARCHAR2,
127 p_tax_status_code VARCHAR2,
128 p_tax_rate_code VARCHAR2,
129 p_tax_jurisdiction_id NUMBER
130 ) IS
131 SELECT tax_exemption_id, exemption_type_code, rate_modifier, apply_to_lower_levels_flag,
132 decode(product_id, null, decode(site_use_id, null, decode(cust_account_id, null,4,3),2), 1) select_order1,
133 decode(exemption_status_code,'PRIMARY',1,'MANUAL',2,'UNAPPROVED',3) select_order2,
134 tax_rate_code, tax_jurisdiction_id, tax_status_code, tax, exempt_reason_code, exempt_certificate_number
135 FROM zx_exemptions
136 WHERE party_tax_profile_id = p_ptp_id
137 AND exemption_status_code = 'PRIMARY'
138 AND duplicate_exemption = 0
139 AND tax_regime_code = p_tax_regime_code
140 AND (cust_account_id is null or cust_account_id = p_cust_account_id)
141 AND (site_use_id is null or site_use_id = p_site_use_id)
142 AND (tax is null or tax = p_tax)
143 AND (tax_status_code is null or tax_status_code = p_tax_status_code)
144 AND (tax_rate_code is null or tax_rate_code = p_tax_rate_code)
145 AND (tax_jurisdiction_id is null or tax_jurisdiction_id = p_tax_jurisdiction_id)
146 AND (product_id is null or product_id = p_inventory_item_id)
147 AND effective_from <= p_tax_date
148 AND (effective_to >= p_tax_date or effective_to is null)
149 AND content_owner_id = nvl(p_event_class_rec.first_pty_org_id,ZX_SECURITY.G_FIRST_PARTY_ORG_ID)
150 order by select_order1, tax_rate_code NULLS LAST, tax_jurisdiction_id NULLS LAST, tax_status_code NULLS LAST, tax NULLS LAST;
151
152 CURSOR exemptions2(p_ptp_id NUMBER,
153 p_cust_account_id IN NUMBER,
154 p_site_use_id IN NUMBER,
155 p_inventory_item_id NUMBER,
156 p_tax_date DATE,
157 p_exempt_certificate_number VARCHAR2,
158 p_reason_code VARCHAR2,
159 p_exempt_control_flag VARCHAR2,
160 p_tax_regime_code VARCHAR2,
161 p_tax VARCHAR2,
162 p_tax_status_code VARCHAR2,
163 p_tax_rate_code VARCHAR2,
164 p_tax_jurisdiction_id NUMBER
165 ) IS
166 SELECT tax_exemption_id, exemption_type_code, rate_modifier, apply_to_lower_levels_flag,
167 decode(product_id, null, decode(site_use_id, null, decode(cust_account_id, null,4,3),2), 1) select_order1,
168 decode(exemption_status_code,'PRIMARY',1,'MANUAL',2,'UNAPPROVED',3) select_order2,
169 tax_rate_code, tax_jurisdiction_id, tax_status_code, tax, exempt_reason_code, exempt_certificate_number
170 FROM zx_exemptions
171 WHERE party_tax_profile_id = p_ptp_id
172 AND exempt_certificate_number IS NULL
173 AND duplicate_exemption = 0
174 AND tax_regime_code = p_tax_regime_code
175 AND (cust_account_id is null or cust_account_id = p_cust_account_id)
176 AND (site_use_id is null or site_use_id = p_site_use_id)
177 AND (tax is null or tax = p_tax)
178 AND (tax_status_code is null or tax_status_code = p_tax_status_code)
179 AND (tax_rate_code is null or tax_rate_code = p_tax_rate_code)
180 AND (tax_jurisdiction_id is null or tax_jurisdiction_id = p_tax_jurisdiction_id)
181 AND (product_id is null or product_id = p_inventory_item_id)
182 AND effective_from <= p_tax_date
183 AND (effective_to >= p_tax_date or effective_to is null)
184 AND content_owner_id = nvl(p_event_class_rec.first_pty_org_id,ZX_SECURITY.G_FIRST_PARTY_ORG_ID)
185 order by select_order2,
186 select_order1,
187 tax_rate_code NULLS LAST, tax_jurisdiction_id NULLS LAST,
188 tax_status_code NULLS LAST, tax NULLS LAST;
189
190 CURSOR exemptions3(p_ptp_id NUMBER,
191 p_cust_account_id IN NUMBER,
192 p_site_use_id IN NUMBER,
193 p_inventory_item_id NUMBER,
194 p_tax_date DATE,
195 p_exempt_certificate_number VARCHAR2,
196 p_reason_code VARCHAR2,
197 p_exempt_control_flag VARCHAR2,
198 p_tax_regime_code VARCHAR2,
199 p_tax VARCHAR2,
200 p_tax_status_code VARCHAR2,
201 p_tax_rate_code VARCHAR2,
202 p_tax_jurisdiction_id NUMBER
203 ) IS
204 SELECT tax_exemption_id, exemption_type_code, rate_modifier, apply_to_lower_levels_flag,
205 decode(product_id, null, decode(site_use_id, null, decode(cust_account_id, null,4,3),2), 1) select_order1,
206 decode(exemption_status_code,'PRIMARY',1,'MANUAL',2,'UNAPPROVED',3) select_order2,
207 tax_rate_code, tax_jurisdiction_id, tax_status_code, tax, exempt_reason_code, exempt_certificate_number
208 FROM zx_exemptions
209 WHERE party_tax_profile_id = p_ptp_id
210 AND exemption_status_code IN ( 'PRIMARY', 'MANUAL', 'UNAPPROVED' )
211 AND exempt_reason_code = p_reason_code
212 AND rtrim(ltrim(exempt_certificate_number)) = p_exempt_certificate_number
213 AND duplicate_exemption = 0
214 AND tax_regime_code = p_tax_regime_code
215 AND (cust_account_id is null or cust_account_id = p_cust_account_id)
216 AND (site_use_id is null or site_use_id = p_site_use_id)
217 AND (tax is null or tax = p_tax)
218 AND (tax_status_code is null or tax_status_code = p_tax_status_code)
219 AND (tax_rate_code is null or tax_rate_code = p_tax_rate_code)
220 AND (tax_jurisdiction_id is null or tax_jurisdiction_id = p_tax_jurisdiction_id)
221 AND (product_id is null or product_id = p_inventory_item_id)
222 AND effective_from <= p_tax_date
223 AND (effective_to >= p_tax_date or effective_to is null)
224 AND content_owner_id = nvl(p_event_class_rec.first_pty_org_id,ZX_SECURITY.G_FIRST_PARTY_ORG_ID)
225 order by select_order2,
226 select_order1,
227 tax_rate_code NULLS LAST, tax_jurisdiction_id NULLS LAST,
228 tax_status_code NULLS LAST, tax NULLS LAST;
229
230
231 l_tax_exmpt_cr_method_code VARCHAR2(30);
232 l_tax_exmpt_source_tax VARCHAR2(30);
233 l_order_by1 NUMBER;
234 l_order_by2 NUMBER;
235 l_source_tax_jurisdiction_id NUMBER;
236 l_tax_rate_code VARCHAR2(50);
237 l_tax_status_code VARCHAR2(30);
238 l_tax VARCHAR2(30);
239 l_tax_jurisdiction_id NUMBER;
240 l_tax_rec ZX_TDS_UTILITIES_PKG.zx_tax_info_cache_rec;
241 l_return_status VARCHAR2(30);
242 l_error_buffer VARCHAR2(240);
243 l_exists VARCHAR2(10);
244 BEGIN
245
246 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
247 l_log_msg := 'Get Exemptions';
248 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
249 END IF;
250 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
251 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions',
252 'p_ptp_id '|| to_char(p_ptp_id) || ' '||
253 'p_cust_account_id '|| to_char(p_cust_account_id) || ' '||
254 'p_site_use_id '|| to_char(p_site_use_id) || ' '||
255 'p_inventory_item_id '|| to_char(p_inventory_item_id)|| ' '||
256 'p_tax_date ' || to_char(p_tax_date)|| ' '||
257 'p_exempt_certificate_number '|| p_exempt_certificate_number|| ' '||
258 'p_reason_code ' || p_reason_code|| ' '||
259 'p_exempt_control_flag '|| p_exempt_control_flag|| ' '||
260 'p_tax_regime_code ' || p_tax_regime_code|| ' '||
261 'p_tax' || p_tax|| ' '||
262 'p_tax_status_code '|| p_tax_status_code|| ' '||
263 'p_tax_rate_code '|| p_tax_rate_code|| ' '||
264 'p_tax_jurisdiction_id '|| to_char(p_tax_jurisdiction_id));
265 END IF;
266
267 /*--- Bug 7893788 CURSOR exemptions splitted into three cursor for proformance improvement. */
268 If p_exempt_control_flag = 'S' then
269 OPEN exemptions1(p_ptp_id,
270 p_cust_account_id,
271 p_site_use_id,
272 p_inventory_item_id,
273 p_tax_date,
274 p_exempt_certificate_number,
275 p_reason_code,
276 p_exempt_control_flag,
277 p_tax_regime_code,
278 p_tax,
279 p_tax_status_code,
280 p_tax_rate_code,
281 p_tax_jurisdiction_id);
282
283 LOOP
284 FETCH exemptions1 INTO x_exemption_rec.exemption_id, x_exemption_rec.discount_special_rate,
285 x_exemption_rec.percent_exempt, x_exemption_rec.apply_to_lower_levels_flag,
286 l_order_by1, l_order_by2, l_tax_rate_code, l_tax_jurisdiction_id, l_tax_status_code, l_tax , x_exemption_rec.exempt_reason_code, x_exemption_rec.exempt_certificate_number;
287 EXIT WHEN exemptions1%NOTFOUND;
288 IF x_exemption_rec.exemption_id IS NOT NULL THEN
289 IF x_exemption_rec.exempt_reason_code IS NOT NULL THEN
290 BEGIN
291 SELECT meaning
292 INTO x_exemption_rec.exempt_reason
293 from FND_LOOKUPS
294 where lookup_type = 'ZX_EXEMPTION_REASON_CODE'
295 and lookup_code = x_exemption_rec.exempt_reason_code;
296 EXCEPTION
297 WHEN NO_DATA_FOUND THEN
298 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
299 FND_LOG.string(G_LEVEL_UNEXPECTED,G_MODULE_NAME,
300 'There is no exempt reason lookup type for this exempt reason.');
301 END IF;
302 RAISE FND_API.G_EXC_ERROR;
303 IF EXEMPTIONS1%ISOPEN THEN
304 CLOSE EXEMPTIONS1;
305 END IF;
306 WHEN OTHERS THEN
307 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
308 FND_LOG.string(G_LEVEL_UNEXPECTED,G_MODULE_NAME,
309 'Failed when trying to get the meaning for Reason Code due to '||SQLERRM);
310 END IF;
311 RAISE FND_API.G_EXC_ERROR;
312 IF EXEMPTIONS1%ISOPEN THEN
313 CLOSE EXEMPTIONS1;
314 END IF;
315 END;
316 END IF;
317 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
318 l_log_msg := 'Tax Exemptions Id '||to_char(x_exemption_rec.exemption_id) || ' Percent Exempt '||to_char(x_exemption_rec.percent_exempt);
319 FND_LOG.string(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
320 END IF;
321 EXIT;
322
323 END IF;
324
325 END LOOP;
326 CLOSE exemptions1;
327
328 elsif p_exempt_control_flag = 'E' then
329 if p_exempt_certificate_number IS NULL then
330 OPEN exemptions2(p_ptp_id,
331 p_cust_account_id,
332 p_site_use_id,
333 p_inventory_item_id,
334 p_tax_date,
335 p_exempt_certificate_number,
336 p_reason_code,
337 p_exempt_control_flag,
338 p_tax_regime_code,
339 p_tax,
340 p_tax_status_code,
341 p_tax_rate_code,
342 p_tax_jurisdiction_id);
343
344 LOOP
345 FETCH exemptions2 INTO x_exemption_rec.exemption_id, x_exemption_rec.discount_special_rate,
346 x_exemption_rec.percent_exempt, x_exemption_rec.apply_to_lower_levels_flag,
347 l_order_by1, l_order_by2, l_tax_rate_code, l_tax_jurisdiction_id, l_tax_status_code, l_tax , x_exemption_rec.exempt_reason_code, x_exemption_rec.exempt_certificate_number;
348 EXIT WHEN exemptions2%NOTFOUND;
349 IF x_exemption_rec.exemption_id IS NOT NULL THEN
350 IF x_exemption_rec.exempt_reason_code IS NOT NULL THEN
351 BEGIN
352 SELECT meaning
353 INTO x_exemption_rec.exempt_reason
354 from FND_LOOKUPS
355 where lookup_type = 'ZX_EXEMPTION_REASON_CODE'
356 and lookup_code = x_exemption_rec.exempt_reason_code;
357 EXCEPTION
358 WHEN NO_DATA_FOUND THEN
359 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
360 FND_LOG.string(G_LEVEL_UNEXPECTED,G_MODULE_NAME,
361 'There is no exempt reason lookup type for this exempt reason.');
362 END IF;
363 RAISE FND_API.G_EXC_ERROR;
364 IF EXEMPTIONS2%ISOPEN THEN
365 CLOSE EXEMPTIONS2;
366 END IF;
367 WHEN OTHERS THEN
368 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
369 FND_LOG.string(G_LEVEL_UNEXPECTED,G_MODULE_NAME,
370 'Failed when trying to get the meaning for Reason Code due to '||SQLERRM);
371 END IF;
372 RAISE FND_API.G_EXC_ERROR;
373 IF EXEMPTIONS2%ISOPEN THEN
374 CLOSE EXEMPTIONS2;
375 END IF;
376 END;
377 END IF;
378 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
379 l_log_msg := 'Tax Exemptions Id '||to_char(x_exemption_rec.exemption_id) || ' Percent Exempt '||to_char(x_exemption_rec.percent_exempt);
380 FND_LOG.string(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
381 END IF;
382 EXIT;
383
384 END IF;
385
386 END LOOP;
387 CLOSE exemptions2;
388
389 else
390 OPEN exemptions3(p_ptp_id,
391 p_cust_account_id,
392 p_site_use_id,
393 p_inventory_item_id,
394 p_tax_date,
395 p_exempt_certificate_number,
396 p_reason_code,
397 p_exempt_control_flag,
398 p_tax_regime_code,
399 p_tax,
400 p_tax_status_code,
401 p_tax_rate_code,
402 p_tax_jurisdiction_id);
403
404 LOOP
405 FETCH exemptions3 INTO x_exemption_rec.exemption_id, x_exemption_rec.discount_special_rate,
406 x_exemption_rec.percent_exempt, x_exemption_rec.apply_to_lower_levels_flag,
407 l_order_by1, l_order_by2, l_tax_rate_code, l_tax_jurisdiction_id, l_tax_status_code, l_tax , x_exemption_rec.exempt_reason_code, x_exemption_rec.exempt_certificate_number;
408 EXIT WHEN exemptions3%NOTFOUND;
409 IF x_exemption_rec.exemption_id IS NOT NULL THEN
410 IF x_exemption_rec.exempt_reason_code IS NOT NULL THEN
411 BEGIN
412 SELECT meaning
413 INTO x_exemption_rec.exempt_reason
414 from FND_LOOKUPS
415 where lookup_type = 'ZX_EXEMPTION_REASON_CODE'
416 and lookup_code = x_exemption_rec.exempt_reason_code;
417 EXCEPTION
418 WHEN NO_DATA_FOUND THEN
419 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
420 FND_LOG.string(G_LEVEL_UNEXPECTED,G_MODULE_NAME,
421 'There is no exempt reason lookup type for this exempt reason.');
422 END IF;
423 RAISE FND_API.G_EXC_ERROR;
424 WHEN OTHERS THEN
425 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
426 FND_LOG.string(G_LEVEL_UNEXPECTED,G_MODULE_NAME,
427 'Failed when trying to get the meaning for Reason Code due to '||SQLERRM);
428 END IF;
429 RAISE FND_API.G_EXC_ERROR;
430 IF EXEMPTIONS3%ISOPEN THEN
431 CLOSE EXEMPTIONS3;
432 END IF;
433 IF EXEMPTIONS3%ISOPEN THEN
434 CLOSE EXEMPTIONS3;
435 END IF;
436 END;
437 END IF;
438 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
439 l_log_msg := 'Tax Exemptions Id '||to_char(x_exemption_rec.exemption_id) || ' Percent Exempt '||to_char(x_exemption_rec.percent_exempt);
440 FND_LOG.string(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
441 END IF;
442 EXIT;
443
444 END IF;
445
446 END LOOP;
447 CLOSE exemptions3;
448
449 end if;
450 end if;
451
452 IF x_exemption_rec.exemption_id IS NULL AND p_tax IS NOT NULL THEN
453
454
455 ZX_TDS_UTILITIES_PKG.get_tax_cache_info (
456 p_tax_regime_code => p_tax_regime_code,
457 p_tax => p_tax,
458 p_tax_determine_date => p_tax_date,
459 x_tax_rec => l_tax_rec,
460 p_return_status => l_return_status,
461 p_error_buffer => l_error_buffer);
462
463 l_tax_exmpt_cr_method_code := l_tax_rec.tax_exmpt_cr_method_code;
464 l_tax_exmpt_source_tax := l_tax_rec.tax_exmpt_source_tax;
465
466 /* Use cache
467 SELECT tax_exmpt_cr_method_code, tax_exmpt_source_tax
468 INTO l_tax_exmpt_cr_method_code, l_tax_exmpt_source_tax
469 FROM zx_sco_taxes
470 WHERE tax_regime_code = p_tax_regime_code
471 AND tax = p_tax;
472 */
473
474
475 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
476 l_log_msg := 'Get Exemptions Source Tax';
477 FND_LOG.string(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
478 END IF;
479
480 IF l_tax_exmpt_cr_method_code = 'USE_EXEMPTIONS' THEN
481 IF l_tax_exmpt_source_tax IS NOT NULL THEN
482 IF p_tax_jurisdiction_id IS NOT NULL THEN
483 SELECT TAX_EXMPT_SRC_JURISDICT_ID
484 INTO l_source_tax_jurisdiction_id
485 FROM zx_jurisdictions_b
486 WHERE tax_jurisdiction_id = p_tax_jurisdiction_id
487 AND effective_from <= p_tax_date
488 AND (effective_to >= p_tax_date or effective_to is null);
489 END IF;
490
491
492 If p_exempt_control_flag = 'S' then
493 OPEN exemptions1(p_ptp_id,
494 p_cust_account_id,
495 p_site_use_id,
496 p_inventory_item_id,
497 p_tax_date,
498 p_exempt_certificate_number,
499 p_reason_code,
500 p_exempt_control_flag,
501 p_tax_regime_code,
502 l_tax_exmpt_source_tax,
503 p_tax_status_code,
504 p_tax_rate_code,
505 l_source_tax_jurisdiction_id);
506
507 LOOP
508 FETCH exemptions1 INTO x_exemption_rec.exemption_id, x_exemption_rec.discount_special_rate,
509 x_exemption_rec.percent_exempt, x_exemption_rec.apply_to_lower_levels_flag,
510 l_order_by1, l_order_by2,l_tax_rate_code, l_tax_jurisdiction_id, l_tax_status_code, l_tax, x_exemption_rec.exempt_reason_code, x_exemption_rec.exempt_certificate_number;
511 EXIT WHEN exemptions1%NOTFOUND;
512
513 IF x_exemption_rec.exemption_id IS NOT NULL THEN
514 IF x_exemption_rec.apply_to_lower_levels_flag = 'Y' THEN
515 EXIT;
516 ELSE
517 x_exemption_rec.exemption_id := null;
518 x_exemption_rec.discount_special_rate := null;
519 x_exemption_rec.percent_exempt := null;
520 x_exemption_rec.apply_to_lower_levels_flag := null;
521
522 END IF;
523 END IF;
524
525 END LOOP;
526 CLOSE exemptions1;
527
528 elsif p_exempt_control_flag = 'E' then
529 if p_exempt_certificate_number IS NULL then
530 OPEN exemptions2(p_ptp_id,
531 p_cust_account_id,
532 p_site_use_id,
533 p_inventory_item_id,
534 p_tax_date,
535 p_exempt_certificate_number,
536 p_reason_code,
537 p_exempt_control_flag,
538 p_tax_regime_code,
539 l_tax_exmpt_source_tax,
540 p_tax_status_code,
541 p_tax_rate_code,
542 l_source_tax_jurisdiction_id);
543
544 LOOP
545 FETCH exemptions2 INTO x_exemption_rec.exemption_id, x_exemption_rec.discount_special_rate,
546 x_exemption_rec.percent_exempt, x_exemption_rec.apply_to_lower_levels_flag,
547 l_order_by1, l_order_by2,l_tax_rate_code, l_tax_jurisdiction_id, l_tax_status_code, l_tax, x_exemption_rec.exempt_reason_code, x_exemption_rec.exempt_certificate_number;
548 EXIT WHEN exemptions2%NOTFOUND;
549
550 IF x_exemption_rec.exemption_id IS NOT NULL THEN
551 IF x_exemption_rec.apply_to_lower_levels_flag = 'Y' THEN
552 EXIT;
553 ELSE
554 x_exemption_rec.exemption_id := null;
555 x_exemption_rec.discount_special_rate := null;
556 x_exemption_rec.percent_exempt := null;
557 x_exemption_rec.apply_to_lower_levels_flag := null;
558
559 END IF;
560 END IF;
561
562 END LOOP;
563 CLOSE exemptions2;
564
565 else
566 OPEN exemptions3(p_ptp_id,
567 p_cust_account_id,
568 p_site_use_id,
569 p_inventory_item_id,
570 p_tax_date,
571 p_exempt_certificate_number,
572 p_reason_code,
573 p_exempt_control_flag,
574 p_tax_regime_code,
575 l_tax_exmpt_source_tax,
576 p_tax_status_code,
577 p_tax_rate_code,
578 l_source_tax_jurisdiction_id);
579
580 LOOP
581 FETCH exemptions3 INTO x_exemption_rec.exemption_id, x_exemption_rec.discount_special_rate,
582 x_exemption_rec.percent_exempt, x_exemption_rec.apply_to_lower_levels_flag,
583 l_order_by1, l_order_by2,l_tax_rate_code, l_tax_jurisdiction_id, l_tax_status_code, l_tax, x_exemption_rec.exempt_reason_code, x_exemption_rec.exempt_certificate_number;
584 EXIT WHEN exemptions3%NOTFOUND;
585
586 IF x_exemption_rec.exemption_id IS NOT NULL THEN
587 IF x_exemption_rec.apply_to_lower_levels_flag = 'Y' THEN
588 EXIT;
589 ELSE
590 x_exemption_rec.exemption_id := null;
591 x_exemption_rec.discount_special_rate := null;
592 x_exemption_rec.percent_exempt := null;
593 x_exemption_rec.apply_to_lower_levels_flag := null;
594
595 END IF;
596 END IF;
597
598 END LOOP;
599 CLOSE exemptions3;
600
601 end if;
602 end if;
603
604 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
605 l_log_msg := 'Tax Exemptions Id '||to_char(x_exemption_rec.exemption_id) || ' Percent Exempt '||to_char(x_exemption_rec.percent_exempt);
606 FND_LOG.string(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
607 END IF;
608 END IF;
609 END IF;
610 END IF;
611 END;
612
613 PROCEDURE get_tax_exemptions (p_bill_to_cust_site_use_id IN NUMBER,
614 p_bill_to_cust_acct_id IN NUMBER,
615 p_bill_to_party_site_ptp_id IN NUMBER,
616 p_bill_to_party_ptp_id IN NUMBER,
617 p_sold_to_party_site_ptp_id IN NUMBER,
618 p_sold_to_party_ptp_id IN NUMBER,
619 p_inventory_org_id IN NUMBER,
620 p_inventory_item_id IN NUMBER,
621 p_exempt_certificate_number IN VARCHAR2,
622 p_reason_code IN VARCHAR2,
623 p_exempt_control_flag IN VARCHAR2,
624 p_tax_date IN DATE,
625 p_tax_regime_code IN VARCHAR2,
626 p_tax IN VARCHAR2,
627 p_tax_status_code IN VARCHAR2,
628 p_tax_rate_code IN VARCHAR2,
629 p_tax_jurisdiction_id IN NUMBER,
630 p_multiple_jurisdictions_flag IN VARCHAR2,
631 p_event_class_rec IN zx_api_pub.event_class_rec_type,
632 x_return_status OUT NOCOPY VARCHAR2,
633 x_exemption_rec OUT NOCOPY exemption_rec_type) IS
634 l_tax_jurisdiction_code VARCHAR2(30);
635 l_ledger_id NUMBER;
636 l_start_date DATE;
637 l_end_date DATE;
638 l_exists VARCHAR2(1);
639 i BINARY_INTEGER;
640 n BINARY_INTEGER;
641 l_tax_jurisdiction_id NUMBER;
642 TYPE number_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
643 l_tax_jurisdiction_id_tbl NUMBER_TBL_TYPE;
644 l_precedence_level_tbl NUMBER_TBL_TYPE;
645 -----l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
646 BEGIN
647 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
648 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
649 l_log_msg := 'Get Tax Exemptions ' ||
650 'p_bill_to_cust_site_use_id= '|| p_bill_to_cust_site_use_id ||
651 'p_bill_to_cust_acct_id= '|| p_bill_to_cust_acct_id ||
652 'p_bill_to_party_site_ptp_id= '|| p_bill_to_party_site_ptp_id||
653 'p_bill_to_party_ptp_id= '|| p_bill_to_party_ptp_id ||
654 'p_sold_to_party_site_ptp_id= '|| p_sold_to_party_site_ptp_id||
655 'p_sold_to_party_ptp_id= '|| p_sold_to_party_ptp_id ||
656 'p_inventory_org_id= '|| p_inventory_org_id ||
657 'p_inventory_item_id= '|| p_inventory_item_id ||
658 'p_exempt_certificate_number= '|| p_exempt_certificate_number||
659 'p_reason_code= '|| p_reason_code ||
660 'p_exempt_control_flag= '|| p_exempt_control_flag ||
661 'p_tax_date= '|| p_tax_date ||
662 'p_tax_regime_code= '|| p_tax_regime_code ||
663 'p_tax= '|| p_tax ||
664 'p_tax_status_code= '|| p_tax_status_code ||
665 'p_tax_rate_code= '|| p_tax_rate_code ||
666 'p_tax_jurisdiction_id= '|| p_tax_jurisdiction_id ||
667 'p_multiple_jurisdictions_flag= '||p_multiple_jurisdictions_flag ||
668 'p_event_class_rec.ledger_id= '||p_event_class_rec.ledger_id
669 ;
670 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
671 END IF;
672
673 x_return_status := FND_API.G_RET_STS_SUCCESS;
674 IF p_exempt_control_flag = 'E' and p_reason_code is null THEN
675 x_return_status := FND_API.G_RET_STS_ERROR;
676 FND_MESSAGE.SET_NAME('ZX', 'ZX_TCM_NO_EXEMPT_REASON');
677 RAISE FND_API.G_EXC_ERROR;
678
679 END IF;
680
681 IF nvl(p_multiple_jurisdictions_flag,'N') = 'N' THEN
682 l_tax_jurisdiction_id_tbl(1) := p_tax_jurisdiction_id;
683 ELSE
684 SELECT tax_jurisdiction_id, precedence_level
685 BULK COLLECT INTO l_tax_jurisdiction_id_tbl, l_precedence_level_tbl
686 FROM zx_jurisdictions_gt
687 ORDER BY precedence_level;
688 END IF;
689
690 FOR i in l_tax_jurisdiction_id_tbl.first..l_tax_jurisdiction_id_tbl.last LOOP
691 IF nvl(p_event_class_rec.EXMPTN_PTY_BASIS_HIER_1_CODE,'BILL_TO') = 'BILL_TO' THEN
692 -- call ptp_based_exemptions with p_bill_to_party_site_ptp_id,
693 get_exemptions( p_bill_to_party_site_ptp_id,
694 p_bill_to_cust_acct_id,
695 p_bill_to_cust_site_use_id,
696 p_inventory_item_id,
697 p_tax_date,
698 p_exempt_certificate_number,
699 p_reason_code,
700 p_exempt_control_flag,
701 p_tax_regime_code,
702 p_tax,
703 p_tax_status_code,
704 p_tax_rate_code,
705 l_tax_jurisdiction_id_tbl(i),
706 p_event_class_rec,
707 x_exemption_rec);
708 IF x_exemption_rec.exemption_id IS NULL THEN
709 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
710 l_log_msg := 'Calling get_exemptions with p_bill_to_party_ptp_id';
711 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
712 END IF;
713 -- call ptp_based_exemptions with p_bill_to_party_ptp_id,
714 get_exemptions( p_bill_to_party_ptp_id,
715 p_bill_to_cust_acct_id,
716 p_bill_to_cust_site_use_id,
717 p_inventory_item_id,
718 p_tax_date,
719 p_exempt_certificate_number,
720 p_reason_code,
721 p_exempt_control_flag,
722 p_tax_regime_code,
723 p_tax,
724 p_tax_status_code,
725 p_tax_rate_code,
726 l_tax_jurisdiction_id_tbl(i),
727 p_event_class_rec,
728 x_exemption_rec);
729
730 END IF;
731
732 --
733 ELSIF p_event_class_rec.EXMPTN_PTY_BASIS_HIER_1_CODE = 'SOLD_TO' THEN
734 -- call ptp_based_exemptions with p_sold_to_party_site_ptp_id,
735 get_exemptions( p_sold_to_party_site_ptp_id,
736 p_bill_to_cust_acct_id,
737 p_bill_to_cust_site_use_id,
738 p_inventory_item_id,
739 p_tax_date,
740 p_exempt_certificate_number,
741 p_reason_code,
742 p_exempt_control_flag,
743 p_tax_regime_code,
744 p_tax,
745 p_tax_status_code,
746 p_tax_rate_code,
747 l_tax_jurisdiction_id_tbl(i),
748 p_event_class_rec,
749 x_exemption_rec);
750 IF x_exemption_rec.exemption_id IS NULL THEN
751 -- call ptp_based_exemptions with p_sold_to_party_ptp_id,
752 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
753 l_log_msg := 'Calling get_exemptions with p_sold_to_party_ptp_id';
754 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
755 END IF;
756 get_exemptions( p_sold_to_party_ptp_id,
757 p_bill_to_cust_acct_id,
758 p_bill_to_cust_site_use_id,
759 p_inventory_item_id,
760 p_tax_date,
761 p_exempt_certificate_number,
762 p_reason_code,
763 p_exempt_control_flag,
764 p_tax_regime_code,
765 p_tax,
766 p_tax_status_code,
767 p_tax_rate_code,
768 l_tax_jurisdiction_id_tbl(i),
769 p_event_class_rec,
770 x_exemption_rec);
771
772 END IF;
773
774 END IF; -- hier_1_code check
775 --
776 IF x_exemption_rec.exemption_id IS NULL THEN
777 -- Need not add nvl for EXMPTN_PTY_BASIS_HIER_2_CODE
778 -- since get_exemptions has got executed with 'BILL_TO' earlier
779 IF p_event_class_rec.EXMPTN_PTY_BASIS_HIER_2_CODE = 'BILL_TO' THEN
780
781 -- call ptp_based_exemptions with p_bill_to_party_site_ptp_id,
782 get_exemptions( p_bill_to_party_site_ptp_id,
783 p_bill_to_cust_acct_id,
784 p_bill_to_cust_site_use_id,
785 p_inventory_item_id,
786 p_tax_date,
787 p_exempt_certificate_number,
788 p_reason_code,
789 p_exempt_control_flag,
790 p_tax_regime_code,
791 p_tax,
792 p_tax_status_code,
793 p_tax_rate_code,
794 l_tax_jurisdiction_id_tbl(i),
795 p_event_class_rec,
796 x_exemption_rec);
797 IF x_exemption_rec.exemption_id IS NULL THEN
798 -- call ptp_based_exemptions with p_bill_to_party_ptp_id,
799 get_exemptions( p_bill_to_party_ptp_id,
800 p_bill_to_cust_acct_id,
801 p_bill_to_cust_site_use_id,
802 p_inventory_item_id,
803 p_tax_date,
804 p_exempt_certificate_number,
805 p_reason_code,
806 p_exempt_control_flag,
807 p_tax_regime_code,
808 p_tax,
809 p_tax_status_code,
810 p_tax_rate_code,
811 l_tax_jurisdiction_id_tbl(i),
812 p_event_class_rec,
813 x_exemption_rec);
814
815 END IF;
816
817 --
818 ELSIF p_event_class_rec.EXMPTN_PTY_BASIS_HIER_2_CODE = 'SOLD_TO' THEN
819 get_exemptions( p_sold_to_party_site_ptp_id,
820 p_bill_to_cust_acct_id,
821 p_bill_to_cust_site_use_id,
822 p_inventory_item_id,
823 p_tax_date,
824 p_exempt_certificate_number,
825 p_reason_code,
826 p_exempt_control_flag,
827 p_tax_regime_code,
828 p_tax,
829 p_tax_status_code,
830 p_tax_rate_code,
831 l_tax_jurisdiction_id_tbl(i),
832 p_event_class_rec,
833 x_exemption_rec);
834 IF x_exemption_rec.exemption_id IS NULL THEN
835 -- call ptp_based_exemptions with p_sold_to_party_ptp_id,
836 get_exemptions( p_sold_to_party_ptp_id,
837 p_bill_to_cust_acct_id,
838 p_bill_to_cust_site_use_id,
839 p_inventory_item_id,
840 p_tax_date,
841 p_exempt_certificate_number,
842 p_reason_code,
843 p_exempt_control_flag,
844 p_tax_regime_code,
845 p_tax,
846 p_tax_status_code,
847 p_tax_rate_code,
848 l_tax_jurisdiction_id_tbl(i),
849 p_event_class_rec,
850 x_exemption_rec);
851
852 END IF;
853
854 END IF; -- hier_2_code check
855
856 END IF; -- exemption id null check
857 IF x_exemption_rec.exemption_id IS NOT NULL THEN
858 EXIT;
859 END IF;
860
861 END LOOP;
862
863
864 IF x_exemption_rec.exemption_id IS NULL THEN
865 IF p_exempt_control_flag = 'E' THEN
866
867 IF p_event_class_rec.ledger_id is null THEN
868 IF zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID.exists(1) THEN
869 SELECT set_of_books_id
870 INTO l_ledger_id
871 FROM ar_system_parameters_all
872 WHERE org_id = zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(1);
873 ELSIF p_event_class_rec.internal_organization_id is not null THEN
874 SELECT set_of_books_id
875 INTO l_ledger_id
876 FROM ar_system_parameters_all
877 WHERE org_id = p_event_class_rec.internal_organization_id;
878 END IF;
879
880 END IF;
881 period_date_range(p_tax_date,
882 nvl(p_event_class_rec.ledger_id, l_ledger_id),
883 l_start_date,
884 l_end_date);
885 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
886 l_log_msg := 'l_start_date '||to_char(l_start_date);
887 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', l_log_msg);
888 END IF;
889
890
891 n := l_tax_jurisdiction_id_tbl.last;
892 l_tax_jurisdiction_id := l_tax_jurisdiction_id_tbl(n);
893
894 Begin
895 select 'Y' into l_exists
896 from
897 zx_exemptions
898 where nvl(tax_rate_code,'X') = nvl(p_tax_rate_code,'X') and
899 effective_from = nvl(l_start_date, trunc(sysdate))
900 and nvl(exempt_certificate_number,'X') = nvl(p_exempt_certificate_number,'X')
901 and exempt_reason_code = p_reason_code
902 and party_tax_profile_id = p_bill_to_party_ptp_id
903 and tax_regime_code = p_tax_regime_code
904 and content_owner_id =
905 nvl(p_event_class_rec.first_pty_org_id,ZX_SECURITY.G_FIRST_PARTY_ORG_ID)
906 and nvl(tax_status_code,'X') = nvl(p_tax_status_code,'X')
907 and nvl(tax,'X') = nvl(p_tax,'X')
908 and nvl(tax_jurisdiction_id,-999) = nvl(l_tax_jurisdiction_id,-999)
909 and exemption_status_code = 'UNAPPROVED';
910
911 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
912 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions', 'Unapproved exemption exists');
913 END IF;
914
915 exception
916 when no_data_found THEN
917 l_exists := 'N';
918 when others then
919 l_exists := 'N';
920 end;
921
922 IF l_exists = 'N' THEN
923 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
924 l_log_msg := 'Create Unapproved Exemption';
925 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions',
926 l_log_msg);
927 END IF;
928
929 SELECT zx_exemptions_s.nextval
930 INTO x_exemption_rec.exemption_id
931 FROM dual;
932 x_exemption_rec.discount_special_rate := 'DISCOUNT';
933 x_exemption_rec.percent_exempt := 100;
934 x_exemption_rec.apply_to_lower_levels_flag := 'Y';
935 x_exemption_rec.exempt_reason_code := p_reason_code;
936 x_exemption_rec.exempt_certificate_number := p_exempt_certificate_number;
937
938 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
939 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME || 'Get_tax_exemptions',
940 'Exemption Id '|| to_char(x_exemption_rec.exemption_id) || ' '||
941 'Tax Regime Code '|| p_TAX_REGIME_CODE || ' '||
942 'Tax '|| p_TAX || ' '||
943 'Tax Status Code ' ||p_TAX_STATUS_CODE || ' ' ||
944 'Tax Rate Code '||p_tax_rate_code || ' ' ||
945 'Content owner id '||to_char(nvl(p_event_class_rec.first_pty_org_id,ZX_SECURITY.G_FIRST_PARTY_ORG_ID)) || ' ' ||
946 'Exemption Certificate Number '|| p_exempt_certificate_number || ' ' ||
947 'Reason Code '|| p_REASON_CODE || ' ' ||
948 'Start Date '|| to_char(nvl(l_start_date, trunc(sysdate))) || ' ' ||
949 'Bill to party ptp id '|| to_char(p_bill_to_party_ptp_id) || ' ' ||
950 'Tax Jurisdiction id '|| to_char(l_tax_jurisdiction_id));
951 END IF;
952
953 INSERT INTO ZX_EXEMPTIONS(
954 TAX_EXEMPTION_ID,
955 EXEMPTION_TYPE_CODE,
956 EXEMPTION_STATUS_CODE,
957 TAX_REGIME_CODE,
958 TAX,
959 TAX_STATUS_CODE,
960 tax_rate_code,
961 CONTENT_OWNER_ID,
962 EXEMPT_CERTIFICATE_NUMBER,
963 EXEMPT_REASON_CODE,
964 EFFECTIVE_FROM,
965 PARTY_TAX_PROFILE_ID,
966 RATE_MODIFIER,
967 APPLY_TO_LOWER_LEVELS_FLAG,
968 TAX_JURISDICTION_ID,
969 cust_account_id,
970 site_use_id,
971 RECORD_TYPE_CODE,
972 CREATED_BY,
973 CREATION_DATE,
974 LAST_UPDATED_BY,
975 LAST_UPDATE_DATE,
976 LAST_UPDATE_LOGIN,
977 REQUEST_ID,
978 PROGRAM_APPLICATION_ID,
979 PROGRAM_ID,
980 --PROGRAM_LOGIN_ID,
981 OBJECT_VERSION_NUMBER,
982 duplicate_exemption)
983 VALUES (
984 x_exemption_rec.exemption_id,
985 'DISCOUNT',
986 'UNAPPROVED',
987 p_TAX_REGIME_CODE,
988 p_TAX,
989 p_TAX_STATUS_CODE,
990 p_tax_rate_code,
991 nvl(p_event_class_rec.first_pty_org_id,ZX_SECURITY.G_FIRST_PARTY_ORG_ID),
992 p_exempt_certificate_number,
993 p_REASON_CODE,
994 nvl(l_start_date, trunc(sysdate)),
995 p_bill_to_party_ptp_id,
996 100,
997 'Y',
998 l_tax_jurisdiction_id,
999 null,
1000 null,
1001 'USER_DEFINED',
1002 fnd_global.user_id,
1003 sysdate,
1004 fnd_global.user_id,
1005 sysdate,
1006 fnd_global.conc_login_id,
1007 null, -- request id
1008 null, -- PROGRAM_APPLICATION_ID,
1009 null, -- PROGRAM_ID,
1010 --PROGRAM_LOGIN_ID,
1011 1,
1012 0);
1013 END IF;
1014 END IF;
1015 END IF;
1016
1017 END;
1018 END;