[Home] [Help]
PACKAGE BODY: APPS.ZX_SECURITY
Source
1 PACKAGE BODY zx_security AS
2 /* $Header: zxifdtaccsecpvtb.pls 120.33.12010000.2 2008/11/12 12:29:24 spasala ship $ */
3
4 G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
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(80) := 'ZX.PLSQL.ZX_SECURITY.';
12
13
14
15 FUNCTION get_effective_date RETURN DATE
16 IS
17 BEGIN
18 return G_EFFECTIVE_DATE;
19 END get_effective_date;
20
21
22 --
23 -- Name
24 -- single_read_access
25 -- Purpose
26 -- Security policy function to control read access to rules and formula setup
27 -- data for a single first party organization
28 --
29 -- Arguments
30 -- D1 - Object Schema.
31 -- D2 - Object Name.
32 --
33
34
35
36 FUNCTION single_read_access (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
37 IS
38 D_predicate VARCHAR2 (2000);
39
40 BEGIN
41
42 D_predicate := '(content_owner_id,tax_regime_code) IN
43 (select parent_first_pty_org_id, tax_regime_code
44 from ZX_SUBSCRIPTION_DETAILS
45 where view_options_code in (''NONE'',''VFC'',''VFR'')
46 and SYS_CONTEXT(''my_ctx'',''EFFECTIVEDATE'') between effective_from and
47 nvl(effective_to, SYS_CONTEXT(''my_ctx'',''EFFECTIVEDATE'')) and first_pty_org_id = nvl(SYS_CONTEXT(''my_ctx'',''FIRSTPTYORGID''),-999)) ';
48
49 RETURN D_predicate;
50 END single_read_access;
51
52
53
54 --
55 -- Name
56 -- single_read_access_for_excp
57 -- Purpose
58 -- Security policy function to control read access to exception setup
59 -- data for a single first party organization
60 --
61 -- Arguments
62 -- D1 - Object Schema.
63 -- D2 - Object Name.
64 --
65
66 FUNCTION single_read_access_for_excp (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
67 IS
68 D_predicate VARCHAR2 (2000);
69
70 BEGIN
71
72 D_predicate := '(content_owner_id,tax_regime_code) IN
73 (select decode(opt.exception_option_code, ''OWN_ONLY'', ru.first_pty_org_id, -99),
74 ru.tax_regime_code
75 from ZX_SUBSCRIPTION_OPTIONS opt,
76 ZX_REGIMES_USAGES ru
77 where ru.regime_usage_id = opt.regime_usage_id
78 and SYS_CONTEXT(''my_ctx'',''EFFECTIVEDATE'') between opt.effective_from and
79 nvl(opt.effective_to, SYS_CONTEXT(''my_ctx'',''EFFECTIVEDATE'')) and ru.first_pty_org_id = nvl(SYS_CONTEXT(''my_ctx'',''FIRSTPTYORGID''),-999) )';
80
81 RETURN D_predicate;
82 END single_read_access_for_excp;
83
84 --
85 -- Name
86 -- single_read_access_for_override
87 -- Purpose
88 -- Security policy function to control read access to tax setup data for a
89 -- single first party organization
90 --
91 -- Arguments
92 -- D1 - Object Schema.
93 -- D2 - Object Name.
94 --
95 FUNCTION single_read_access_for_ovrd (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
96 IS
97 D_predicate VARCHAR2 (2000);
98
99 BEGIN
100 D_predicate := 'sdco_id = SYS_CONTEXT(''my_ctx'',''FIRSTPTYORGID'') and SYS_CONTEXT(''my_ctx'',''EFFECTIVEDATE'') between sdeff_from and
101 nvl(sdeff_to,SYS_CONTEXT(''my_ctx'',''EFFECTIVEDATE''))' ;
102
103
104 RETURN D_predicate;
105 END single_read_access_for_ovrd;
106
107 --
108 -- Name
109 -- multiple_read_access
110 -- Purpose
111 -- Security policy function to control read access to tax setup data for
112 -- multiple first party organizations
113 --
114 -- Arguments
115 -- D1 - Object Schema.
116 -- D2 - Object Name.
117 --
118
119 FUNCTION multiple_read_access (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
120 IS
121 D_predicate VARCHAR2 (2000);
122 BEGIN
123
124
125 IF fnd_profile.value ('ZX_GCO_WRITE_ACCESS') = 'Y' then
126 D_predicate := '(content_owner_id, tax_regime_code) IN
127 (select det.parent_first_pty_org_id, det.tax_regime_code
128 from ZX_SUBSCRIPTION_DETAILS det,
129 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
130 where det.first_pty_org_id = ptp.party_tax_profile_id)
131 or content_owner_id = -99';
132 ELSE
133 D_predicate := '(content_owner_id, tax_regime_code) IN
134 (select det.parent_first_pty_org_id, det.tax_regime_code
135 from ZX_SUBSCRIPTION_DETAILS det,
136 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
137 where det.first_pty_org_id = ptp.party_tax_profile_id)';
138 END IF;
139 RETURN D_predicate;
140 END multiple_read_access;
141
142 --
143 -- Name
144 -- multiple_read_access_for_excp
145 -- Purpose
146 -- Security policy function to control read access to exception setup data for
147 -- multiple first party organizations
148 --
149 -- Arguments
150 -- D1 - Object Schema.
151 -- D2 - Object Name.
152 --
153
154 FUNCTION multiple_read_access_for_excp (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
155 IS
156 D_predicate VARCHAR2 (2000);
157 BEGIN
158
159
160 IF fnd_profile.value ('ZX_GCO_WRITE_ACCESS') = 'Y' then
161 D_predicate := '(content_owner_id, tax_regime_code) IN
162 (select decode(opt.exception_option_code, ''OWN_ONLY'', ru.first_pty_org_id, -99), ru.tax_regime_code
163 from ZX_SUBSCRIPTION_OPTIONS opt,
164 ZX_REGIMES_USAGES ru,
165 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
166 where ru.first_pty_org_id = ptp.party_tax_profile_id
167 and ru.regime_usage_id = opt.regime_usage_id)
168 or content_owner_id = -99';
169 ELSE
170 D_predicate := '(content_owner_id, tax_regime_code) IN
171 (select decode(opt.exception_option_code, ''OWN_ONLY'', ru.first_pty_org_id, -99), ru.tax_regime_code
172 from ZX_SUBSCRIPTION_OPTIONS opt,
173 ZX_REGIMES_USAGES ru,
174 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
175 where ru.first_pty_org_id = ptp.party_tax_profile_id
176 and ru.regime_usage_id = opt.regime_usage_id)';
177 END IF;
178 RETURN D_predicate;
179 END multiple_read_access_for_excp;
180
181 --
182 -- Name
183 -- write_access
184 -- Purpose
185 -- Security policy function to control write access to tax setup data
186 --
187 -- Arguments
188 -- D1 - Object Schema.
189 -- D2 - Object Name.
190 --
191
192 FUNCTION write_access (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
193 IS
194 D_predicate VARCHAR2 (2000);
195 BEGIN
196 IF fnd_profile.value('ZX_GCO_WRITE_ACCESS') = 'Y' then
197 D_predicate := '(content_owner_id, tax_regime_code) IN
198 (select parent_first_pty_org_id, tax_regime_code
199 from ZX_SUBSCRIPTION_DETAILS det,
200 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
201 where det.first_pty_org_id = ptp.party_tax_profile_id
202 and det.view_options_code = ''VFC'')
203 or content_owner_id = -99';
204 ELSE
205 D_predicate := '(content_owner_id, tax_regime_code) IN
206 (select parent_first_pty_org_id, tax_regime_code
207 from ZX_SUBSCRIPTION_DETAILS det,
208 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
209 where det.first_pty_org_id = ptp.party_tax_profile_id
210 and det.view_options_code = ''VFC'')';
211 END IF;
212 RETURN D_predicate;
213 END write_access;
214
215
216 --
217 -- Name
218 -- write_access_for_excp
219 -- Purpose
220 -- Security policy function to control write access to exception setup data
221 --
222 -- Arguments
223 -- D1 - Object Schema.
224 -- D2 - Object Name.
225 --
226
227 FUNCTION write_access_for_excp (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
228 IS
229 D_predicate VARCHAR2 (2000);
230 BEGIN
231 IF fnd_profile.value('ZX_GCO_WRITE_ACCESS') = 'Y' then
232 D_predicate := '(content_owner_id, tax_regime_code) IN
233 (select ru.first_pty_org_id, ru.tax_regime_code
234 from ZX_SUBSCRIPTION_OPTIONS opt,
235 ZX_REGIMES_USAGES ru,
236 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
237 where ru.first_pty_org_id = ptp.party_tax_profile_id
238 and ru.regime_usage_id = opt.regime_usage_id
239 and opt.exception_option_code = ''OWN_ONLY'')
240 or content_owner_id = -99';
241 ELSE
242 D_predicate := '(content_owner_id, tax_regime_code) IN
243 (select ru.first_pty_org_id, ru.tax_regime_code
244 from ZX_SUBSCRIPTION_OPTIONS opt,
245 ZX_REGIMES_USAGES ru,
246 ZX_FIRST_PARTY_ORGANIZATIONS_V ptp
247 where ru.first_pty_org_id = ptp.party_tax_profile_id
248 and ru.regime_usage_id = opt.regime_usage_id
249 and and opt.exception_option_code = ''OWN_ONLY'')';
250 END IF;
251 RETURN D_predicate;
252 END write_access_for_excp;
253
254 --
255 -- Name
256 -- first_party_org_access
257 -- Purpose
258 -- Security policy function to control data in zx_exemptions_v
259 --
260 -- Arguments
261 -- D1 - Object Schema.
262 -- D2 - Object Name.
263 --
264 FUNCTION first_party_org_access (D1 VARCHAR2, D2 VARCHAR2)
265 RETURN VARCHAR2
266 IS
267 D_predicate VARCHAR2 (2000);
268 BEGIN
269 IF ZX_SECURITY.G_FIRST_PARTY_ORG_ID is not null THEN
270 D_predicate := ' content_owner_id = SYS_CONTEXT(''my_ctx'',''FIRSTPTYORGID'')';
271 ELSE
272 D_predicate := null;
273 END IF;
274 RETURN D_predicate;
275 END first_party_org_access;
276
277
278 PROCEDURE check_write_access (p_first_party_org_id IN NUMBER,
279 p_tax_regime_code IN VARCHAR2,
280 x_return_status OUT NOCOPY VARCHAR2)
281 IS
282 l_count NUMBER :=0;
283 BEGIN
284 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
285 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'SET_SECURITY_CONTEXT.BEGIN','ZX_SECURITY: CHECK_WRITE_ACCESS()+');
286 END IF;
287
288 x_return_status := FND_API.G_RET_STS_SUCCESS;
289 IF fnd_profile.value('ZX_GCO_WRITE_ACCESS') = 'Y' then
290 IF p_first_party_org_id <> -99 then
291 select 1
292 into l_count
293 from ZX_SUBSCRIPTION_DETAILS det
294 where det.first_pty_org_id = p_first_party_org_id
295 and det.tax_regime_code = p_tax_regime_code
296 and det.view_options_code = 'VFC';
297 END IF;
298 ELSE
299 select 1
300 into l_count
301 from ZX_SUBSCRIPTION_DETAILS det
302 where det.first_pty_org_id = p_first_party_org_id
303 and det.tax_regime_code = p_tax_regime_code
304 and det.view_options_code = 'VFC';
305 END IF;
306
307 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
308 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'SET_SECURITY_CONTEXT.END','ZX_SECURITY: CHECK_WRITE_ACCESS()-');
309 END IF;
310
311 EXCEPTION
312 WHEN NO_DATA_FOUND THEN
313 x_return_status := FND_API.G_RET_STS_ERROR;
314 FND_MESSAGE.Set_Name ('ZX','GENERIC_MESSAGE');
315 FND_MESSAGE.Set_Token('GENERIC_TEXT', SQLERRM);
316
317 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
318 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||'SET_SECURITY_CONTEXT', SQLERRM);
319 END IF;
320
321 WHEN OTHERS THEN
322 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
323 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
324 FND_LOG.STRING(G_LEVEL_UNEXPECTED,G_MODULE_NAME||'SET_SECURITY_CONTEXT', SQLERRM);
325 END IF;
326
327 END check_write_access;
328
329 --
330 -- Name
331 -- single_regime_access
332 -- Purpose
333 -- Security policy function to control read access to Regime Usages data
334 --
335 -- Arguments
336 -- D1 - Object Schema.
337 -- D2 - Object Name.
338 --
339
340 FUNCTION single_regime_access (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
341 IS
342 D_predicate VARCHAR2 (2000);
343 BEGIN
344 D_predicate := '(tax_regime_code) IN
345 (select tax_regime_code
346 from ZX_SUBSCRIPTION_DETAILS det
347 where det.first_pty_org_id = nvl(SYS_CONTEXT(''my_ctx'',''FIRSTPTYORGID'') ,-999) )';
348 RETURN D_predicate;
349 END single_regime_access;
350
351 --
352 -- Name
353 -- add_icx_session_id
354 -- Purpose
355 -- Security policy function to control read access to Regime Usages data
356 --
357 -- Arguments
358 -- D1 - Object Schema.
359 -- D2 - Object Name.
360 --
361
362 FUNCTION add_icx_session_id (D1 VARCHAR2, D2 VARCHAR2) RETURN VARCHAR2
363 IS
364 D_predicate VARCHAR2 (2000);
365 BEGIN
366 IF ZX_SECURITY.G_ICX_SESSION_ID is not null THEN
367 --dbms_session.set_context('my_ctx','SESSIONID',to_char(ZX_SECURITY.G_ICX_SESSION_ID));
368 D_predicate := 'icx_session_id = SYS_CONTEXT(''my_ctx'',''SESSIONID'') ';
369 ELSE
370 D_predicate := null;
371 END IF;
372 RETURN D_predicate;
373 END add_icx_session_id;
374
375 --
376 -- Name
377 -- set_security_context
378 -- Purpose
379 -- Sets the global variables G_FIRST_PARTY_ORG_ID and G_EFFECTIVE_DATE
380 --
381
382 PROCEDURE set_security_context(p_legal_entity_id IN NUMBER,
383 p_internal_org_id IN NUMBER,
384 p_effective_date IN DATE,
385 x_return_status OUT NOCOPY VARCHAR2)
386 IS
387
388 l_return_status VARCHAR2(30);
389 l_effective_date DATE;
390 l_first_party_org_id NUMBER;
391
392 BEGIN
393
394 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
395 FND_LOG.STRING(G_LEVEL_STATEMENT,
396 G_MODULE_NAME||'SET_SECURITY_CONTEXT.BEGIN',
397 'ZX_SECURITY: SET_SECURITY_CONTEXT()+' ||
398 ', OU: '||to_char(p_internal_org_id)||' and LE: '||to_char(p_legal_entity_id));
399 END IF;
400
401 x_return_status := FND_API.G_RET_STS_SUCCESS;
402
403 L_EFFECTIVE_DATE := nvl(p_effective_date,sysdate);
404
405 ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER(p_legal_entity_id,
406 p_internal_org_id,
407 L_FIRST_PARTY_ORG_ID,
408 l_return_status);
409
410
411 -- dbms_session.set_context('my_ctx','FIRSTPTYORGID',to_char(G_FIRST_PARTY_ORG_ID));
412 -- dbms_session.set_context('my_ctx','EFFECTIVEDATE',to_char(G_EFFECTIVE_DATE));
413 IF L_FIRST_PARTY_ORG_ID = G_FIRST_PARTY_ORG_ID THEN
414 NULL;
415 ELSE
416 name_value('FIRSTPTYORGID',to_char(L_FIRST_PARTY_ORG_ID));
417 G_FIRST_PARTY_ORG_ID := L_FIRST_PARTY_ORG_ID;
418 END IF;
419
420 IF L_EFFECTIVE_DATE = G_EFFECTIVE_DATE THEN
421 NULL;
422 ELSE
423 name_value('EFFECTIVEDATE',to_char(L_EFFECTIVE_DATE));
424 G_EFFECTIVE_DATE := L_EFFECTIVE_DATE;
425 END IF;
426
427 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
428 x_return_status := FND_API.G_RET_STS_ERROR;
429
430 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
431 FND_LOG.STRING(G_LEVEL_STATEMENT,
432 G_MODULE_NAME||'SET_SECURITY_CONTEXT',
433 'Incorrect return status after calling ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER'||
434 ', l_return_status: '||l_return_status);
435 END IF;
436
437 Return;
438 END IF;
439
440 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
441 FND_LOG.STRING(G_LEVEL_STATEMENT,
442 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
443 'ZX_SECURITY: SET_SECURITY_CONTEXT()-'||
444 ', G_EFFECTIVE_DATE: '||to_char(G_EFFECTIVE_DATE) ||
445 ', G_FIRST_PARTY_ORG_ID: '||to_char(G_FIRST_PARTY_ORG_ID));
446 END IF;
447
448 END set_security_context;
449
450 PROCEDURE set_security_context_ui(p_legal_entity_id IN NUMBER,
451 p_internal_org_id IN NUMBER,
452 p_effective_date IN DATE,
453 x_return_status OUT NOCOPY VARCHAR2)
454 IS
455
456 l_return_status VARCHAR2(30);
457 l_effective_date DATE;
458 l_first_party_org_id NUMBER;
459
460 BEGIN
461
462 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
463 FND_LOG.STRING(G_LEVEL_STATEMENT,
464 G_MODULE_NAME||'SET_SECURITY_CONTEXT.BEGIN',
465 'ZX_SECURITY: SET_SECURITY_CONTEXT()+' ||
466 ', OU: '||to_char(p_internal_org_id)||' and LE: '||to_char(p_legal_entity_id));
467 END IF;
468
469 x_return_status := FND_API.G_RET_STS_SUCCESS;
470
471 L_EFFECTIVE_DATE := nvl(p_effective_date,sysdate);
472
473 ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER(p_legal_entity_id,
474 p_internal_org_id,
475 L_FIRST_PARTY_ORG_ID,
476 l_return_status);
477
478
479 -- dbms_session.set_context('my_ctx','FIRSTPTYORGID',to_char(G_FIRST_PARTY_ORG_ID));
480 -- dbms_session.set_context('my_ctx','EFFECTIVEDATE',to_char(G_EFFECTIVE_DATE));
481
482 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
483 FND_LOG.STRING(G_LEVEL_STATEMENT,
484 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
485 'ZX_SECURITY: SET_SECURITY_CONTEXT()-' ||
486 ', G_EFFECTIVE_DATE: '||nvl(SYS_CONTEXT('my_ctx','EFFECTIVEDATE'),sysdate) ||
487 ', G_FIRST_PARTY_ORG_ID:
488 '||to_char(nvl(SYS_CONTEXT('my_ctx','FIRSTPTYORGID'),-999)) );
489 END IF;
490
491 IF L_FIRST_PARTY_ORG_ID = nvl(SYS_CONTEXT('my_ctx','FIRSTPTYORGID'),-999) THEN
492 NULL;
493 ELSE
494 name_value('FIRSTPTYORGID',to_char(L_FIRST_PARTY_ORG_ID));
495 G_FIRST_PARTY_ORG_ID := L_FIRST_PARTY_ORG_ID;
496 END IF;
497
498 IF L_EFFECTIVE_DATE =
499 nvl(SYS_CONTEXT('my_ctx','EFFECTIVEDATE'),sysdate - 365) THEN
500 NULL;
501 ELSE
502 name_value('EFFECTIVEDATE',to_char(L_EFFECTIVE_DATE));
503 G_EFFECTIVE_DATE := L_EFFECTIVE_DATE;
504 END IF;
505
506 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
507 x_return_status := FND_API.G_RET_STS_ERROR;
508
509 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
510 FND_LOG.STRING(G_LEVEL_STATEMENT,
511 G_MODULE_NAME||'SET_SECURITY_CONTEXT',
512 'Incorrect return status after calling ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER'||
513 ', l_return_status: '||l_return_status);
514 END IF;
515
516 Return;
517 END IF;
518
519 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
520 FND_LOG.STRING(G_LEVEL_STATEMENT,
521 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
522 'ZX_SECURITY: SET_SECURITY_CONTEXT()-'||
523 ', G_EFFECTIVE_DATE: '||to_char(G_EFFECTIVE_DATE) ||
524 ', G_FIRST_PARTY_ORG_ID: '||to_char(G_FIRST_PARTY_ORG_ID));
525 END IF;
526
527 END set_security_context_ui;
528 -- Overloaded set_security_context
529
530 PROCEDURE set_security_context(p_first_party_org_id IN NUMBER,
531 p_effective_date IN DATE,
532 x_return_status OUT NOCOPY VARCHAR2)
533 IS
534
535 l_return_status VARCHAR2(30);
536 l_effective_date DATE;
537 l_first_party_org_id NUMBER;
538
539 BEGIN
540
541 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
542 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'SET_SECURITY_CONTEXT.BEGIN','ZX_SECURITY: SET_SECURITY_CONTEXT()+');
543 END IF;
544
545 x_return_status := FND_API.G_RET_STS_SUCCESS;
546
547 L_EFFECTIVE_DATE := nvl(p_effective_date,sysdate);
548
549 L_FIRST_PARTY_ORG_ID := p_first_party_org_id;
550
551 -- dbms_session.set_context('my_ctx','FIRSTPTYORGID',to_char(G_FIRST_PARTY_ORG_ID));
552 -- dbms_session.set_context('my_ctx','EFFECTIVEDATE',to_char(G_EFFECTIVE_DATE));
553
554 IF L_FIRST_PARTY_ORG_ID = G_FIRST_PARTY_ORG_ID THEN
555 NULL;
556 ELSE
557 name_value('FIRSTPTYORGID',to_char(L_FIRST_PARTY_ORG_ID));
558 G_FIRST_PARTY_ORG_ID := L_FIRST_PARTY_ORG_ID;
559 END IF;
560
561 IF L_EFFECTIVE_DATE = G_EFFECTIVE_DATE THEN
562 NULL;
563 ELSE
564 name_value('EFFECTIVEDATE',to_char(L_EFFECTIVE_DATE));
565 G_EFFECTIVE_DATE := L_EFFECTIVE_DATE;
566 END IF;
567
568 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
569 FND_LOG.STRING(G_LEVEL_STATEMENT,
570 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
571 'ZX_SECURITY: SET_SECURITY_CONTEXT()-' ||
572 ', G_EFFECTIVE_DATE: '||to_char(G_EFFECTIVE_DATE) ||
573 ', G_FIRST_PARTY_ORG_ID: '||to_char(G_FIRST_PARTY_ORG_ID) );
574 END IF;
575
576 END set_security_context;
577
578 PROCEDURE name_value(name varchar2, value varchar2) as
579
580 BEGIN
581
582 dbms_session.set_context('my_ctx',name,value);
583
584 END;
585
586 END zx_security;