DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_SSL_BUS

Source


1 Package Body per_ssl_bus as
2 /* $Header: pesslrhi.pkb 120.0.12010000.2 2008/09/09 11:18:51 pchowdav ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33)	:= '  per_ssl_bus.';  -- Global package name
9 
10 --
11 -- ----------------------------------------------------------------------------
12 -- |--------------------< chk_salary_survey_line_id >------------------------|
13 -- ----------------------------------------------------------------------------
14 --
15 -- Description
16 --   This Procedure is used to check that the primary key for the table:
17 --     a) is null on insert
18 --     b) has not been updated.
19 --
20 -- Pre Conditions
21 --   None.
22 --
23 -- In Parameters
24 --   salary_survey_line_id PK of record being inserted or updated.
25 --   object_version_number Object version number of record being
26 --                         inserted or updated.
27 --
28 -- Post Success
29 --   Processing continues If:
30 --     The primary key is null on insert.
31 --     The primary key has not been updated.
32 --
33 -- Post Failure
34 --   Errors handled by the Procedure
35 --
36 -- Access Status
37 --   Internal row handler use only.
38 --
39 Procedure chk_salary_survey_line_id
40 (p_salary_survey_line_id in number,
41  p_object_version_number in number) is
42   --
43   l_proc         varchar2(72) := g_package||'chk_salary_survey_line_id';
44   --
45   l_api_updating boolean;
46   --
47 Begin
48   --
49   hr_utility.set_location('Entering:'||l_proc, 5);
50   --
51   l_api_updating := per_ssl_shd.api_updating
52     (p_salary_survey_line_id => p_salary_survey_line_id,
53      p_object_version_number  => p_object_version_number);
54   --
55   -- Check that the primary key has not changed.
56   --
57   If (l_api_updating
58      and nvl(p_salary_survey_line_id,hr_api.g_number)
59      <>  per_ssl_shd.g_old_rec.salary_survey_line_id) Then
60     --
61     -- raise error as Primary Key has changed
62     --
63     per_ssl_shd.constraint_error('PER_SALARY_SURVEY_LINES_PK');
64     --
65   elsIf not l_api_updating Then
66     --
67     -- This is an insert so check that the primary key is null.
68     --
69     If p_salary_survey_line_id is not null Then
70       --
71       -- raise error as Primary Key is not null
72       --
73       per_ssl_shd.constraint_error('PER_SALARY_SURVEY_LINES_PK');
74       --
75     End If;
76     --
77   End If;
78   --
79   hr_utility.set_location('Leaving:'||l_proc, 10);
80   --
81 End chk_salary_survey_line_id;
82 --
83 -- ----------------------------------------------------------------------------
84 -- |----------------------< chk_salary_survey_id >-------------------------|
85 -- ----------------------------------------------------------------------------
86 --
87 -- Description
88 --   This Procedure checks that a referenced foreign key actually exists
89 --   in the referenced table.
90 --
91 -- Pre-Conditions
92 --   None.
93 --
94 -- In Parameters
95 --   p_salary_survey_line_id PK
96 --   p_salary_survey_id ID of FK column
97 --   p_object_version_number object version number
98 --
99 -- Post Success
100 --   Processing continues If the foreign key exists in the referenced table.
101 --
102 -- Post Failure
103 --   Processing stops and an error is raised If the foreign key does not
104 --   exist in the referenced table.
105 --
106 -- Access Status
107 --   Internal row handler use only.
108 --
109 Procedure chk_salary_survey_id
110 (p_salary_survey_line_id in number,
111  p_salary_survey_id       in number,
112  p_object_version_number  in number) is
113   --
114   l_proc         varchar2(72) := g_package||'chk_salary_survey_id';
115   l_api_updating boolean;
116   l_exists       varchar2(1);
117   --
118   cursor csr_chk_survey_exists is
119     select null
120     from   per_salary_surveys pss
121     where  pss.salary_survey_id = p_salary_survey_id;
122   --
123 Begin
124   --
125   hr_utility.set_location('Entering:'||l_proc,5);
126   --
127   -- 	Check mandatory parameters have been set
128   --
129   hr_api.mandatory_arg_error
130     (p_api_name		=> l_proc
131     ,p_argument		=> 'salary_survey_id'
132     ,p_argument_value	=> p_salary_survey_id
133     );
134   --
135   hr_utility.set_location(l_proc,6);
136   --
137   --
138   -- check If salary_survey_id value exists in per_salary_surveys table
139   --
140   open csr_chk_survey_exists;
141   --
142   fetch csr_chk_survey_exists into l_exists;
143   --
144   If csr_chk_survey_exists%notfound Then
145     --
146     close csr_chk_survey_exists;
147     hr_utility.set_location('SS id '||to_char(p_salary_survey_id),7);
148     --
149     -- raise error as FK does not relate to PK in per_salary_surveys
150     -- table.
151     --
152     per_ssl_shd.constraint_error('PER_SALARY_SURVEY_LINES_FK1');
153     --
154   End If;
155   --
156   close csr_chk_survey_exists;
157   --
158   hr_utility.set_location('Leaving:'||l_proc,10);
159   --
160 End chk_salary_survey_id;
161 --
162 --
163 -- ----------------------------------------------------------------------------
164 -- |---------------------------< chk_unique_key >-----------------------------|
165 -- ----------------------------------------------------------------------------
166 --
167 -- Description
168 --   This Procedure is used to check that survey_job_name_code,
169 --   survey_region_code, survey_seniority_code, company_size_code,
170 --   industry_code, survey_age_code form a unique combination with
171 --   the start_date for this row, between the start_date and
172 --   end_date of any other row.
173 --
174 -- Pre Requisites
175 --   None.
176 --
177 -- In Parameters
178 --   salary_survey_line_id
179 --   object_version_number
180 --   survey_job_name_code
181 --   survey_region_code
182 --   survey_seniority_code
183 --   company_size_code
184 --   industry_code
185 --   survey_age_code
186 --   start_date.
187 --
188 -- Post Success
189 --   Processing continues If the survey_job_name_code, survey_region_code,
190 --   survey_seniority_code, company_size_code, industry_code survey_age_code
191 --   form a unique combination with start_date for this row between the
192 --   start_date and end_date of any other row.
193 --
194 -- Post Failure
195 --   An application error is raised If the survey_job_name_code,
196 --   survey_region_code, survey_seniority, company_size, industry_code
197 --   survey_age_code combined with start_date for this row are not unique
198 --   between start_date and end_date of any other row..
199 --
200 -- Developer/Implementation Notes
201 --   None.
202 --
203 -- Access Status
204 --   Internal row handler use only.
205 --
206 Procedure chk_unique_key
207 (p_salary_survey_line_id  in number,
208  p_object_version_number  in number,
209  p_salary_survey_id       in number,
210  p_survey_job_name_code   in per_salary_survey_lines.survey_job_name_code%TYPE,
211  p_survey_region_code     in per_salary_survey_lines.survey_region_code%TYPE,
212  p_survey_seniority_code  in per_salary_survey_lines.survey_seniority_code%TYPE,
213  p_company_size_code      in per_salary_survey_lines.company_size_code%TYPE,
214  p_industry_code          in per_salary_survey_lines.industry_code%TYPE,
215  p_survey_age_code        in per_salary_survey_lines.survey_age_code%TYPE,
216  p_start_date             in per_salary_survey_lines.start_date%TYPE,
217  p_end_date               in per_salary_survey_lines.end_date%TYPE)is
218   --
219   l_proc         varchar2(72) := g_package||'chk_unique_key';
220   l_api_updating boolean;
221   l_exists       varchar2(1);
222   l_eot          date         := hr_general.End_of_time;
223   --
224   cursor csr_duplicate_key is
225     select null
226     from   per_salary_survey_lines
227     where  p_start_date              = start_date
228     and    survey_job_name_code      = p_survey_job_name_code
229     and    nvl(survey_region_code,hr_api.g_varchar2)
230                                      = nvl(p_survey_region_code,hr_api.g_varchar2)
231     and    nvl(survey_seniority_code,hr_api.g_varchar2)
232                                      = nvl(p_survey_seniority_code,hr_api.g_varchar2)
233     and    nvl(company_size_code,hr_api.g_varchar2)
234                                      = nvl(p_company_size_code,hr_api.g_varchar2)
235     and    nvl(industry_code,hr_api.g_varchar2)
236                                      = nvl(p_industry_code,hr_api.g_varchar2)
237     and    nvl(survey_age_code,hr_api.g_varchar2)
238                                      = nvl(p_survey_age_code,hr_api.g_varchar2)    and    salary_survey_line_id <> nvl(p_salary_survey_line_id,hr_api.g_number)
239     and    salary_survey_id = nvl(p_salary_survey_id,hr_api.g_number);
240   --
241   cursor csr_overlap_date is
242     select null
243     from   per_salary_survey_lines
244     where  p_start_date          <= nvl(end_date,l_eot)
245     and    nvl(p_end_date,l_eot) >= start_date
246     and    survey_job_name_code  = p_survey_job_name_code
247     and    nvl(survey_region_code,hr_api.g_varchar2)
248                                  = nvl(p_survey_region_code,hr_api.g_varchar2)
249     and    nvl(survey_seniority_code,hr_api.g_varchar2)
250                                  = nvl(p_survey_seniority_code,hr_api.g_varchar2)
251     and    nvl(company_size_code,hr_api.g_varchar2)
252                                  = nvl(p_company_size_code,hr_api.g_varchar2)
253     and    nvl(industry_code,hr_api.g_varchar2)
254                                  = nvl(p_industry_code,hr_api.g_varchar2)
255     and    nvl(survey_age_code,hr_api.g_varchar2)
256                                  = nvl(p_survey_age_code,hr_api.g_varchar2)
257     and    end_date is not null
258     and    salary_survey_line_id <> nvl(p_salary_survey_line_id,hr_api.g_number)
259     and    salary_survey_id = nvl(p_salary_survey_id,hr_api.g_number);
260   --
261   cursor csr_invalid_end_date is
262     select null
263     from   per_salary_survey_lines
264     where  p_start_date < start_date
265     and    (nvl(p_end_date,l_eot) >= start_date and
266             nvl(p_end_date,l_eot) <= nvl(end_date,l_eot)
267            )
268     and    survey_job_name_code  = p_survey_job_name_code
269     and    nvl(survey_region_code,hr_api.g_varchar2)
270                                  = nvl(p_survey_region_code,hr_api.g_varchar2)
271     and    nvl(survey_seniority_code,hr_api.g_varchar2)
272                                  = nvl(p_survey_seniority_code,hr_api.g_varchar2)
273     and    nvl(company_size_code,hr_api.g_varchar2)
274                                  = nvl(p_company_size_code,hr_api.g_varchar2)
275     and    nvl(industry_code,hr_api.g_varchar2)
276                                  = nvl(p_industry_code,hr_api.g_varchar2)
277     and    nvl(survey_age_code,hr_api.g_varchar2)
278                                  = nvl(p_survey_age_code,hr_api.g_varchar2)
279     and    salary_survey_line_id <> nvl(p_salary_survey_line_id,hr_api.g_number)
280     and    salary_survey_id = nvl(p_salary_survey_id,hr_api.g_number);
281   --
282 Begin
283   --
284   hr_utility.set_location('Entering:'||l_proc, 5);
285   --
286   -- Check that start_date is not null.  Error If it is.
287   --
288   If p_start_date is null Then
289     fnd_message.set_name('PER','PER_50341_SSL_MAND_START_DATE');
290     fnd_message.raise_error;
291   End If;
292   --
293   hr_utility.set_location(l_proc, 10);
294   --
295   --  Only proceed with validation If:
296   --   The current g_old_rec is current and
297   --   Any of the values have changed or
298   --   A record is being inserted
299   --
300   l_api_updating := per_ssl_shd.api_updating
301     (p_salary_survey_line_id => p_salary_survey_line_id
302     ,p_object_version_number  => p_object_version_number
303     );
304   --
305   hr_utility.set_location(l_proc, 15);
306   --
307   If (l_api_updating
308         and nvl(per_ssl_shd.g_old_rec.survey_job_name_code,hr_api.g_varchar2)
309         <>  nvl(p_survey_job_name_code,hr_api.g_varchar2))
310      or
311       (l_api_updating and
312            nvl(per_ssl_shd.g_old_rec.survey_region_code,hr_api.g_varchar2)
313         <> nvl(p_survey_region_code,hr_api.g_varchar2))
314      or
315       (l_api_updating and
316            nvl(per_ssl_shd.g_old_rec.survey_seniority_code,hr_api.g_varchar2)
317         <> nvl(p_survey_seniority_code,hr_api.g_varchar2))
318      or
319       (l_api_updating and
320            nvl(per_ssl_shd.g_old_rec.company_size_code,hr_api.g_varchar2)
321         <> nvl(p_company_size_code,hr_api.g_varchar2))
322      or
323       (l_api_updating and
324            nvl(per_ssl_shd.g_old_rec.industry_code,hr_api.g_varchar2)
325         <> nvl(p_industry_code,hr_api.g_varchar2))
326      or
327       (l_api_updating and
328            nvl(per_ssl_shd.g_old_rec.survey_age_code,hr_api.g_varchar2)
329         <> nvl(p_survey_age_code,hr_api.g_varchar2))
330 
331      or
332       (l_api_updating and
333            per_ssl_shd.g_old_rec.start_date <> p_start_date)
334      or
335       (l_api_updating and
336            nvl(per_ssl_shd.g_old_rec.end_date,l_eot)
337         <> nvl(p_end_date,l_eot)
338      or
339        (NOT l_api_updating))
340   Then
341     --
342     hr_utility.set_location(l_proc, 17);
343     --
344     -- Check If this key already exists on this start date.
345     -- Error If it does.
346     --
347     open csr_duplicate_key;
348     --
349     fetch csr_duplicate_key into l_exists;
350     --
351     If csr_duplicate_key%found Then
352       --
353       close csr_duplicate_key;
354       --
355       per_ssl_shd.constraint_error(p_constraint_name =>
356                                    'PER_SALARY_SURVEY_LINES_UK1');
357       --
358     End If;
359     --
360     close csr_duplicate_key;
361     --
362     --   Check that their is no overlap in the dates
363     --   with this key. Error If their is.
364     --
365     hr_utility.set_location(l_proc, 20);
366     --
367     open csr_overlap_date;
368     --
369     fetch csr_overlap_date into l_exists;
370     --
371     If csr_overlap_date%found Then
372       --
373       close csr_overlap_date;
374       --
375       fnd_message.set_name('PER','PER_50342_SSL_INV_COMB2');
376       --
377       fnd_message.raise_error;
378       --
379     End If;
380     --
381     close csr_overlap_date;
382     --
383     hr_utility.set_location(l_proc, 25);
384     --
385     --
386     --  Check that the end_date does not fall within the start_date and end_date
387     --  of another survey_line when its accompanying keys match the keys of that
388     --  other survey_line.
389     --
390     open csr_invalid_end_date;
391     --
392     fetch csr_invalid_end_date into l_exists;
393     --
394     If csr_invalid_end_date%found Then
395       --
396       close csr_invalid_end_date;
397       --
398       fnd_message.set_name('PER','PER_50379_SSL_INV_END_DATE');
399       --
400       fnd_message.raise_error;
401       --
402     End If;
403     --
404     close csr_invalid_end_date;
405     --
406   End If;
407   --
411 --
408   hr_utility.set_location('Leaving:'||l_proc, 40);
409   --
410 End chk_unique_key;
412 --
413 -- -------------------------------------------------------------------------------
414 -- |-----------------< chk_survey_job_name_code >--------------------------------|
415 -- -------------------------------------------------------------------------------
416 --
417 -- Description
418 --   This Procedure is used to check that survey_job_name_code:
419 --     a) Is not null.
420 --     b) Exists in hr_standard_lookups for lookup_type 'SURVEY_JOB_NAME'.
421 --     c) Contains PER_SALARY_SURVEYS.IDENTIFIER as its first two
422 --        letters.
423 --
424 --
425 -- Pre Requisites
426 --   None.
427 --
428 -- In Parameters
429 --   salary_survey_line_id
430 --   object_version_number
431 --   survey_job_name_code
432 --   p_effective_date (used as parameter for function
433 --                     not_exists_in_hrstanlookups)
434 --
435 -- Post Success
436 --   Processing continues If the survey_job_name_code
437 --    is not null
438 --    exists in hr_standard_lookups and
439 --    PSS.IDENTIFIER makes up its first two letters.
440 --
441 -- Post Failure
442 --  An application error is raised and processing is terminated
443 --    If survey_job_name_code is null
444 --    If the survey_job_name_code does not exist in hr_standard_lookups.
445 --    or PSS.IDENTIFIER does not make up the first two letters of
446 --       survey_job_name_code.
447 --
448 -- Developer/Implementation Notes
449 --   None.
450 --
451 -- Access Status
452 --   Internal row handler use only.
453 --
454 Procedure chk_survey_job_name_code
455 (p_salary_survey_line_id
456            in number
457 ,p_object_version_number
458            in number
459 ,p_salary_survey_id
460            in number
461 ,p_survey_job_name_code
462            in per_salary_survey_lines.survey_job_name_code%TYPE
463 ,p_effective_date
464            in date) is
465 --
466   l_proc           varchar2(72) := g_package||'chk_survey_job_name_code';
467   --
468   l_api_updating   boolean;
469   --
470   l_exists         Varchar2(1);
471   --
472   cursor csr_has_identifier is
473     select null
474     from   per_salary_surveys
475     where  salary_survey_id = p_salary_survey_id
476     and    identifier = SUBSTR(p_survey_job_name_code,0,2);
477   --
478 Begin
479   --
480   hr_utility.set_location('Entering:'|| l_proc, 10);
481   --
482   -- Check mandatory parameters have been set
483   --
484   hr_api.mandatory_arg_error
485     (p_api_name       => l_proc
486     ,p_argument       => 'effective date'
487     ,p_argument_value => p_effective_date
488     );
489   --
490   -- Check that survey_job_name_code is not null.  Error If it is.
491   --
492   If p_survey_job_name_code is null Then
493     fnd_message.set_name('PER','PER_50343_SSL_MAND_JOB_NAME');
494     fnd_message.raise_error;
495   End If;
496   --
497   hr_utility.set_location(l_proc, 13);
498   --
499   -- Only proceed with validation If:
500   -- a) During update, the value has actually changed to
501   --    another not null value.
502   -- b) This is an insert.
503   --
504   --
505   l_api_updating := per_ssl_shd.api_updating
506     (p_salary_survey_line_id => p_salary_survey_line_id
507     ,p_object_version_number  => p_object_version_number
508     );
509   --
510   If (( l_api_updating and
511        (per_ssl_shd.g_old_rec.survey_job_name_code <>
512         p_survey_job_name_code))
513     or
514       (p_salary_survey_line_id is null)) Then
515     --
516     hr_utility.set_location(l_proc, 20);
517     --
518     --  Check If the survey_job_name_code value exists
519     --  in hr_standard_lookups where the lookup_type is 'SURVEY_JOB_NAME'
520     --
521     If hr_api.not_exists_in_hr_lookups --fix for bug 7240498
522          (p_effective_date        => p_effective_date
523          ,p_lookup_type           => 'SURVEY_JOB_NAME'
524          ,p_lookup_code           => p_survey_job_name_code
525          ) Then
526       --  Error: Invalid Survey Job Name
527       fnd_message.set_name('PER', 'PER_50344_SSL_INV_JOB_NAME_LKP');
528       --
529       fnd_message.raise_error;
530       --
531     End If;
532     --
533     hr_utility.set_location(l_proc, 30);
534     --
535     -- Open the cursor to see If the job_name_code has the identifier
536     -- as the first two characters.
537     --
538     open csr_has_identifier;
539       --
540       fetch csr_has_identifier into l_exists;
541       --
542       If csr_has_identifier%notfound Then
543         --
544         close csr_has_identifier;
545         --
546         -- The job_name_code does not have the Survey IdentIfier
547         -- as the first two characters so raise an error.
548         --
549         fnd_message.set_name('PER', 'PER_50345_SSL_INV_JOB_NAME_ID');
550         --
551         fnd_message.raise_error;
552         --
553       End If;
554       --
555       close csr_has_identifier;
556       --
557       hr_utility.set_location(l_proc, 35);
558       --
559   End If;
560   --
564 --
561   hr_utility.set_location(' Leaving:'|| l_proc, 40);
562   --
563 End chk_survey_job_name_code;
565 --
566 -- ---------------------------------------------------------------
567 -- |-----------------< chk_survey_region_code >-----------------|
568 -- ---------------------------------------------------------------
569 --
570 -- Description
571 --   This Procedure is used to check that survey_region_code:
572 --     a) Exists in hr_standard_lookups for lookup_type 'SURVEY_REGION'.
573 --     b) Contains PER_SALARY_SURVEYS.IDENTIFIER as its first two
574 --        letters
575 --
576 -- Pre Requisites
577 --   None.
578 --
579 -- In Parameters
580 --   salary_survey_line_id
581 --   object_version_number
582 --   survey_region_code.
583 --   p_effective_date (used as parameter for function
584 --                     not_exists_in_hrstanlookups)
585 --
586 -- Post Success
587 --   Processing continues If the survey_region_code
588 --    exists in hr_standard_lookups and
589 --    SSM.IDENTIFIER makes up its first two letters.
590 --
591 -- Post Failure
592 --  An application error is raised and processing is terminated
593 --    If the survey_region_code does not exist in hr_standard_lookups.
594 --    or PSS.IDENTIFIER does not make up the first two letters of
595 --       survey_region_code.
596 --
597 -- Developer/Implementation Notes
598 --   None.
599 --
600 -- Access Status
601 --   Internal row handler use only.
602 --
603 Procedure chk_survey_region_code
604 (p_salary_survey_line_id
605            in number
606 ,p_object_version_number
607            in number
608 ,p_salary_survey_id
609            in number
610 ,p_survey_region_code
611            in per_salary_survey_lines.survey_region_code%TYPE
612 ,p_effective_date
613            in date) is
614 --
615   l_proc           varchar2(72) := g_package||'chk_survey_region_code';
616    --
617   l_api_updating   boolean;
618   --
619   l_exists         Varchar2(1);
620   --
621   cursor csr_has_identifier is
622     select null
623     from   per_salary_surveys
624     where  salary_survey_id = p_salary_survey_id
625     and    identifier = SUBSTR(p_survey_region_code,0,2);
626   --
627 --
628 Begin
629   hr_utility.set_location('Entering:'|| l_proc, 10);
630   --
631   -- Check mandatory parameters have been set
632   --
633   hr_api.mandatory_arg_error
634     (p_api_name       => l_proc
635     ,p_argument       => 'effective date'
636     ,p_argument_value => p_effective_date
637     );
638   --
639   hr_utility.set_location(l_proc, 13);
640   --
641   -- Only proceed with validation If:
642   -- a) During update, the value has actually changed to
643   --    another not null value.
644   -- b) This is an insert.
645   --
646   --
647   l_api_updating := per_ssl_shd.api_updating
648     (p_salary_survey_line_id => p_salary_survey_line_id
649     ,p_object_version_number  => p_object_version_number
650     );
651   --
652   If p_survey_region_code is not null Then
653     --
654     If ( ( l_api_updating and
655            (nvl(per_ssl_shd.g_old_rec.survey_region_code,hr_api.g_varchar2)
656             <> nvl(p_survey_region_code,hr_api.g_varchar2)))
657             or
658             (p_salary_survey_line_id is null) ) Then
659       --
660       hr_utility.set_location(l_proc, 20);
661       --
662       --  Check If the survey_region_code value exists
663       --  in hr_standard_lookups where the lookup_type is 'SURVEY_REGION'
664       --
665       If hr_api.not_exists_in_hrstanlookups
666            (p_effective_date        => p_effective_date
667            ,p_lookup_type           => 'SURVEY_REGION'
668            ,p_lookup_code           => p_survey_region_code
669            ) Then
670         --  Error: Invalid Survey Region
671         fnd_message.set_name('PER', 'PER_50346_SSL_INV_REGION_LKP');
672         --
673         fnd_message.raise_error;
674         --
675       End If;
676       --
677     End If;
678     --
679     hr_utility.set_location(l_proc, 30);
680     --
681     -- Open the cursor to see If the survey_region_code has the
682     -- identifier as the first two characters.
683     --
684     open csr_has_identifier;
685       --
686       fetch csr_has_identifier into l_exists;
687       --
688       If csr_has_identifier%notfound Then
689         --
690         close csr_has_identifier;
691         --
692         -- The survey_region_code does not have the Survey IdentIfier
693         -- as the first two characters so raise an error.
694         --
695         fnd_message.set_name('PER', 'PER_50347_SSL_INV_REGION_ID');
696         --
697         fnd_message.raise_error;
698         --
699       End If;
700       --
701       close csr_has_identifier;
702       --
703       hr_utility.set_location(l_proc, 35);
704       --
705   End If;
706   --
707   hr_utility.set_location(' Leaving:'|| l_proc, 40);
708   --
709 End chk_survey_region_code;
710 --
711 --
712 -- ---------------------------------------------------------------
713 -- |--------------------< chk_seniority_code >-------------------|
717 --   This Procedure is used to check that survey_seniority_code:
714 -- ---------------------------------------------------------------
715 --
716 -- Description
718 --     a) Exists in hr_standard_lookups for lookup_type 'SURVEY_SENIORITY'.
719 --     b) Contains PER_SALARY_SURVEYS.IDENTIFIER as its first two
720 --        letters
721 --
722 -- Pre Requisites
723 --   None.
724 --
725 -- In Parameters
726 --   salary_survey_line_id
727 --   object_version_number
728 --   survey_seniority_code.
729 --   p_effective_date (used as parameter for function
730 --                     not_exists_in_hrstanlookups)
731 --
732 -- Post Success
733 --   Processing continues If the survey_seniority_code
734 --     exists in hr_standard_lookups and
735 --     PSS.IDENTIFIER makes up its first two letters.
736 --
737 -- Post Failure
738 --  An application error is raised and processing is terminated
739 --    If the survey_seniority_code does not exist in hr_standard_lookups.
740 --    or PSS.IDENTIFIER does not make up the first two letters of
741 --       survey_seniority_code.
742 --
743 -- Developer/Implementation Notes
744 --   None.
745 --
746 -- Access Status
747 --   Internal row handler use only.
748 --
749 Procedure chk_survey_seniority_code
750 (p_salary_survey_line_id
751            in number
752 ,p_object_version_number
753            in number
754 ,p_salary_survey_id
755            in number
756 ,p_survey_seniority_code
757            in per_salary_survey_lines.survey_seniority_code%TYPE
758 ,p_effective_date
759            in date) is
760 --
761   l_proc           varchar2(72) := g_package||'chk_survey_seniority_code';
762    --
763   l_api_updating   boolean;
764   --
765   l_exists         Varchar2(1);
766   --
767   cursor csr_has_identifier is
768     select null
769     from   per_salary_surveys
770     where  salary_survey_id = p_salary_survey_id
771     and    identifier = SUBSTR(p_survey_seniority_code,0,2);
772   --
773 --
774 Begin
775   hr_utility.set_location('Entering:'|| l_proc, 10);
776   --
777   -- Check mandatory parameters have been set
778   --
779   hr_api.mandatory_arg_error
780     (p_api_name       => l_proc
781     ,p_argument       => 'effective date'
782     ,p_argument_value => p_effective_date
783     );
784   --
785   hr_utility.set_location(l_proc, 13);
786   --
787   -- Only proceed with validation If:
788   -- a) During update, the value has actually changed to
789   --    another not null value.
790   -- b) This is an insert.
791   --
792   --
793   l_api_updating := per_ssl_shd.api_updating
794     (p_salary_survey_line_id => p_salary_survey_line_id
795     ,p_object_version_number  => p_object_version_number
796     );
797   --
798   If p_survey_seniority_code is not null Then
799     If ((l_api_updating and
800           (nvl(per_ssl_shd.g_old_rec.survey_seniority_code,
801               hr_api.g_varchar2) <>
802           nvl(p_survey_seniority_code,hr_api.g_varchar2)))
803       or
804         (p_salary_survey_line_id is null)) Then
805       --
806       hr_utility.set_location(l_proc, 20);
807       --
808       --  Check If the survey_seniority_code value exists
809       --  in hr_standard_lookups where the lookup_type is 'SURVEY_SENIORITY'
810       --
811       If hr_api.not_exists_in_hrstanlookups
812            (p_effective_date        => p_effective_date
813            ,p_lookup_type           => 'SURVEY_SENIORITY'
814            ,p_lookup_code           => p_survey_seniority_code
815            ) Then
816         --  Error: Invalid Survey Seniority
817         fnd_message.set_name('PER', 'PER_50348_SSL_INV_SENIOR_LKP');
818         --
819         fnd_message.raise_error;
820         --
821       End If;
822       --
823     End If;
824     --
825     hr_utility.set_location(l_proc, 30);
826     --
827     -- Open the cursor to see If the survey_seniority_code has the
828     -- identifier as the first two characters.
829     --
830     open csr_has_identifier;
831       --
832       fetch csr_has_identifier into l_exists;
833       --
834       If csr_has_identifier%notfound Then
835         close csr_has_identifier;
836         --
837         -- The survey_seniority_code does not have the Survey IdentIfier
838         -- as the first two characters so raise an error.
839         --
840         fnd_message.set_name('PER', 'PER_50349_SSL_INV_SENIOR_ID');
841         --
842         fnd_message.raise_error;
843         --
844       End If;
845       --
846       close csr_has_identifier;
847       --
848       hr_utility.set_location(l_proc, 35);
849       --
850   End If;
851   --
852   hr_utility.set_location(' Leaving:'|| l_proc, 40);
853   --
854 End chk_survey_seniority_code;
855 --
856 --
857 -- ---------------------------------------------------------------
858 -- |-------------------< chk_company_size_code >-----------------|
859 -- ---------------------------------------------------------------
860 --
861 -- Description
862 --   This Procedure is used to check that company_size_code:
866 --
863 --     a) Exists in hr_standard_lookups for lookup_type 'COMPANY_SIZE'.
864 --     b) Contains PER_SALARY_SURVEYS.IDENTIFIER as its first two
865 --        letters
867 -- Pre Requisites
868 --   None.
869 --
870 -- In Parameters
871 --   salary_survey_line_id
872 --   object_version_number
873 --   company_size_code.
874 --   p_effective_date (used as parameter for function
875 --                     not_exists_in_hrstanlookups)
876 --
877 -- Post Success
878 --   Processing continues If the company_size_code
879 --     exists in hr_standard_lookups and
880 --     PSS.IDENTIFIER makes up its first two letters.
881 --
882 -- Post Failure
883 --  An application error is raised and processing is terminated
884 --    If the company_size_code does not exist in hr_standard_lookups.
885 --    or PSS.IDENTIFIER does not make up the first two letters of
886 --       company_size_code.
887 --
888 -- Developer/Implementation Notes
889 --   None.
890 --
891 -- Access Status
892 --   Internal row handler use only.
893 --
894 Procedure chk_company_size_code
895 (p_salary_survey_line_id
896            in number
897 ,p_object_version_number
898            in number
899 ,p_salary_survey_id
900            in number
901 ,p_company_size_code
902            in per_salary_survey_lines.company_size_code%TYPE
903 ,p_effective_date
904            in date) is
905 --
906   l_proc           varchar2(72) := g_package||'chk_company_size_code';
907    --
908   l_api_updating   boolean;
909   --
910   l_exists         Varchar2(1);
911   --
912   cursor csr_has_identifier is
913     select null
914     from   per_salary_surveys
915     where  salary_survey_id = p_salary_survey_id
916     and    identifier = SUBSTR(p_company_size_code,0,2);
917   --
918 --
919 Begin
920   hr_utility.set_location('Entering:'|| l_proc, 10);
921   --
922   -- Check mandatory parameters have been set
923   --
924   hr_api.mandatory_arg_error
925     (p_api_name       => l_proc
926     ,p_argument       => 'effective date'
927     ,p_argument_value => p_effective_date
928     );
929   --
930   hr_utility.set_location(l_proc, 13);
931   --
932   -- Only proceed with validation If:
933   -- a) During update, the value has actually changed to
934   --    another not null value.
935   -- b) This is an insert.
936   --
937   --
938   l_api_updating := per_ssl_shd.api_updating
939     (p_salary_survey_line_id => p_salary_survey_line_id
940     ,p_object_version_number  => p_object_version_number
941     );
942   --
943   If p_company_size_code is not null Then
944     If ((l_api_updating and
945           (nvl(per_ssl_shd.g_old_rec.company_size_code,
946               hr_api.g_varchar2) <>
947           nvl(p_company_size_code,hr_api.g_varchar2)))
948       or
949         (p_salary_survey_line_id is null)) Then
950       --
951       hr_utility.set_location(l_proc, 20);
952       --
953       --  Check If the company_size_code value exists
954       --  in hr_standard_lookups where the lookup_type is 'COMPANY_SIZE'
955       --
956       If hr_api.not_exists_in_hrstanlookups
957            (p_effective_date        => p_effective_date
958            ,p_lookup_type           => 'COMPANY_SIZE'
959            ,p_lookup_code           => p_company_size_code
960            ) Then
961         --  Error: Invalid Company Size
962         fnd_message.set_name('PER', 'PER_50350_SSL_INV_COMPANY_LKP');
963         --
964         fnd_message.raise_error;
965         --
966       End If;
967       --
968     End If;
969     --
970     hr_utility.set_location(l_proc, 30);
971     --
972     -- Open the cursor to see If the company_size_code has the
973     -- identifier as the first two characters.
974     --
975     open csr_has_identifier;
976       --
977       fetch csr_has_identifier into l_exists;
978       --
979       If csr_has_identifier%notfound Then
980         close csr_has_identifier;
981         --
982         -- The company_size_code does not have the Survey IdentIfier
983         -- as the first two characters so raise an error.
984         --
985         fnd_message.set_name('PER', 'PER_50351_INV_COMP_ID');
986         --
987         fnd_message.raise_error;
988         --
989       End If;
990       --
991       close csr_has_identifier;
992       --
993       hr_utility.set_location(l_proc, 35);
994       --
995   End If;
996   --
997   hr_utility.set_location(' Leaving:'|| l_proc, 40);
998   --
999 End chk_company_size_code;
1000 --
1001 --
1002 -- ---------------------------------------------------------------
1003 -- |----------------------< chk_industry_code >------------------|
1004 -- ---------------------------------------------------------------
1005 --
1006 -- Description
1007 --   This Procedure is used to check that industry_code:
1008 --     a) Exists in hr_standard_lookups for lookup_type 'INDUSTRY'.
1009 --     b) Contains PER_SALARY_SURVEYS.IDENTIFIER as its first two
1010 --        letters
1011 --
1012 -- Pre Requisites
1013 --   None.
1017 --   salary_survey_line_id
1014 --
1015 -- In Parameters
1016 --   object_version_number
1018 --   industry_code.
1019 --   p_effective_date (used as parameter for not_exists in
1020 --                     hr_standard_lookups)
1021 --
1022 -- Post Success
1023 --   Processing continues If the industry_code
1024 --     exists in hr_standard_lookups and
1025 --     PSS.IDENTIFIER makes up its first two letters.
1026 --
1027 -- Post Failure
1028 --  An application error is raised and processing is terminated
1029 --    If the industry_code does not exist in hr_standard_lookups.
1030 --    or PSS.IDENTIFIER does not make up the first two letters of
1031 --       industry_code.
1032 --
1033 -- Developer/Implementation Notes
1034 --   None.
1035 --
1036 -- Access Status
1037 --   Internal row handler use only.
1038 --
1039 Procedure chk_industry_code
1040 (p_salary_survey_line_id
1041            in number
1042 ,p_object_version_number
1043            in number
1044 ,p_salary_survey_id
1045            in number
1046 ,p_industry_code
1047            in per_salary_survey_lines.industry_code%TYPE
1048 ,p_effective_date
1049            in date) is
1050 --
1051   l_proc           varchar2(72) := g_package||'chk_industry_code';
1052   --
1053   l_api_updating   boolean;
1054   --
1055   l_exists         Varchar2(1);
1056   --
1057   cursor csr_has_identifier is
1058     select null
1059     from   per_salary_surveys
1060     where  salary_survey_id = p_salary_survey_id
1061     and    identifier = SUBSTR(p_industry_code,0,2);
1062   --
1063 --
1064 Begin
1065   --
1066   hr_utility.set_location('Entering:'|| l_proc, 10);
1067   --
1068   -- Check mandatory parameters have been set
1069   --
1070   hr_api.mandatory_arg_error
1071     (p_api_name       => l_proc
1072     ,p_argument       => 'effective date'
1073     ,p_argument_value => p_effective_date
1074     );
1075   --
1076   hr_utility.set_location(l_proc, 13);
1077   --
1078   -- Only proceed with validation If:
1079   -- a) During update, the value has actually changed to
1080   --    another not null value.
1081   -- b) This is an insert.
1082   --
1083   --
1084   l_api_updating := per_ssl_shd.api_updating
1085     (p_salary_survey_line_id => p_salary_survey_line_id
1086     ,p_object_version_number  => p_object_version_number
1087     );
1088   --
1089   If p_industry_code is not null Then
1090     --
1091     If ((l_api_updating and
1092           (nvl(per_ssl_shd.g_old_rec.industry_code,
1093               hr_api.g_varchar2) <>
1094               nvl(p_industry_code,hr_api.g_varchar2)))
1095       or
1096         (p_salary_survey_line_id is null)) Then
1097       --
1098       hr_utility.set_location(l_proc, 20);
1099       --
1100       --  Check If the industry_code value exists
1101       --  in hr_standard_lookups where the lookup_type is 'INDUSTRY'
1102       --
1103       If hr_api.not_exists_in_hrstanlookups
1104            (p_effective_date        => p_effective_date
1105            ,p_lookup_type           => 'INDUSTRY'
1106            ,p_lookup_code           => p_industry_code
1107            ) Then
1108         --  Error: Invalid Industry
1109         fnd_message.set_name('PER', 'PER_50352_SSL_INV_INDUSTRY_LKP');
1110         --
1111         fnd_message.raise_error;
1112         --
1113       End If;
1114       --
1115     End If;
1116     --
1117     hr_utility.set_location(l_proc, 30);
1118     --
1119     -- Open the cursor to see If the industry_code has the
1120     -- identifier as the first two characters.
1121     --
1122     open csr_has_identifier;
1123       --
1124       fetch csr_has_identifier into l_exists;
1125       --
1126       If csr_has_identifier%notfound Then
1127         --
1128         close csr_has_identifier;
1129         --
1130         -- The industry_code does not have the Survey IdentIfier
1131         -- as the first two characters so raise an error.
1132         --
1133         fnd_message.set_name('PER', 'PER_50353_SSL_INV_INDUSTRY_ID');
1134         --
1135         fnd_message.raise_error;
1136         --
1137       End If;
1138       --
1139       close csr_has_identifier;
1140       --
1141       hr_utility.set_location(l_proc, 35);
1142       --
1143   End If;
1144   --
1145   hr_utility.set_location(' Leaving:'|| l_proc, 40);
1146   --
1147 End chk_industry_code;
1148 
1149 --
1150 --
1151 -- ---------------------------------------------------------------
1152 -- |-------------------< chk_survey_age_code >-------------------|
1153 -- ---------------------------------------------------------------
1154 --
1155 -- Description
1156 --   This Procedure is used to check that survey_age_code:
1157 --     a) Exists in hr_standard_lookups for lookup_type 'SURVEY_AGE'.
1158 --     b) Contains PER_SALARY_SURVEYS.IDENTIFIER as its first two
1159 --        letters
1160 --
1161 -- Pre Requisites
1162 --   None.
1163 --
1164 -- In Parameters
1165 --   object_version_number
1166 --   salary_survey_line_id
1167 --   survey_age_code.
1168 --   p_effective_date (used as parameter for not_exists in
1172 --   Processing continues If the survey_age_code
1169 --                     hr_standard_lookups)
1170 --
1171 -- Post Success
1173 --     exists in hr_standard_lookups and
1174 --     PSS.IDENTIFIER makes up its first two letters.
1175 --
1176 -- Post Failure
1177 --  An application error is raised and processing is terminated
1178 --    If the survey_age_code does not exist in hr_standard_lookups.
1179 --    or PSS.IDENTIFIER does not make up the first two letters of
1180 --       survey_age_code.
1181 --
1182 -- Developer/Implementation Notes
1183 --   None.
1184 --
1185 -- Access Status
1186 --   Internal row handler use only.
1187 --
1188 Procedure chk_survey_age_code
1189 (p_salary_survey_line_id
1190            in number
1191 ,p_object_version_number
1192            in number
1193 ,p_salary_survey_id
1194            in number
1195 ,p_survey_age_code
1196            in per_salary_survey_lines.survey_age_code%TYPE
1197 ,p_effective_date
1198            in date) is
1199 --
1200   l_proc           varchar2(72) := g_package||'chk_survey_age_code';
1201   --
1202   l_api_updating   boolean;
1203   --
1204   l_exists         Varchar2(1);
1205   --
1206   cursor csr_has_identifier is
1207     select null
1208     from   per_salary_surveys
1209     where  salary_survey_id = p_salary_survey_id
1210     and    identifier = SUBSTR(p_survey_age_code,0,2);
1211   --
1212 --
1213 Begin
1214   --
1215   hr_utility.set_location('Entering:'|| l_proc, 10);
1216   --
1217   -- Check mandatory parameters have been set
1218   --
1219   hr_api.mandatory_arg_error
1220     (p_api_name       => l_proc
1221     ,p_argument       => 'effective date'
1222     ,p_argument_value => p_effective_date
1223     );
1224   --
1225   hr_utility.set_location(l_proc, 13);
1226   --
1227   -- Only proceed with validation If:
1228   -- a) During update, the value has actually changed to
1229   --    another not null value.
1230   -- b) This is an insert.
1231   --
1232   --
1233   l_api_updating := per_ssl_shd.api_updating
1234     (p_salary_survey_line_id => p_salary_survey_line_id
1235     ,p_object_version_number  => p_object_version_number
1236     );
1237   --
1238   If p_survey_age_code is not null Then
1239     --
1240     If ((l_api_updating and
1241           (nvl(per_ssl_shd.g_old_rec.survey_age_code,
1242               hr_api.g_varchar2) <>
1243               nvl(p_survey_age_code,hr_api.g_varchar2)))
1244       or
1245         (p_salary_survey_line_id is null)) Then
1246       --
1247       hr_utility.set_location(l_proc, 20);
1248       --
1249       --  Check If the survey_age_code value exists
1250       --  in hr_standard_lookups where the lookup_type is 'SURVEY_AGE'
1251       --
1252       If hr_api.not_exists_in_hrstanlookups
1253            (p_effective_date        => p_effective_date
1254            ,p_lookup_type           => 'SURVEY_AGE'
1255            ,p_lookup_code           => p_survey_age_code
1256            ) Then
1257         --  Error: Invalid survey_age
1258         fnd_message.set_name('PER', 'PER_50354_SSL_INV_AGE_LKP');
1259         --
1260         fnd_message.raise_error;
1261         --
1262       End If;
1263       --
1264     End If;
1265     --
1266     hr_utility.set_location(l_proc, 30);
1267     --
1268     -- Open the cursor to see If the survey_age_code has the
1269     -- identifier as the first two characters.
1270     --
1271     open csr_has_identifier;
1272       --
1273       fetch csr_has_identifier into l_exists;
1274       --
1275       If csr_has_identifier%notfound Then
1276         --
1277         close csr_has_identifier;
1278         --
1279         -- The survey_age_code does not have the Survey IdentIfier
1280         -- as the first two characters so raise an error.
1281         --
1282         fnd_message.set_name('PER', 'PER_50355_SSL_INV_AGE_ID');
1283         --
1284         fnd_message.raise_error;
1285         --
1286       End If;
1287       --
1288       close csr_has_identifier;
1289       --
1290       hr_utility.set_location(l_proc, 35);
1291       --
1292   End If;
1293   --
1294   hr_utility.set_location(' Leaving:'|| l_proc, 40);
1295   --
1296 End chk_survey_age_code;
1297 --
1298 --
1299 -- -------------------------------------------------------------------------------
1300 -- |-----------------< chk_stock_display_type_code >--------------------------------|
1301 -- -------------------------------------------------------------------------------
1302 --
1303 -- Description
1304 --   This Procedure is used to check that stock_display_type_code:
1305 --     a) Exists in hr_standard_lookups for lookup_type 'STOCK_DISPLAY_TYPE'.
1306 --
1307 -- Pre Requisites
1308 --   None.
1309 --
1310 -- In Parameters
1311 --   salary_survey_line_id
1312 --   object_version_number
1313 --   stock_display_type_code
1314 --   p_effective_date (used as parameter for function
1315 --                     not_exists_in_hrstanlookups)
1316 --
1317 -- Post Success
1318 --   Processing continues If the stock_display_type_code
1319 --    exists in hr_standard_lookups.
1320 --
1321 -- Post Failure
1322 --  An application error is raised and processing is terminated
1326 --   None.
1323 --    If the stock_display_type_code does not exist in hr_standard_lookups.
1324 --
1325 -- Developer/Implementation Notes
1327 --
1328 -- Access Status
1329 --   Internal row handler use only.
1330 --
1331 Procedure chk_stock_display_type_code
1332 (p_salary_survey_line_id
1333            in number
1334 ,p_object_version_number
1335            in number
1336 ,p_stock_display_type_code
1337            in per_salary_survey_lines.stock_display_type%TYPE
1338 ,p_effective_date
1339            in date) is
1340 --
1341   l_proc           varchar2(72) := g_package||'chk_stock_display_type_code';
1342   --
1343   l_api_updating   boolean;
1344   --
1345   l_exists         Varchar2(1);
1346   --
1347 
1348 Begin
1349   --
1350   hr_utility.set_location('Entering:'|| l_proc, 10);
1351   --
1352   -- Check mandatory parameters have been set
1353   --
1354   hr_api.mandatory_arg_error
1355     (p_api_name       => l_proc
1356     ,p_argument       => 'effective date'
1357     ,p_argument_value => p_effective_date
1358     );
1359   --
1360   hr_utility.set_location(l_proc, 13);
1361   --
1362   -- Only proceed with validation If:
1363   -- a) During update, the value has actually changed to
1364   --    another not null value.
1365   -- b) This is an insert.
1366   --
1367   --
1368   l_api_updating := per_ssl_shd.api_updating
1369     (p_salary_survey_line_id => p_salary_survey_line_id
1370     ,p_object_version_number  => p_object_version_number
1371     );
1372   --
1373   If p_stock_display_type_code is not null Then
1374   -- Above check added for bug4343756
1375   --
1376   If (( l_api_updating and
1377        (per_ssl_shd.g_old_rec.stock_display_type <>
1378         p_stock_display_type_code))
1379     or
1380       (p_salary_survey_line_id is null)) Then
1381     --
1382     hr_utility.set_location(l_proc, 20);
1383     --
1384     --  Check If the stock_display_type_code value exists
1385     --  in hr_standard_lookups where the lookup_type is 'STOCK_DISPLAY_TYPE'
1386     --
1387     If hr_api.not_exists_in_hrstanlookups
1388          (p_effective_date        => p_effective_date
1389          ,p_lookup_type           => 'STOCK_DISPLAY_TYPE'
1390          ,p_lookup_code           => p_stock_display_type_code
1391          ) Then
1392       --  Error: Invalid Stock Display Type
1393       fnd_message.set_name('PER', 'PER_SSL_INV_STOCK_TYPE_LKP');
1394       --
1395       fnd_message.raise_error;
1396       --
1397     End If;
1398     --
1399     hr_utility.set_location(l_proc, 30);
1400   End If;
1401   End If; -- p_stock_display_type_code is not null
1402   --
1403   hr_utility.set_location(' Leaving:'|| l_proc, 40);
1404   --
1405 End chk_stock_display_type_code;
1406 --
1407 --
1408 -- ----------------------------------------------------------------------------
1409 -- |------------------------------< is_null >---------------------------------|
1410 -- ----------------------------------------------------------------------------
1411 --
1412 -- Description
1413 --   This Procedure :
1414 --     Sets a flag If the passed in value is not null.
1415 --
1416 -- Pre Requisites
1417 --   None.
1418 --
1419 -- In Parameters
1420 --   value         (Value of salary figure to be validated)
1421 --
1422 -- In/Out Parameters
1423 --   null flag     (Set to False If the passed in value is not null.
1424 --                  Used in Procedure chk_salary_figures to check If
1425 --                  all the salary figures are null.)
1426 --
1427 -- Post Success
1428 --   Processing continues:
1429 --
1430 --
1431 -- Post Failure
1432 --   An application error is raised:
1433 --
1434 --
1435 -- Developer/Implementation Notes
1436 --   None.
1437 --
1438 -- Access Status
1439 --   Internal row handler use only.
1440 --
1441 
1442 Procedure is_null
1443  (p_value         in    number,
1444   p_null_flag     in out nocopy BOOLEAN
1445   ) is
1446 
1447 
1448  l_proc           varchar2(72) := g_package||'is_null';
1449 
1450 Begin
1451   --
1452   hr_utility.set_location('Entering:'||l_proc, 5);
1453   --
1454   If (p_value is not null) Then
1455     --
1456     --  Set flag to show that this value is not null.
1457     --
1458     p_null_flag := false;
1459     --
1460     hr_utility.set_location(l_proc, 10);
1461     --
1462   End If;
1463   --
1464   hr_utility.set_location(l_proc, 20);
1465   --
1466 End is_null;
1467 --
1468 -- ---------------------------------------------------------------
1469 -- |------------------< chk_salary_figures >---------------------|
1470 -- ---------------------------------------------------------------
1471 --
1472 -- Description
1473 --   This Procedure is used to check that
1474 --     At least one of the following parameters is not null.
1475 --
1476 -- Pre Requisites
1477 --   None.
1478 --
1479 -- In Parameters
1480 --   SALARY_SURVEY_LINE_ID
1481 --   OBJECT_VERSI0N_NUMBER
1482 --   CURRENCY_CODE
1483 --   MINIMUM_PAY
1484 --   MEAN_PAY
1485 --   MAXIMUM_PAY
1489 --   JOB_FIRST_QUARTILE
1486 --   GRADUATE_PAY
1487 --   STARTING_PAY
1488 --   PERCENTAGE_CHANGE
1490 --   JOB_MEDIAN_QUARTILE
1491 --   JOB_THIRD_QUARTILE
1492 --   JOB_FOURTH_QUARTILE
1493 --   MINIMUM_TOTAL_COMPENSATION
1494 --   MEAN_TOTAL_COMPENSATION
1495 --   MAXIMUM_TOTAL_COMPENSATION
1496 --   COMPNSTN_FIRST_QUARTILE
1497 --   COMPNSTN_MEDIAN_QUARTILE
1498 --   COMPNSTN_THIRD_QUARTILE
1499 --   COMPNSTN_FOURTH_QUARTILE
1500 --
1501 -- Post Success
1502 --   Processing continues
1503 --     If at least one of the salary figures is not null.
1504 --
1505 -- Post Failure
1506 --
1507 -- Developer/Implementation Notes
1508 --   None.
1509 --
1510 -- Access Status
1511 --   Internal row handler use only.
1512 --
1513 Procedure chk_salary_figures
1514 (p_salary_survey_line_id
1515       in number,
1516  p_object_version_number
1517       in number,
1518   p_currency_code
1519       in per_salary_survey_lines.currency_code%TYPE,
1520  p_minimum_pay
1521       in per_salary_survey_lines.minimum_pay%TYPE,
1522  p_mean_pay
1523       in per_salary_survey_lines.mean_pay%TYPE,
1524  p_maximum_pay
1525       in per_salary_survey_lines.maximum_pay%TYPE,
1526  p_graduate_pay
1527       in per_salary_survey_lines.graduate_pay%TYPE,
1528  p_starting_pay
1529       in per_salary_survey_lines.starting_pay%TYPE,
1530  p_percentage_change
1531       in per_salary_survey_lines.percentage_change%TYPE,
1532  p_job_first_quartile
1533       in per_salary_survey_lines.job_first_quartile%TYPE,
1534  p_job_median_quartile
1535       in per_salary_survey_lines.job_median_quartile%TYPE,
1536  p_job_third_quartile
1537       in per_salary_survey_lines.job_third_quartile%TYPE,
1538  p_job_fourth_quartile
1539       in per_salary_survey_lines.job_fourth_quartile%TYPE,
1540  p_minimum_total_compensation
1541      in per_salary_survey_lines.minimum_total_compensation%TYPE,
1542  p_mean_total_compensation
1543      in per_salary_survey_lines.mean_total_compensation%TYPE,
1544  p_maximum_total_compensation
1545      in per_salary_survey_lines.maximum_total_compensation%TYPE,
1546  p_compnstn_first_quartile
1547      in per_salary_survey_lines.compnstn_first_quartile%TYPE,
1548  p_compnstn_median_quartile
1549      in per_salary_survey_lines.compnstn_median_quartile%TYPE,
1550  p_compnstn_third_quartile
1551      in per_salary_survey_lines.compnstn_third_quartile%TYPE,
1552  p_compnstn_fourth_quartile
1553      in per_salary_survey_lines.compnstn_fourth_quartile%TYPE
1554 ) is
1555   --
1556   l_proc         varchar2(72) := g_package||'chk_salary_figures';
1557   --
1558   l_api_updating boolean;
1559   --
1560   l_all_null    boolean       := true;
1561   --
1562 Begin
1563   --
1564   --
1565   --  Only proceed with validation If:
1566   --   The current g_old_rec is current and
1567   --   Any of the values have changed or
1568   --   A record is being inserted
1569   --
1570   l_api_updating := per_ssl_shd.api_updating
1571     (p_salary_survey_line_id => p_salary_survey_line_id
1572     ,p_object_version_number  => p_object_version_number
1573     );
1574   --
1575   If ( l_api_updating and
1576       ((nvl(per_ssl_shd.g_old_rec.minimum_pay,hr_api.g_number)
1577       <> nvl(p_minimum_pay,hr_api.g_number)) or
1578       (nvl(per_ssl_shd.g_old_rec.maximum_pay,hr_api.g_number)
1579        <> nvl(p_maximum_pay,hr_api.g_number)) or
1580       (nvl(per_ssl_shd.g_old_rec.mean_pay,hr_api.g_number)
1581        <> nvl(p_mean_pay,hr_api.g_number)) or
1582       (nvl(per_ssl_shd.g_old_rec.graduate_pay,hr_api.g_number)
1583        <> nvl(p_graduate_pay,hr_api.g_number)) or
1584       (nvl(per_ssl_shd.g_old_rec.starting_pay,hr_api.g_number)
1585        <> nvl(p_starting_pay,hr_api.g_number)) or
1586       (nvl(per_ssl_shd.g_old_rec.percentage_change,hr_api.g_number)
1587        <> nvl(p_percentage_change,hr_api.g_number)) or
1588       (nvl(per_ssl_shd.g_old_rec.job_first_quartile,hr_api.g_number)
1589        <> nvl(p_job_first_quartile,hr_api.g_number)) or
1590       (nvl(per_ssl_shd.g_old_rec.job_median_quartile,hr_api.g_number)
1591        <> nvl(p_job_median_quartile,hr_api.g_number)) or
1592       (nvl(per_ssl_shd.g_old_rec.job_third_quartile,hr_api.g_number)
1593        <> nvl(p_job_third_quartile,hr_api.g_number)) or
1594       (nvl(per_ssl_shd.g_old_rec.job_fourth_quartile,hr_api.g_number)
1595        <> nvl(p_job_fourth_quartile,hr_api.g_number)) or
1596       (nvl(per_ssl_shd.g_old_rec.minimum_total_compensation,hr_api.g_number)
1597        <> nvl(p_minimum_total_compensation,hr_api.g_number)) or
1598       (nvl(per_ssl_shd.g_old_rec.mean_total_compensation,hr_api.g_number)
1599        <> nvl(p_mean_total_compensation,hr_api.g_number)) or
1600       (nvl(per_ssl_shd.g_old_rec.maximum_total_compensation,hr_api.g_number)
1601        <> nvl(p_maximum_total_compensation,hr_api.g_number)) or
1602       (nvl(per_ssl_shd.g_old_rec.compnstn_first_quartile,hr_api.g_number)
1603        <> nvl(p_compnstn_first_quartile,hr_api.g_number)) or
1604       (nvl(per_ssl_shd.g_old_rec.compnstn_median_quartile,hr_api.g_number)
1605        <> nvl(p_compnstn_median_quartile,hr_api.g_number)) or
1606       (nvl(per_ssl_shd.g_old_rec.compnstn_third_quartile,hr_api.g_number)
1607        <> nvl(p_compnstn_third_quartile,hr_api.g_number)) or
1608       (nvl(per_ssl_shd.g_old_rec.compnstn_fourth_quartile,hr_api.g_number)
1609        <> nvl(p_compnstn_fourth_quartile,hr_api.g_number)) ) OR
1613       --
1610        (not l_api_updating) )
1611      then
1612 
1614       hr_utility.set_location('Entering:'||l_proc, 5);
1615       --
1616       --  Check that at least one of the salary figures is not null.
1617       --
1618       --  Check Minimum Pay.
1619       --
1620       is_null(p_value         => p_minimum_pay,
1621               p_null_flag     => l_all_null);
1622       --
1623       hr_utility.set_location(l_proc, 10);
1624       --
1625       --
1626       --  Check Maximum Pay.
1627       --
1628       is_null(p_value         => p_maximum_pay,
1629               p_null_flag     => l_all_null);
1630       --
1631       hr_utility.set_location(l_proc, 15);
1632       --
1633       --
1634       --  Check Mean pay
1635       --
1636       is_null(p_value         => p_mean_pay,
1637               p_null_flag     => l_all_null);
1638       --
1639       hr_utility.set_location(l_proc, 20);
1640       --
1641       --
1642       --  Check Graduate pay
1643       --
1644       is_null(p_value         => p_graduate_pay,
1645              p_null_flag     => l_all_null);
1646       --
1647       hr_utility.set_location(l_proc, 25);
1648       --
1649       --
1650       --  Check Starting pay
1651       --
1652       is_null(p_value         => p_starting_pay,
1653               p_null_flag     => l_all_null);
1654       --
1655       hr_utility.set_location(l_proc, 30);
1656       --
1657       --
1658       --  Check Percentage Change
1659       --
1660       is_null(p_value         => p_percentage_change,
1661               p_null_flag     => l_all_null);
1662       --
1663       --
1664       --  Check Job First Quartile
1665       --
1666       is_null(p_value         => p_job_first_quartile,
1667               p_null_flag     => l_all_null);
1668       --
1669       hr_utility.set_location(l_proc, 35);
1670       --
1671       --
1672       --  Check job_median_quartile
1673       --
1674       is_null(p_value         => p_job_median_quartile,
1675               p_null_flag     => l_all_null);
1676       --
1677       hr_utility.set_location(l_proc, 40);
1678       --
1679       --
1680       --  Check job_third_quartile
1681       --
1682       is_null(p_value         => p_job_third_quartile,
1683               p_null_flag     => l_all_null);
1684       --
1685       hr_utility.set_location(l_proc, 45);
1686       --
1687       --
1688       --  Check job_fourth_quartile
1689       --
1690       is_null(p_value         => p_job_fourth_quartile,
1691               p_null_flag     => l_all_null);
1692       --
1693       hr_utility.set_location(l_proc, 50);
1694       --
1695       --
1696       --  Check minimum_total_compensation
1697       --
1698       is_null(p_value         => p_minimum_total_compensation,
1699               p_null_flag     => l_all_null);
1700       --
1701       hr_utility.set_location(l_proc, 55);
1702       --
1703       --
1704       --  Check mean_total_compensation
1705       --
1706       is_null(p_value         => p_mean_total_compensation,
1707               p_null_flag     => l_all_null);
1708       --
1709       hr_utility.set_location(l_proc, 60);
1710       --
1711       --
1712       --  Check maximum_total_compensation
1713       --
1714       is_null(p_value         => p_maximum_total_compensation,
1715               p_null_flag     => l_all_null);
1716       --
1717       hr_utility.set_location(l_proc, 65);
1718       --
1719       --
1720       --  Check compnstn_first_quartile
1721       --
1722       is_null(p_value         => p_compnstn_first_quartile,
1723               p_null_flag     => l_all_null);
1724       --
1725       hr_utility.set_location(l_proc, 70);
1726       --
1727       --
1728       --  Check compnstn_median_quartile
1729       --
1730       is_null(p_value         => p_compnstn_median_quartile,
1731               p_null_flag     => l_all_null);
1732       --
1733       hr_utility.set_location(l_proc, 80);
1734       --
1735       --
1736       --  Check compnstn_third_quartile
1737       --
1738       is_null(p_value         => p_compnstn_third_quartile,
1739               p_null_flag     => l_all_null);
1740       --
1741       hr_utility.set_location(l_proc, 85);
1742       --
1743       --
1744       --  Check compnstn_fourth_quartile
1745       --
1746       is_null(p_value         => p_compnstn_fourth_quartile,
1747               p_null_flag     => l_all_null);
1748       --
1749       hr_utility.set_location(l_proc, 90);
1750       --
1751       --
1752       -- If all the Salary Figures were null then raise an error;
1753       --
1754       If (l_all_null = true) Then
1755         --
1756         fnd_message.set_name('PER','PER_50373_SSL_FIG_ALL_NULL');
1757         --
1758         fnd_message.raise_error;
1759         --
1760       End If;
1761       --
1762   End if;
1763   --
1764   hr_utility.set_location('Leaving:'||l_proc, 100);
1765   --
1766 End chk_salary_figures;
1767 
1768 --
1769 --
1770 --
1774 --
1771 -- ----------------------------------------------------------------------------
1772 -- |---------------------------< chk_dates >----------------------------------|
1773 -- ----------------------------------------------------------------------------
1775 -- Description
1776 --   This Procedure is used to check:
1777 --     a) That the start_date is not null.
1778 --     b) That the start date is not later than the end_date.
1779 --
1780 -- Pre Requisites
1781 --   None.
1782 --
1783 -- In Parameters
1784 --   salary_survey_line_id
1785 --   start_date
1786 --   end_date.
1787 --
1788 -- Post Success
1789 --   Processing continues:
1790 --     If the start_date is not null.
1791 --     If the start date is earlier than end_date.
1792 --
1793 -- Post Failure
1794 --   An application error is raised:
1795 --     If the start_date is null.
1796 --     If the start_date is later than end_date.
1797 --
1798 -- Developer/Implementation Notes
1799 --   None.
1800 --
1801 -- Access Status
1802 --   Internal row handler use only.
1803 --
1804 Procedure chk_dates
1805 (p_salary_survey_line_id in number,
1806  p_start_date            in per_salary_survey_lines.start_date%TYPE,
1807  p_end_date              in per_salary_survey_lines.end_date%TYPE)is
1808   --
1809   l_proc         varchar2(72) := g_package||'chk_dates';
1810   l_eot          date         := hr_general.End_of_time;
1811   --
1812 Begin
1813   --
1814   hr_utility.set_location('Entering:'||l_proc, 5);
1815   --
1816   -- Check that start_date is not null.  Error If it is.
1817   --
1818   If p_start_date is null Then
1819     fnd_message.set_name('PER','PER_50374_SSL_MAND_START_DATE');
1820     fnd_message.raise_error;
1821   End If;
1822   --
1823   hr_utility.set_location(l_proc, 10);
1824   --
1825   --  Only proceed with validation If:
1826   --   The current g_old_rec is current and
1827   --   start_date has changed or
1828   --   A record is being inserted
1829   --
1830   --
1831   hr_utility.set_location(l_proc, 15);
1832   --
1833   If
1834     (p_salary_survey_line_id is not null)
1835      and
1836        (per_ssl_shd.g_old_rec.start_date <> p_start_date)
1837      or
1838       (p_salary_survey_line_id is null)
1839   Then
1840     --
1841     --   Check that the start_date is not later than
1842     --   the end_date for this row.
1843     --
1844     If p_start_date > nvl(p_end_date,l_eot) Then
1845       --
1846       fnd_message.set_name('PER','PER_50375_SSL_INV_DATES');
1847       --
1848       fnd_message.raise_error;
1849       --
1850     End If;
1851     --
1852     hr_utility.set_location(l_proc, 25);
1853     --
1854    End If;
1855    --
1856    hr_utility.set_location('Leaving:'||l_proc, 40);
1857    --
1858 End chk_dates;
1859 --
1860 
1861 
1862 -- ---------------------------------------------------------------
1863 -- |--------------------< chk_currency_code >--------------------|
1864 -- ---------------------------------------------------------------
1865 --
1866 -- Description
1867 --   This procedure is used to check that currency_code:
1868 --     a) Is not null.
1869 --     a) Exists in fnd_currencies_v;.
1870 --
1871 -- Pre Requisites
1872 --   None.
1873 --
1874 -- In Parameters
1875 --   salary_survey_line_id
1876 --   currency_code
1877 --   p_effective_date
1878 --
1879 -- Post Success
1880 --   Processing continues if the currency_code
1881 --   exists in hr_standard_lookups and is not null.
1882 --
1883 -- Post Failure
1884 --  An application error is raised and processing is terminated
1885 --  if the currency_code does not exist in hr_standard_lookups or is null.
1886 --
1887 -- Developer/Implementation Notes
1888 --   None.
1889 --
1890 -- Access Status
1891 --   Internal row handler use only.
1892 --
1893 procedure chk_currency_code
1894 (p_salary_survey_line_id in per_salary_survey_lines.salary_survey_line_id%TYPE
1895 ,p_currency_code in per_salary_survey_lines.currency_code%TYPE) is
1896 --
1897   l_proc           varchar2(72)  :=
1898                              g_package||'chk_currency_code';
1899   --
1900   l_api_updating   boolean;
1901   --
1902   l_exists         varchar2(1);
1903   --
1904   cursor csr_currency_exists is
1905     select null
1906     from   fnd_currencies_vl fcv
1907     where  fcv.currency_code = p_currency_code;
1908 --
1909 begin
1910   hr_utility.set_location('Entering:'|| l_proc, 10);
1911   hr_utility.set_location(l_proc, 15);
1912   --
1913   -- Check that currency_code is not null
1914   --
1915   if p_currency_code is null then
1916     fnd_message.set_name('PER','PER_50335_PSS_MAND_CURRENCY');
1917     fnd_message.raise_error;
1918   end if;
1919   --
1920   hr_utility.set_location(l_proc, 17);
1921   --
1922   -- Only proceed with validation if:
1923   -- a) During update, the value has actually changed to
1924   --    another not null value.
1925   -- b) This is an insert.
1926  --
1927   if (((p_salary_survey_line_id is not null) and
1928        nvl(per_ssl_shd.g_old_rec.currency_code,
1932       (p_salary_survey_line_id is null)) then
1929            hr_api.g_varchar2) <> nvl(p_currency_code,
1930                                      hr_api.g_varchar2))
1931     or
1933     --
1934     hr_utility.set_location(l_proc, 20);
1935     --
1936     --  If currency_code is not null then
1937     --  Check if the currency_code value exists
1938     --  in fnd_currencies_vl.
1939     --
1940     open csr_currency_exists;
1941     --
1942     fetch csr_currency_exists into l_exists;
1943     --
1944     if csr_currency_exists%notfound then
1945       --
1946       --  Error: Invalid Currency
1947       --
1948       fnd_message.set_name('PER', 'PER_50336_PSS_INV_CURRENCY');
1949       --
1950       fnd_message.raise_error;
1951       --
1952     end if;
1953     --
1954     hr_utility.set_location(l_proc, 30);
1955     --
1956   end if;
1957   --
1958   hr_utility.set_location(' Leaving:'|| l_proc, 40);
1959   --
1960 end chk_currency_code;
1961 --
1962 ---------------------------------------------------------------------------
1963 -- |-------------------------------< chk_delete >-----------------------------|
1964 -- ----------------------------------------------------------------------------
1965 -- {Start Of Comments}
1966 --
1967 -- Description:
1968 --   This Procedure is used to ensure that no rows may be deleted If there are
1969 --   rows in PER_SALARY_SURVEY_MAPPINGS with matching salary_survey_line_id.
1970 --
1971 -- Pre Conditions:
1972 --   None.
1973 --
1974 -- In Arguments:
1975 --   salary_survey_line_id
1976 --
1977 -- Post Success:
1978 --   Processing continue If there are no rows in per_salary_survey_mappings with
1979 --   matcing salary_survey_line_id.
1980 --
1981 -- Post Failure:
1982 --   An application error is raised If there are rows in
1983 --   per_salary_survey_mappings with matcing salary_survey_line_id.
1984 --
1985 -- Access Status
1986 --   Internal row handler use only.
1987 --
1988 -- {End Of Comments}
1989 --
1990 Procedure chk_delete(p_salary_survey_line_id in number) is
1991 --
1992   l_proc     varchar2(72) := g_package||'chk_delete';
1993   l_exists   varchar2(1);
1994   --
1995   cursor csr_survey_mapping_exists is
1996     select null
1997     from   per_salary_survey_mappings ssm
1998     where  ssm.salary_survey_line_id = p_salary_survey_line_id;
1999   --
2000 Begin
2001   --
2002   hr_utility.set_location('Entering:'||l_proc, 10);
2003   --
2004   open csr_survey_mapping_exists;
2005   --
2006   fetch csr_survey_mapping_exists into l_exists;
2007   --
2008   If csr_survey_mapping_exists%found Then
2009     --
2010     close csr_survey_mapping_exists;
2011     --
2012     fnd_message.set_name('PER','PER_50376_SSL_INV_DEL');
2013     fnd_message.raise_error;
2014     --
2015   End If;
2016   --
2017   close csr_survey_mapping_exists;
2018   --
2019   hr_utility.set_location('Entering:'||l_proc, 20);
2020   --
2021 End chk_delete;
2022 --
2023 --
2024 -- ----------------------------------------------------------------------------
2025 -- |----------------------< chk_non_updateable_args >-----------------------|
2026 -- ----------------------------------------------------------------------------
2027 -- {Start Of Comments}
2028 --
2029 -- Description:
2030 --   This procedure is used to ensure that non updateable attributes have
2031 --   not been updated. If an attribute has been updated an error is generated.
2032 --
2033 -- Pre Conditions:
2034 --   g_old_rec has been populated with details of the values currently in
2035 --   the database.
2036 --
2037 -- In Arguments:
2038 --   p_rec has been populated with the updated values the user would like the
2039 --   record set to.
2040 --
2041 -- Post Success:
2042 --   Processing continues the non updateable attribute
2043 --   (salary_survey_id) has not changed.
2044 --
2045 -- Post Failure:
2046 --   An application error is raised if the non updateable attribute
2047 --   (salary_survey_id) has been altered.
2048 --
2049 -- {End Of Comments}
2050 
2051 Procedure chk_non_updateable_args
2052   (p_rec             in per_ssl_shd.g_rec_type,
2053    p_effective_date  in date
2054   ) is
2055 --
2056   l_proc     varchar2(72) := g_package||'chk_non_updateable_args';
2057   l_error    exception;
2058   l_argument varchar2(30);
2059 --
2060 Begin
2061   hr_utility.set_location('Entering:'||l_proc, 10);
2062   --
2063   -- Only proceed with validation if a row exists for
2064   -- the current record in the HR Schema
2065   --
2066   if not per_ssl_shd.api_updating
2067       (p_salary_survey_line_id     => p_rec.salary_survey_line_id
2068       ,p_object_version_number     => p_rec.object_version_number
2069       ) then
2070     hr_utility.set_message(801, 'HR_6153_ALL_PROCEDURE_FAIL');
2071     hr_utility.set_message_token('PROCEDURE', l_proc);
2072     hr_utility.set_message_token('STEP', '20');
2073   end if;
2074   --
2075   hr_utility.set_location(l_proc, 30);
2076   --
2077   if (p_rec.salary_survey_id <> per_ssl_shd.g_old_rec.salary_survey_id) then
2078      --
2079      l_argument := 'salary_survey_id';
2080      --
2081      raise l_error;
2082      --
2086   --
2083   end if;
2084   --
2085   hr_utility.set_location(l_proc, 40);
2087 exception
2088     when l_error then
2089        hr_api.argument_changed_error
2090          (p_api_name => l_proc
2091          ,p_argument => l_argument
2092          );
2093     when others then
2094        raise;
2095   --
2096   hr_utility.set_location(' Leaving:'||l_proc, 50);
2097   --
2098 end chk_non_updateable_args;
2099 
2100 --
2101 --
2102 -- -----------------------------------------------------------------------
2103 -- |------------------------------< chk_df >-----------------------------|
2104 -- -----------------------------------------------------------------------
2105 --
2106 -- Description:
2107 --   Validates the all Descriptive Flexfield values.
2108 --
2109 -- Pre-conditions:
2110 --   All other columns have been validated. Must be called as the
2111 --   last step from insert_validate and update_validate.
2112 --
2113 -- In Arguments:
2114 --   p_rec
2115 --
2116 -- Post Success:
2117 --   If the Descriptive Flexfield structure column and data values are
2118 --   all valid this Procedure will End normally and processing will
2119 --   continue.
2120 --
2121 -- Post Failure:
2122 --   If the Descriptive Flexfield structure column value or any of
2123 --   the data values are invalid Then an application error is raised as
2124 --   a PL/SQL exception.
2125 --
2126 -- Access Status:
2127 --   Internal Row Handler Use Only.
2128 --
2129 Procedure chk_df
2130   (p_rec in per_ssl_shd.g_rec_type) is
2131 --
2132   l_proc    varchar2(72) := g_package||'chk_df';
2133 --
2134 Begin
2135   hr_utility.set_location('Entering:'||l_proc, 10);
2136   --
2137   If ((p_rec.salary_survey_line_id is not null) and (
2138      nvl(per_ssl_shd.g_old_rec.attribute_category, hr_api.g_varchar2) <>
2139      nvl(p_rec.attribute_category, hr_api.g_varchar2) or
2140      nvl(per_ssl_shd.g_old_rec.attribute1, hr_api.g_varchar2) <>
2141      nvl(p_rec.attribute1, hr_api.g_varchar2) or
2142      nvl(per_ssl_shd.g_old_rec.attribute2, hr_api.g_varchar2) <>
2143      nvl(p_rec.attribute2, hr_api.g_varchar2) or
2144      nvl(per_ssl_shd.g_old_rec.attribute3, hr_api.g_varchar2) <>
2145      nvl(p_rec.attribute3, hr_api.g_varchar2) or
2146      nvl(per_ssl_shd.g_old_rec.attribute4, hr_api.g_varchar2) <>
2147      nvl(p_rec.attribute4, hr_api.g_varchar2) or
2148      nvl(per_ssl_shd.g_old_rec.attribute5, hr_api.g_varchar2) <>
2149      nvl(p_rec.attribute5, hr_api.g_varchar2) or
2150      nvl(per_ssl_shd.g_old_rec.attribute6, hr_api.g_varchar2) <>
2151      nvl(p_rec.attribute6, hr_api.g_varchar2) or
2152      nvl(per_ssl_shd.g_old_rec.attribute7, hr_api.g_varchar2) <>
2153      nvl(p_rec.attribute7, hr_api.g_varchar2) or
2154      nvl(per_ssl_shd.g_old_rec.attribute8, hr_api.g_varchar2) <>
2155      nvl(p_rec.attribute8, hr_api.g_varchar2) or
2156      nvl(per_ssl_shd.g_old_rec.attribute9, hr_api.g_varchar2) <>
2157      nvl(p_rec.attribute9, hr_api.g_varchar2) or
2158      nvl(per_ssl_shd.g_old_rec.attribute10, hr_api.g_varchar2) <>
2159      nvl(p_rec.attribute10, hr_api.g_varchar2) or
2160      nvl(per_ssl_shd.g_old_rec.attribute11, hr_api.g_varchar2) <>
2161      nvl(p_rec.attribute11, hr_api.g_varchar2) or
2162      nvl(per_ssl_shd.g_old_rec.attribute12, hr_api.g_varchar2) <>
2163      nvl(p_rec.attribute12, hr_api.g_varchar2) or
2164      nvl(per_ssl_shd.g_old_rec.attribute13, hr_api.g_varchar2) <>
2165      nvl(p_rec.attribute13, hr_api.g_varchar2) or
2166      nvl(per_ssl_shd.g_old_rec.attribute14, hr_api.g_varchar2) <>
2167      nvl(p_rec.attribute14, hr_api.g_varchar2) or
2168      nvl(per_ssl_shd.g_old_rec.attribute15, hr_api.g_varchar2) <>
2169      nvl(p_rec.attribute15, hr_api.g_varchar2) or
2170      nvl(per_ssl_shd.g_old_rec.attribute16, hr_api.g_varchar2) <>
2171      nvl(p_rec.attribute16, hr_api.g_varchar2) or
2172      nvl(per_ssl_shd.g_old_rec.attribute17, hr_api.g_varchar2) <>
2173      nvl(p_rec.attribute17, hr_api.g_varchar2) or
2174      nvl(per_ssl_shd.g_old_rec.attribute18, hr_api.g_varchar2) <>
2175      nvl(p_rec.attribute18, hr_api.g_varchar2) or
2176      nvl(per_ssl_shd.g_old_rec.attribute19, hr_api.g_varchar2) <>
2177      nvl(p_rec.attribute19, hr_api.g_varchar2) or
2178      nvl(per_ssl_shd.g_old_rec.attribute20, hr_api.g_varchar2) <>
2179      nvl(p_rec.attribute20, hr_api.g_varchar2)
2180 /*Added for Enhancement 4021737*/
2181      or
2182      nvl(per_ssl_shd.g_old_rec.attribute21, hr_api.g_varchar2) <>
2183      nvl(p_rec.attribute21, hr_api.g_varchar2) or
2184      nvl(per_ssl_shd.g_old_rec.attribute22, hr_api.g_varchar2) <>
2185      nvl(p_rec.attribute22, hr_api.g_varchar2) or
2186      nvl(per_ssl_shd.g_old_rec.attribute23, hr_api.g_varchar2) <>
2187      nvl(p_rec.attribute23, hr_api.g_varchar2) or
2188      nvl(per_ssl_shd.g_old_rec.attribute24, hr_api.g_varchar2) <>
2189      nvl(p_rec.attribute24, hr_api.g_varchar2) or
2190      nvl(per_ssl_shd.g_old_rec.attribute25, hr_api.g_varchar2) <>
2191      nvl(p_rec.attribute25, hr_api.g_varchar2) or
2192      nvl(per_ssl_shd.g_old_rec.attribute26, hr_api.g_varchar2) <>
2193      nvl(p_rec.attribute26, hr_api.g_varchar2) or
2194      nvl(per_ssl_shd.g_old_rec.attribute27, hr_api.g_varchar2) <>
2195      nvl(p_rec.attribute27, hr_api.g_varchar2) or
2196      nvl(per_ssl_shd.g_old_rec.attribute28, hr_api.g_varchar2) <>
2197      nvl(p_rec.attribute28, hr_api.g_varchar2) or
2198      nvl(per_ssl_shd.g_old_rec.attribute29, hr_api.g_varchar2) <>
2202 /*End Enhancement 4021737 */
2199      nvl(p_rec.attribute29, hr_api.g_varchar2) or
2200      nvl(per_ssl_shd.g_old_rec.attribute30, hr_api.g_varchar2) <>
2201      nvl(p_rec.attribute30, hr_api.g_varchar2)))
2203      or
2204      (p_rec.salary_survey_line_id is null) Then
2205     --
2206     -- Only execute the validation If absolutely necessary:
2207     -- a) During update, the structure column value or any
2208     --    of the attribute values have actually changed.
2209     -- b) During insert.
2210     --
2211     hr_dflex_utility.ins_or_upd_descflex_attribs
2212       (p_appl_short_name    => 'PER'
2213       ,p_descflex_name      => 'PER_SALARY_SURVEY_LINES'
2214       ,p_attribute_category => p_rec.attribute_category
2215       ,p_attribute1_name    => 'ATTRIBUTE1'
2216       ,p_attribute1_value   => p_rec.attribute1
2217       ,p_attribute2_name    => 'ATTRIBUTE2'
2218       ,p_attribute2_value   => p_rec.attribute2
2219       ,p_attribute3_name    => 'ATTRIBUTE3'
2220       ,p_attribute3_value   => p_rec.attribute3
2221       ,p_attribute4_name    => 'ATTRIBUTE4'
2222       ,p_attribute4_value   => p_rec.attribute4
2223       ,p_attribute5_name    => 'ATTRIBUTE5'
2224       ,p_attribute5_value   => p_rec.attribute5
2225       ,p_attribute6_name    => 'ATTRIBUTE6'
2226       ,p_attribute6_value   => p_rec.attribute6
2227       ,p_attribute7_name    => 'ATTRIBUTE7'
2228       ,p_attribute7_value   => p_rec.attribute7
2229       ,p_attribute8_name    => 'ATTRIBUTE8'
2230       ,p_attribute8_value   => p_rec.attribute8
2231       ,p_attribute9_name    => 'ATTRIBUTE9'
2232       ,p_attribute9_value   => p_rec.attribute9
2233       ,p_attribute10_name   => 'ATTRIBUTE10'
2234       ,p_attribute10_value  => p_rec.attribute10
2235       ,p_attribute11_name   => 'ATTRIBUTE11'
2236       ,p_attribute11_value  => p_rec.attribute11
2237       ,p_attribute12_name   => 'ATTRIBUTE12'
2238       ,p_attribute12_value  => p_rec.attribute12
2239       ,p_attribute13_name   => 'ATTRIBUTE13'
2240       ,p_attribute13_value  => p_rec.attribute13
2241       ,p_attribute14_name   => 'ATTRIBUTE14'
2242       ,p_attribute14_value  => p_rec.attribute14
2243       ,p_attribute15_name   => 'ATTRIBUTE15'
2244       ,p_attribute15_value  => p_rec.attribute15
2245       ,p_attribute16_name   => 'ATTRIBUTE16'
2246       ,p_attribute16_value  => p_rec.attribute16
2247       ,p_attribute17_name   => 'ATTRIBUTE17'
2248       ,p_attribute17_value  => p_rec.attribute17
2249       ,p_attribute18_name   => 'ATTRIBUTE18'
2250       ,p_attribute18_value  => p_rec.attribute18
2251       ,p_attribute19_name   => 'ATTRIBUTE19'
2252       ,p_attribute19_value  => p_rec.attribute19
2253       ,p_attribute20_name   => 'ATTRIBUTE20'
2254       ,p_attribute20_value  => p_rec.attribute20
2255 /*Added for Enhancement 4021737 */
2256       ,p_attribute21_name   => 'ATTRIBUTE21'
2257       ,p_attribute21_value  => p_rec.attribute21
2258       ,p_attribute22_name   => 'ATTRIBUTE22'
2259       ,p_attribute22_value  => p_rec.attribute22
2260       ,p_attribute23_name   => 'ATTRIBUTE23'
2261       ,p_attribute23_value  => p_rec.attribute23
2262       ,p_attribute24_name   => 'ATTRIBUTE24'
2263       ,p_attribute24_value  => p_rec.attribute24
2264       ,p_attribute25_name   => 'ATTRIBUTE25'
2265       ,p_attribute25_value  => p_rec.attribute25
2266       ,p_attribute26_name   => 'ATTRIBUTE26'
2267       ,p_attribute26_value  => p_rec.attribute26
2268       ,p_attribute27_name   => 'ATTRIBUTE27'
2269       ,p_attribute27_value  => p_rec.attribute27
2270       ,p_attribute28_name   => 'ATTRIBUTE28'
2271       ,p_attribute28_value  => p_rec.attribute28
2272       ,p_attribute29_name   => 'ATTRIBUTE29'
2273       ,p_attribute29_value  => p_rec.attribute29
2274       ,p_attribute30_name   => 'ATTRIBUTE30'
2275       ,p_attribute30_value  => p_rec.attribute30
2276 /*End Enhancement 4021737 */
2277       );
2278   End If;
2279   --
2280   hr_utility.set_location(' Leaving:'||l_proc, 20);
2281 End chk_df;
2282 --
2283 -- ----------------------------------------------------------------------------
2284 -- |---------------------------< insert_validate >----------------------------|
2285 -- ----------------------------------------------------------------------------
2286 Procedure insert_validate(p_rec            in per_ssl_shd.g_rec_type,
2287                           p_effective_date in date) is
2288 --
2289   l_proc  varchar2(72) := g_package||'insert_validate';
2290 --
2291 Begin
2292   hr_utility.set_location('Entering:'||l_proc, 5);
2293   --
2294   -- Call all supporting business operations
2295   --
2296   --  Check salary_survey_line_id.
2297   --
2298   chk_salary_survey_line_id
2299   (p_salary_survey_line_id  => p_rec.salary_survey_line_id
2300    ,p_object_version_number => p_rec.object_version_number);
2301   --
2302   hr_utility.set_location(l_proc, 10);
2303   --
2304   --  Check SALARY_SURVEY_ID.
2305   --
2306   chk_salary_survey_id
2307   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2308   ,p_salary_survey_id      => p_rec.salary_survey_id
2309   ,p_object_version_number => p_rec.object_version_number);
2310   --
2311   hr_utility.set_location(l_proc, 15);
2312   --
2313   --  Check survey_job_name_code.
2314   --
2315   chk_survey_job_name_code
2316  (p_salary_survey_line_id => p_rec.salary_survey_line_id
2317  ,p_object_version_number  => p_rec.object_version_number
2321   --
2318  ,p_salary_survey_id      => p_rec.salary_survey_id
2319  ,p_survey_job_name_code   => p_rec.survey_job_name_code
2320  ,p_effective_date         => p_effective_date);
2322   hr_utility.set_location(l_proc, 20);
2323   --
2324   --  Check survey_region_code.
2325   --
2326   chk_survey_region_code
2327  (p_salary_survey_line_id => p_rec.salary_survey_line_id
2328  ,p_object_version_number  => p_rec.object_version_number
2329  ,p_salary_survey_id      => p_rec.salary_survey_id
2330  ,p_survey_region_code     => p_rec.survey_region_code
2331  ,p_effective_date         => p_effective_date);
2332   --
2333   hr_utility.set_location(l_proc, 25);
2334   --
2335   --  Check survey_seniority_code.
2336   --
2337   chk_survey_seniority_code
2338  (p_salary_survey_line_id => p_rec.salary_survey_line_id
2339  ,p_object_version_number  => p_rec.object_version_number
2340  ,p_salary_survey_id      => p_rec.salary_survey_id
2341  ,p_survey_seniority_code  => p_rec.survey_seniority_code
2342  ,p_effective_date         => p_effective_date);
2343   --
2344   hr_utility.set_location(l_proc, 30);
2345   --
2346   --  Check company_size_code.
2347   --
2348   chk_company_size_code
2349   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2350   ,p_object_version_number  => p_rec.object_version_number
2351   ,p_salary_survey_id      => p_rec.salary_survey_id
2352   ,p_company_size_code      => p_rec.company_size_code
2353   ,p_effective_date         => p_effective_date);
2354   --
2355   hr_utility.set_location(l_proc, 35);
2356   --
2357   --  Check industry_code.
2358   --
2359   chk_industry_code
2360   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2361   ,p_object_version_number  => p_rec.object_version_number
2362   ,p_salary_survey_id      => p_rec.salary_survey_id
2363   ,p_industry_code          => p_rec.industry_code
2364   ,p_effective_date         => p_effective_date);
2365   --
2366   hr_utility.set_location(l_proc, 40);
2367   --
2368   --  Check survey_age_code.
2369   --
2370   chk_survey_age_code
2371   (p_salary_survey_line_id  => p_rec.salary_survey_line_id
2372   ,p_object_version_number  => p_rec.object_version_number
2373   ,p_salary_survey_id      => p_rec.salary_survey_id
2374   ,p_survey_age_code        => p_rec.survey_age_code
2375   ,p_effective_date         => p_effective_date);
2376   --
2377   hr_utility.set_location(l_proc, 43);
2378   --
2379   --  Check stck_display_type_code.
2380   --
2381   chk_stock_display_type_code
2382  (p_salary_survey_line_id => p_rec.salary_survey_line_id
2383  ,p_object_version_number  => p_rec.object_version_number
2384  ,p_stock_display_type_code   => p_rec.stock_display_type
2385  ,p_effective_date         => p_effective_date);
2386   --
2387   hr_utility.set_location(l_proc, 20);
2388   --
2389   --
2390   --  Check start_date and end_date
2391   --
2392   chk_dates
2393   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2394   ,p_start_date             => p_rec.start_date
2395   ,p_end_date               => p_rec.end_date);
2396   --
2397   hr_utility.set_location(l_proc, 45);
2398   --
2399   --  Check all Unique Key columns.
2400   --
2401   chk_unique_key
2402  (p_salary_survey_line_id  => p_rec.salary_survey_line_id
2403  ,p_object_version_number  => p_rec.object_version_number
2404  ,p_salary_survey_id       => p_rec.salary_survey_id
2405  ,p_survey_job_name_code   => p_rec.survey_job_name_code
2406  ,p_survey_region_code     => p_rec.survey_region_code
2407  ,p_survey_seniority_code  => p_rec.survey_seniority_code
2408  ,p_company_size_code      => p_rec.company_size_code
2409  ,p_industry_code          => p_rec.industry_code
2410  ,p_survey_age_code        => p_rec.survey_age_code
2411  ,p_start_date             => p_rec.start_date
2412  ,p_end_date               => p_rec.end_date);
2413   --
2414   hr_utility.set_location(l_proc, 50);
2415   --
2416   chk_salary_figures
2417  (p_salary_survey_line_id      => p_rec.salary_survey_line_id
2418  ,p_object_version_number      => p_rec.object_version_number
2419  ,p_currency_code              => p_rec.currency_code
2420  ,p_minimum_pay                => p_rec.minimum_pay
2421  ,p_mean_pay                   => p_rec.mean_pay
2422  ,p_maximum_pay                => p_rec.maximum_pay
2423  ,p_graduate_pay               => p_rec.graduate_pay
2424  ,p_starting_pay               => p_rec.starting_pay
2425  ,p_percentage_change          => p_rec.percentage_change
2426  ,p_job_first_quartile         => p_rec.job_first_quartile
2427  ,p_job_median_quartile        => p_rec.job_median_quartile
2428  ,p_job_third_quartile         => p_rec.job_third_quartile
2429  ,p_job_fourth_quartile        => p_rec.job_fourth_quartile
2430  ,p_minimum_total_compensation => p_rec.minimum_total_compensation
2431  ,p_mean_total_compensation    => p_rec.mean_total_compensation
2432  ,p_maximum_total_compensation => p_rec.maximum_total_compensation
2433  ,p_compnstn_first_quartile    => p_rec.compnstn_first_quartile
2434  ,p_compnstn_median_quartile   => p_rec.compnstn_median_quartile
2435  ,p_compnstn_third_quartile    => p_rec.compnstn_third_quartile
2436  ,p_compnstn_fourth_quartile   => p_rec.compnstn_fourth_quartile
2437  );
2438   --
2439   hr_utility.set_location(l_proc, 55);
2440   --
2441   chk_currency_code
2442   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2443   ,p_currency_code         => p_rec.currency_code
2447   -- Call descriptive flexfield validation routines
2444   );
2445   --
2446   hr_utility.set_location(l_proc, 60);
2448   --
2449   per_ssl_bus.chk_df(p_rec => p_rec);
2450   --
2451   hr_utility.set_location(' Leaving:'||l_proc, 65);
2452   --
2453 End insert_validate;
2454 --
2455 -- ----------------------------------------------------------------------------
2456 -- |---------------------------< update_validate >----------------------------|
2457 -- ----------------------------------------------------------------------------
2458 Procedure update_validate(p_rec            in per_ssl_shd.g_rec_type,
2459                           p_effective_date in date) is
2460 --
2461   l_proc  varchar2(72) := g_package||'update_validate';
2462 --
2463 Begin
2464   --
2465   hr_utility.set_location('Entering:'||l_proc, 5);
2466   --
2467   --   Check for non updateable arguments.
2468   --
2469   chk_non_updateable_args
2470     (p_rec => p_rec
2471     ,p_effective_date => p_effective_date
2472     );
2473   --
2474   hr_utility.set_location(l_proc, 7);
2475   --
2476   --
2477   --  Check salary_survey_line_id.
2478   --
2479   chk_salary_survey_line_id
2480  (p_salary_survey_line_id => p_rec.salary_survey_line_id
2481  ,p_object_version_number    => p_rec.object_version_number);
2482   --
2483   hr_utility.set_location(l_proc, 10);
2484   --
2485   --  Check job_name_code.
2486   --
2487   chk_survey_job_name_code
2488   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2489   ,p_object_version_number  => p_rec.object_version_number
2490   ,p_salary_survey_id      => p_rec.salary_survey_id
2491   ,p_survey_job_name_code   => p_rec.survey_job_name_code
2492   ,p_effective_date         => p_effective_date);
2493   --
2494   hr_utility.set_location(l_proc, 20);
2495   --
2496   --
2497   --  Check survey_region_code.
2498   --
2499   chk_survey_region_code
2500   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2501   ,p_object_version_number  => p_rec.object_version_number
2502   ,p_salary_survey_id      => p_rec.salary_survey_id
2503   ,p_survey_region_code     => p_rec.survey_region_code
2504   ,p_effective_date         => p_effective_date);
2505   --
2506   hr_utility.set_location(l_proc, 25);
2507   --
2508   --  Check survey_seniority_code.
2509   --
2510   chk_survey_seniority_code
2511   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2512   ,p_object_version_number  => p_rec.object_version_number
2513   ,p_salary_survey_id      => p_rec.salary_survey_id
2514   ,p_survey_seniority_code  => p_rec.survey_seniority_code
2515   ,p_effective_date         => p_effective_date);
2516   --
2517   hr_utility.set_location(l_proc, 30);
2518   --
2519   --  Check company_size_code.
2520   --
2521   chk_company_size_code
2522  (p_salary_survey_line_id => p_rec.salary_survey_line_id
2523  ,p_object_version_number  => p_rec.object_version_number
2524  ,p_salary_survey_id      => p_rec.salary_survey_id
2525  ,p_company_size_code      => p_rec.company_size_code
2526  ,p_effective_date         => p_effective_date);
2527   --
2528   hr_utility.set_location(l_proc, 35);
2529   --
2530   chk_industry_code
2531   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2532   ,p_object_version_number  => p_rec.object_version_number
2533   ,p_salary_survey_id      => p_rec.salary_survey_id
2534   ,p_industry_code          => p_rec.industry_code
2535   ,p_effective_date         => p_effective_date);
2536   --
2537   hr_utility.set_location(l_proc, 40);
2538   --
2539   --  Check survey_age_code.
2540   --
2541   chk_survey_age_code
2542   (p_salary_survey_line_id  => p_rec.salary_survey_line_id
2543   ,p_object_version_number  => p_rec.object_version_number
2544   ,p_salary_survey_id      => p_rec.salary_survey_id
2545   ,p_survey_age_code        => p_rec.survey_age_code
2546   ,p_effective_date         => p_effective_date);
2547   --
2548   hr_utility.set_location(l_proc, 43);
2549   --
2550   -- Check Stock Display Type Code
2551   --
2552   chk_stock_display_type_code
2553  (p_salary_survey_line_id => p_rec.salary_survey_line_id
2554  ,p_object_version_number  => p_rec.object_version_number
2555  ,p_stock_display_type_code   => p_rec.stock_display_type
2556  ,p_effective_date         => p_effective_date);
2557   --
2558   -- Check start_date and end_date.
2559   --
2560   chk_dates
2561   (p_salary_survey_line_id  => p_rec.salary_survey_line_id
2562   ,p_start_date             => p_rec.start_date
2563   ,p_end_date               => p_rec.end_date);
2564   --
2565   hr_utility.set_location(l_proc, 45);
2566   --
2567   --  Check all Unique Key columns.
2568   --
2569   chk_unique_key
2570  (p_salary_survey_line_id  => p_rec.salary_survey_line_id
2571  ,p_object_version_number  => p_rec.object_version_number
2572  ,p_salary_survey_id       => p_rec.salary_survey_id
2573  ,p_survey_job_name_code   => p_rec.survey_job_name_code
2574  ,p_survey_region_code     => p_rec.survey_region_code
2575  ,p_survey_seniority_code  => p_rec.survey_seniority_code
2576  ,p_company_size_code      => p_rec.company_size_code
2577  ,p_industry_code          => p_rec.industry_code
2578  ,p_survey_age_code        => p_rec.survey_age_code
2579  ,p_start_date             => p_rec.start_date
2580  ,p_end_date               => p_rec.end_date);
2581   --
2582   hr_utility.set_location(l_proc, 50);
2583   --
2584  chk_salary_figures
2585 (p_salary_survey_line_id       => p_rec.salary_survey_line_id
2586  ,p_object_version_number      => p_rec.object_version_number
2587  ,p_currency_code              => p_rec.currency_code
2588  ,p_minimum_pay                => p_rec.minimum_pay
2589  ,p_mean_pay                   => p_rec.mean_pay
2590  ,p_maximum_pay                => p_rec.maximum_pay
2591  ,p_graduate_pay               => p_rec.graduate_pay
2592  ,p_starting_pay               => p_rec.starting_pay
2593  ,p_percentage_change          => p_rec.percentage_change
2594  ,p_job_first_quartile         => p_rec.job_first_quartile
2595  ,p_job_median_quartile        => p_rec.job_median_quartile
2596  ,p_job_third_quartile         => p_rec.job_third_quartile
2597  ,p_job_fourth_quartile        => p_rec.job_fourth_quartile
2598  ,p_minimum_total_compensation => p_rec.minimum_total_compensation
2599  ,p_mean_total_compensation    => p_rec.mean_total_compensation
2600  ,p_maximum_total_compensation => p_rec.maximum_total_compensation
2601  ,p_compnstn_first_quartile    => p_rec.compnstn_first_quartile
2602  ,p_compnstn_median_quartile   => p_rec.compnstn_median_quartile
2603  ,p_compnstn_third_quartile    => p_rec.compnstn_third_quartile
2604  ,p_compnstn_fourth_quartile   => p_rec.compnstn_fourth_quartile
2605  );
2606   --
2607   hr_utility.set_location(l_proc, 55);
2608   --
2609   chk_currency_code
2610   (p_salary_survey_line_id => p_rec.salary_survey_line_id
2611   ,p_currency_code    => p_rec.currency_code
2612   );
2613   --
2614   hr_utility.set_location(l_proc, 60);
2615   --
2616   --  -- Call descriptive flexfield validation routines
2617   --
2618   per_ssl_bus.chk_df(p_rec => p_rec);
2619   --
2620   hr_utility.set_location('Leaving:'||l_proc, 65);
2621   --
2622 End update_validate;
2623 --
2624 -- ----------------------------------------------------------------------------
2625 -- |---------------------------< delete_validate >----------------------------|
2626 -- ----------------------------------------------------------------------------
2627 Procedure delete_validate(p_rec in per_ssl_shd.g_rec_type) is
2628 --
2629   l_proc  varchar2(72) := g_package||'delete_validate';
2630 --
2631 Begin
2632   hr_utility.set_location('Entering:'||l_proc, 5);
2633   --
2634   -- Call all supporting business operations
2635   --
2636   --  Check that the Survey row is not mapped to a Job or Position.
2637   --
2638   chk_delete(p_salary_survey_line_id => p_rec.salary_survey_line_id);
2639   --
2640   hr_utility.set_location(' Leaving:'||l_proc, 10);
2641   --
2642 End delete_validate;
2643 --
2644 End per_ssl_bus;