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