[Home] [Help]
PACKAGE BODY: APPS.LNS_UTILITY_PUB
Source
1 PACKAGE BODY LNS_UTILITY_PUB AS
2 /*$Header: LNS_UTIL_PUBP_B.pls 120.15.12020000.2 2012/07/19 21:01:04 scherkas ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'LNS_UTILITIES';
5 G_FILE_NAME CONSTANT VARCHAR2(30) := 'LNS_UTIL_PUBP_B.pls';
6
7 --------------------------------------------
8 -- internal package routines
9 --------------------------------------------
10
11 procedure logMessage(log_level in number
12 ,module in varchar2
13 ,message in varchar2)
14 is
15
16 begin
17
18 IF log_level >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
19 FND_LOG.STRING(log_level, module, message);
20 END IF;
21
22 end;
23
24 FUNCTION created_by RETURN NUMBER IS
25 BEGIN
26
27 RETURN NVL(FND_GLOBAL.user_id,-1);
28
29 END created_by;
30
31 FUNCTION creation_date RETURN DATE IS
32 BEGIN
33
34 RETURN SYSDATE;
35
36 END creation_date;
37
38 FUNCTION last_updated_by RETURN NUMBER IS
39 BEGIN
40
41 RETURN NVL(FND_GLOBAL.user_id,-1);
42
43 END last_updated_by;
44
45 FUNCTION last_update_date RETURN DATE IS
46 BEGIN
47
48 RETURN SYSDATE;
49
50 END last_update_date;
51
52 FUNCTION last_update_login RETURN NUMBER IS
53 BEGIN
54
55 IF FND_GLOBAL.conc_login_id = -1 OR
56 FND_GLOBAL.conc_login_id IS NULL
57 THEN
58 RETURN FND_GLOBAL.login_id;
59 ELSE
60 RETURN FND_GLOBAL.conc_login_id;
61 END IF;
62
63 END last_update_login;
64
65 FUNCTION request_id RETURN NUMBER IS
66 BEGIN
67
68 IF FND_GLOBAL.conc_request_id = -1 OR
69 FND_GLOBAL.conc_request_id IS NULL
70 THEN
71 RETURN NULL;
72 ELSE
73 RETURN FND_GLOBAL.conc_request_id;
74 END IF;
75
76 END request_id;
77
78 FUNCTION program_id RETURN NUMBER IS
79 BEGIN
80
81 IF FND_GLOBAL.conc_program_id = -1 OR
82 FND_GLOBAL.conc_program_id IS NULL
83 THEN
84 RETURN NULL;
85 ELSE
86 RETURN FND_GLOBAL.conc_program_id;
87 END IF;
88
89 END program_id;
90
91 FUNCTION program_application_id RETURN NUMBER IS
92 BEGIN
93
94 IF FND_GLOBAL.prog_appl_id = -1 OR
95 FND_GLOBAL.prog_appl_id IS NULL
96 THEN
97 RETURN NULL;
98 ELSE
99 RETURN FND_GLOBAL.prog_appl_id;
100 END IF;
101
102 END program_application_id;
103
104 FUNCTION application_id RETURN NUMBER IS
105 BEGIN
106
107 IF FND_GLOBAL.resp_appl_id = -1 OR
108 FND_GLOBAL.resp_appl_id IS NULL
109 THEN
110 RETURN NULL;
111 ELSE
112 RETURN FND_GLOBAL.resp_appl_id;
113 END IF;
114
115 END application_id;
116
117 FUNCTION program_update_date RETURN DATE IS
118 BEGIN
119
120 IF program_id IS NULL THEN
121 RETURN NULL;
122 ELSE
123 RETURN SYSDATE;
124 END IF;
125
126 END program_update_date;
127
128 FUNCTION user_id RETURN NUMBER IS
129 BEGIN
130
131 RETURN NVL(FND_GLOBAL.user_id,-1);
132
133 END user_id;
134
135 PROCEDURE Validate_any_id(p_api_version IN NUMBER := 1.0,
136 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
137 x_msg_count OUT NOCOPY NUMBER,
138 x_msg_data OUT NOCOPY VARCHAR2,
139 x_return_status OUT NOCOPY VARCHAR2,
140 p_col_id IN NUMBER,
141 p_col_name IN VARCHAR2,
142 p_table_name IN VARCHAR2)
143 IS
144
145 TYPE refCur IS REF CURSOR;
146 valid_id refCur;
147
148 l_return_status VARCHAR2(1);
149 count_id VARCHAR2(1);
150 l_api_version NUMBER := p_api_version;
151 l_init_msg_list VARCHAR2(1) := p_init_msg_list;
152 l_api_name VARCHAR2(20) := 'VALIDATE_ANY_ID';
153 vPlsql VARCHAR2(2000);
154 BEGIN
155
156 -- Standard Start of API savepoint
157 SAVEPOINT Validate_any_id_PVT;
158
159 -- Initialize API return status to SUCCESS
160 x_return_status := FND_API.G_RET_STS_SUCCESS;
161
162
163 -- Standard call to check for call compatibility.
164 IF NOT FND_API.Compatible_API_Call (l_api_version,
165 p_api_version,
166 l_api_name,
167 G_PKG_NAME)
168 THEN
169 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
170 END IF;
171
172 -- Initialize message list if p_init_msg_list is set to TRUE.
173 IF FND_API.to_Boolean(p_init_msg_list)
174 THEN
175 FND_MSG_PUB.initialize;
176 END IF;
177
178 -- API body
179 vPlsql :=
180 ' Select ''X'' ' ||
181 ' From ' || p_table_name || ' ' ||
182 ' Where exists ' ||
183 ' (Select ' || p_col_name ||
184 ' From ' || p_table_name ||
185 ' Where ' || p_col_name || ' = :a1)';
186 --dbms_output.put_line('plsql is ' || vPLSQL);
187 open valid_id for
188 vPlsql
189 using p_col_id;
190 FETCH valid_id INTO count_id;
191
192 if valid_id%FOUND then
193 --dbms_output.put_line('FOUND!!');
194 l_return_status := FND_API.G_RET_STS_SUCCESS;
195 else
196 --dbms_output.put_line('NOT FOUND!!');
197 l_return_status := FND_API.G_RET_STS_ERROR;
198 end if;
199 CLOSE valid_id;
200
201 x_return_status := l_return_status;
202
203 EXCEPTION
204 WHEN FND_API.G_EXC_ERROR THEN
205 ROLLBACK TO Validate_any_id_PVT;
206 x_return_status := FND_API.G_RET_STS_ERROR;
207 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
208
209 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
210 ROLLBACK TO Validate_any_id_PVT;
211 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
212 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
213
214 WHEN OTHERS THEN
215 ROLLBACK TO Validate_any_id_PVT;
216 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
217 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
218 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
219 END IF;
220 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
221
222 END Validate_any_id;
223
224 PROCEDURE Validate_any_varchar(p_api_version IN NUMBER := 1.0,
225 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
226 x_msg_count OUT NOCOPY NUMBER,
227 x_msg_data OUT NOCOPY VARCHAR2,
228 x_return_status OUT NOCOPY VARCHAR2,
229 p_col_value IN VARCHAR2,
230 p_col_name IN VARCHAR2,
231 p_table_name IN VARCHAR2)
232 IS
233
234 TYPE refCur IS REF CURSOR;
235 valid_id refCur;
236
237 l_return_status VARCHAR2(1);
238 count_id VARCHAR2(1);
239 l_api_version NUMBER := p_api_version;
240 l_init_msg_list VARCHAR2(1) := p_init_msg_list;
241 l_api_name VARCHAR2(20) := 'VALIDATE_ANY_VARCHAR';
242
243 l_col_value varchar2(240);
244 vPLSQL varchar2(1000);
245
246 BEGIN
247
248 -- Standard Start of API savepoint
249 SAVEPOINT Validate_any_varchar_PVT;
250
251 -- Initialize API return status to SUCCESS
252 x_return_status := FND_API.G_RET_STS_SUCCESS;
253
254
255 -- Standard call to check for call compatibility.
256 IF NOT FND_API.Compatible_API_Call (l_api_version,
257 p_api_version,
258 l_api_name,
259 G_PKG_NAME)
260 THEN
261 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
262 END IF;
263
264 -- Initialize message list if p_init_msg_list is set to TRUE.
265 IF FND_API.to_Boolean(p_init_msg_list)
266 THEN
267 FND_MSG_PUB.initialize;
268 END IF;
269
270 -- API body
271 --dbms_output.put_line('col is ' || p_col_value);
272
273 vPLSQL := ' Select ''X'' ' ||
274 ' From ' || p_table_name ||
275 ' Where exists ' ||
276 ' (Select ' || p_col_name ||
277 ' From ' || p_table_name ||
278 ' Where ' || p_col_name || ' = :a1)';
279 --dbms_output.put_line('plsql is ' || vPLSQL);
280
281 OPEN valid_id FOR
282 vPLSQL
283 using p_col_value;
284 FETCH valid_id INTO count_id;
285
286 if valid_id%FOUND then
287 --dbms_output.put_line('FOUND!!');
288 l_return_status := FND_API.G_RET_STS_SUCCESS;
289 else
290 --dbms_output.put_line('NOT FOUND!!');
291 l_return_status := FND_API.G_RET_STS_ERROR;
292 end if;
293 CLOSE valid_id;
294
295 x_return_status := l_return_status;
296
297 EXCEPTION
298 WHEN FND_API.G_EXC_ERROR THEN
299 ROLLBACK TO Validate_any_varchar_PVT;
300 x_return_status := FND_API.G_RET_STS_ERROR;
301 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
302
303 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
304 ROLLBACK TO Validate_any_varchar_PVT;
305 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
306 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
307
308 WHEN OTHERS THEN
309 ROLLBACK TO Validate_any_varchar_PVT;
310 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
311 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
312 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
313 END IF;
314 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
315
316 END Validate_any_varchar;
317
318 PROCEDURE Validate_Lookup_CODE(p_api_version IN NUMBER := 1.0,
319 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
320 x_msg_count OUT NOCOPY NUMBER,
321 x_msg_data OUT NOCOPY VARCHAR2,
322 x_return_status OUT NOCOPY VARCHAR2,
323 p_lookup_type IN VARCHAR2,
324 p_lookup_code IN VARCHAR2,
325 p_lookup_view IN VARCHAR2 := 'LNS_LOOKUPS')
326 IS
327
328 TYPE refCur IS REF CURSOR;
329 valid_id refCur;
330
331 l_return_status VARCHAR2(1);
332 count_id NUMBER := 0;
333 l_api_version NUMBER := p_api_version;
334 l_init_msg_list VARCHAR2(1) := p_init_msg_list;
335 l_api_name VARCHAR2(20) := 'VALIDATE_LOOKUP_CODE';
336
337 l_lookup_code varchar2(30);
338 l_lookup_type varchar2(30);
339 vPLSQL varchar2(1000);
340
341 BEGIN
342
343 -- Standard Start of API savepoint
344 SAVEPOINT Validate_any_varchar_PVT;
345
346 -- Initialize API return status to SUCCESS
347 x_return_status := FND_API.G_RET_STS_SUCCESS;
348
349 -- Standard call to check for call compatibility.
350 IF NOT FND_API.Compatible_API_Call (l_api_version,
351 p_api_version,
352 l_api_name,
353 G_PKG_NAME)
354 THEN
355 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
356 END IF;
357
358 -- Initialize message list if p_init_msg_list is set to TRUE.
359 IF FND_API.to_Boolean(p_init_msg_list)
360 THEN
361 FND_MSG_PUB.initialize;
362 END IF;
363
364 -- API body
365 l_lookup_code := '''' || p_lookup_code || '''';
366 l_lookup_type := '''' || p_lookup_type || '''';
367
368 --dbms_output.put_line('col is ' || l_lookup_code);
369 vPLSQL :=
370 'Select Count(LOOKUP_CODE) ' ||
371 'From ' || p_lookup_view || ' ' ||
372 'Where LOOKUP_TYPE = ' || l_lookup_type || ' AND ' ||
373 'LOOKUP_CODE = ' || l_lookup_code || ' AND ' ||
374 'ENABLED_FLAG = ''Y''';
375
376 --dbms_output.put_line('plsql is ' || vPLSQL);
377 OPEN valid_id FOR
378 vPLSQL;
379 FETCH valid_id INTO count_id;
380
381 CLOSE valid_id ;
382
383 IF (count_id > 0) then
384 l_return_status := FND_API.G_RET_STS_SUCCESS;
385 ELSE
386 l_return_status := FND_API.G_RET_STS_ERROR;
387 END IF ;
388 x_return_status := l_return_status;
389
390 EXCEPTION
391 WHEN FND_API.G_EXC_ERROR THEN
392 ROLLBACK TO Validate_any_varchar_PVT;
393 x_return_status := FND_API.G_RET_STS_ERROR;
394 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
395
396 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
397 ROLLBACK TO Validate_any_varchar_PVT;
398 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
399 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
400
401 WHEN OTHERS THEN
402 ROLLBACK TO Validate_any_varchar_PVT;
403 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
404 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
405 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
406 END IF;
407 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
408
409 END Validate_LOOKUP_CODE;
410
411 Procedure getObjectVersion(p_table_name IN varchar2
412 ,p_primary_key_name IN varchar2
413 ,p_primary_key_value IN NUMBER
414 ,p_object_version_number IN NUMBER
415 ,x_object_version_number OUT NOCOPY NUMBER
416 ,x_msg_count OUT NOCOPY NUMBER
417 ,x_msg_data OUT NOCOPY VARCHAR2
418 ,x_return_status OUT NOCOPY VARCHAR2)
419 is
420 l_object_version_number number;
421 l_rowid rowid;
422
423 -- check whether record has been updated by another user. If not, lock it.
424 BEGIN
425 Execute Immediate
426 'SELECT OBJECT_VERSION_NUMBER, ' ||
427 ' ROWID ' ||
428 ' FROM ' || p_table_name ||
429 ' Where ' || p_primary_key_name || ' = ' || p_primary_key_value ||
430 ' FOR UPDATE OF ' || p_primary_key_name || ' NOWAIT'
431 INTO l_object_version_number,
432 l_rowid;
433 IF NOT
434 (
435 (p_object_version_number IS NULL AND l_object_version_number IS NULL)
436 OR
437 (p_object_version_number IS NOT NULL AND
438 l_object_version_number IS NOT NULL AND
439 p_object_version_number = l_object_version_number
440 )
441 )
442 THEN
443 FND_MESSAGE.SET_NAME('LNS', 'LNS_API_RECORD_CHANGED');
444 FND_MESSAGE.SET_TOKEN('TABLE', p_table_name);
445 FND_MSG_PUB.ADD;
446 RAISE FND_API.G_EXC_ERROR;
447 END IF;
448
449 x_object_version_number := nvl(l_object_version_number, 1) + 1;
450
451 EXCEPTION WHEN NO_DATA_FOUND THEN
452 FND_MESSAGE.SET_NAME('LNS', 'LNS_API_NO_RECORD');
453 FND_MESSAGE.SET_TOKEN('RECORD', p_primary_key_name);
454 FND_MESSAGE.SET_TOKEN('VALUE', NVL(TO_CHAR(p_primary_key_value), 'null'));
455 FND_MSG_PUB.ADD;
456 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
457 x_return_status := FND_API.G_RET_STS_ERROR;
458 --RAISE FND_API.G_EXC_ERROR;
459 END getObjectVersion;
460
461
462 FUNCTION get_lookup_meaning (p_lookup_type IN VARCHAR2,
463 p_lookup_code IN VARCHAR2)
464 RETURN VARCHAR2 IS
465 l_meaning lns_lookups.meaning%TYPE;
466 l_hash_value NUMBER;
467
468 BEGIN
469 IF p_lookup_code IS NOT NULL AND
470 p_lookup_type IS NOT NULL THEN
471
472 l_hash_value := DBMS_UTILITY.get_hash_value(
473 p_lookup_type||'@*?'||p_lookup_code,
474 1000,
475 25000);
476
477 IF pg_lookups_rec.EXISTS(l_hash_value) THEN
478 l_meaning := pg_lookups_rec(l_hash_value);
479 ELSE
480
481 SELECT meaning
482 INTO l_meaning
483 FROM lns_lookups
484 WHERE lookup_type = p_lookup_type
485 AND lookup_code = p_lookup_code ;
486
487 pg_lookups_rec(l_hash_value) := l_meaning;
488
489 END IF;
490
491 END IF;
492
493 return(l_meaning);
494
495 EXCEPTION
496 WHEN no_data_found THEN
497 return(null);
498 WHEN OTHERS THEN
499 raise;
500 END;
501
502 function convertAmount(p_from_amount in number
503 ,p_from_currency in varchar2
504 ,p_to_currency in varchar2
505 ,p_exchange_type in varchar2
506 ,p_exchange_date in date
507 ,p_exchange_rate in number) return number
508 is
509 l_rate_exists varchar2(1);
510 l_rate number;
511 l_convert_amount number;
512 l_to_currency varchar2(10);
513 l_exchange_type varchar2(25);
514 l_exchange_date date;
515 l_precision number;
516 l_api_name varchar2(25);
517
518 /* --Performance bug#4963583
519 cursor c_precision(p_to_currency varchar2) is
520 select fndc.precision
521 FROM gl_sets_of_books sb,
522 fnd_currencies fndc
523 WHERE sb.currency_code = fndc.currency_code
524 and fndc.currency_code = p_to_currency;
525 */
526 cursor c_precision(p_to_currency varchar2) is
527 select fndc.precision
528 FROM fnd_currencies fndc
529 WHERE fndc.currency_code = p_to_currency;
530 begin
531
532 l_api_name := 'convertAmount';
533 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_from_amount ' || p_from_amount);
534 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_from_currency ' || p_from_currency);
535 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_to_currency ' || p_to_currency);
536 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_exchange_type ' || p_exchange_type);
537 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_exchange_date ' || p_exchange_date);
538 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_exchange_rate ' || p_exchange_rate);
539
540 if p_to_currency is null then
541 SELECT sb.currency_code into l_to_currency
542 FROM lns_system_options so,
543 gl_sets_of_books sb
544 WHERE sb.set_of_books_id = so.set_of_books_id;
545 else
546 l_to_currency := p_to_currency ;
547 end if;
548
549 if p_exchange_date is null then
550 l_exchange_date := sysdate;
551 else
552 l_exchange_Date := p_exchange_date;
553 end if;
554
555 if p_exchange_type = 'User' then
556 if p_exchange_rate is null then
557 l_convert_amount := -1;
558 else
559 open c_precision(p_to_currency) ;
560 fetch c_precision into l_precision;
561 close c_precision;
562 l_convert_amount := round(p_from_amount * p_exchange_rate, l_precision);
563 end if;
564
565 else
566 l_exchange_type := p_exchange_type;
567 l_rate_exists := gl_currency_api.rate_exists(X_FROM_CURRENCY => p_from_currency
568 ,X_TO_CURRENCY => l_to_currency
569 ,X_CONVERSION_DATE => l_exchange_date
570 ,X_CONVERSION_TYPE => p_exchange_type);
571 if l_rate_exists = 'Y' then
572 -- rate exists
573
574 /*
575 l_rate := gl_currency_api.get_rate(X_FROM_CURRENCY => p_from_currency,
576 X_TO_CURRENCY => p_to_currency,
577 X_CONVERSION_DATE => p_exchange_date,
578 X_CONVERSION_TYPE => p_exchange_type);
579 */
580 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_from_amount ' || p_from_amount);
581 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_from_currency ' || p_from_currency);
582 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_to_currency ' || l_to_currency);
583 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_exchange_type ' || l_exchange_type);
584 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_exchange_date ' || p_exchange_date);
585 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_exchange_rate ' || p_exchange_rate);
586
587 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - calling gl_currency API....');
588 l_convert_amount := gl_currency_api.convert_amount(X_FROM_CURRENCY => p_from_currency
589 ,X_TO_CURRENCY => l_to_currency
590 ,X_CONVERSION_DATE => l_exchange_date
591 ,X_CONVERSION_TYPE => l_exchange_type
592 ,X_AMOUNT => p_from_amount);
593 else
594 return -1;
595
596 end if;
597
598 end if;
599
600 return l_convert_amount;
601
602 end convertAmount;
603
604 /*=========================================================================
605 || PUBLIC FUNCTION convertRate
606 ||
607 || DESCRIPTION
608 ||
609 || Overview: this function will return the rate between 2 currencies for a given date/type
610 ||
611 || Parameter: p_from_currency => currency 1
612 || p_to_currency => currency 2
613 ||
614 ||
615 || Source Tables: NA
616 ||
617 || Target Tables: NA
618 ||
619 || Return value: boolean
620 ||
621 || KNOWN ISSUES
622 ||
623 || NOTES
624 ||
625 || MODIFICATION HISTORY
626 || Date Author Description of Changes
627 || 12/01/2004 1:51PM raverma Created
628 *=======================================================================*/
629 function convertRate(p_from_currency in varchar
630 ,p_to_currency in varchar
631 ,p_exchange_date in date
632 ,p_exchange_type in varchar) return number
633 is
634 l_rate number;
635 begin
636
637 begin
638 l_rate := gl_currency_api.get_rate(X_FROM_CURRENCY => p_from_currency,
639 X_TO_CURRENCY => p_to_currency,
640 X_CONVERSION_DATE => p_exchange_date,
641 X_CONVERSION_TYPE => p_exchange_type);
642 exception
643 WHEN GL_CURRENCY_API.NO_RATE THEN
644 l_rate := -1;
645
646 When others then
647 l_rate := -1;
648
649 end;
650
651 return l_rate;
652 end;
653
654
655 /*=========================================================================
656 || PUBLIC FUNCTION Check_PSA_Enabled_Org
657 ||
658 || DESCRIPTION
659 ||
660 || Overview: this function will return true if MFAR implemented for org
661 ||
662 || Parameter: p_org_id
663 ||
664 || Source Tables: NA
665 ||
666 || Target Tables: NA
667 ||
668 || Return value: varchar2(1) 'Y' or 'N'
669 ||
670 || KNOWN ISSUES
671 ||
672 || NOTES
673 ||
674 || MODIFICATION HISTORY
675 || Date Author Description of Changes
676 || 01/20/2005 4:51PM karamach Changed return type
677 || 12/01/2004 1:51PM raverma Created
678 *=======================================================================*/
679 function Check_PSA_Enabled_Org(p_org_id in number) return varchar2
680 is
681 l_mfar varchar2(10);
682 l_bool boolean := false;
683
684 begin
685 /* 6-3-2005 raverma always return Y
686 l_bool := PSA_IMPLEMENTATION.get (p_org_id => p_org_id
687 ,p_psa_feature => 'MFAR'
688 ,p_enabled_flag => l_mfar);
689 */
690 -- if (l_bool) then
691 return 'Y';
692 -- end if;
693
694 end Check_PSA_Enabled_Org;
695
696
697 /*=========================================================================
698 || PUBLIC FUNCTION IS_CREDIT_MANAGEMENT_INSTALLED
699 ||
700 || DESCRIPTION
701 ||
702 || Overview: this function will return Y if OCM is installed
703 ||
704 || Parameter: none
705 ||
706 || Source Tables: NA
707 ||
708 || Target Tables: NA
709 ||
710 || Return value: varchar2(1) 'Y' or 'N'
711 ||
712 || KNOWN ISSUES
713 ||
714 || NOTES
715 ||
716 || MODIFICATION HISTORY
717 || Date Author Description of Changes
718 || 07/24/2005 5:51PM karamach Created
719 *=======================================================================*/
720 function IS_CREDIT_MANAGEMENT_INSTALLED return varchar2
721 is
722 l_bool boolean := false;
723
724 begin
725
726 l_bool := AR_CMGT_CREDIT_REQUEST_API.IS_CREDIT_MANAGEMENT_INSTALLED;
727 if (l_bool) then
728 return 'Y';
729 end if;
730
731 return 'N';
732
733 end IS_CREDIT_MANAGEMENT_INSTALLED;
734
735
736 /*=========================================================================
737 || PUBLIC FUNCTION Check_PSA_Enabled_Current_Org
738 ||
739 || DESCRIPTION
740 ||
741 || Overview: this function will return true if MFAR implemented for current org
742 ||
743 || Parameter: None
744 ||
745 || Source Tables: NA
746 ||
747 || Target Tables: NA
748 ||
749 || Return value: varchar2(1) 'Y' or 'N'
750 ||
751 || KNOWN ISSUES
752 ||
753 || NOTES
754 ||
755 || MODIFICATION HISTORY
756 || Date Author Description of Changes
757 || 03/02/2005 12:10PM karamach Created
758 *=======================================================================*/
759 function Check_PSA_Enabled_Current_Org return varchar2
760 is
761 l_org_id number;
762 begin
763
764 /* 6-3-2005 raverma always return Y
765 select org_id into l_org_id
766 from lns_system_options;
767
768 return Check_PSA_Enabled_Org(l_org_id);
769 */
770 return 'Y';
771
772 end Check_PSA_Enabled_Current_Org;
773
774
775 /*=========================================================================
776 || PUBLIC FUNCTION Check_PSA_Enabled_Loan
777 ||
778 || DESCRIPTION
779 ||
780 || Overview: this function will return true if MFAR implemented for loan
781 ||
782 || Parameter: p_org_id
783 ||
784 || Source Tables: NA
785 ||
786 || Target Tables: NA
787 ||
788 || Return value: varchar2(1) 'Y' or 'N'
789 ||
790 || KNOWN ISSUES
791 ||
792 || NOTES
793 ||
794 || MODIFICATION HISTORY
795 || Date Author Description of Changes
796 || 01/20/2005 4:51PM karamach Changed return type
797 || 12/01/2004 1:51PM raverma Created
798 *=======================================================================*/
799 function Check_PSA_Enabled_Loan(p_loan_id number) return varchar2
800 is
801 l_org_id number;
802 begin
803
804 /* 6-3-2005 raverma always return Y
805 select org_id into l_org_id
806 from lns_loan_headers_all
807 where loan_id = p_loan_id;
808
809 return Check_PSA_Enabled_Org(l_org_id);
810 */
811 return 'Y';
812 end Check_PSA_Enabled_Loan;
813
814 /*=========================================================================
815 || PUBLIC FUNCTION Check_Desc_Flex_Setup
816 ||
817 || DESCRIPTION
818 ||
819 || Overview: this function will return 'Y' if the desc flex implemented
820 ||
821 || Parameter: p_desc_flex_name
822 ||
823 || Source Tables: NA
824 ||
825 || Target Tables: NA
826 ||
827 || Return value: varchar2(1) 'Y' or 'N'
828 ||
829 || KNOWN ISSUES
830 ||
831 || NOTES
832 ||
833 || MODIFICATION HISTORY
834 || Date Author Description of Changes
835 || 02/02/2004 karamach Created
836 *=======================================================================*/
837 function Check_Desc_Flex_Setup(p_desc_flex_name varchar2) return varchar2
838 is
839 l_bool boolean := false;
840 begin
841
842 l_bool := FND_FLEX_APIS.is_descr_setup(
843 x_application_id => 206,
844 x_desc_flex_name => p_desc_flex_name);
845
846 if (l_bool) then
847 return 'Y';
848 end if;
849
850 return 'N';
851
852 end Check_Desc_Flex_Setup;
853
854
855 /*=========================================================================
856 || PUBLIC FUNCTION getDocumentName
857 ||
858 || DESCRIPTION
859 ||
860 || Overview: this function will return the transaction type name for a
861 || document type 'PRIN', 'INT', 'FEE'
862 ||
863 || Parameter: p_line_type 'PRIN', 'INT', 'FEE'
864 ||
865 || Source Tables: NA
866 ||
867 || Target Tables: NA
868 ||
869 || Return value: periodic interest rate on the loan
870 ||
871 || KNOWN ISSUES
872 ||
873 || NOTES
874 ||
875 || MODIFICATION HISTORY
876 || Date Author Description of Changes
877 || 10/06/2004 1:51PM raverma Created
878 *=======================================================================*/
879 function getDocumentName(p_line_type in varchar2) return varchar2
880
881 is
882 cursor c_document_type(p_type varchar2)
883 is
884 select tty.name
885 from ra_cust_trx_types tty
886 ,lns_system_options lso
887 where tty.cust_trx_type_id = decode(p_type, 'PRIN', lso.trx_type_id, 'INT', lso.interest_trx_type_id, 'FEE', lso.fee_trx_type_id);
888 l_name varchar2(20);
889
890 begin
891
892 OPEN c_document_type(p_line_type);
893 FETCH c_document_type INTO l_name;
894 close c_document_type;
895
896 return l_name;
897
898 exception
899 when no_data_found then
900 return(null);
901 end getDocumentName;
902
903
904
905 FUNCTION Is_Loan_Manager_Role return VARCHAR2 IS
906
907 l_loan_manager_flag VARCHAR2(1) ;
908
909 BEGIN
910
911 SELECT nvl(manager.manager_flag,'N') INTO l_loan_manager_flag
912 FROM
913 (SELECT
914 rol.manager_flag,rel.role_resource_id
915 FROM
916 jtf_rs_role_relations rel ,
917 jtf_rs_roles_b rol
918 WHERE rel.role_id = rol.role_id
919 and rel.delete_flag <> 'Y'
920 and sysdate between nvl(rel.start_date_active,sysdate) and nvl(rel.end_date_active,sysdate)
921 and rol.role_type_code = 'LOANS'
922 and rol.role_code = 'LOAN_MGR'
923 and rol.active_flag = 'Y') manager,
924 jtf_rs_resource_extns res
925 WHERE
926 manager.role_resource_id(+) = res.resource_id
927 and category = 'EMPLOYEE'
928 and res.start_date_active <= sysdate
929 and (res.end_date_active is null or res.end_date_active >= sysdate)
930 and res.user_id = fnd_global.user_id;
931
932 return l_loan_manager_flag ;
933
934
935 END Is_Loan_Manager_Role ;
936
937 FUNCTION IS_FED_FIN_ENABLED return VARCHAR2 IS
938
939 l_fv_enabled_flag VARCHAR2(1) ;
940 l_org_id NUMBER ;
941
942 BEGIN
943
944 l_fv_enabled_flag := 'N' ;
945 BEGIN
946 SELECT org_id INTO l_org_id
947 FROM lns_system_options so ;
948
949 l_fv_enabled_flag := IS_FED_FIN_ENABLED(l_org_id) ;
950
951 EXCEPTION
952 WHEN NO_DATA_FOUND THEN
953 l_fv_enabled_flag := 'N' ;
954
955 END ;
956
957 return l_fv_enabled_flag;
958
959 END IS_FED_FIN_ENABLED ;
960
961 -- Bug#14038266
962 FUNCTION IS_FED_FIN_ENABLED(p_org_id IN NUMBER) return VARCHAR2 IS
963
964 l_fv_enabled_flag VARCHAR2(1) ;
965
966 BEGIN
967
968 l_fv_enabled_flag := 'N' ;
969 BEGIN
970 SELECT enable_budgetary_control_flag INTO l_fv_enabled_flag
971 FROM gl_ledgers gl, lns_system_options_all so
972 WHERE so.org_id = p_org_id
973 AND gl.ledger_id = so.set_of_books_id
974 AND fnd_profile.value('FV_ENABLED') = 'Y';
975
976 EXCEPTION
977 WHEN NO_DATA_FOUND THEN
978 l_fv_enabled_flag := 'N' ;
979
980 END ;
981
982 return l_fv_enabled_flag ;
983
984 END IS_FED_FIN_ENABLED ;
985
986 --This procedure refreshes the materialized view used for graphs
987 PROCEDURE refresh_mviews(ERRBUF OUT NOCOPY VARCHAR2
988 ,RETCODE OUT NOCOPY VARCHAR2
989 )
990 IS
991 l_api_name CONSTANT VARCHAR2(30) := 'REFRESH_MVIEWS';
992 l_entity_name CONSTANT VARCHAR2(30) := 'LNS_LOAN_DTLS_ALL_MV';
993
994 --This cursor is used to check if the mv exists already
995 CURSOR Check_MV_Exists(p_mv_name VARCHAR2) IS
996 SELECT MVIEW_NAME,COMPILE_STATE
997 FROM USER_MVIEWS
998 WHERE MVIEW_NAME = p_mv_name;
999
1000 --This is used for the cursor Check_MV_Exists
1001 l_mv_name VARCHAR2(200);
1002 l_compile_state VARCHAR2(200);
1003 l_return boolean;
1004 BEGIN
1005
1006 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :BEGIN');
1007
1008 OPEN Check_MV_Exists(l_entity_name);
1009 FETCH Check_MV_Exists INTO l_mv_name,l_compile_state;
1010 CLOSE Check_MV_Exists;
1011
1012 if (l_mv_name is not null) then
1013
1014 fnd_file.put_line(FND_FILE.LOG,
1015 'Begin dbms_mview.refresh call to refresh data in '|| l_entity_name);
1016 dbms_mview.refresh(l_entity_name, 'C', '', TRUE, FALSE, 0,0,0, TRUE);
1017
1018 fnd_file.put_line(FND_FILE.LOG,
1019 'Completed dbms_mview.refresh call to refresh data in '|| l_entity_name);
1020
1021 --This statement added as workaround for bug#2695199/2639679
1022 --MATERIALIZED VIEWS BECOME INVALID AFTER ALTER OR REFRESH
1023 if (l_compile_state <> 'VALID') then
1024 execute immediate
1025 ' alter materialized view '||l_entity_name||' compile';
1026 end if; --if (l_compile_state <> 'VALID') then
1027
1028 else
1029
1030 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' : Materialized View '|| l_entity_name || 'NOT FOUND - nothing to refresh');
1031 fnd_file.put_line(FND_FILE.LOG,
1032 'Materialized View '|| l_entity_name || 'NOT FOUND - nothing to refresh');
1033 fnd_file.put_line(FND_FILE.LOG,
1034 'Exiting program without performing any action');
1035 RETCODE := 'E';
1036 ERRBUF := 'Materialized View '|| l_entity_name || 'NOT FOUND - nothing to refresh';
1037 l_return := FND_CONCURRENT.SET_COMPLETION_STATUS(
1038 status => 'ERROR',
1039 message => 'Materialized View Refresh has failed. Please review log file.');
1040
1041 end if; --if (l_mv_name is not null) then
1042
1043 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :END');
1044
1045 EXCEPTION
1046 when others then
1047 fnd_file.put_line(FND_FILE.LOG,
1048 'Exception in refreshing MVs: '||sqlerrm);
1049 RETCODE := 'E';
1050 ERRBUF := 'Exception in refreshing MVs: '||sqlerrm;
1051 l_return := FND_CONCURRENT.SET_COMPLETION_STATUS(
1052 status => 'ERROR',
1053 message => 'Materialized View Refresh has failed. Please review log file.');
1054 --raise;
1055 END refresh_mviews;
1056
1057 --This function checks if a concurrent program request is pending/running
1058 --Returns 'N' if there are no pending/running requests for the conc program
1059 FUNCTION is_concurrent_request_pending
1060 (p_application_short_name IN VARCHAR2,
1061 p_concurrent_program_name IN VARCHAR2)
1062 RETURN varchar2
1063 IS
1064 l_api_name CONSTANT VARCHAR2(30) := 'IS_CONCURRENT_REQUEST_PENDING';
1065 l_is_pending Varchar2(1);
1066 l_request_id NUMBER;
1067 CURSOR C_CHECK_CP_REQ IS
1068 select request_id
1069 FROM fnd_concurrent_requests fcr,
1070 fnd_concurrent_programs fcp,
1071 fnd_application fa
1072 WHERE fa.application_short_name = p_application_short_name
1073 AND fcp.application_id = fa.application_id
1074 AND fcp.concurrent_program_name = p_concurrent_program_name
1075 AND fcr.program_application_id = fcp.application_id
1076 AND fcr.concurrent_program_id = fcp.concurrent_program_id
1077 --AND fcr.status_code in ('I', 'Q', 'R') --fnd_lookups CP_STATUS_CODE
1078 AND fcr.phase_code <> 'C' --fnd_lookups CP_PHASE_CODE
1079 AND ROWNUM = 1;
1080
1081 BEGIN
1082 l_is_pending := 'N';
1083
1084 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :BEGIN');
1085
1086 open C_CHECK_CP_REQ;
1087 fetch C_CHECK_CP_REQ into l_request_id;
1088 close C_CHECK_CP_REQ;
1089
1090 if (l_request_id IS NOT NULL) then
1091 l_is_pending := 'Y';
1092 end if;
1093
1094 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :END');
1095
1096 return l_is_pending;
1097
1098 END is_concurrent_request_pending;
1099
1100
1101 --This function checks if the given user is a valid Customer Contact or not.
1102
1103 FUNCTION IS_CUSTOMER_CONTACT(p_fnd_user_id IN NUMBER) return VARCHAR2 IS
1104
1105 l_customer_contact_flag VARCHAR2(1) ;
1106 l_api_name CONSTANT VARCHAR2(30) := 'IS_CUSTOMER_CONTACT';
1107
1108 BEGIN
1109 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :BEGIN');
1110 l_customer_contact_flag := 'N' ;
1111
1112 SELECT 'Y' INTO l_customer_contact_flag
1113 FROM hz_parties party, fnd_user fnduser
1114 WHERE party.party_type = 'PARTY_RELATIONSHIP'
1115 AND party.status ='A'
1116 AND fnduser.customer_id = party.party_id
1117 AND fnduser.user_id = p_fnd_user_id;
1118
1119 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :END');
1120 return l_customer_contact_flag ;
1121 EXCEPTION
1122 WHEN NO_DATA_FOUND THEN
1123 l_customer_contact_flag := 'N' ;
1124
1125
1126 return l_customer_contact_flag ;
1127
1128 END IS_CUSTOMER_CONTACT ;
1129
1130
1131
1132 --This function returns the number of loans to which a given user has access to
1133
1134 FUNCTION CUSTOMER_CONTACT_LOANS_COUNT
1135 (p_fnd_user_id IN NUMBER
1136 ,p_org_id IN NUMBER
1137 ,p_borrower_id IN NUMBER) return NUMBER IS
1138
1139 l_fnd_user_id NUMBER;
1140 l_number_of_loans NUMBER;
1141 l_subject_id NUMBER;
1142 l_api_name CONSTANT VARCHAR2(30) := 'CUSTOMER_CONTACT_LOANS_COUNT';
1143 l_org_id NUMBER;
1144 BEGIN
1145 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :BEGIN');
1146 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, ' ORGID - ' || p_org_id);
1147 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, ' FND_USER_ID - ' || p_fnd_user_id);
1148 l_number_of_loans := 0 ;
1149 l_fnd_user_id := p_fnd_user_id;
1150 l_subject_id := -1;
1151 l_org_id := p_org_id;
1152
1153
1154 SELECT person_party_id INTO l_subject_id
1155 FROM hz_parties party, fnd_user fnduser
1156 WHERE party.party_type = 'PARTY_RELATIONSHIP'
1157 AND party.status ='A'
1158 AND fnduser.customer_id = party.party_id
1159 AND fnduser.user_id = l_fnd_user_id;
1160
1161 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, ' Subject_ID - ' || l_subject_id);
1162
1163 SELECT count(participant.loan_id) INTO l_number_of_loans
1164 FROM lns_participants participant, LNS_LOAN_HEADERS_ALL header
1165 WHERE participant.loan_participant_type in ('PRIMARY_BORROWER','COBORROWER','GUARANTOR')
1166 AND participant.loan_id = header.loan_id
1167 AND header.org_id = l_org_id
1168 AND -- participant.hz_party_id in
1169 participant.loan_id in (SELECT loan_id FROM lns_participants p
1170 where p.hz_party_id
1171 in
1172 (SELECT party_id FROM hz_parties
1173 WHERE party_id in
1174 (SELECT object_id FROM hz_relationships
1175 WHERE subject_id = l_subject_id
1176 AND start_date <= sysdate
1177 AND ((end_date IS null) or (end_date>=sysdate)))
1178 )
1179 )
1180 AND nvl(participant.access_level,decode(participant.loan_participant_type,'PRIMARY_BORROWER',fnd_profile.value('LNS_BORR_ACCESS_LEVEL'),
1181 'COBORROWER',fnd_profile.value('LNS_COBORR_ACCESS_LEVEL'),
1182 'GUARANTOR',fnd_profile.value('LNS_GUAR_ACCESS_LEVEL'))) <> 'NO_ACCESS'
1183 AND header.loan_status in ('INCOMPLETE','ACTIVE', 'APPROVED', 'DEFAULT', 'DELINQUENT', 'IN_FUNDING', 'PAIDOFF', 'PENDING_CANCELLATION')
1184 AND participant.hz_party_id = p_borrower_id;
1185
1186 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME,' Loan Count - ' || l_number_of_loans);
1187 logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' :END');
1188
1189 return l_number_of_loans ;
1190 EXCEPTION
1191 WHEN NO_DATA_FOUND THEN
1192 l_number_of_loans := 0 ;
1193 return l_number_of_loans ;
1194
1195 END CUSTOMER_CONTACT_LOANS_COUNT ;
1196
1197 /*============================================================================
1198 | PUBLIC FUNCTION IS_ENCUM_FIN_ENABLED
1199 |
1200 | DESCRIPTION
1201 | It is a function that returns varchar2 as Y/N. 'Y' if encumbrance is
1202 | enabled, 'N' otherwise
1203 |
1204 | PARAMETERS
1205 |
1206 |
1207 | NOTE
1208 |
1209 | MODIFICATION HISTORY
1210 | Date Author Description of Change
1211 | 13-JUL-2010 MBOLLI Bug#10126147
1212 |
1213 *==========================================================================*/
1214
1215
1216 FUNCTION IS_ENCUM_FIN_ENABLED return VARCHAR2 IS
1217
1218 l_encum_enabled_flag VARCHAR2(1) ;
1219 l_org_id NUMBER ;
1220
1221 BEGIN
1222
1223 l_encum_enabled_flag := 'N' ;
1224 BEGIN
1225 SELECT org_id INTO l_org_id
1226 FROM lns_system_options so ;
1227
1228 l_encum_enabled_flag := IS_ENCUM_FIN_ENABLED(l_org_id) ;
1229
1230 EXCEPTION
1231 WHEN NO_DATA_FOUND THEN
1232 l_encum_enabled_flag := 'N' ;
1233
1234 END ;
1235
1236 return l_encum_enabled_flag;
1237
1238 END IS_ENCUM_FIN_ENABLED ;
1239
1240
1241
1242
1243 /*============================================================================
1244 | PUBLIC FUNCTION IS_ENCUM_FIN_ENABLED
1245 |
1246 | DESCRIPTION
1247 | It is a function that returns varchar2 as Y/N. 'Y' if encumbrance is
1248 | enabled, 'N' otherwise
1249 |
1250 | PARAMETERS
1251 | P_ORG_ID - Organization Id for which to check the encumbrance
1252 | enabled
1253 |
1254 | NOTE
1255 |
1256 | MODIFICATION HISTORY
1257 | Date Author Description of Change
1258 | 13-JUL-2010 MBOLLI Bug#10126147
1259 | 15-May-2012 MBOLLI Bug#14038266 - Remove the SLAM as criteria to check
1260 | whether ledger is encumbrance enabeld or not
1261 |
1262 *==========================================================================*/
1263
1264
1265
1266 FUNCTION IS_ENCUM_FIN_ENABLED (p_org_id IN NUMBER)
1267 RETURN VARCHAR2 IS
1268
1269 l_encum_enabled_flag VARCHAR2(1);
1270
1271
1272 BEGIN
1273
1274
1275 BEGIN
1276
1277 /*
1278 SELECT nvl(purch_encumbrance_flag,'N')
1279 INTO l_encum_enabled_flag
1280 FROM FINANCIALS_SYSTEM_PARAMS_ALL
1281 WHERE org_id = p_org_id; -- Bug 5487757
1282
1283
1284
1285 IF (p_org_id = 1448) THEN
1286 l_encum_enabled_flag := 'Y';
1287 END IF;
1288
1289 */
1290
1291 SELECT enable_budgetary_control_flag INTO l_encum_enabled_flag
1292 FROM gl_ledgers gl, lns_system_options_all so
1293 WHERE so.org_id = p_org_id
1294 AND gl.ledger_id = so.set_of_books_id
1295 AND fnd_profile.value('LNS_ENCUMBRANCE_ENABLE') = 'Y';
1296
1297
1298
1299 EXCEPTION
1300 WHEN NO_DATA_FOUND THEN
1301 l_encum_enabled_flag := 'N';
1302 END;
1303
1304 return l_encum_enabled_flag;
1305
1306 END IS_ENCUM_FIN_ENABLED;
1307
1308
1309 END LNS_UTILITY_PUB;