DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_MO_GLOBAL_CACHE

Source


1 PACKAGE BODY HZ_MO_GLOBAL_CACHE as
2 /*$Header: ARHMOGCB.pls 120.8 2006/04/17 22:54:56 dmmehta noship $ */
3 
4 ---------------------------------------------
5 -- declaration of private global variables.
6 ---------------------------------------------
7 
8 TYPE G_Cache_Type IS TABLE OF HZ_MO_GLOBAL_CACHE.GlobalsRecord
9 					INDEX BY BINARY_INTEGER;
10 
11 G_Cache	G_Cache_Type;
12 
13 G_Cust_Gen_Cache HZ_MO_GLOBAL_CACHE.cust_num_gen_rec;
14 
15 --logging related
16 MOD_PKG                    VARCHAR2(30)  := 'hz.plsql.HZ_MO_GLOBAL_CACHE';
17 MOD_validate_orgid_pub_api VARCHAR2(50)  := MOD_PKG || '.validate_orgid_pub_api';
18 
19 
20 --------------------------------------
21 -- declaration of private procedures and functions
22 --------------------------------------
23 
24 PROCEDURE populate;
25 
26 --------------------------------------
27 -- private procedures and functions
28 --------------------------------------
29 /**==========================================================================+
30  | PROCEDURE populate
31  |
32  | DESCRIPTION
33  |     	This procedure retrieves operating unit attributes from the database
34  |	and stores them in the cache.
35  |
36  | SCOPE - PRIVATE
37  |
38  | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
39  |
40  | ARGUMENTS
41  |   IN:
42  |   IN/OUT:
43  |   OUT:
44  |
45  | RETURNS	: NONE
46  |
47  | NOTES
48  |
49  | MODIFICATION HISTORY
50  |
51  |  12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
52  |
53  +==========================================================================**/
54 
55 PROCEDURE populate
56 IS
57 	i	PLS_INTEGER;
58 	l_gt	HZ_MO_GLOBAL_CACHE.GlobalsTable;
59 BEGIN
60 	G_Cache.DELETE;
61 	retrieve_globals(l_gt);
62 
63 	IF (l_gt.org_id_t.COUNT > 0) THEN
64 		FOR i IN 1..l_gt.org_id_t.LAST LOOP
65 			G_Cache(l_gt.org_id_t(i)).auto_site_numbering :=
66 				l_gt.auto_site_numbering_t(i);
67 			G_Cache(l_gt.org_id_t(i)).default_country :=
68 				l_gt.default_country_t(i);
69 			G_Cache(l_gt.org_id_t(i)).chart_of_accounts_id :=
70 				l_gt.chart_of_accounts_id_t(i);
71 			G_Cache(l_gt.org_id_t(i)).set_of_books_id :=
72 				l_gt.set_of_books_id_t(i);
73 			G_Cache(l_gt.org_id_t(i)).location_structure_id :=
74 				l_gt.location_structure_id_t(i);
75 			G_Cache(l_gt.org_id_t(i)).tax_method :=
76 				l_gt.tax_method_t(i);
77 			G_Cache(l_gt.org_id_t(i)).Address_val:=
78 				l_gt.address_val_t(i);
79                         --  Bug 5002547 : Added create_reciprocal_flag
80                         G_Cache(l_gt.org_id_t(i)).reciprocal_flag:=
81                                 l_gt.reciprocal_flag_t(i);
82 		END LOOP;
83 	END IF;
84 END populate;
85 
86 
87 --------------------------------------
88 -- public procedures and functions
89 --------------------------------------
90 
91 /**
92  * PROCEDURE retrieve_globals
93  *
94  * DESCRIPTION
95  *     	This procedure retrieves operating unit attributes from the database
96  *	and stores them into the specified data structure.
97  *
98  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
99  *
100  * ARGUMENTS
101  *   IN:
102  *   IN/OUT:
103  *   OUT:
104  *	p_globals			The global variables from AR System
105  *					parameters used in TCA.
106  *
107  * NOTES
108  *
109  * MODIFICATION HISTORY
110  *
111  *  12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
112  *
113  */
114 
115 PROCEDURE retrieve_globals(
116         p_globals	OUT	NOCOPY	GlobalsTable
117 ) IS
118 
119 BEGIN
120 	SELECT 	asp.org_id,
121 		asp.auto_site_numbering,
122 	        asp.default_country,
123 	        gl.chart_of_accounts_id,
124 	        gl.set_of_books_id,
125 		asp.location_structure_id,
126 		asp.tax_method,
127                 asp.address_validation,
128                 --  Bug 5002547 : Added create_reciprocal_flag
129                 nvl(asp.create_reciprocal_flag, 'N')
130 	BULK COLLECT
131 	INTO   	p_globals.org_id_t,
132 	        p_globals.auto_site_numbering_t,
133 		p_globals.default_country_t,
134 	        p_globals.chart_of_accounts_id_t,
135 	        p_globals.set_of_books_id_t,
136 		p_globals.location_structure_id_t,
137 		p_globals.tax_method_t,
138                 p_globals.address_val_t,
139                 --  Bug 5002547 : Added create_reciprocal_flag
140                 p_globals.reciprocal_flag_t
141 	FROM   	gl_sets_of_books gl,
142 	        ar_system_parameters asp
143 	WHERE 	gl.set_of_books_id = asp.set_of_books_id;
144 
145 END retrieve_globals;
146 
147 
148 /**
149  * FUNCTION get_org_attributes
150  *
151  * DESCRIPTION
152  *     	Checks whether the specified org exists in the cache and returns the
153  *	attributes if the org exists.
154  *
155  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
156  *
157  * ARGUMENTS
158  *   IN:
159  *     p_org_id_in			Organization ID
160  *
161  *   IN/OUT:
162  *   OUT:
163  *
164  * RETURNS:
165  *	GlobalsRecord			Attributes corresponding to the Org.
166  *
167  * NOTES
168  *
169  * MODIFICATION HISTORY
170  *
171  * 12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
172  */
173 
174 FUNCTION get_org_attributes	(
175         p_org_id		IN	NUMBER
176 				)
177 RETURN	hz_mo_global_cache.GlobalsRecord
178 IS
179 BEGIN
180 	IF G_Cache.exists(p_org_id) THEN
181 		Return(G_Cache(p_org_id));
182 	ELSE
183 		Populate();
184 		IF G_Cache.exists(p_org_id) THEN
185 			Return(G_Cache(p_org_id));
186 		ELSE
187 			RAISE NO_DATA_FOUND;
188 		END IF;
189 	END IF;
190 	EXCEPTION
191 		WHEN NO_DATA_FOUND THEN
192 			FND_MESSAGE.SET_NAME('AR',
193 					'AR_NO_ROW_IN_SYSTEM_PARAMETERS');
194 			FND_MSG_PUB.ADD;
195 			RAISE;
196 END get_org_attributes;
197 
198 /**
199  * FUNCTION get_auto_site_numbering
200  *
201  * DESCRIPTION
202  *     	Returns the Site Number Generation Setting for the org.
203  *
204  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
205  *
206  * ARGUMENTS
207  *   IN:
208  *     p_org_id_in			Organization ID
209  *
210  *   IN/OUT:
211  *   OUT:
212  *
213  * RETURNS:
214  *	Auto_Site_Numbering		Auto_site_numbering setting for the Org.
215  *
216  * NOTES
217  *
218  * MODIFICATION HISTORY
219  *
220  *     12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
221  */
222 
223 FUNCTION get_auto_site_numbering(
224         p_org_id		IN	NUMBER
225 				)
226 RETURN	varchar2
227 IS
228 	L_Param_Rec	HZ_MO_GLOBAL_CACHE.GlobalsRecord;
229 
230 BEGIN
231 	L_Param_Rec := Get_Org_Attributes(p_org_id);
232 	RETURN	L_Param_Rec.auto_site_numbering;
233 END get_auto_site_numbering;
234 
235 /**
236  * FUNCTION get_default_country
237  *
238  * DESCRIPTION
239  *     	Returns the default country for the org.
240  *
241  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
242  *
243  * ARGUMENTS
244  *   IN:
245  *     p_org_id_in			Organization ID
246  *
247  *   IN/OUT:
248  *   OUT:
249  *
250  * RETURNS:
251  *	Country_code			Default Country for the Org.
252  *
253  * NOTES
254  *
255  * MODIFICATION HISTORY
256  *
257  *  12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
258  */
259 
260 FUNCTION get_default_country	(
261         p_org_id		IN	NUMBER
262 				)
263 RETURN	varchar2
264 IS
265 	L_Param_Rec	HZ_MO_GLOBAL_CACHE.GlobalsRecord;
266 
267 BEGIN
268 	L_Param_Rec := get_Org_Attributes(p_org_id);
269 	RETURN L_Param_Rec.Default_country;
270 END get_default_country;
271 
272 FUNCTION get_location_structure_id(
273         p_org_id		IN	NUMBER
274 				)
275 RETURN	number
276 IS
277   L_Param_Rec	HZ_MO_GLOBAL_CACHE.GlobalsRecord;
278 BEGIN
279  L_Param_Rec := get_Org_Attributes(p_org_id);
280  RETURN L_Param_Rec.Location_structure_ID;
281 END;
282 FUNCTION get_tax_method(
283         p_org_id		IN	NUMBER
284 				)
285 RETURN	varchar2
286 IS
287   L_Param_Rec	HZ_MO_GLOBAL_CACHE.GlobalsRecord;
288 BEGIN
289  L_Param_Rec := get_Org_Attributes(p_org_id);
290  RETURN L_Param_Rec.Tax_method;
291 END;
292 
293 /**
294  * FUNCTION get_chart_of_accounts_id
295  *
296  * DESCRIPTION
297  *     	Returns the chart of accounts ID for the org.
298  *
299  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
300  *
301  * ARGUMENTS
302  *   IN:
303  *     p_org_id_in			Organization ID
304  *
305  *   IN/OUT:
306  *   OUT:
307  *
308  * RETURNS:
309  *	Chart_of_Accounts_ID		Chart of Accounts ID for the Org.
310  *
311  * NOTES
312  *
313  * MODIFICATION HISTORY
314  *
315  *  12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
316  */
317 
318 FUNCTION get_chart_of_accounts_id(
319         p_org_id		IN	NUMBER
320 				)
321 RETURN	number
322 IS
323 	L_Param_Rec	HZ_MO_GLOBAL_CACHE.GlobalsRecord;
324 
325 BEGIN
326 	L_Param_Rec := get_Org_Attributes(p_org_id);
327 	RETURN L_Param_Rec.chart_of_accounts_id;
328 END get_chart_of_accounts_id;
329 
330 /**
331  * FUNCTION get_set_of_books_id
332  *
333  * DESCRIPTION
334  *     	Returns the Set of Books ID for the org.
335  *
336  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
337  *
338  * ARGUMENTS
339  *   IN:
340  *     p_org_id_in			Organization ID
341  *
342  *   IN/OUT:
343  *   OUT:
344  *
345  * RETURNS:
346  *	Set_of_Books_ID			Set of Books ID for the Org.
347  *
348  * NOTES
349  *
350  * MODIFICATION HISTORY
351  *
352  *  12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
353  */
354 
355 FUNCTION get_set_of_books_id	(
356         p_org_id		IN	NUMBER
357 				)
358 RETURN	number
359 IS
360 	L_Param_Rec	HZ_MO_GLOBAL_CACHE.GlobalsRecord;
361 
362 BEGIN
363 	L_Param_Rec := get_Org_Attributes(p_org_id);
364 	RETURN L_Param_Rec.set_of_books_id;
365 END get_set_of_books_id;
366 
367 /**
368  * PROCEDURE populate_non_org
369  *
370  * DESCRIPTION
371  *     	Populates cache from AR System Parameters for non org
372  *      entity related columns
373  *
374  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
375  *
376  * ARGUMENTS
377  *   IN:
378  *     p_org_id_in			Organization ID
379  *
380  *   IN/OUT:
381  *   OUT:
382  *
383  *
384  * NOTES
385  *
386  * MODIFICATION HISTORY
387  *
388  *    17-APR-2006    Dhaval Mehta         o Bug 5107334 : Created
389  */
390 
391  PROCEDURE populate_non_org (
392      p_org_id  IN  NUMBER ) IS
393 
394      l_autocash NUMBER;
395      l_grouping NUMBER;
396      l_cust VARCHAR2(1);
397 
398  BEGIN
399    IF p_org_id = G_Cust_Gen_Cache.default_org THEN
400       RETURN;
401    ELSE
402       SELECT generate_customer_number,
403              autocash_hierarchy_id,
404 	     default_grouping_rule_id
405       INTO   l_cust, l_autocash, l_grouping
406       FROM   AR_SYSTEM_PARAMETERS_ALL
407       WHERE  org_id = p_org_id;
408 
409       G_Cust_Gen_Cache.default_org := p_org_id;
410       G_Cust_Gen_Cache.generate_customer_number := l_cust;
411       G_Cust_Gen_Cache.autocash_hierarchy_id := l_autocash;
412       G_Cust_Gen_Cache.default_grouping_rule_id := l_grouping;
413    END IF;
414 
415    EXCEPTION
416    WHEN NO_DATA_FOUND THEN
417         FND_MESSAGE.SET_NAME('AR',
418 	'AR_NO_ROW_IN_SYSTEM_PARAMETERS');
419 	FND_MSG_PUB.ADD;
420 	RAISE;
421 
422  END populate_non_org;
423 
424 /**
425  * FUNCTION get_generate_customer_number
426  *
427  * DESCRIPTION
428  *     	Returns the Customer Number Generation Setting for the org.
429  *
430  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
431  *
432  * ARGUMENTS
433  *   IN:
434  *     p_org_id_in			Organization ID
435  *
436  *   IN/OUT:
437  *   OUT:
438  *
439  * RETURNS:
440  *	Customer_Number_Generate	Customer Number generate setting for
441  *					the Org.
442  *
443  * NOTES
444  *
445  * MODIFICATION HISTORY
446  *
447  *    12-MAY-2005    Rajib Ranjan Borah   o TCA SSA Uptake (Bug 3456489) Created.
448  *    24-MAR-2006    Dhaval Mehta         o Bug 5107334 : generate_customer_number
449  *                                          is non org strip parameter. So, get
450  *                                          the current org_id, if its null get
451  *                                          default org_id. Query the AR
452  *                                          parameter table and return the
453  *                                          value. If org_id is NULL, return a
454  *                                          new value 'D'. This means that we do
455  *                                          not validate account_number column.
456  *                                          User can enter any value if wish to.
457  *                                          If no value is entered, it will be
458  *                                          auto generated.
459  */
460 
461 FUNCTION get_generate_customer_number
462 RETURN	varchar2
463 IS
464 	L_org_id	Number;
465 	L_Value		Varchar2(1);
466 --
467 BEGIN
468     BEGIN
469 --  Bug 5107334 : get current org_id, if NULL, get default org_id
470       L_org_id := nvl(mo_global.get_current_org_id, mo_utils.get_default_org_id);
471     EXCEPTION
472     WHEN OTHERS
473     THEN
474      RAISE FND_API.G_EXC_ERROR;
475     END;
476 
477 	IF L_org_id IS NULL THEN
478 --  Bug 5107334 : Return new status 'D' if no org_id is derived
479 --  Don't put any warning message that can cause confustion
480 		RETURN 'D';
481 	ELSE
482 		IF (L_org_id = G_Cust_Gen_Cache.default_org) THEN
483 			RETURN G_Cust_Gen_Cache.generate_customer_number;
484 		ELSE
485 		        populate_non_org(L_org_id);
486 			RETURN G_Cust_Gen_Cache.generate_customer_number;
487 		END IF;
488 	END IF;
489 
490 	EXCEPTION
491 		WHEN NO_DATA_FOUND THEN
492 			FND_MESSAGE.SET_NAME('AR',
493 					'AR_NO_ROW_IN_SYSTEM_PARAMETERS');
494 			FND_MSG_PUB.ADD;
495 			RAISE;
496 
497 END get_generate_customer_number;
498 /**
499  * FUNCTION get_address_validation
500  *
501  * DESCRIPTION
502  *     	Returns the error or warning to be issued during the failure of
503  *      address validation.
504  *
505  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
506  *
507  * ARGUMENTS
508  *   IN:
509  *   IN/OUT:
510  *   OUT:
511  *
512  * RETURNS:
513  *
514  * NOTES
515  *
516  * MODIFICATION HISTORY
517  *
518  *   24-JUN-2005    Kalyan   o TCA SSA Uptake (Bug 4454799). Created.
519  */
520 
521 FUNCTION get_address_validation( p_org_id IN NUMBER )
522 RETURN	varchar2
523 IS
524     L_Param_Rec   HZ_MO_GLOBAL_CACHE.GlobalsRecord;
525 BEGIN
526     L_Param_Rec := get_org_Attributes(p_org_id);
527     RETURN L_Param_Rec.Address_Val;
528 
529 END get_address_validation ;
530 
531 
532 /**
533  * PROCEDURE validate_orgid_pub_api
534  *
535  * DESCRIPTION
536  *     	Wrapper around MO_GLOBAL.validate_orgid_pub_api
537  *      Extra functionality -
538  *       IF passed ORG_ID is null
539  *        + no default org_id based on profile was found by MO_GLOBAL
540  *       {
541  *          IF security settings allow user access to set of OUs
542  *             RETURN one OU from that set and set STATUS = 'R' (random)
543  *          ELSE
544  *             Allow default behavior. Bubble up MO_GLOBAL raised exception
545  *       }
546  *
547  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
548  *
549  * ARGUMENTS
550  *   IN:
551  *              ERROR_MESG_SUPPR   IN            VARCHAR2  DEFAULT 'N'
552  *   IN/OUT:
553  *              ORG_ID             IN OUT NOCOPY NUMBER
554  *   OUT:
555  *              STATUS             OUT    NOCOPY VARCHAR2
556  *
557  * RETURNS:
558  *
559  * NOTES !!DONT USE WITHOUT DISCUSSING WITH TCA DEVELOPMENT!!
560  *
561  * MODIFICATION HISTORY
562  *
563  *   24-MAR-2006    Vivek Nama     Bug 5107334 Created
564  *   30-MAR-2006    Vivek Nama     Bug 5124700 Modified query to use ar_system_parameters
565  */
566 PROCEDURE validate_orgid_pub_api(
567   ORG_ID             IN OUT NOCOPY NUMBER,
568   ERROR_MESG_SUPPR   IN            VARCHAR2  DEFAULT 'N',
569   STATUS             OUT    NOCOPY VARCHAR2)
570 IS
571 
572  l_org_id            Number;
573  l_org_name          hr_operating_units.name%TYPE;
574 
575 BEGIN
576 
577 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
578  FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,MOD_validate_orgid_pub_api,'ENTER');
579 END IF;
580 
581 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
582  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'ORG_ID='||ORG_ID);
583  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'ERROR_MESG_SUPPR='||ERROR_MESG_SUPPR);
584 END IF;
585 
586   --call mo_global api
587   MO_GLOBAL.validate_orgid_pub_api(
588     ORG_ID,
589     ERROR_MESG_SUPPR,
590     STATUS);
591 
592 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
593  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'successfully executed MO_GLOBAL.validate_orgid_pub_api()');
594 END IF;
595 
596 
597   --process output
598   --note there is similar handling in exception block of this api to handle case ERROR_MESG_SUPPR <> "N'
599   IF  STATUS = 'F'
600   AND ORG_ID is null THEN
601 
602     BEGIN
603 
604 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
605  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'case: ORG_ID is null');
606 END IF;
607 
608       --try to pick first org that user has access to
609       SELECT
610        hr.organization_id,
611        hr.name
612       INTO
613        l_org_id,
614        l_org_name
615       FROM
616        hr_operating_units hr,
617        ar_system_parameters s
618       WHERE
619           mo_global.check_access(hr.organization_id) = 'Y'
620       AND hr.organization_id = s.org_id
621       AND s.set_of_books_id > 0
622       AND rownum < 2;
623 
624 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
625  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'l_org_id='||l_org_id);
626  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'l_org_name='||l_org_name);
627 END IF;
628 
629       IF l_org_id is not null THEN
630         ORG_ID := l_org_id;
631         STATUS := 'R';
632       END IF;
633 
634     EXCEPTION
635     WHEN no_data_found THEN
636 
637 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
638  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'caught exception no_data_found in sql=SELECT hr.organization_id,hr.name FROM hr_operating_units hr WHERE mo_global.check_access(hr.organization_id) = "Y" AND rownum < 2');
639 END IF;
640 
641       --if an org is still not available let default behavior persist
642 
643     END;
644 
645   END IF;
646 
647 
648 
649 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
650  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'ORG_ID='||ORG_ID);
651  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'STATUS='||STATUS);
652 END IF;
653 
654 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
655  FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,MOD_validate_orgid_pub_api,'EXIT');
656 END IF;
657 
658   RETURN;
659 
660 
661 EXCEPTION
662 
663 WHEN others THEN
664 
665 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
666  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'caught exception in MO_GLOBAL.validate_orgid_pub_api()');
667 END IF;
668 
669   --note there is similar handling in main block of this api to handle case ERROR_MESG_SUPPR = "N'
670   IF ORG_ID is null THEN
671     BEGIN
672 
673 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
674  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'case: ORG_ID is null');
675 END IF;
676 
677      --try to pick first org that user has access to
678       SELECT
679        hr.organization_id,
680        hr.name
681       INTO
682        l_org_id,
683        l_org_name
684       FROM
685        hr_operating_units hr,
686        ar_system_parameters s
687       WHERE
688           mo_global.check_access(hr.organization_id) = 'Y'
689       AND hr.organization_id = s.org_id
690       AND s.set_of_books_id > 0
691       AND rownum < 2;
692 
693 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
694  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'l_org_id='||l_org_id);
695  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'l_org_name='||l_org_name);
696 END IF;
697 
698       IF l_org_id is null THEN
699 
700 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
701  FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,MOD_validate_orgid_pub_api,'ERROR: raising APP_EXCEPTION.RAISE_EXCEPTION');
702 END IF;
703 
704         APP_EXCEPTION.RAISE_EXCEPTION;
705 
706       ELSE
707 
708         ORG_ID := l_org_id;
709         STATUS := 'R';
710 
711 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
712  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'ORG_ID='||ORG_ID);
713  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'STATUS='||STATUS);
714 END IF;
715 
716 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
717  FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,MOD_validate_orgid_pub_api,'EXIT');
718 END IF;
719 
720         RETURN;
721 
722       END IF;
723 
724     EXCEPTION
725     WHEN no_data_found THEN
726 
727 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
728  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'caught exception no_data_found in sql=SELECT hr.organization_id,hr.name FROM hr_operating_units hr WHERE mo_global.check_access(hr.organization_id) = "Y" AND rownum < 2');
729 END IF;
730 
731 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
732  FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,MOD_validate_orgid_pub_api,'ERROR: raising APP_EXCEPTION.RAISE_EXCEPTION');
733 END IF;
734 
735       --if an org is still not available let default behavior persist
736       APP_EXCEPTION.RAISE_EXCEPTION;
737     END;
738 
739   ELSE
740   --IF ORG_ID is not null
741   --let default behavior persist
742 
743 
744 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
745  FND_LOG.string(FND_LOG.LEVEL_STATEMENT,MOD_validate_orgid_pub_api,'case: ORG_ID is not null');
746 END IF;
747 
748 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
749  FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,MOD_validate_orgid_pub_api,'ERROR: raising APP_EXCEPTION.RAISE_EXCEPTION');
750 END IF;
751 
752     APP_EXCEPTION.RAISE_EXCEPTION;
753   END IF;
754 
755 END validate_orgid_pub_api;
756 
757 
758 /**
759  * FUNCTION get_create_reciprocal_flag
760  *
761  * DESCRIPTION
762  *     	Returns the Reciprocal Flag setting for the org
763  *
764  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
765  *
766  * ARGUMENTS
767  *   IN:
768  *     p_org_id_in			Organization ID
769  *
770  *   IN/OUT:
771  *   OUT:
772  *
773  * RETURNS:
774  *	Create Reciprocal Flag setting for the org
775  *
776  * NOTES
777  *
778  * MODIFICATION HISTORY
779  *
780  *  13-MAR-2006    Dhaval Mehta    Bug 5002547 : Added
781  */
782 
783 FUNCTION get_create_reciprocal_flag (
784         p_org_id		IN	NUMBER
785 				)
786 RETURN varchar2
787 IS
788 	L_Param_Rec	HZ_MO_GLOBAL_CACHE.GlobalsRecord;
789 
790 BEGIN
791 	L_Param_Rec := get_Org_Attributes(p_org_id);
792 	RETURN L_Param_Rec.reciprocal_flag;
793 END get_create_reciprocal_flag;
794 
795 
796 /**
797  * FUNCTION get_autocash_hierarchy_id
798  *
799  * DESCRIPTION
800  *     	Returns the the Autocash Rule setting for the org
801  *
802  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
803  *
804  * ARGUMENTS
805  *   IN:
806  *   IN/OUT:
807  *   OUT:
808  *
809  * RETURNS:
810  *	autocash_hierarchy_id	Autocash Hierarchy ID setting
811  *
812  * NOTES
813  *
814  * MODIFICATION HISTORY
815  *
816  *    13-MAR-2006    Dhaval Mehta    Bug 5002547 : Added
817  */
818 
819 FUNCTION get_autocash_hierarchy_id
820 RETURN Number
821 IS
822 	L_org_id	Number;
823 	L_Value		Number;
824         l_return_status VARCHAR2(2000);
825 --
826 BEGIN
827     BEGIN
828       L_org_id := nvl(mo_global.get_current_org_id, mo_utils.get_default_org_id);
829     EXCEPTION
830     WHEN OTHERS
831     THEN
832       NULL;
833     END;
834 
835 	IF L_org_id IS NULL THEN
836 		RETURN NULL;
837 	ELSE
838 		IF (L_org_id = G_Cust_Gen_Cache.default_org) THEN
839 			RETURN G_Cust_Gen_Cache.autocash_hierarchy_id;
840 		ELSE
841 		        populate_non_org(L_org_id);
842 			RETURN G_Cust_Gen_Cache.autocash_hierarchy_id;
843 		END IF;
844 	END IF;
845 
846 	EXCEPTION
847 		WHEN NO_DATA_FOUND THEN
848 			FND_MESSAGE.SET_NAME('AR',
849 					'AR_NO_ROW_IN_SYSTEM_PARAMETERS');
850 			FND_MSG_PUB.ADD;
851 			RAISE;
852 
853 END get_autocash_hierarchy_id;
854 /**
855  * FUNCTION get_default_grouping_rule_id
856  *
857  * DESCRIPTION
858  *     	Returns the Default Group Rule setting for the org
859  *
860  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
861  *
862  * ARGUMENTS
863  *   IN:
864  *   IN/OUT:
865  *   OUT:
866  *
867  * RETURNS:
868  *	default_grouping_rule_id	Default Grouping Rule ID setting
869  *
870  * NOTES
871  *
872  * MODIFICATION HISTORY
873  *
874  *    13-MAR-2006    Dhaval Mehta    Bug 5002547 : Added
875  */
876 
877 FUNCTION get_default_grouping_rule_id
878 RETURN NUMBER
879 IS
880 	L_org_id	Number;
881 	L_Value		Number;
882         l_return_status VARCHAR2(2000);
883 --
884 BEGIN
885     BEGIN
886       L_org_id := nvl(mo_global.get_current_org_id, mo_utils.get_default_org_id);
887     EXCEPTION
888     WHEN OTHERS
889     THEN
890      NULL;
891     END;
892 
893 	IF L_org_id IS NULL THEN
894 		RETURN NULL;
895 	ELSE
896 		IF (L_org_id = G_Cust_Gen_Cache.default_org) THEN
897 			RETURN G_Cust_Gen_Cache.default_grouping_rule_id;
898 		ELSE
899 		        populate_non_org(L_org_id);
900 			RETURN G_Cust_Gen_Cache.default_grouping_rule_id;
901 		END IF;
902 	END IF;
903 
904 	EXCEPTION
905 		WHEN NO_DATA_FOUND THEN
906 			FND_MESSAGE.SET_NAME('AR',
907 					'AR_NO_ROW_IN_SYSTEM_PARAMETERS');
908 			FND_MSG_PUB.ADD;
909 			RAISE;
910 
911 END get_default_grouping_rule_id;
912 
913 END HZ_MO_GLOBAL_CACHE;
914