DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSC_CORE_UTILS_PVT

Source


1 PACKAGE BODY CSC_CORE_UTILS_PVT as
2 /* $Header: cscvcorb.pls 115.18 2002/12/04 19:13:32 jamose ship $ */
3 -- Start of Comments
4 -- Package name     : CSC_CORE_UTILS_PVT
5 -- Purpose          : This package contains all the common procedure, functions and global
6 --                    variables that will be used by the CUSTOMER CARE-MODULE.
7 --
8 -- History
9 -- MM-DD-YYYY    NAME          MODIFICATION
10 -- 10-08-1999    dejoseph      Created.
11 -- 12-08-1999    dejoseph      'Arcs'ed in for first code freeze.
12 -- 12-21-1999    dejoseph      'Arcs'ed in for second code freeze.
13 -- 01-03-2000    dejoseph      'Arcs'ed in for third code freeze. (10-JAN-2000)
14 -- 01-31-2000    dejoseph      'Arcs'ed in for fourth code freeze. (07-FEB-2000)
15 -- 02-04-2000    agaddam       Added a new function get_counter_name to be used in a view.
16 -- 02-13-2000    dejoseph      'Arcs'ed on for fifth code freeze. (21-FEB-2000)
17 -- 02-28-2000    dejoseph      'Arcs'ed on for sixth code freeze. (06-MAR-2000)
18 -- 05-04-2000    dejoseph      Included procedure to gather CBO statistics on a given
19 --                             table.
20 -- 02-22-2001    dejoseph      Added two more plan status functions, MERGE_PLAN and
21 --                             TRANSFER_PLAN for the purpose of Party Merge.
22 -- 12-03-2002    jamose        Added function for Fnd_Api_G_Miss* Changes
23 -- End of Comments
24 --
25 
26 FUNCTION G_CREATE RETURN VARCHAR2 IS
27 BEGIN
28    RETURN L_CREATE;
29 END;
30 
31 FUNCTION G_UPDATE RETURN VARCHAR2 IS
32 BEGIN
33    RETURN L_UPDATE;
34 END;
35 
36 
37 FUNCTION G_MISS_NUM RETURN NUMBER IS
38 BEGIN
39    RETURN FND_API.G_MISS_NUM ;
40 END G_MISS_NUM ;
41 
42 
43 FUNCTION G_MISS_CHAR RETURN VARCHAR2 IS
44 BEGIN
45    RETURN FND_API.G_MISS_CHAR ;
46 END G_MISS_CHAR ;
47 
48 
49 FUNCTION G_MISS_DATE RETURN DATE IS
50 BEGIN
51    RETURN FND_API.G_MISS_DATE ;
52 END G_MISS_DATE ;
53 
54 
55 FUNCTION G_RET_STS_SUCCESS RETURN VARCHAR2 IS
56 BEGIN
57    RETURN FND_API.G_RET_STS_SUCCESS ;
58 END G_RET_STS_SUCCESS ;
59 
60 
61 FUNCTION G_RET_STS_ERROR RETURN VARCHAR2 IS
62 BEGIN
63    RETURN FND_API.G_RET_STS_ERROR ;
64 END G_RET_STS_ERROR ;
65 
66 
67 FUNCTION G_RET_STS_UNEXP_ERROR RETURN VARCHAR2 IS
68 BEGIN
69    RETURN FND_API.G_RET_STS_UNEXP_ERROR ;
70 END G_RET_STS_UNEXP_ERROR ;
71 
72 
73 FUNCTION G_VALID_LEVEL_NONE RETURN NUMBER IS
74 BEGIN
75    RETURN FND_API.G_VALID_LEVEL_NONE ;
76 END;
77 
78 
79 FUNCTION G_VALID_LEVEL_FULL RETURN NUMBER IS
80 BEGIN
81    RETURN FND_API.G_VALID_LEVEL_FULL ;
82 END;
83 
84 
85 FUNCTION G_VALID_LEVEL_INT RETURN NUMBER IS
86 BEGIN
87    RETURN CS_INTERACTION_PVT.G_VALID_LEVEL_INT ;
88 END;
89 
90 
91 FUNCTION G_TRUE RETURN VARCHAR2 IS
92 BEGIN
93    return FND_API.G_TRUE ;
94 END;
95 
96 
97 FUNCTION G_FALSE RETURN VARCHAR2 IS
98 BEGIN
99    return FND_API.G_FALSE ;
100 END;
101 
102 FUNCTION ENABLE_PLAN RETURN VARCHAR2 IS
103 BEGIN
104    return 'APPLIED';
105 END;
106 
107 FUNCTION DISABLE_PLAN RETURN VARCHAR2 IS
108 BEGIN
109    return 'DISABLED';
110 END;
111 
112 FUNCTION APPLY_PLAN RETURN VARCHAR2 IS
113 BEGIN
114    return 'APPLIED';
115 END;
116 
117 FUNCTION REMOVE_PLAN RETURN VARCHAR2 IS
118 BEGIN
119    return 'REMOVED';
120 END;
121 
122 FUNCTION MERGE_PLAN RETURN VARCHAR2 IS
123 BEGIN
124    return 'MERGED';
125 END;
126 
127 FUNCTION TRANSFER_PLAN RETURN VARCHAR2 IS
128 BEGIN
129    return 'TRANSFERED';
130 END;
131 
132 -- Fix for Bug#2443649
133 -- commenting out the procedure as this is not used in any appl.
134 -- parmateres for fnd_stats.gather_tabel_stats have been changed
135 /*
136 PROCEDURE GATHER_TABLE_STATS (
137                 P_OWNNAME            IN VARCHAR2  := CSC_CORE_UTILS_PVT.G_APP_SHORTNAME,
138                 P_TABNAME            IN VARCHAR2,
139                 P_PERCENT            IN NUMBER    := NULL,
140                 P_DEGREE             IN NUMBER    := NULL,
141                 P_PARTNAME           IN VARCHAR2  := NULL,
142                 P_BACKUP_FLAG        IN VARCHAR2  := 'NOBACKUP',
143                 P_CASCADE            IN BOOLEAN   := TRUE,
144                 P_TMODE              IN VARCHAR2  := 'NORMAL' ,
145                 P_GRANULARITY        IN VARCHAR2  := 'DEFAULT')
146 IS
147 BEGIN
148    FND_STATS.GATHER_TABLE_STATS (
149                 OWNNAME            => p_ownname,
150                 TABNAME            => p_tabname,
151                 PERCENT            => p_percent,
152                 DEGREE             => p_degree,
153                 PARTNAME           => p_partname,
154                 BACKUP_FLAG        => p_backup_flag,
155                 CASCADE            => p_cascade,
156                 TMODE              => p_tmode ,
157                 GRANULARITY        => p_granularity );
158 
159 EXCEPTION
160   WHEN OTHERS THEN
161 	NULL;
162 
163 END GATHER_TABLE_STATS;
164 */
165 
166 PROCEDURE Handle_Exceptions(
167 			 P_API_NAME        IN  VARCHAR2,
168 			 P_PKG_NAME        IN  VARCHAR2,
169                 P_EXCEPTION_LEVEL IN  NUMBER   DEFAULT NULL,
170                 P_PACKAGE_TYPE    IN  VARCHAR2,
171                 X_MSG_COUNT       OUT NOCOPY	 NUMBER,
172                 X_MSG_DATA        OUT NOCOPY VARCHAR2,
173                 X_RETURN_STATUS   OUT NOCOPY VARCHAR2)
174 
175 IS
176    l_api_name    VARCHAR2(30);
177 BEGIN
178     l_api_name := UPPER(p_api_name);
179 
180     DBMS_TRANSACTION.ROLLBACK_SAVEPOINT(l_api_name || p_package_type);
181     IF p_exception_level = FND_MSG_PUB.G_MSG_LVL_ERROR
182     THEN
183         x_return_status := FND_API.G_RET_STS_ERROR;
184         FND_MSG_PUB.Count_And_Get(
185             p_encoded =>  FND_API.G_FALSE,
186             p_count   =>  x_msg_count,
187             p_data    =>  x_msg_data);
188     ELSIF p_exception_level = FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
189     THEN
190         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
191         FND_MSG_PUB.Count_And_Get(
192             p_encoded =>  FND_API.G_FALSE,
193             p_count   =>  x_msg_count,
194             p_data    =>  x_msg_data);
195     ELSIF p_exception_level = CSC_CORE_UTILS_PVT.G_MSG_LVL_OTHERS
196     THEN
197 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
198 	  -- Insert the 'sqlerrm' into the message stack.
199 	  FND_MSG_PUB.BUILD_EXC_MSG (
200 		p_pkg_name         => p_pkg_name,
201 		p_procedure_name   => p_api_name );
202 
203         FND_MSG_PUB.Count_And_Get(
204             p_encoded =>  FND_API.G_FALSE,
205             p_count   =>  x_msg_count,
206             p_data    =>  x_msg_data);
207     END IF;
208 END Handle_exceptions;
209 
210 PROCEDURE Validate_Dates (
211              p_init_msg_list   IN  VARCHAR2  := FND_API.G_FALSE,
212              p_validation_mode IN  VARCHAR2,
213              P_START_DATE      IN  DATE,
214              P_END_DATE        IN  DATE,
215              x_return_status   OUT NOCOPY VARCHAR2,
216              x_msg_count       OUT NOCOPY NUMBER,
217              x_msg_data        OUT NOCOPY VARCHAR2)
218 
219 IS
220 BEGIN
221       -- Initialize message list if p_init_msg_list is set to TRUE.
222       IF FND_API.to_Boolean( p_init_msg_list )
223       THEN
224           FND_MSG_PUB.initialize;
225       END IF;
226 
227       -- Initialize API return status to SUCCESS
228       x_return_status := FND_API.G_RET_STS_SUCCESS;
229 
230 
231       IF ( p_start_date > p_end_date ) then
232             fnd_message.set_name (G_APP_SHORTNAME, 'CS_ALL_START_DATE_AFTER_END');
233             --fnd_msg_pub.add;
234            x_return_status := FND_API.G_RET_STS_ERROR;
235            IF (p_end_date = G_MISS_DATE) THEN
236                  x_return_status := FND_API.G_RET_STS_SUCCESS;
237            END IF;
238 
239       END IF;
240 
241 /*
242       if ( P_Validation_Mode = CSC_CORE_UTILS_PVT.G_UPDATE ) then
243          if ( p_start_date < sysdate ) then
244             FND_MESSAGE.SET_NAME (G_APP_SHORTNAME, 'CS_API_ALL_INVALID_ARGUMENT');
245             FND_MESSAGE.SET_TOKEN('API_NAME', 'VALIDATE_DATES');
246             FND_MESSAGE.SET_TOKEN('VALUE', p_start_date); -- parameter here is start_date.
247             FND_MESSAGE.SET_TOKEN('PARAMETER', 'P_START_DATE');
248             --FND_MSG_PUB.Add;
249          end if;
250          if ( p_end_date < sysdate ) then
251             FND_MESSAGE.SET_NAME (G_APP_SHORTNAME, 'CS_API_ALL_INVALID_ARGUMENT');
252             FND_MESSAGE.SET_TOKEN('API_NAME', 'VALIDATE_DATES');
253             FND_MESSAGE.SET_TOKEN('VALUE', p_end_date); -- parameter here is start_date.
254             FND_MESSAGE.SET_TOKEN('PARAMETER', 'P_END_DATE');
255             --FND_MSG_PUB.Add;
256          end if;
257       end if;
258 	 */
259 
260       -- Standard call to get message count and if count is 1, get message info.
261       FND_MSG_PUB.Count_And_Get (
262          p_encoded        =>  FND_API.G_FALSE,
263          p_count          =>   x_msg_count,
264          p_data           =>   x_msg_data);
265 
266 END  Validate_dates;
267 
268 
269 PROCEDURE Validate_Not_Nulls (
270              p_init_msg_list   IN  VARCHAR2  := FND_API.G_FALSE,
271              p_validation_mode IN  VARCHAR2,
272              P_COLUMN_NAME     IN  VARCHAR2,
273              P_COLUMN_VALUE    IN  VARCHAR2,
274              x_return_status   OUT NOCOPY VARCHAR2,
275              x_msg_count       OUT NOCOPY NUMBER,
276              x_msg_data        OUT NOCOPY VARCHAR2)
277 IS
278    l_api_name   varchar2(30)  := 'VALIDATE_NOT_NULLS';
279 BEGIN
280       -- Initialize message list if p_init_msg_list is set to TRUE.
281       IF FND_API.to_Boolean( p_init_msg_list )
282       THEN
283           FND_MSG_PUB.initialize;
284       END IF;
285 
286       -- Initialize API return status to SUCCESS
287       x_return_status := FND_API.G_RET_STS_SUCCESS;
288 
289       if (p_column_value is NULL or p_column_value = FND_API.G_MISS_CHAR ) then
290          fnd_message.set_name (G_APP_SHORTNAME, 'CS_API_ALL_NULL_PARAMETER');
291          fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'||l_api_name);
292          fnd_message.set_token('NULL_PARAM', p_column_name);
293          --fnd_msg_pub.add;
294          x_return_status := FND_API.G_RET_STS_ERROR;
295       end if;
296 
297       -- Standard call to get message count and if count is 1, get message info.
298       FND_MSG_PUB.Count_And_Get (
299          p_encoded =>  FND_API.G_FALSE,
300          p_count          =>   x_msg_count,
301          p_data           =>   x_msg_data);
302 
303 END Validate_Not_Nulls;
304 
305 PROCEDURE Validate_Not_Nulls (
306              p_init_msg_list   IN  VARCHAR2  := FND_API.G_FALSE,
307              p_validation_mode IN  VARCHAR2,
308              P_COLUMN_NAME     IN  VARCHAR2,
309              P_COLUMN_VALUE    IN  NUMBER,
310              x_return_status   OUT NOCOPY VARCHAR2,
311              x_msg_count       OUT NOCOPY NUMBER,
312              x_msg_data        OUT NOCOPY VARCHAR2)
313 IS
314    l_api_name   varchar2(30)  := 'VALIDATE_NOT_NULLS';
315 BEGIN
316       -- Initialize message list if p_init_msg_list is set to TRUE.
317       IF FND_API.to_Boolean( p_init_msg_list )
318       THEN
319           FND_MSG_PUB.initialize;
320       END IF;
321 
322       -- Initialize API return status to SUCCESS
323       x_return_status := FND_API.G_RET_STS_SUCCESS;
324 
325       if (p_column_value is NULL or p_column_value = FND_API.G_MISS_NUM ) then
326          fnd_message.set_name (G_APP_SHORTNAME, 'CS_API_ALL_NULL_PARAMETER');
327          fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'||l_api_name);
328          fnd_message.set_token('NULL_PARAM', p_column_name);
329          --fnd_msg_pub.add;
330          x_return_status := FND_API.G_RET_STS_ERROR;
331       end if;
332 
333       -- Standard call to get message count and if count is 1, get message info.
334       FND_MSG_PUB.Count_And_Get(
335          p_encoded        =>  FND_API.G_FALSE,
336          p_count          =>   x_msg_count,
337          p_data           =>   x_msg_data);
338 
339 END Validate_Not_Nulls;
340 
341 
342 PROCEDURE Validate_Not_Nulls (
343              p_init_msg_list   IN  VARCHAR2  := FND_API.G_FALSE,
344              p_validation_mode IN  VARCHAR2,
345              P_COLUMN_NAME     IN  VARCHAR2,
346              P_COLUMN_VALUE    IN  DATE,
347              x_return_status   OUT NOCOPY VARCHAR2,
348              x_msg_count       OUT NOCOPY NUMBER,
349              x_msg_data        OUT NOCOPY VARCHAR2)
350 IS
351    l_api_name   varchar2(30)  := 'VALIDATE_NOT_NULLS';
352 BEGIN
353       -- Initialize message list if p_init_msg_list is set to TRUE.
354       IF FND_API.to_Boolean( p_init_msg_list )
355       THEN
356           FND_MSG_PUB.initialize;
357       END IF;
358 
359       -- Initialize API return status to SUCCESS
360       x_return_status := FND_API.G_RET_STS_SUCCESS;
361 
362       if (p_column_value is NULL or p_column_value = FND_API.G_MISS_DATE ) then
363          fnd_message.set_name (G_APP_SHORTNAME, 'CS_API_ALL_NULL_PARAMETER');
364          fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'||l_api_name);
365          fnd_message.set_token('NULL_PARAM', p_column_name);
366          --fnd_msg_pub.add;
367          x_return_status := FND_API.G_RET_STS_ERROR;
368       end if;
369 
370       -- Standard call to get message count and if count is 1, get message info.
371       FND_MSG_PUB.Count_And_Get (
372          p_encoded =>  FND_API.G_FALSE,
373          p_count          =>   x_msg_count,
374          p_data           =>   x_msg_data);
375 
376 END Validate_Not_Nulls;
377 
378 PROCEDURE Validate_Seeded_Flag
379 ( p_api_name        IN  VARCHAR2,
380   p_seeded_flag     IN  VARCHAR2,
381   x_return_status   OUT NOCOPY VARCHAR2
382 ) IS
383   --
384  BEGIN
385   --
386   x_return_status := FND_API.G_RET_STS_SUCCESS;
387 
388   -- check if the seeded flag is passed in and is not
389   -- null, if passed in check if the lookup code
390   -- exists in fnd lookups for this date, if not
391   -- its an invalid argument.
392   IF (( p_seeded_flag <> CSC_CORE_UTILS_PVT.G_MISS_CHAR ) AND
393         ( p_seeded_flag IS NOT NULL )) THEN
394     IF CSC_CORE_UTILS_PVT.lookup_code_not_exists(
395         p_effective_date  => trunc(sysdate),
396 
397         p_lookup_type     => 'YES_NO',
398         p_lookup_code     => p_seeded_flag ) <> FND_API.G_RET_STS_SUCCESS
399 
400  THEN
401         x_return_status := FND_API.G_RET_STS_ERROR;
402         CSC_CORE_UTILS_PVT.Add_Invalid_Argument_Msg(p_api_name => p_api_name,
403                                     p_argument_value  => p_seeded_flag,
404                                     p_argument  => 'p_Seeded_flag');
405     END IF;
406   END IF;
407 END Validate_Seeded_Flag;
408 
409 
410 /* Added this Procedure for validation of Application_id for Enhancement 1784578*/
411 
412 PROCEDURE Validate_APPLICATION_ID (
413    P_Init_Msg_List              IN   VARCHAR2     :=CSC_CORE_UTILS_PVT.G_FALSE,
414    P_Application_ID             IN   NUMBER DEFAULT NULL,
415    X_Return_Status              OUT NOCOPY VARCHAR2,
416    X_Msg_Count                  OUT NOCOPY NUMBER,
417    X_Msg_Data                   OUT NOCOPY VARCHAR2,
418    p_effective_date             IN   Date
419    )
420 IS
421    l_temp_id    number:=0;
422 
423 BEGIN
424    -- Initialize message list if p_init_msg_list is set to TRUE.
425    IF FND_API.to_Boolean( p_init_msg_list )
426    THEN
427       FND_MSG_PUB.initialize;
428    END IF;
429 
430  -- Initialize API return status to SUCCESS
431    x_return_status := FND_API.G_RET_STS_SUCCESS;
432 
433 IF (( p_application_id <> CSC_CORE_UTILS_PVT.G_MISS_NUM ) AND
434         ( p_application_id IS NOT NULL )) THEN
435 
436         select 1 into l_temp_id from fnd_application
437 	where application_id=p_application_id;
438 --	and trunc(p_effective_date) between trunc(nvl(start_date_active,p_effective_date))
439 --	and trunc(nvl(end_date_active,p_effective_date));
440 End If;
441 
442 
443 Exception
444 
445    When no_data_found then
446          fnd_message.set_name ('FND', 'CONC-INVALID APPLICATION ID');
447          fnd_message.set_token('ID', p_application_id);
448          x_return_status := FND_API.G_RET_STS_ERROR;
449 
450   When others Then
451          fnd_message.set_name ('FND', 'CONC-INVALID APPLICATION ID');
452          fnd_message.set_token('ID', p_application_id);
453          x_return_status := FND_API.G_RET_STS_ERROR;
454 
455 END Validate_APPLICATION_ID;
456 
457 
458 
459 PROCEDURE COMMIT_ROLLBACK(
460 	    COM_ROLL       IN   VARCHAR2 := 'ROLL')
461 IS
462 BEGIN
463    if ( COM_ROLL = 'COMMIT' ) then
464 	 commit;
465    else
466 	 rollback;
467    end if;
468 END;
469 
470 FUNCTION GET_COUNTER_NAME( p_COUNTER_ID NUMBER )
471 RETURN VARCHAR2
472 IS
473  l_counter_name cs_counters.name%type;
474  Cursor C1 is
475   select name
476   from cs_counters
477   where counter_id = p_counter_id;
478 BEGIN
479  OPEN C1;
480  FETCH C1 into l_counter_name;
481  CLOSE C1;
482  return( l_counter_name );
483 END GET_COUNTER_NAME;
484 
485 
486 
487 -- ----------------------------------------------------------------------------
488 -- |----------------------< currency_code_not_exists >---------------------------
489 -- ----------------------------------------------------------------------------
490 -- Description:
491 --  Function used to validate the currency code
492 --  for the specified period.
493 --
494 --   Returns the status depending on the outcome
495 --   If p_currency_code is valid for the specified
496 --   (p_effective_date) period then returns
497 --   FND_API.G_RET_STS_SUCCESS else G_RET_STS_ERROR.
498 --
499 --  The calling program should write the error message
500 --  depending on the return status from the function
501 --
502 --  For CSC Development.
503 
504 FUNCTION currency_code_not_exists
505   (p_effective_date	in     date,
506    p_currency_code	in     varchar2
507   ) return varchar2 is
508   --
509   -- Declare Local Variables
510   --
511   l_dummy          varchar2(1);
512   l_return_status  varchar2(30);
513   --
514   -- Declare Local cursors
515   --
516   cursor csr_currency_look is
517     select null
518     from fnd_currencies
519     where currency_code = p_currency_code
520     and  trunc(p_effective_date) between trunc(nvl(start_date_active, p_effective_date))
521 	   and trunc(nvl(end_date_active, p_effective_date));
522 BEGIN
523   -- Initialize the return status to success.
524    l_return_status := FND_API.G_RET_STS_SUCCESS;
525    open csr_currency_look;
526    fetch csr_currency_look into l_dummy;
527     if csr_currency_look%notfound then
528      close csr_currency_look;
529    	 l_return_status := FND_API.G_RET_STS_ERROR;
530        --** invalid arg;
531     end if;
532     if csr_currency_look%ISOPEN then
533    	  close csr_currency_look;
534     end if;
535    return (l_return_status);
536 END currency_code_not_exists;
537 
538 
539 -- ----------------------------------------------------------------------------
540 -- |----------------------< lookup_code_not_exists >---------------------------
541 -- ----------------------------------------------------------------------------
542 -- Description:
543 --  Function used to validate the lookup code using
544 --  the fnd_lookups table returns TRUE if the lookup code
545 --  exists else returns FALSE.
546 --
547 --  Uses p_effective_Date to date track the records.
548 --
549 --  The calling program should write the error message
550 --  depending on the return status from the function
551 --
552 --   Returns the status depending on the outcome.
553 --   If p_currency_code is enabled for the specified
554 --   (p_effective_date) period then returns
555 --   FND_API.G_RET_STS_SUCCESS else G_RET_STS_ERROR.
556 --
557 --
558 -- For CSC Development.
559 
560 FUNCTION lookup_code_not_exists
561   (p_effective_date        in     date
562   ,p_lookup_type           in     varchar2
563   ,p_lookup_code           in     varchar2
564   ) return varchar2 is
565   --
566   -- Declare Local Variables
567   --
568   l_dummy          varchar2(1);
569   l_return_status  varchar2(30);
570   --
571   -- Declare Local cursors
572   --
573   cursor csr_lookup_code is
574    select null
575    from fnd_lookups
576    where lookup_code  = p_lookup_code
577    and lookup_type  = p_lookup_type
578    and enabled_flag = 'Y'
579    and trunc(p_effective_date) between
580                trunc(nvl(start_date_active, p_effective_date))
581            and trunc(nvl(end_date_active, p_effective_date));
582 BEGIN
583   -- Initialize the return status to success.
584    l_return_status := FND_API.G_RET_STS_SUCCESS;
585    open csr_lookup_code;
586    fetch csr_lookup_code into l_dummy;
587     if csr_lookup_code%notfound then
588        close csr_lookup_code;
589  	 l_return_status := FND_API.G_RET_STS_ERROR;
590     end if;
591    if csr_lookup_code%ISOPEN then
592      close csr_lookup_code;
593    end if;
594    return ( l_return_status );
595 END lookup_code_not_exists;
596 
597 
598 FUNCTION csc_lookup_code_not_exists
599   (p_effective_date             DATE
600   ,p_lookup_type                VARCHAR2
601   ,p_lookup_code                VARCHAR2
602   ) return varchar2 IS
603 
604   --
605   -- Declare Local Variables
606   --
607   l_dummy          varchar2(1);
608   l_return_status  varchar2(30);
609   --
610   -- Declare Local cursors
611   --
612   cursor csr_lookup_code is
613    select null
614    from CSC_LOOKUPS
615    where lookup_code  = p_lookup_code
616    and lookup_type  = p_lookup_type
617    and enabled_flag = 'Y'
618    and trunc(p_effective_date) between
619                trunc(nvl(start_date_active, p_effective_date))
620            and trunc(nvl(end_date_active, p_effective_date));
621 BEGIN
622 
623   -- Initialize the return status to success.
624    l_return_status := FND_API.G_RET_STS_SUCCESS;
625 
626    open csr_lookup_code;
627    fetch csr_lookup_code into l_dummy;
628     if csr_lookup_code%notfound then
629        close csr_lookup_code;
630  	 l_return_status := FND_API.G_RET_STS_ERROR;
631     end if;
632    if csr_lookup_code%ISOPEN then
633      close csr_lookup_code;
634    end if;
635 
636    return ( l_return_status );
637 
638 END csc_lookup_code_not_exists;
639 
640 -- ---------------------------------------------------------------------------
641 -- -------------------------< Add_Invalid_Argument_Msg>------------------------
642 -- ----------------------------------------------------------------------------
643 -- Description:
644 --  This procedure adds Invalid arguments message to the
645 --  messages que
646 --
647 --
648 --
649 -- For CSC Development.
650 
651 PROCEDURE Add_Invalid_Argument_Msg
652 ( p_api_name		VARCHAR2,
653   p_argument		VARCHAR2,
654   p_argument_value	VARCHAR2
655 )
656 IS
657 BEGIN
658   IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
659     FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_INVALID_ARGUMENT');
660     FND_MESSAGE.Set_Token('API_NAME', p_api_name);
661     FND_MESSAGE.Set_Token('VALUE', p_argument_value);
662     FND_MESSAGE.Set_Token('PARAMETER', p_argument);
663   END IF;
664 END Add_Invalid_Argument_Msg;
665 
666 
667 -- ---------------------------------------------------------------------------
668 -- -------------------------< validate_start_end_dt>---------------------------
669 -- ----------------------------------------------------------------------------
670 -- Description:
671 --  Procedure  used to validate the start and end dates.
672 --  Write a CS_ALL_START_DATE message if the start date
673 --  is less than the sysdate and CS_ALL_END_DATE message
674 --  if end date is less then the start date.
675 --
676 --
677 -- For CSC Development.
678 
679 PROCEDURE Validate_Start_End_Dt
680  ( p_api_name	  IN  VARCHAR2,
681    p_start_date     IN  DATE,
682    p_end_date       IN  DATE DEFAULT NULL,
683    x_return_status  OUT NOCOPY VARCHAR2 )
684 IS
685  --
686  x_msg_count number;
687  x_msg_data varchar2(500);
688 
689  BEGIN
690  --
691  x_return_status := FND_API.G_RET_STS_SUCCESS;
692  --
693 
694 --** need to check out
695 
696 
697     Validate_Dates (
698              p_init_msg_list   =>  FND_API.G_FALSE,
699              p_validation_mode =>  NULL,
700              P_START_DATE      => p_start_date,
701              P_END_DATE        => p_end_date,
702              x_return_status   => x_return_status,
703              x_msg_count       => x_msg_count,
704              x_msg_data        => x_msg_data );
705 
706 /*
707   IF ( p_start_date IS NOT NULL ) THEN
708      IF p_start_date < sysdate THEN
709 	 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
710 	   FND_MESSAGE.Set_Name('CS', 'CS_ALL_START_DATE');
711 	   FND_MESSAGE.Set_Token('START_DATE' ,p_start_date);
712 	   FND_MESSAGE.Set_Token('END_DATE' ,p_end_date);
713 	 END IF;
714          x_return_status := FND_API.G_RET_STS_ERROR;
715 
716      END IF;
717   --
718       IF( p_end_date < p_start_date ) THEN
719   	  IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
720 	   FND_MESSAGE.Set_Name('CS', 'CS_ALL_END_DATE');
721 	   FND_MESSAGE.Set_Token('START_DATE' ,p_start_date);
722 	   FND_MESSAGE.Set_Token('END_DATE' ,p_end_date);
723 	  END IF;
724          x_return_status := FND_API.G_RET_STS_ERROR;
725      END IF;
726   END IF;
727 */
728 END;
729 
730 -- ---------------------------------------------------------------------------
731 -- -------------------------< Record_Is_Locked_Msg>------------------------
732 -- ----------------------------------------------------------------------------
733 
734 -- Description:
735 --  This procedure adds Record Locked message to the
736 --  messages que
737 --
738 --
739 -- For CSC Development.
740 
741 
742 PROCEDURE Record_Is_Locked_Msg
743 ( p_api_name	VARCHAR2
744 )
745 IS
746 BEGIN
747   IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
748     FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_CANT_LOCK_RECORD');
749     FND_MESSAGE.Set_Token('API_NAME', p_api_name);
750   END IF;
751 END Record_IS_Locked_Msg;
752 
753 -- ---------------------------------------------------------------------------
754 -- -------------------------< Cannot_Update_Param_Msg>------------------------
755 -- ----------------------------------------------------------------------------
756 -- Description:
757 -- Adds a cannot update parameter messages.
758 --
759 --
760 --
761 --
762 -- For CSC Development.
763 
764 PROCEDURE Cannot_Update_Param_Msg
765 ( p_api_name	VARCHAR2,
766   p_argument	VARCHAR2,
767   p_argument_value	VARCHAR2
768 )
769 IS
770 BEGIN
771   IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
772 	--** check the message name
773     FND_MESSAGE.Set_Name('CS', 'CS_API_CHG_CANT_UPD_PARAM');
774     FND_MESSAGE.Set_Token('API_NAME', p_api_name);
775     FND_MESSAGE.Set_Token('COLUMN_NAME', p_argument);
776     FND_MESSAGE.Set_Token('VALUE', p_argument_value);
777   END IF;
778 END;
779 
780 -- ---------------------------------------------------------------------------
781 -- -------------------------< Add_Null_Parameter_Msg>--------------------------
782 -- ----------------------------------------------------------------------------
783 
784 -- Description:
785 -- Writes a Null Parameter Message to the message que.
786 --
787 --
788 --
789 -- For CSC Development.
790 
791 PROCEDURE Add_Null_Parameter_Msg
792 ( p_api_name	VARCHAR2,
793   p_argument	VARCHAR2
794 )
795 IS
796 BEGIN
797   IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
798     FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_NULL_PARAMETER');
799     FND_MESSAGE.Set_Token('API_NAME', p_api_name);
800     FND_MESSAGE.Set_Token('NULL_PARAM', p_argument);
801   END IF;
802 END Add_Null_Parameter_Msg;
803 
804 -- ---------------------------------------------------------------------------
805 -- -------------------------< Add_Duplicate_Value_Msg>------------------------
806 -- ----------------------------------------------------------------------------
807 -- Description:
808 --  This procedure adds Invalid arguments message to the
809 --  messages que
810 --
811 --
812 --
813 --
814 -- For CSC Development.
815 
816 PROCEDURE Add_Duplicate_Value_Msg
817 ( p_api_name		VARCHAR2,
818   p_argument		VARCHAR2,
819   p_argument_value	VARCHAR2
820 )
821 IS
822 BEGIN
823   IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
824     FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_DUPLICATE_VALUE');
825     FND_MESSAGE.Set_Token('API_NAME', p_api_name);
826     FND_MESSAGE.Set_Token('DUPLICATE_VAL_PARAM', p_argument_value);
827   END IF;
828 END Add_Duplicate_Value_Msg;
829 
830 -- ---------------------------------------------------------------------------
831 -- -------------------------< Mandatory_arg_Error>--------------------------
832 -- ----------------------------------------------------------------------------
833 -- Description: This procedure is called by business processes which have
834 --              identified a mandatory argument which needs to be NOT null.
835 --              If the argument is null then need to error.
836 --              Varchar2 format.
837 
838 Procedure mandatory_arg_error
839             (p_api_name         in      varchar2,
840              p_argument         in      varchar2,
841              p_argument_value   in      varchar2) is
842 --
843 Begin
844 
845  --
846   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
847     FND_MESSAGE.Set_Name('CS', 'CS_API_ALL_MISSING_PARAM');
848     FND_MESSAGE.Set_Token('API_NAME', p_api_name);
849     FND_MESSAGE.Set_Token('MISSING_PARAM', p_argument);
850   End If;
851   --
852 
853 End mandatory_arg_error;
854 
855 -- ---------------------------------------------------------------------------
856 -- -------------------------< Mandatory_arg_Error>--------------------------
857 -- ----------------------------------------------------------------------------
858 -- Description: Overloaded procedure which converts argument into a varchar2.
859 --
860 Procedure mandatory_arg_error
861             (p_api_name         in      varchar2,
862              p_argument         in      varchar2,
863              p_argument_value   in      date) is
864 --
865 Begin
866  --
867 
868   mandatory_arg_error(
869  	  p_api_name => p_api_name,
870         p_argument => p_argument,
871         p_argument_value => to_char(p_argument_value,'DD-MON-YYYY'));
872 
873  --
874 End mandatory_arg_error;
875 
876 -- ---------------------------------------------------------------------------
877 -- -------------------------< Mandatory_arg_Error>--------------------------
878 -- ----------------------------------------------------------------------------
879 -- Description: Overloaded procedure which converts argument into a varchar2.
880 
881 --
882 Procedure mandatory_arg_error
883             (p_api_name         in      varchar2,
884              p_argument         in      varchar2,
885              p_argument_value   in      number) is
886 --
887 Begin
888  --
889   mandatory_arg_error(
890 	  p_api_name => p_api_name,
891         p_argument => p_argument,
892         p_argument_value => to_char(p_argument_value));
893  --
894 End mandatory_arg_error;
895 
896 -- ---------------------------------------------------------------------------
897 -- -------------------------< Validate_Sql_Stmnt>--------------------------
898 -- ----------------------------------------------------------------------------
899 -- Description:
900 
901 PROCEDURE Validate_Sql_Stmnt
902 ( p_sql_stmnt	IN	VARCHAR2,
903   x_return_status	OUT	NOCOPY VARCHAR2 )
904 IS
905 l_sql_cur_hdl  INT;
906 BEGIN
907 
908   -- initialize the return status to SUCCESS
909   x_return_status := FND_API.G_RET_STS_SUCCESS;
910 
911   -- if the sql_statement is passed in and if its NOT NULL then
912   -- validate the sql_statement by parsing it using the dbms_sql
913   -- package.
914   IF (( p_sql_stmnt IS NOT NULL ) and
915       ( p_sql_stmnt <> FND_API.G_MISS_CHAR )) THEN
916     l_sql_cur_hdl := DBMS_SQL.OPEN_CURSOR;
917     DBMS_SQL.PARSE( l_sql_cur_hdl, p_sql_stmnt, DBMS_SQL.NATIVE );
918     DBMS_SQL.CLOSE_CURSOR( l_sql_cur_hdl );
919   END IF;
920 EXCEPTION
921   WHEN OTHERS THEN
922      IF DBMS_SQL.IS_OPEN( l_Sql_cur_hdl ) THEN
923 	 DBMS_SQL.CLOSE_CURSOR(l_Sql_cur_hdl );
924      END IF;
925      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
926 END Validate_Sql_Stmnt;
927 
928 -- ---------------------------------------------------------------------------
929 -- -------------------------< Build_Sql_Stmnt>--------------------------
930 -- ----------------------------------------------------------------------------
931 -- Description:
932 
933 PROCEDURE Build_Sql_Stmnt
934 ( p_select_clause IN	VARCHAR2,
935   p_from_clause	IN	VARCHAR2,
936   p_where_clause	IN	VARCHAR2,
937   p_other_clause 	IN	VARCHAR2,
938   x_sql_Stmnt	OUT	NOCOPY VARCHAR2,
939   x_return_status	OUT NOCOPY	VARCHAR2 )
940 IS
941  l_sql_stmnt VARCHAR2(2000);
942 BEGIN
943 
944    -- initialize the return status
945    x_return_status := FND_API.G_RET_STS_SUCCESS;
946 
947    -- check if the select_clause and the from_Clause
948    -- is NULL or missing, if so we cannot form an
949    -- sql_statement.
950 
951    IF ((( p_Select_Clause IS NULL ) and
952        ( p_Select_Clause = FND_API.G_MISS_CHAR ))
953       and (( p_from_Clause IS NULL ) and
954 	 ( p_from_Clause = FND_API.G_MISS_CHAR )))
955    THEN
956       -- invalid arguments exception
957       x_return_status := FND_API.G_RET_STS_ERROR;
958    ELSE
959      -- if present concatenate both the clauses.
960      l_sql_stmnt := 'SELECT '||p_select_clause||' FROM '||p_from_clause;
961    END IF;
962 
963    -- if where_clause is passsed in contenate to the select and from clauses
964    IF (( p_where_clause IS NOT NULL )
965 	and ( p_where_clause <> FND_API.G_MISS_CHAR )) THEN
966      l_sql_stmnt := l_sql_stmnt||' WHERE '||p_where_clause;
967    END IF;
968 
969    -- if other_clause is not null then concatenate
970    IF (( p_other_clause IS NOT NULL )
971 	and ( p_other_clause <> FND_API.G_MISS_CHAR )) THEN
972      l_sql_stmnt := l_sql_stmnt||' '||p_other_clause;
973    END IF;
974    x_sql_stmnt := l_sql_stmnt;
975 EXCEPTION
976  WHEN OTHERS THEN
977      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
978 END Build_Sql_Stmnt;
979 
980 
981 FUNCTION Get_G_Miss_Char(p_value IN Varchar2, p_old_value IN Varchar2)
982 RETURN VARCHAR2 IS
983 BEGIN
984    IF p_value = G_MISS_CHAR THEN
985       RETURN NULL;
986    ELSIF p_value IS NULL THEN
987       RETURN p_old_value;
988    ELSE RETURN p_value;
989    END IF;
990 END;
991 
992 FUNCTION Get_G_Miss_Num(p_value IN NUMBER, p_old_value IN NUMBER)
993 RETURN NUMBER IS
994 BEGIN
995    IF p_value = G_MISS_NUM THEN
996       RETURN NULL;
997    ELSIF p_value IS NULL THEN
998       RETURN p_old_value;
999    ELSE
1000       RETURN p_value;
1001    END IF;
1002 END;
1003 
1004 FUNCTION Get_G_Miss_Date(p_value IN DATE, p_old_value IN DATE)
1005 RETURN DATE IS
1006 BEGIN
1007    IF p_value = G_MISS_DATE THEN
1008       RETURN NULL;
1009    ELSIF p_value IS NULL THEN
1010       RETURN p_old_value;
1011    ELSE
1012       RETURN p_value;
1013    END IF;
1014 END;
1015 
1016 
1017 END CSC_CORE_UTILS_PVT;