DBA Data[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;