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