DBA Data[Home] [Help]

PACKAGE: APPS.HR_PSF_SHD

Source


1 Package hr_psf_shd as
2 /* $Header: hrpsfrhi.pkh 120.1 2006/06/01 09:54:40 grreddy ship $ */
3 --
4 --
5 -- ----------------------------------------------------------------------------
6 -- |                    Global Record Type Specification                      |
7 -- ----------------------------------------------------------------------------
8 --
9 g_debug boolean := hr_utility.debug_enabled;
10 
11 Type g_rec_type Is Record
12   (
13   position_id                       number(15),
14   effective_start_date              date,
15   effective_end_date                date,
16   availability_status_id            number(15),
17   business_group_id                 number(15),
18   entry_step_id                     number(15),
19   entry_grade_rule_id               number(15),
20   job_id                            number(15),
21   location_id                       number(15),
22   organization_id                   number(15),
23   pay_freq_payroll_id               number(15),
24   position_definition_id            number(15),
25   position_transaction_id           number(15),
26   prior_position_id                 number(15),
27   relief_position_id                number(15),
28   entry_grade_id                    number(15),
29   successor_position_id             number(15),
30   supervisor_position_id            number(15),
31   amendment_date                    date,
32   amendment_recommendation          varchar2(2000),
33   amendment_ref_number              varchar2(30),
34   bargaining_unit_cd                varchar2(30),
35   comments                          varchar2(2000),   -- pseudo column
36   current_job_prop_end_date         date,
37   current_org_prop_end_date         date,
38   avail_status_prop_end_date        date,
39   date_effective                    date,
40   date_end                          date,
41   earliest_hire_date                date,
42   fill_by_date                      date,
43   frequency                         varchar2(30),
44   fte                               number(11,2),      -- Increased length
45   max_persons                       number(9),        -- Increased length
46   name                              varchar2(240),
47   overlap_period                    number(22,2),
48   overlap_unit_cd                   varchar2(30),
49   pay_term_end_day_cd               varchar2(30),
50   pay_term_end_month_cd             varchar2(30),
51   permanent_temporary_flag          varchar2(30),
52   permit_recruitment_flag           varchar2(30),
53   position_type                     varchar2(30),
54   posting_description               varchar2(2000),
55   probation_period                  number(22,2),
56   probation_period_unit_cd          varchar2(30),
57   replacement_required_flag         varchar2(30),
58   review_flag                       varchar2(30),
59   seasonal_flag                     varchar2(30),
60   security_requirements             varchar2(2000),
61   status                            varchar2(30),
62   term_start_day_cd                 varchar2(30),
63   term_start_month_cd               varchar2(30),
64   time_normal_finish                varchar2(9),      -- Increased length
65   time_normal_start                 varchar2(9),      -- Increased length
66   update_source_cd                  varchar2(30),
67   working_hours                     number(22,3),
68   works_council_approval_flag       varchar2(30),
69   work_period_type_cd               varchar2(30),
70   work_term_end_day_cd              varchar2(30),
71   work_term_end_month_cd            varchar2(30),
72   proposed_fte_for_layoff           number(11,2),    -- Increased
73   proposed_date_for_layoff          date,
74   pay_basis_id                      number(11,2),    -- Increased
75   supervisor_id                     number(11,2),    -- Increased
76   copied_to_old_table_flag          varchar2(30),
77   information1                      varchar2(150),
78   information2                      varchar2(150),
79   information3                      varchar2(150),
80   information4                      varchar2(150),
81   information5                      varchar2(150),
82   information6                      varchar2(150),
83   information7                      varchar2(150),
84   information8                      varchar2(150),
85   information9                      varchar2(150),
86   information10                     varchar2(150),
87   information11                     varchar2(150),
88   information12                     varchar2(150),
89   information13                     varchar2(150),
90   information14                     varchar2(150),
91   information15                     varchar2(150),
92   information16                     varchar2(150),
93   information17                     varchar2(150),
94   information18                     varchar2(150),
95   information19                     varchar2(150),
96   information20                     varchar2(150),
97   information21                     varchar2(150),
98   information22                     varchar2(150),
99   information23                     varchar2(150),
100   information24                     varchar2(150),
101   information25                     varchar2(150),
102   information26                     varchar2(150),
103   information27                     varchar2(150),
104   information28                     varchar2(150),
105   information29                     varchar2(150),
106   information30                     varchar2(150),
107   information_category              varchar2(30),
108   attribute1                        varchar2(150),
109   attribute2                        varchar2(150),
110   attribute3                        varchar2(150),
111   attribute4                        varchar2(150),
112   attribute5                        varchar2(150),
113   attribute6                        varchar2(150),
114   attribute7                        varchar2(150),
115   attribute8                        varchar2(150),
116   attribute9                        varchar2(150),
117   attribute10                       varchar2(150),
118   attribute11                       varchar2(150),
119   attribute12                       varchar2(150),
120   attribute13                       varchar2(150),
121   attribute14                       varchar2(150),
122   attribute15                       varchar2(150),
123   attribute16                       varchar2(150),
124   attribute17                       varchar2(150),
125   attribute18                       varchar2(150),
126   attribute19                       varchar2(150),
127   attribute20                       varchar2(150),
128   attribute21                       varchar2(150),
129   attribute22                       varchar2(150),
130   attribute23                       varchar2(150),
131   attribute24                       varchar2(150),
132   attribute25                       varchar2(150),
133   attribute26                       varchar2(150),
134   attribute27                       varchar2(150),
135   attribute28                       varchar2(150),
136   attribute29                       varchar2(150),
137   attribute30                       varchar2(150),
138   attribute_category                varchar2(30),
139   request_id                        number(15),
140   program_application_id            number(15),
141   program_id                        number(15),
142   program_update_date               date,
143   object_version_number             number(9),
144   security_profile_id          number(15)
145   );
146 --
147 -- ----------------------------------------------------------------------------
148 -- |           Global Definitions - Internal Development Use Only             |
149 -- ----------------------------------------------------------------------------
150 --
151 g_old_rec  g_rec_type;                            -- Global record definition
152 --
153 function get_availability_status(p_availability_status_id number
154                                 ,p_business_group_id      number)
155 return varchar2 ;
156 --
157 procedure get_position_job_org(p_position_id number,
158                                p_effective_date date  default sysdate,
159                                p_job_id  out nocopy number,
160                                p_organization_id out nocopy number
161                                );
162 --
163 --
164 function SYSTEM_AVAILABILITY_STATUS (
165          p_availability_status_id      number) return varchar2;
166 --
167 -- ----------------------------------------------------------------------------
168 -- |-------------------------< position_wf_sync >-----------------------------|
169 -- ----------------------------------------------------------------------------
170 --
171 procedure position_wf_sync(p_position_id number, p_effective_date date);
172 --
173 -- ----------------------------------------------------------------------------
174 -- |---------------------------< my_synch_routine >---------------------------|
175 -- ----------------------------------------------------------------------------
176 --
177 procedure my_synch_routine(mykey in varchar2);
178 --
179 --
180 -- ----------------------------------------------------------------------------
181 -- |---------------------------< constraint_error >---------------------------|
182 -- ----------------------------------------------------------------------------
183 -- {Start Of Comments}
184 --
185 -- Description:
186 --   This procedure is called when a constraint has been violated (i.e.
187 --   The exception hr_api.check_integrity_violated,
188 --   hr_api.parent_integrity_violated, hr_api.child_integrity_violated or
189 --   hr_api.unique_integrity_violated has been raised).
190 --   The exceptions can only be raised as follows:
191 --   1) A check constraint can only be violated during an INSERT or UPDATE
192 --      dml operation.
193 --   2) A parent integrity constraint can only be violated during an
194 --      INSERT or UPDATE dml operation.
195 --   3) A child integrity constraint can only be violated during an
196 --      DELETE dml operation.
197 --   4) A unique integrity constraint can only be violated during INSERT or
198 --      UPDATE dml operation.
199 --
200 -- Prerequisites:
201 --   1) Either hr_api.check_integrity_violated,
202 --      hr_api.parent_integrity_violated, hr_api.child_integrity_violated or
203 --      hr_api.unique_integrity_violated has been raised with the subsequent
204 --      stripping of the constraint name from the generated error message
205 --      text.
206 --   2) Standalone validation test which corresponds with a constraint error.
207 --
208 -- In Parameter:
209 --   p_constraint_name is in upper format and is just the constraint name
210 --   (e.g. not prefixed by brackets, schema owner etc).
211 --
212 -- Post Success:
213 --   Development dependant.
214 --
215 -- Post Failure:
216 --   Developement dependant.
217 --
218 -- Developer Implementation Notes:
219 --   For each constraint being checked the hr system package failure message
220 --   has been generated as a template only. These system error messages should
221 --   be modified as required (i.e. change the system failure message to a user
222 --   friendly defined error message).
223 --
224 -- Access Status:
225 --   Internal Development Use Only.
226 --
227 -- {End Of Comments}
228 -- ----------------------------------------------------------------------------
229 Procedure constraint_error
230             (p_constraint_name in all_constraints.constraint_name%TYPE);
231 --
232 -- ----------------------------------------------------------------------------
233 -- |-----------------------------< api_updating >-----------------------------|
234 -- ----------------------------------------------------------------------------
235 -- {Start Of Comments}
236 --
237 -- Description:
238 --   This function is used to populate the g_old_rec record with the current
239 --   row from the database for the specified primary key provided that the
240 --   primary key exists, and is valid, and does not already match the current
241 --   g_old_rec.
242 --   The function will always return a TRUE value if the g_old_rec is
243 --   populated with the current row. A FALSE value will be returned if all of
244 --   the primary key arguments are null.
245 --
246 -- Prerequisites:
247 --   None.
248 --
249 -- In Parameters:
250 --
251 -- Post Success:
252 --   A value of TRUE will be returned indiciating that the g_old_rec is
253 --   current.
254 --   A value of FALSE will be returned if all of the primary key arguments
255 --   have a null value (this indicates that the row has not be inserted into
256 --   the Schema), and therefore could never have a corresponding row.
257 --
258 -- Post Failure:
259 --   A failure can only occur under two circumstances:
260 --   1) The primary key is invalid (i.e. a row does not exist for the
261 --      specified primary key values).
262 --   2) If an object_version_number exists but is NOT the same as the current
263 --      g_old_rec value.
264 --
265 -- Developer Implementation Notes:
266 --   None.
267 --
268 -- Access Status:
269 --   Internal Development Use Only.
270 --
271 -- {End Of Comments}
272 -- ----------------------------------------------------------------------------
273 Function api_updating
274   (p_effective_date     in date,
275    p_position_id     in number,
276    p_object_version_number in number
277   ) Return Boolean;
278 --
279 -- ----------------------------------------------------------------------------
280 -- |--------------------------< find_dt_del_modes >---------------------------|
281 -- ----------------------------------------------------------------------------
282 -- {Start Of Comments}
283 --
284 -- Description:
285 --   This procedure is used to determine what datetrack delete modes are
286 --   allowed as of the effective date for this entity. The procedure will
287 --   return a corresponding Boolean value for each of the delete modes
288 --   available where TRUE indicates that the corresponding delete mode is
289 --   available.
290 --
291 -- Prerequisites:
292 --   None.
293 --
294 -- In Parameters:
295 --   p_effective_date
296 --     Specifies the date at which the datetrack modes will be operated on.
297 --   p_base_key_value
298 --     Specifies the primary key value for this datetrack entity.
299 --     (E.g. For this entity the assignment of the argument would be:
300 --           p_base_key_value = :position_id).
301 --
302 -- Post Success:
303 --   Processing continues.
304 --
305 -- Post Failure:
306 --   Failure might occur if for the specified effective date and primary key
307 --   value a row doesn't exist.
308 --
309 -- Developer Implementation Notes:
310 --   This procedure could require changes if this entity has any sepcific
311 --   delete restrictions.
312 --   For example, this entity might disallow the datetrack delete mode of
316 -- Access Status:
313 --   ZAP. To implement this you would have to set and return a Boolean value
314 --   of FALSE after the call to the dt_api.find_dt_del_modes procedure.
315 --
317 --   Internal Development Use Only.
318 --
319 -- {End Of Comments}
320 -- ----------------------------------------------------------------------------
321 Procedure find_dt_del_modes
322    (p_effective_date in  date,
323     p_base_key_value in  number,
324     p_zap       out nocopy boolean,
325     p_delete    out nocopy boolean,
326     p_future_change out nocopy boolean,
327     p_delete_next_change out nocopy boolean);
328 --
329 -- ----------------------------------------------------------------------------
330 -- |--------------------------< find_dt_upd_modes >---------------------------|
331 -- ----------------------------------------------------------------------------
332 -- {Start Of Comments}
333 --
334 -- Description:
335 --   This procedure is used to determine what datetrack update modes are
336 --   allowed as of the effective date for this entity. The procedure will
337 --   return a corresponding Boolean value for each of the update modes
338 --   available where TRUE indicates that the corresponding update mode
339 --   is available.
340 --
341 -- Prerequisites:
342 --   None.
343 --
344 -- In Parameters:
345 --   p_effective_date
346 --     Specifies the date at which the datetrack modes will be operated on.
347 --   p_base_key_value
348 --     Specifies the primary key value for this datetrack entity.
349 --     (E.g. For this entity the assignment of the argument would be:
350 --           p_base_key_value = :position_id).
351 --
352 -- Post Success:
353 --   Processing continues.
354 --
355 -- Post Failure:
356 --   Failure might occur if for the specified effective date and primary key
357 --   value a row doesn't exist.
358 --
359 -- Developer Implementation Notes:
360 --   This procedure could require changes if this entity has any sepcific
361 --   delete restrictions.
362 --   For example, this entity might disallow the datetrack update mode of
363 --   UPDATE. To implement this you would have to set and return a Boolean
364 --   value of FALSE after the call to the dt_api.find_dt_upd_modes procedure.
365 --
366 -- Access Status:
367 --   Internal Development Use Only.
368 --
369 -- {End Of Comments}
370 -- ----------------------------------------------------------------------------
371 Procedure find_dt_upd_modes
372    (p_effective_date in  date,
373     p_base_key_value in  number,
374     p_correction   out nocopy boolean,
375     p_update    out nocopy boolean,
376     p_update_override out nocopy boolean,
377     p_update_change_insert out nocopy boolean);
378 --
379 -- ----------------------------------------------------------------------------
380 -- |------------------------< upd_effective_end_date >------------------------|
381 -- ----------------------------------------------------------------------------
382 -- {Start Of Comments}
383 --
384 -- Description:
385 --   This procedure will update the specified datetrack row with the
386 --   specified new effective end date. The object version number is also
387 --   set to the next object version number. DateTrack modes which call
388 --   this procedure are: UPDATE, UPDATE_CHANGE_INSERT,
389 --   UPDATE_OVERRIDE, DELETE, FUTURE_CHANGE and DELETE_NEXT_CHANGE.
390 --   This is an internal datetrack maintenance procedure which should
391 --   not be modified in anyway.
392 --
393 -- Prerequisites:
394 --   None.
395 --
396 -- In Parameters:
397 --   p_new_effective_end_date
398 --     Specifies the new effective end date which will be set for the
399 --     row as of the effective date.
400 --   p_base_key_value
401 --     Specifies the primary key value for this datetrack entity.
402 --     (E.g. For this entity the assignment of the argument would be:
403 --           p_base_key_value = :position_id).
404 --
405 -- Post Success:
406 --   The specified row will be updated with the new effective end date and
407 --   object_version_number.
408 --
409 -- Post Failure:
410 --   Failure might occur if for the specified effective date and primary key
411 --   value a row doesn't exist.
412 --
413 -- Developer Implementation Notes:
414 --   This is an internal datetrack maintenance procedure which should
415 --   not be modified in anyway.
416 --
417 -- Access Status:
418 --   Internal Row Handler Use Only.
419 --
420 -- {End Of Comments}
421 -- ----------------------------------------------------------------------------
422 Procedure upd_effective_end_date
423    (p_effective_date    in date,
424     p_base_key_value    in number,
425     p_new_effective_end_date  in date,
426     p_validation_start_date   in date,
427     p_validation_end_date     in date,
428          p_object_version_number       out nocopy number);
429 --
430 -- ----------------------------------------------------------------------------
431 -- |---------------------------------< lck >----------------------------------|
432 -- ----------------------------------------------------------------------------
433 -- {Start Of Comments}
434 --
435 -- Description:
436 --   The Lck process for datetrack is complicated and comprises of the
437 --   following processing
438 --   The processing steps are as follows:
442 --   3) The datetrack mode is then validated to ensure the operation is
439 --   1) The row to be updated or deleted must be locked.
440 --      By locking this row, the g_old_rec record data type is populated.
441 --   2) If a comment exists the text is selected from hr_comments.
443 --      valid. If the mode is valid the validation start and end dates for
444 --      the mode will be derived and returned. Any required locking is
445 --      completed when the datetrack mode is validated.
446 --
447 -- Prerequisites:
448 --   When attempting to call the lck procedure the object version number,
449 --   primary key, effective date and datetrack mode must be specified.
450 --
451 -- In Parameters:
452 --   p_effective_date
453 --     Specifies the date of the datetrack update operation.
454 --   p_datetrack_mode
455 --     Determines the datetrack update or delete mode.
456 --
457 -- Post Success:
458 --   On successful completion of the Lck process the row to be updated or
459 --   deleted will be locked and selected into the global data structure
460 --   g_old_rec.
461 --
462 -- Post Failure:
463 --   The Lck process can fail for three reasons:
464 --   1) When attempting to lock the row the row could already be locked by
465 --      another user. This will raise the HR_Api.Object_Locked exception.
466 --   2) The row which is required to be locked doesn't exist in the HR Schema.
467 --      This error is trapped and reported using the message name
468 --      'HR_7220_INVALID_PRIMARY_KEY'.
469 --   3) The row although existing in the HR Schema has a different object
470 --      version number than the object version number specified.
471 --      This error is trapped and reported using the message name
472 --      'HR_7155_OBJECT_INVALID'.
473 --
474 -- Developer Implementation Notes:
475 --   None.
476 --
477 -- Access Status:
478 --   Internal Development Use Only.
479 --
480 -- {End Of Comments}
481 -- ----------------------------------------------------------------------------
482 Procedure lck
483    (p_effective_date  in  date,
484     p_datetrack_mode  in  varchar2,
485     p_position_id  in  number,
486     p_object_version_number in  number,
487     p_validation_start_date out nocopy date,
488     p_validation_end_date   out nocopy date);
489 --
490 -- ----------------------------------------------------------------------------
491 -- |-----------------------------< convert_args >-----------------------------|
492 -- ----------------------------------------------------------------------------
493 -- {Start Of Comments}
494 --
495 -- Description:
496 --   This function is used to turn attribute parameters into the record
497 --   structure parameter g_rec_type.
498 --
499 -- Prerequisites:
500 --   This is a private function and can only be called from the ins or upd
501 --   attribute processes.
502 --
503 -- In Parameters:
504 --
505 -- Post Success:
506 --   A returning record structure will be returned.
507 --
508 -- Post Failure:
509 --   No direct error handling is required within this function. Any possible
510 --   errors within this function will be a PL/SQL value error due to conversion
511 --   of datatypes or data lengths.
512 --
513 -- Developer Implementation Notes:
514 --   None.
515 --
516 -- Access Status:
517 --   Internal Row Handler Use Only.
518 --
519 -- {End Of Comments}
520 -- ----------------------------------------------------------------------------
521 Function convert_args
522    (
523    p_position_id                   in number,
524    p_effective_start_date          in date,
525    p_effective_end_date            in date,
526    p_availability_status_id        in number,
527    p_business_group_id             in number,
528    p_entry_step_id                 in number,
529    p_entry_grade_rule_id           in number,
530    p_job_id                        in number,
531    p_location_id                   in number,
532    p_organization_id               in number,
533    p_pay_freq_payroll_id           in number,
534    p_position_definition_id        in number,
535    p_position_transaction_id       in number,
536    p_prior_position_id             in number,
537    p_relief_position_id            in number,
538    p_entry_grade_id                in number,
539    p_successor_position_id         in number,
540    p_supervisor_position_id        in number,
541    p_amendment_date                in date,
542    p_amendment_recommendation      in varchar2,
543    p_amendment_ref_number          in varchar2,
544    p_bargaining_unit_cd            in varchar2,
545    p_comments                      in varchar2,
546    p_current_job_prop_end_date     in date,
547    p_current_org_prop_end_date     in date,
548    p_avail_status_prop_end_date    in date,
549    p_date_effective                in date,
550    p_date_end                      in date,
551    p_earliest_hire_date            in date,
552    p_fill_by_date                  in date,
553    p_frequency                     in varchar2,
554    p_fte                           in number,
555    p_max_persons                   in number,
556    p_name                          in varchar2,
557    p_overlap_period                in number,
558    p_overlap_unit_cd               in varchar2,
559    p_pay_term_end_day_cd           in varchar2,
560    p_pay_term_end_month_cd         in varchar2,
561    p_permanent_temporary_flag      in varchar2,
562    p_permit_recruitment_flag       in varchar2,
563    p_position_type                 in varchar2,
564    p_posting_description           in varchar2,
565    p_probation_period              in number,
566    p_probation_period_unit_cd      in varchar2,
567    p_replacement_required_flag     in varchar2,
568    p_review_flag                   in varchar2,
569    p_seasonal_flag                 in varchar2,
570    p_security_requirements         in varchar2,
571    p_status                        in varchar2,
572    p_term_start_day_cd             in varchar2,
573    p_term_start_month_cd           in varchar2,
574    p_time_normal_finish            in varchar2,
575    p_time_normal_start             in varchar2,
576    p_update_source_cd              in varchar2,
577    p_working_hours                 in number,
578    p_works_council_approval_flag   in varchar2,
579    p_work_period_type_cd           in varchar2,
580    p_work_term_end_day_cd          in varchar2,
581    p_work_term_end_month_cd        in varchar2,
582         p_proposed_fte_for_layoff       in number,
583         p_proposed_date_for_layoff      in date,
584         p_pay_basis_id                  in number,
585         p_supervisor_id                 in number,
586         p_copied_to_old_table_flag      in varchar2,
587    p_information1                  in varchar2,
588    p_information2                  in varchar2,
589    p_information3                  in varchar2,
590    p_information4                  in varchar2,
591    p_information5                  in varchar2,
592    p_information6                  in varchar2,
593    p_information7                  in varchar2,
594    p_information8                  in varchar2,
595    p_information9                  in varchar2,
596    p_information10                 in varchar2,
597    p_information11                 in varchar2,
598    p_information12                 in varchar2,
599    p_information13                 in varchar2,
600    p_information14                 in varchar2,
601    p_information15                 in varchar2,
602    p_information16                 in varchar2,
603    p_information17                 in varchar2,
604    p_information18                 in varchar2,
605    p_information19                 in varchar2,
606    p_information20                 in varchar2,
607    p_information21                 in varchar2,
608    p_information22                 in varchar2,
609    p_information23                 in varchar2,
610    p_information24                 in varchar2,
611    p_information25                 in varchar2,
612    p_information26                 in varchar2,
613    p_information27                 in varchar2,
614    p_information28                 in varchar2,
615    p_information29                 in varchar2,
616    p_information30                 in varchar2,
617    p_information_category          in varchar2,
618    p_attribute1                    in varchar2,
619    p_attribute2                    in varchar2,
620    p_attribute3                    in varchar2,
621    p_attribute4                    in varchar2,
622    p_attribute5                    in varchar2,
623    p_attribute6                    in varchar2,
624    p_attribute7                    in varchar2,
625    p_attribute8                    in varchar2,
626    p_attribute9                    in varchar2,
627    p_attribute10                   in varchar2,
628    p_attribute11                   in varchar2,
629    p_attribute12                   in varchar2,
630    p_attribute13                   in varchar2,
631    p_attribute14                   in varchar2,
632    p_attribute15                   in varchar2,
633    p_attribute16                   in varchar2,
634    p_attribute17                   in varchar2,
635    p_attribute18                   in varchar2,
636    p_attribute19                   in varchar2,
637    p_attribute20                   in varchar2,
638    p_attribute21                   in varchar2,
639    p_attribute22                   in varchar2,
640    p_attribute23                   in varchar2,
641    p_attribute24                   in varchar2,
642    p_attribute25                   in varchar2,
643    p_attribute26                   in varchar2,
644    p_attribute27                   in varchar2,
645    p_attribute28                   in varchar2,
646    p_attribute29                   in varchar2,
647    p_attribute30                   in varchar2,
648    p_attribute_category            in varchar2,
649    p_request_id                    in number,
650    p_program_application_id        in number,
651    p_program_id                    in number,
652    p_program_update_date           in date,
653    p_object_version_number         in number,
654    p_security_profile_id      in number
655    )
656    Return g_rec_type;
657 --
658 function POS_SYSTEM_AVAILABILITY_STATUS (
659          p_position_id      number,
660          p_effective_date   date) return varchar2;
661 --
662 end hr_psf_shd;