[Home] [Help]
PACKAGE BODY: APPS.ZX_SECURITY
Source
1 PACKAGE BODY zx_security AS
2 /* $Header: zxifdtaccsecpvtb.pls 120.36 2011/01/13 23:01:55 prigovin 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_UNEXP_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 --Bug 10200208
372 D_predicate := null;
369 --D_predicate := 'icx_session_id = SYS_CONTEXT(''my_ctx'',''SESSIONID'') ';
370 D_predicate := 'NVL(icx_session_id,-999) = NVL(SYS_CONTEXT(''my_ctx'',''SESSIONID''),-999) ';
371 ELSE
373 END IF;
374 RETURN D_predicate;
375 END add_icx_session_id;
376
377 --
378 -- Name
379 -- set_security_context
380 -- Purpose
381 -- Sets the global variables G_FIRST_PARTY_ORG_ID and G_EFFECTIVE_DATE
382 --
383
384 PROCEDURE set_security_context(p_legal_entity_id IN NUMBER,
385 p_internal_org_id IN NUMBER,
386 p_effective_date IN DATE,
387 x_return_status OUT NOCOPY VARCHAR2)
388 IS
389
390 l_return_status VARCHAR2(30);
391 l_effective_date DATE;
392 l_first_party_org_id NUMBER;
393
394 BEGIN
395
396 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
397 FND_LOG.STRING(G_LEVEL_STATEMENT,
398 G_MODULE_NAME||'SET_SECURITY_CONTEXT.BEGIN',
399 'ZX_SECURITY: SET_SECURITY_CONTEXT()+' ||
400 ', OU: '||to_char(p_internal_org_id)||' and LE: '||to_char(p_legal_entity_id));
401 END IF;
402
403 x_return_status := FND_API.G_RET_STS_SUCCESS;
404
405 L_EFFECTIVE_DATE := nvl(p_effective_date,sysdate);
406
407 ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER(p_legal_entity_id,
408 p_internal_org_id,
409 L_FIRST_PARTY_ORG_ID,
410 l_return_status);
411
412
413 -- dbms_session.set_context('my_ctx','FIRSTPTYORGID',to_char(G_FIRST_PARTY_ORG_ID));
414 -- dbms_session.set_context('my_ctx','EFFECTIVEDATE',to_char(G_EFFECTIVE_DATE));
415 IF L_FIRST_PARTY_ORG_ID = G_FIRST_PARTY_ORG_ID THEN
416 NULL;
417 ELSE
418 name_value('FIRSTPTYORGID',to_char(L_FIRST_PARTY_ORG_ID));
419 G_FIRST_PARTY_ORG_ID := L_FIRST_PARTY_ORG_ID;
420 END IF;
421
422 IF L_EFFECTIVE_DATE = G_EFFECTIVE_DATE THEN
423 NULL;
424 ELSE
425 name_value('EFFECTIVEDATE',to_char(L_EFFECTIVE_DATE));
426 G_EFFECTIVE_DATE := L_EFFECTIVE_DATE;
427 END IF;
428
429 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
430 x_return_status := FND_API.G_RET_STS_ERROR;
431
432 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
433 FND_LOG.STRING(G_LEVEL_STATEMENT,
434 G_MODULE_NAME||'SET_SECURITY_CONTEXT',
435 'Incorrect return status after calling ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER'||
436 ', l_return_status: '||l_return_status);
437 END IF;
438
439 Return;
440 END IF;
441
442 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
443 FND_LOG.STRING(G_LEVEL_STATEMENT,
444 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
445 'ZX_SECURITY: SET_SECURITY_CONTEXT()-'||
446 ', G_EFFECTIVE_DATE: '||to_char(G_EFFECTIVE_DATE) ||
447 ', G_FIRST_PARTY_ORG_ID: '||to_char(G_FIRST_PARTY_ORG_ID));
448 END IF;
449
450 END set_security_context;
451
452 PROCEDURE set_security_context_ui(p_legal_entity_id IN NUMBER,
453 p_internal_org_id IN NUMBER,
454 p_effective_date IN DATE,
455 x_return_status OUT NOCOPY VARCHAR2)
456 IS
457
458 l_return_status VARCHAR2(30);
459 l_effective_date DATE;
460 l_first_party_org_id NUMBER;
461
462 BEGIN
463
464 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
465 FND_LOG.STRING(G_LEVEL_STATEMENT,
466 G_MODULE_NAME||'SET_SECURITY_CONTEXT.BEGIN',
467 'ZX_SECURITY: SET_SECURITY_CONTEXT()+' ||
468 ', OU: '||to_char(p_internal_org_id)||' and LE: '||to_char(p_legal_entity_id));
469 END IF;
470
471 x_return_status := FND_API.G_RET_STS_SUCCESS;
472
473 L_EFFECTIVE_DATE := nvl(p_effective_date,sysdate);
474
475 ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER(p_legal_entity_id,
476 p_internal_org_id,
477 L_FIRST_PARTY_ORG_ID,
478 l_return_status);
479
480
481 -- dbms_session.set_context('my_ctx','FIRSTPTYORGID',to_char(G_FIRST_PARTY_ORG_ID));
482 -- dbms_session.set_context('my_ctx','EFFECTIVEDATE',to_char(G_EFFECTIVE_DATE));
483
484 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
485 FND_LOG.STRING(G_LEVEL_STATEMENT,
486 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
487 'ZX_SECURITY: SET_SECURITY_CONTEXT()-' ||
488 ', G_EFFECTIVE_DATE: '||nvl(SYS_CONTEXT('my_ctx','EFFECTIVEDATE'),sysdate) ||
489 ', G_FIRST_PARTY_ORG_ID:
490 '||to_char(nvl(SYS_CONTEXT('my_ctx','FIRSTPTYORGID'),-999)) );
491 END IF;
492
493 IF L_FIRST_PARTY_ORG_ID = nvl(SYS_CONTEXT('my_ctx','FIRSTPTYORGID'),-999) THEN
494 NULL;
495 ELSE
496 name_value('FIRSTPTYORGID',to_char(L_FIRST_PARTY_ORG_ID));
497 G_FIRST_PARTY_ORG_ID := L_FIRST_PARTY_ORG_ID;
498 END IF;
499
500 IF L_EFFECTIVE_DATE =
501 nvl(SYS_CONTEXT('my_ctx','EFFECTIVEDATE'),sysdate - 365) THEN
502 NULL;
503 ELSE
504 name_value('EFFECTIVEDATE',to_char(L_EFFECTIVE_DATE));
505 G_EFFECTIVE_DATE := L_EFFECTIVE_DATE;
506 END IF;
507
508 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
509 x_return_status := FND_API.G_RET_STS_ERROR;
510
511 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
512 FND_LOG.STRING(G_LEVEL_STATEMENT,
516 END IF;
513 G_MODULE_NAME||'SET_SECURITY_CONTEXT',
514 'Incorrect return status after calling ZX_TCM_PTP_PKG.GET_TAX_SUBSCRIBER'||
515 ', l_return_status: '||l_return_status);
517
518 Return;
519 END IF;
520
521 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
522 FND_LOG.STRING(G_LEVEL_STATEMENT,
523 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
524 'ZX_SECURITY: SET_SECURITY_CONTEXT()-'||
525 ', G_EFFECTIVE_DATE: '||to_char(G_EFFECTIVE_DATE) ||
526 ', G_FIRST_PARTY_ORG_ID: '||to_char(G_FIRST_PARTY_ORG_ID));
527 END IF;
528
529 END set_security_context_ui;
530 -- Overloaded set_security_context
531
532 PROCEDURE set_security_context(p_first_party_org_id IN NUMBER,
533 p_effective_date IN DATE,
534 x_return_status OUT NOCOPY VARCHAR2)
535 IS
536
537 l_return_status VARCHAR2(30);
538 l_effective_date DATE;
539 l_first_party_org_id NUMBER;
540
541 BEGIN
542
543 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
544 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||'SET_SECURITY_CONTEXT.BEGIN','ZX_SECURITY: SET_SECURITY_CONTEXT()+');
545 END IF;
546
547 x_return_status := FND_API.G_RET_STS_SUCCESS;
548
549 L_EFFECTIVE_DATE := nvl(p_effective_date,sysdate);
550
551 L_FIRST_PARTY_ORG_ID := p_first_party_org_id;
552
553 -- dbms_session.set_context('my_ctx','FIRSTPTYORGID',to_char(G_FIRST_PARTY_ORG_ID));
554 -- dbms_session.set_context('my_ctx','EFFECTIVEDATE',to_char(G_EFFECTIVE_DATE));
555
556 IF L_FIRST_PARTY_ORG_ID = G_FIRST_PARTY_ORG_ID THEN
557 NULL;
558 ELSE
559 name_value('FIRSTPTYORGID',to_char(L_FIRST_PARTY_ORG_ID));
560 G_FIRST_PARTY_ORG_ID := L_FIRST_PARTY_ORG_ID;
561 END IF;
562
563 IF L_EFFECTIVE_DATE = G_EFFECTIVE_DATE THEN
564 NULL;
565 ELSE
566 name_value('EFFECTIVEDATE',to_char(L_EFFECTIVE_DATE));
567 G_EFFECTIVE_DATE := L_EFFECTIVE_DATE;
568 END IF;
569
570 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
571 FND_LOG.STRING(G_LEVEL_STATEMENT,
572 G_MODULE_NAME||'SET_SECURITY_CONTEXT.END',
573 'ZX_SECURITY: SET_SECURITY_CONTEXT()-' ||
574 ', G_EFFECTIVE_DATE: '||to_char(G_EFFECTIVE_DATE) ||
575 ', G_FIRST_PARTY_ORG_ID: '||to_char(G_FIRST_PARTY_ORG_ID) );
576 END IF;
577
578 END set_security_context;
579
580 PROCEDURE name_value(name varchar2, value varchar2) as
581
582 BEGIN
583
584 dbms_session.set_context('my_ctx',name,value);
585
586 END;
587
588 END zx_security;