DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_PERSONAL_PAY_METHOD_API

Source


1 Package Body hr_personal_pay_method_api as
2 /* $Header: pyppmapi.pkb 120.10 2010/08/02 11:33:01 kskoduri noship $ */
3 --
4 -- Package Variables
5 --
6 g_debug boolean := hr_utility.debug_enabled;
7 g_package  varchar2(33) := 'hr_personal_pay_method_api.';
8 --
9 -- ----------------------------------------------------------------------------
10 -- |-------------------------< check_insert_legislation >-------------------------|
11 -- ----------------------------------------------------------------------------
12 --
13 -- {Start Of Comments}
14 --
15 -- Description:
16 --   This private procedure ensures that the legislation rule for the
17 --   for the personal payment method being inserted is the
18 --   of the required business process.
19 --
20 -- Prerequisites:
21 --   None.
22 --
23 -- In Parameters:
24 --   Name                           Reqd Type     Description
25 --   p_personal_payment_method_id   Yes  number   Id of personal payment
26 --                                                method being deleted.
27 --   p_effective_date               Yes  date     The session date.
28 --   p_leg_code                     Yes  varchar2 Legislation of business
29 --                                                group
30 --
31 -- Post Success:
32 --   The procedure returns control back to the calling process.
33 --
34 -- Post Failure:
35 --   The process raises an error and stops execution.
36 --
37 -- Access Status:
38 --   Private.
39 --
40 -- {End Of Comments}
41 --
42 procedure check_insert_legislation
43   (p_assignment_id          in            number
44   ,p_effective_date         in out nocopy date
45   ,p_leg_code               in            varchar2
46   ) is
47   --
48   -- Declare cursors and local variables
49   --
50   l_proc                varchar2(72);
51   l_valid               varchar2(150);
52   l_effective_date      date;
53   --
54   cursor legsel is
55     select pbg.legislation_code
56     from   per_business_groups pbg,
57            per_assignments_f   asg
58     where  pbg.business_group_id = asg.business_group_id
59     and    asg.assignment_id     = p_assignment_id
60     and    p_effective_date between asg.effective_start_date
61                             and     asg.effective_end_date;
62   --
63 begin
64   if g_debug then
65      l_proc := g_package||'chk_insert_legislation';
66      hr_utility.set_location('Entering:'|| l_proc, 5);
67   end if;
68   --
69   -- Check that p_assignment_id and p_effective_date are not null as they
70   -- are used by the cursor to validate the business group.
71   --
72   hr_api.mandatory_arg_error
73     (p_api_name       => l_proc,
74      p_argument       => 'assignment_id',
75      p_argument_value => p_assignment_id);
76   --
77   hr_api.mandatory_arg_error
78     (p_api_name       => l_proc,
79      p_argument       => 'effective_date',
80      p_argument_value => p_effective_date);
81   --
82   if g_debug then
83      hr_utility.set_location(l_proc, 6);
84   end if;
85   --
86   -- Ensure that the legislation rule for the employee assignment
87   -- business group is that of p_leg_code.
88   --
89   open legsel;
90   fetch legsel
91   into l_valid;
92   --
93   if legsel%notfound then
94     close legsel;
95     hr_utility.set_message(801, 'HR_7348_ASSIGNMENT_INVALID');
96     hr_utility.raise_error;
97   end if;
98   if legsel%found and l_valid <> p_leg_code then
99     close legsel;
100     hr_utility.set_message(801, 'HR_7898_PPM_BUS_GRP_INVALID');
101     hr_utility.raise_error;
102   end if;
103   --
104   close legsel;
105   if g_debug then
106      hr_utility.set_location(l_proc, 7);
107   end if;
108   --
109   -- Assign out parameter after truncating the date by using a local
110   -- variable.
111   --
112   l_effective_date := trunc(p_effective_date);
113   p_effective_date := l_effective_date;
114   --
115   if g_debug then
116      hr_utility.set_location('Leaving:'|| l_proc, 8);
117   end if;
118   --
119 end check_insert_legislation;
120 --
121 -- ----------------------------------------------------------------------------
122 -- |-------------------------< check_update_legislation >-------------------------|
123 -- ----------------------------------------------------------------------------
124 --
125 -- {Start Of Comments}
126 --
127 -- Description:
128 --   This private procedure ensures that the legislation rule for the
129 --   for the personal payment method being updated or deleted is the
130 --   of the required business process.
131 --
132 -- Prerequisites:
133 --   None.
134 --
135 -- In Parameters:
136 --   Name                           Reqd Type     Description
137 --   p_personal_payment_method_id   Yes  number   Id of personal payment
138 --                                                method being deleted.
139 --   p_effective_date               Yes  date     The session date.
140 --   p_leg_code                     Yes  varchar2 Legislation of business
141 --                                                group
142 --
143 -- Post Success:
144 --   The procedure returns control back to the calling process.
145 --
146 -- Post Failure:
147 --   The process raises an error and stops execution.
148 --
149 -- Access Status:
150 --   Private.
151 --
152 -- {End Of Comments}
153 --
154 procedure check_update_legislation
155   (p_personal_payment_method_id    in
156      pay_personal_payment_methods_f.personal_payment_method_id%type
157   ,p_effective_date                in     date
158   ,p_leg_code                      in varchar2
159   ) is
160   --
161   -- Declare cursors and local variables
162   --
163   l_proc                varchar2(72);
164   l_valid               varchar2(150);
165   --
166   cursor legsel is
167     select pbg.legislation_code
168     from   per_business_groups pbg,
169            pay_personal_payment_methods_f ppm
170     where  pbg.business_group_id = ppm.business_group_id
171     and    ppm.personal_payment_method_id = p_personal_payment_method_id
172     and    p_effective_date between ppm.effective_start_date
173                             and     ppm.effective_end_date;
174 --
175 begin
176   --
177   -- Ensure that the legislation rule for the employee assignment business
178   -- group is that of p_leg_code.
179   --
180   if g_debug then
181      l_proc := g_package||'check_update_legislation';
182      hr_utility.set_location('Entering:'|| l_proc, 10);
183   end if;
184   open legsel;
185   fetch legsel
186   into l_valid;
187   --
188   if legsel%notfound then
189     close legsel;
190     hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
191     hr_utility.raise_error;
192   end if;
193   if legsel%found and l_valid <> p_leg_code then
194     hr_utility.set_message(801, 'HR_7898_PPM_BUS_GRP_INVALID');
195     hr_utility.raise_error;
196   end if;
197   --
198   close legsel;
199   if g_debug then
200      hr_utility.set_location('Leaving:'|| l_proc, 20);
201   end if;
202   --
203 end check_update_legislation;
204 --
205 -- ----------------------------------------------------------------------------
206 -- |---------------------------< stamp_prenote_date >-------------------------|
207 -- ----------------------------------------------------------------------------
208 --
209 -- {Start Of Comments}
210 --
211 -- Description:
212 --   This private procedure stamps the prenote date on the external account
213 --   row for US legislation. Contains minimal validation - it's called at the
214 --   end of create_personal_pay_method and update_personal_pay_method after
215 --   the EXA and PPM row handlers will have done the validation already.
216 --
217 -- Prerequisites:
218 --   Must only be called for US territory code, and if the payment method
219 --   is for a magtape payment.
220 --
221 -- In Parameters:
222 --   Name                           Reqd Type     Description
223 --   p_personal_payment_method_id   Yes  number   Id of personal payment
224 --                                                method being created/updated.
225 --   p_effective_date               Yes  date     The session date.
226 --   p_external_account_id          Yes  number   Id of external account row.
227 --   p_external_account_ovn         Yes  number   Object version number of
228 --                                                external account row.
229 --
230 -- Post Success:
231 --   The procedure returns control back to the calling process.
232 --
233 -- Post Failure:
234 --   The process raises an error and stops execution.
235 --
236 -- Access Status:
237 --   Private.
238 --
239 -- {End Of Comments}
240 --
241 procedure stamp_prenote_date
242 (p_personal_payment_method_id in            number
243 ,p_effective_date             in            date
244 ,p_external_account_id        in            number
245 ,p_external_account_ovn       in out nocopy number
246 ) is
247 l_proc              varchar2(2000);
248 l_prenote_date      date;
249 l_new_prenote_date  date;
250 l_3rd_party_payment varchar2(2000);
251 l_prenote_allowed   varchar2(2000);
252 l_validation_days   number;
253 --
254 -- Cursor to get payment-related information (PPM->OPM direction).
255 --
256 cursor csr_payment_details
257 (p_personal_payment_method_id in number
258 ,p_effective_date             in date
259 ) is
260 select nvl(to_char(opm.defined_balance_id), 'Y') third_party
261 ,      nvl(ppt.validation_days, 0)               validation_days
262 from   pay_personal_payment_methods_f ppm
263 ,      pay_org_payment_methods_f      opm
264 ,      pay_payment_types              ppt
265 where  ppm.personal_payment_method_id = p_personal_payment_method_id
266 and    p_effective_date between
267        ppm.effective_start_date and ppm.effective_end_date
268 and    opm.org_payment_method_id = ppm.org_payment_method_id
269 and    p_effective_date between
270        opm.effective_start_date and opm.effective_end_date
271 and    ppt.payment_type_id = opm.payment_type_id
272 ;
273 --
274 -- Cursor to get payroll information (PPM->ASG->PAYROLL direction).
275 --
276 cursor csr_payroll_details
277 (p_personal_payment_method_id in number
278 ,p_effective_date             in date
279 ) is
280 select nvl(pap.prl_information3, 'Y') prenote_allowed
281 from   pay_personal_payment_methods_f ppm
282 ,      per_all_assignments_f paa
283 ,      pay_all_payrolls_f    pap
284 where  ppm.personal_payment_method_id = p_personal_payment_method_id
285 and    p_effective_date between
286        ppm.effective_start_date and ppm.effective_end_date
287 and    paa.assignment_id = ppm.assignment_id
288 and    p_effective_date between
289        paa.effective_start_date and paa.effective_end_date
290 and    pap.payroll_id = paa.payroll_id
291 and    p_effective_date between
292        pap.effective_start_date and pap.effective_end_date
293 ;
294 --
295 -- Cursor to get the current prenote date.
296 --
297 cursor csr_curr_prenote_date
298 (p_external_account_id in number
299 ) is
300 select exa.prenote_date
301 from   pay_external_accounts exa
302 where  exa.external_account_id = p_external_account_id
303 ;
304 begin
305   if g_debug then
306      l_proc := g_package || 'stamp_prenote_date';
307      hr_utility.set_location('Entering:'|| l_proc, 10);
308   end if;
309   --
310   -- Prenotification is allowed by default.
311   --
312   l_prenote_allowed := 'Y';
313   --
314   -- Get the payment-related information.
315   --
316   open csr_payment_details
317   (p_personal_payment_method_id => p_personal_payment_method_id
318   ,p_effective_date             => p_effective_date
319   );
320   fetch csr_payment_details
321   into  l_3rd_party_payment
322   ,     l_validation_days;
323   if csr_payment_details%notfound then
324     if g_debug then
325        hr_utility.set_location('Leaving (csr_payment_details):'|| l_proc, 20);
326     end if;
327     close csr_payment_details;
328     --
329     -- There must've been an invalid primary key for the query to
330     -- return no rows.
331     --
332     hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
333     hr_utility.raise_error;
334   end if;
335   close csr_payment_details;
336   --
337   -- Standard prenote date.
338   --
339   l_new_prenote_date := p_effective_date - l_validation_days;
340   --
341   -- Handle prenotification depending on payment type.
342   --
343   if l_3rd_party_payment = 'Y' then
344     --
345     -- bug1870072 requirement.
346     --
347     l_new_prenote_date := l_new_prenote_date - 1;
348     l_prenote_allowed := 'N';
349   else
350     open csr_payroll_details
351     (p_personal_payment_method_id => p_personal_payment_method_id
352     ,p_effective_date             => p_effective_date
353     );
354     fetch csr_payroll_details
355     into  l_prenote_allowed;
356     if csr_payroll_details%notfound then
357       if g_debug then
358          hr_utility.set_location('Leaving (csr_payroll_details):'|| l_proc, 30);
359       end if;
360       close csr_payroll_details;
361       --
362       -- There must've been an invalid primary key for the query to
363       -- return no rows.
364       --
365       hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
366       hr_utility.raise_error;
367     end if;
368     close csr_payroll_details;
369   end if;
370   --
371   -- Stamp the prenote date using the row handler if prenotification is not
372   -- allowed.
373   --
374   if upper(l_prenote_allowed) <> 'Y' then
375     --
376     -- This is an API call (implicit behaviour) so we should only stamp the
377     -- prenote date if it is NULL. Without this restriction, each API call
378     -- would be stamping the prenote date with a new value.
379     --
380     open csr_curr_prenote_date
381     (p_external_account_id => p_external_account_id);
382     fetch csr_curr_prenote_date
383     into  l_prenote_date;
384     if csr_curr_prenote_date%notfound then
385       if g_debug then
386          hr_utility.set_location
387          ('Leaving (csr_curr_prenote_date):'|| l_proc, 35);
388       end if;
389       close csr_curr_prenote_date;
390       --
391       -- There must've been an invalid primary key for the query to
392       -- return no rows.
393       --
394       hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
395       hr_utility.raise_error;
396     end if;
397     close csr_curr_prenote_date;
398     --
399 	-- For bug 9766116
400 	-- If the newly calculated prenote_date is less than
401 	-- the prenote_date already present in pay_external_accounts
402 	-- then updating the prenote_date with the new value
403     if l_prenote_date is null OR ( l_new_prenote_date < l_prenote_date )then
404       if g_debug then
405          hr_utility.set_location('Stamp the prenote date:'|| l_proc, 40);
406       end if;
407       pay_exa_upd.upd
408       (p_external_account_id   => p_external_account_id
409       ,p_object_version_number => p_external_account_ovn
410       ,p_territory_code        => 'US'
411       ,p_prenote_date          => l_new_prenote_date
412       ,p_validate              => false
413       );
414     end if;
415   end if;
416   if g_debug then
417      hr_utility.set_location('Leaving:'|| l_proc, 50);
418   end if;
419 end stamp_prenote_date;
420 --
421 -- ----------------------------------------------------------------------------
422 -- |---------------------------< upd_prenote_date >---------------------------|
423 -- ----------------------------------------------------------------------------
424 --
425 -- {Start Of Comments}
426 --
427 -- Description:
428 --   This procedure is used to update the prenote date in pay_external_accounts
429 --   with the value provided by the user. However the prenote date is updated
430 --   only if prenoting is allowed for the payroll(ie. prl_information3 = 'Y').
431 --
432 -- Prerequisites:
433 --   Must be called only from 'US' specific insert and update APIs.
434 --
435 -- In Parameters:
436 --   Name                           Reqd Type     Description
437 --   p_personal_payment_method_id   Yes  number   Id of personal payment
438 --                                                method being created/updated.
439 --   p_effective_date               Yes  date     The session date.
440 --   p_external_account_id          Yes  number   Id of external account row.
441 --   p_prenote_date                 Yes  date     Prenote Date that needs to
442 --                                                updated on the external
443 --                                                account row.
444 --
445 -- Post Success:
446 --   The procedure returns control back to the calling process.
447 --
448 -- Post Failure:
449 --   The process raises an error and stops execution.
450 --
451 -- Access Status:
452 --   Private.
453 --
454 -- {End Of Comments}
455 --
456 procedure upd_prenote_date
457   (p_personal_payment_method_id in number
458   ,p_external_account_id        in number
459   ,p_effective_date             in date
460   ,p_prenote_date               in date
461   ) is
462   --
463   l_proc                varchar2(72) := 'upd_prenote_date';
464   l_exa_ovn             pay_external_accounts.object_version_number%type;
465   l_prenote_allowed     pay_all_payrolls_f.prl_information3%type;
466   --
467   cursor csr_payroll_details(p_personal_payment_method_id in number
468                             ,p_effective_date             in date
469                             ) is
470     select nvl(pap.prl_information3, 'Y') prenote_allowed
471     from   pay_personal_payment_methods_f ppm
472     ,      per_all_assignments_f paa
473     ,      pay_all_payrolls_f    pap
474     where  ppm.personal_payment_method_id = p_personal_payment_method_id
475     and    p_effective_date between
476            ppm.effective_start_date and ppm.effective_end_date
477     and    paa.assignment_id = ppm.assignment_id
478     and    p_effective_date between
479            paa.effective_start_date and paa.effective_end_date
480     and    pap.payroll_id = paa.payroll_id
481     and    p_effective_date between
482            pap.effective_start_date and pap.effective_end_date;
483   --
484   cursor csr_exa_ovn(p_external_account_id in number) is
485     select pea.object_version_number
486     from   pay_external_accounts pea
487     where  pea.external_account_id = p_external_account_id;
488   --
489 begin
490   --
491   if g_debug then
492     hr_utility.set_location('Entering: '|| l_proc, 5);
493   end if;
494   --
495   open csr_payroll_details
496     (p_personal_payment_method_id => p_personal_payment_method_id
497     ,p_effective_date             => trunc(p_effective_date)
498     );
499   fetch csr_payroll_details into l_prenote_allowed;
500   if csr_payroll_details%notfound then
501     if g_debug then
502       hr_utility.set_location('Leaving (csr_payroll_details):'|| l_proc, 8);
503     end if;
504     close csr_payroll_details;
505     --
506     -- There must've been an invalid primary key for the query to
507     -- return no rows.
508     --
509     fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
510     fnd_message.raise_error;
511   end if;
512   close csr_payroll_details;
513   --
514   if l_prenote_allowed = 'Y' then
515     --
516     open csr_exa_ovn(p_external_account_id);
517     fetch csr_exa_ovn into l_exa_ovn;
518     if csr_exa_ovn%notfound then
519       if g_debug then
520         hr_utility.set_location('Leaving (csr_exa_ovn):'|| l_proc, 9);
521       end if;
522       close csr_exa_ovn;
523       --
524       -- There must've been an invalid primary key for the query to
525       -- return no rows.
526       --
527       fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
528       fnd_message.raise_error;
529     end if;
530     close csr_exa_ovn;
531     --
532     pay_exa_upd.upd
533       (p_external_account_id   => p_external_account_id
534       ,p_object_version_number => l_exa_ovn
535       ,p_territory_code        => 'US'
536       ,p_prenote_date          => trunc(p_prenote_date)
537       ,p_validate              => false
538       );
539     --
540   end if;
541   --
542   if g_debug then
543     hr_utility.set_location('Leaving: '|| l_proc, 10);
544   end if;
545   --
546 end upd_prenote_date;
547 -- ----------------------------------------------------------------------------
548 -- |----------------------< create_personal_pay_method >----------------------|
549 -- ----------------------------------------------------------------------------
550 --
551 procedure create_personal_pay_method
552   (p_validate                      in     boolean  default false
553   ,p_effective_date                in     date
554   ,p_assignment_id                 in     number
555   ,p_run_type_id                   in     number  default null
556   ,p_org_payment_method_id         in     number
557   ,p_amount                        in     number   default null
558   ,p_percentage                    in     number   default null
559   ,p_priority                      in     number   default null
560   ,p_comments                      in     varchar2 default null
561   ,p_attribute_category            in     varchar2 default null
562   ,p_attribute1                    in     varchar2 default null
563   ,p_attribute2                    in     varchar2 default null
564   ,p_attribute3                    in     varchar2 default null
565   ,p_attribute4                    in     varchar2 default null
566   ,p_attribute5                    in     varchar2 default null
567   ,p_attribute6                    in     varchar2 default null
568   ,p_attribute7                    in     varchar2 default null
569   ,p_attribute8                    in     varchar2 default null
570   ,p_attribute9                    in     varchar2 default null
571   ,p_attribute10                   in     varchar2 default null
572   ,p_attribute11                   in     varchar2 default null
573   ,p_attribute12                   in     varchar2 default null
574   ,p_attribute13                   in     varchar2 default null
575   ,p_attribute14                   in     varchar2 default null
576   ,p_attribute15                   in     varchar2 default null
577   ,p_attribute16                   in     varchar2 default null
578   ,p_attribute17                   in     varchar2 default null
579   ,p_attribute18                   in     varchar2 default null
580   ,p_attribute19                   in     varchar2 default null
581   ,p_attribute20                   in     varchar2 default null
582   ,p_territory_code                in     varchar2 default null
583   ,p_segment1                      in     varchar2 default null
584   ,p_segment2                      in     varchar2 default null
585   ,p_segment3                      in     varchar2 default null
586   ,p_segment4                      in     varchar2 default null
587   ,p_segment5                      in     varchar2 default null
588   ,p_segment6                      in     varchar2 default null
589   ,p_segment7                      in     varchar2 default null
590   ,p_segment8                      in     varchar2 default null
591   ,p_segment9                      in     varchar2 default null
592   ,p_segment10                     in     varchar2 default null
593   ,p_segment11                     in     varchar2 default null
594   ,p_segment12                     in     varchar2 default null
595   ,p_segment13                     in     varchar2 default null
596   ,p_segment14                     in     varchar2 default null
597   ,p_segment15                     in     varchar2 default null
598   ,p_segment16                     in     varchar2 default null
599   ,p_segment17                     in     varchar2 default null
600   ,p_segment18                     in     varchar2 default null
601   ,p_segment19                     in     varchar2 default null
602   ,p_segment20                     in     varchar2 default null
603   ,p_segment21                     in     varchar2 default null
604   ,p_segment22                     in     varchar2 default null
605   ,p_segment23                     in     varchar2 default null
606   ,p_segment24                     in     varchar2 default null
607   ,p_segment25                     in     varchar2 default null
608   ,p_segment26                     in     varchar2 default null
609   ,p_segment27                     in     varchar2 default null
610   ,p_segment28                     in     varchar2 default null
611   ,p_segment29                     in     varchar2 default null
612   ,p_segment30                     in     varchar2 default null
613 /** sbilling **/
614   ,p_concat_segments               in     varchar2 default null
615   ,p_payee_type                    in     varchar2 default null
616   ,p_payee_id                      in     number   default null
617   ,p_ppm_information_category      in     varchar2 default null  --Bug 6439573
618   ,p_ppm_information1              in     varchar2 default null
619   ,p_ppm_information2              in     varchar2 default null
620   ,p_ppm_information3              in     varchar2 default null
621   ,p_ppm_information4              in     varchar2 default null
622   ,p_ppm_information5              in     varchar2 default null
623   ,p_ppm_information6              in     varchar2 default null
624   ,p_ppm_information7              in     varchar2 default null
625   ,p_ppm_information8              in     varchar2 default null
626   ,p_ppm_information9              in     varchar2 default null
627   ,p_ppm_information10             in     varchar2 default null
628   ,p_ppm_information11             in     varchar2 default null
629   ,p_ppm_information12             in     varchar2 default null
630   ,p_ppm_information13             in     varchar2 default null
631   ,p_ppm_information14             in     varchar2 default null
632   ,p_ppm_information15             in     varchar2 default null
633   ,p_ppm_information16             in     varchar2 default null
634   ,p_ppm_information17             in     varchar2 default null
635   ,p_ppm_information18             in     varchar2 default null
636   ,p_ppm_information19             in     varchar2 default null
637   ,p_ppm_information20             in     varchar2 default null
638   ,p_ppm_information21             in     varchar2 default null
639   ,p_ppm_information22             in     varchar2 default null
640   ,p_ppm_information23             in     varchar2 default null
641   ,p_ppm_information24             in     varchar2 default null
642   ,p_ppm_information25             in     varchar2 default null
643   ,p_ppm_information26             in     varchar2 default null
644   ,p_ppm_information27             in     varchar2 default null
645   ,p_ppm_information28             in     varchar2 default null
646   ,p_ppm_information29             in     varchar2 default null
647   ,p_ppm_information30             in     varchar2 default null
648   ,p_personal_payment_method_id    out    nocopy number
649   ,p_external_account_id           out    nocopy number
650   ,p_object_version_number         out    nocopy number
651   ,p_effective_start_date          out    nocopy date
652   ,p_effective_end_date            out    nocopy date
653   ,p_comment_id                    out    nocopy number
654   ) is
655   --
656   -- Declare cursors and local variables
657   --
658   l_proc                varchar2(72);
659   l_business_group_id   per_assignments_f.business_group_id%TYPE;
660   l_external_account_id pay_personal_payment_methods_f.external_account_id%TYPE;
661   l_validate            boolean := FALSE;
662   l_exa_ovn             number;
663   l_exists              varchar2(1);
664   l_category            varchar2(2);
665   l_effective_date      date;
666   l_ppm_information_category pay_personal_payment_methods_f.ppm_information_category%TYPE;
667   --
668   -- Declare OUT variables.
669   --
670   l_personal_payment_method_id    pay_personal_payment_methods_f.personal_payment_method_id%TYPE;
671   l_object_version_number         pay_personal_payment_methods_f.object_version_number%TYPE;
672   l_effective_start_date          pay_personal_payment_methods_f.effective_start_date%TYPE;
673   l_effective_end_date            pay_personal_payment_methods_f.effective_end_date%TYPE;
674   l_comment_id                    pay_personal_payment_methods_f.comment_id%TYPE;
675   --
676   cursor bgsel is
677     select pa.business_group_id
678     from   per_assignments_f pa
679     where  pa.assignment_id = p_assignment_id
680     and    p_effective_date between pa.effective_start_date
681                             and     pa.effective_end_date;
682   --
683   -- Bug 4644507. Removed the usage of per_business_groups from the cursor.
684   cursor csr_is_valid is
685     select  null
686     from    pay_org_payment_methods_f opm,
687             pay_payment_types ppt
688     where   opm.org_payment_method_id = p_org_payment_method_id
689     and     p_effective_date
690     between opm.effective_start_date
691     and     opm.effective_end_date
692     and     ppt.payment_type_id   = opm.payment_type_id ;
693   --
694   cursor csr_chk_pay_type is
695     select pyt.category
696     from pay_org_payment_methods_f opm
697     ,    pay_payment_types pyt
698     where p_org_payment_method_id = opm.org_payment_method_id
699       and opm.payment_type_id = pyt.payment_type_id
700       and p_effective_date between opm.effective_start_date
701                                and opm.effective_end_date;
702   --
703   cursor csr_ppm_info_category ( p_org_payment_method_id number,
704                                  p_effective_date        date) is
705      select decode(ppt.territory_code,null,null,ppt.territory_code||'_')||UPPER(ppt.payment_type_name) ppm_information_category
706        from pay_payment_types ppt,
707             pay_org_payment_methods_f opm
708       where opm.org_payment_method_id = p_org_payment_method_id
709         and p_effective_date between opm.effective_start_date and opm.effective_end_date
710         and opm.payment_type_id = ppt.payment_type_id;
711   --
712 begin
713   g_debug := hr_utility.debug_enabled;
714   if g_debug then
715      l_proc := g_package||'create_personal_pay_method';
716      hr_utility.set_location('Entering:'|| l_proc, 10);
717   end if;
718   --
719   -- Issue a savepoint.
720   --
721   savepoint create_personal_pay_method;
722   --
723   -- Initialize local variables
724   --
725   l_external_account_id   := null;
726   --
727   -- Check that p_assignment_id and p_effective_date are not null as they
728   -- are used by the cursor to derive the business group.
729   --
730   hr_api.mandatory_arg_error
731     (p_api_name       => l_proc,
732      p_argument       => 'assignment_id',
733      p_argument_value => p_assignment_id
734     );
735   --
736   hr_api.mandatory_arg_error
737     (p_api_name       => l_proc
738     ,p_argument       => 'org_payment_method_id'
739     ,p_argument_value => p_org_payment_method_id
740     );
741   --
742   hr_api.mandatory_arg_error
743     (p_api_name       => l_proc,
744      p_argument       => 'effective_date',
745      p_argument_value => p_effective_date);
746   if g_debug then
747      hr_utility.set_location(l_proc, 20);
748   end if;
749   --
750   l_effective_date := trunc(p_effective_date);
751   --
752   begin
753     --
754     -- Start of API User Hook for the before hook of create_personal_pay_method
755     --
756     hr_personal_pay_method_bk1.create_personal_pay_method_b
757       (p_effective_date                => l_effective_date
758       ,p_assignment_id                 => p_assignment_id
759       ,p_org_payment_method_id         => p_org_payment_method_id
760       ,p_amount                        => p_amount
761       ,p_percentage                    => p_percentage
762       ,p_priority                      => p_priority
763       ,p_comments                      => p_comments
764       ,p_attribute_category            => p_attribute_category
765       ,p_attribute1                    => p_attribute1
766       ,p_attribute2                    => p_attribute2
767       ,p_attribute3                    => p_attribute3
768       ,p_attribute4                    => p_attribute4
769       ,p_attribute5                    => p_attribute5
770       ,p_attribute6                    => p_attribute6
771       ,p_attribute7                    => p_attribute7
772       ,p_attribute8                    => p_attribute8
773       ,p_attribute9                    => p_attribute9
774       ,p_attribute10                   => p_attribute10
775       ,p_attribute11                   => p_attribute11
776       ,p_attribute12                   => p_attribute12
777       ,p_attribute13                   => p_attribute13
778       ,p_attribute14                   => p_attribute14
779       ,p_attribute15                   => p_attribute15
780       ,p_attribute16                   => p_attribute16
781       ,p_attribute17                   => p_attribute17
782       ,p_attribute18                   => p_attribute18
783       ,p_attribute19                   => p_attribute19
784       ,p_attribute20                   => p_attribute20
785       ,p_territory_code                => p_territory_code
786       ,p_segment1                      => p_segment1
787       ,p_segment2                      => p_segment2
788       ,p_segment3                      => p_segment3
789 --    ,p_segment4                      => lpad(p_segment4,9,'0')
790       ,p_segment4                      => p_segment4
791       ,p_segment5                      => p_segment5
792       ,p_segment6                      => p_segment6
793       ,p_segment7                      => p_segment7
794       ,p_segment8                      => p_segment8
795       ,p_segment9                      => p_segment9
796       ,p_segment10                     => p_segment10
797       ,p_segment11                     => p_segment11
798       ,p_segment12                     => p_segment12
799       ,p_segment13                     => p_segment13
800       ,p_segment14                     => p_segment14
801       ,p_segment15                     => p_segment15
802       ,p_segment16                     => p_segment16
803       ,p_segment17                     => p_segment17
804       ,p_segment18                     => p_segment18
805       ,p_segment19                     => p_segment19
806       ,p_segment20                     => p_segment20
807       ,p_segment21                     => p_segment21
808       ,p_segment22                     => p_segment22
809       ,p_segment23                     => p_segment23
810       ,p_segment24                     => p_segment24
811       ,p_segment25                     => p_segment25
812       ,p_segment26                     => p_segment26
813       ,p_segment27                     => p_segment27
814       ,p_segment28                     => p_segment28
815       ,p_segment29                     => p_segment29
816       ,p_segment30                     => p_segment30
817       ,p_payee_type                    => p_payee_type
818       ,p_payee_id                      => p_payee_id
819       ,p_ppm_information1              => p_ppm_information1
820       ,p_ppm_information2              => p_ppm_information2
821       ,p_ppm_information3              => p_ppm_information3
822       ,p_ppm_information4              => p_ppm_information4
823       ,p_ppm_information5              => p_ppm_information5
824       ,p_ppm_information6              => p_ppm_information6
825       ,p_ppm_information7              => p_ppm_information7
826       ,p_ppm_information8              => p_ppm_information8
827       ,p_ppm_information9              => p_ppm_information9
828       ,p_ppm_information10             => p_ppm_information10
829       ,p_ppm_information11             => p_ppm_information11
830       ,p_ppm_information12             => p_ppm_information12
831       ,p_ppm_information13             => p_ppm_information13
832       ,p_ppm_information14             => p_ppm_information14
833       ,p_ppm_information15             => p_ppm_information15
834       ,p_ppm_information16             => p_ppm_information16
835       ,p_ppm_information17             => p_ppm_information17
836       ,p_ppm_information18             => p_ppm_information18
837       ,p_ppm_information19             => p_ppm_information19
838       ,p_ppm_information20             => p_ppm_information20
839       ,p_ppm_information21             => p_ppm_information21
840       ,p_ppm_information22             => p_ppm_information22
841       ,p_ppm_information23             => p_ppm_information23
842       ,p_ppm_information24             => p_ppm_information24
843       ,p_ppm_information25             => p_ppm_information25
844       ,p_ppm_information26             => p_ppm_information26
845       ,p_ppm_information27             => p_ppm_information27
846       ,p_ppm_information28             => p_ppm_information28
847       ,p_ppm_information29             => p_ppm_information29
848       ,p_ppm_information30             => p_ppm_information30
849       ,p_ppm_information_category      => p_ppm_information_category
850       );
851   exception
852     when hr_api.cannot_find_prog_unit then
853       hr_api.cannot_find_prog_unit_error
854         (p_module_name => 'CREATE_PERSONAL_PAY_METHOD'
855         ,p_hook_type   => 'BP'
856         );
857     --
858     -- End of API User Hook for the before hook of create_personal_pay_method
859     --
860   end;
861   --
862   -- Derive the business group id, using the assignment id.
863   --
864   open bgsel;
865   fetch bgsel
866   into l_business_group_id;
867   if g_debug then
868      hr_utility.set_location(l_proc, 30);
869   end if;
870   --
871   if bgsel%notfound then
872     close bgsel;
873     hr_utility.set_message(801, 'HR_7348_ASSIGNMENT_INVALID');
874     Hr_utility.raise_error;
875   end if;
876   close bgsel;
877   if g_debug then
878      hr_utility.set_location(l_proc, 40);
879   end if;
880   --
881   -- Validate the organization payment method
882   --
883   open csr_is_valid;
884   fetch csr_is_valid into l_exists;
885   if csr_is_valid%notfound then
886     close csr_is_valid;
887 
888     hr_utility.set_message(801, 'HR_7347_PPM_INVALID_PAY_TYPE');
889     hr_utility.raise_error;
890   end if;
891   close csr_is_valid;
892   if g_debug then
893      hr_utility.set_location(l_proc, 40);
894   end if;
895   --
896   -- Bug 3940935. Derive PPM_INFORMATION_CATEGORY.
897   --
898   if ((p_ppm_information1 is not null or
899       p_ppm_information2 is not null or
900       p_ppm_information3 is not null or
901       p_ppm_information4 is not null or
902       p_ppm_information5 is not null or
903       p_ppm_information6 is not null or
904       p_ppm_information7 is not null or
905       p_ppm_information8 is not null or
906       p_ppm_information9 is not null or
907       p_ppm_information10 is not null or
908       p_ppm_information11 is not null or
909       p_ppm_information12 is not null or
910       p_ppm_information13 is not null or
911       p_ppm_information14 is not null or
912       p_ppm_information15 is not null or
913       p_ppm_information16 is not null or
914       p_ppm_information17 is not null or
915       p_ppm_information18 is not null or
916       p_ppm_information19 is not null or
917       p_ppm_information20 is not null or
918       p_ppm_information21 is not null or
919       p_ppm_information22 is not null or
920       p_ppm_information23 is not null or
921       p_ppm_information24 is not null or
922       p_ppm_information25 is not null or
923       p_ppm_information26 is not null or
924       p_ppm_information27 is not null or
925       p_ppm_information28 is not null or
926       p_ppm_information29 is not null or
927       p_ppm_information30 is not null   ) and
928       p_ppm_information_category is null) then  --6439573
929 
930       open csr_ppm_info_category ( p_org_payment_method_id => p_org_payment_method_id
931                                   ,p_effective_date => p_effective_date );
932 
933       fetch csr_ppm_info_category into l_ppm_information_category;
934       if (csr_ppm_info_category%notfound) then
935          close csr_ppm_info_category;
936          fnd_message.set_name('PAY', 'HR_7462_PLK_INVLD_VALUE');
937          fnd_message.set_token('COLUMN_NAME', 'PPM_INFORMATION_CATEGORY');
938          fnd_message.raise_error;
939       end if;
940       close csr_ppm_info_category;
941   /* Bug 6439573 ppm_info_category is not null, then assigned to the local one */
942   elsif p_ppm_information_category is not null then
943       l_ppm_information_category := p_ppm_information_category;
944   end if;
945   --
946   -- Check that if payment type of the organization payment method
947   -- is not 'MT' then all external account details should be null.
948   --
949   open csr_chk_pay_type;
950   fetch csr_chk_pay_type into l_category;
951   close csr_chk_pay_type;
952   --
953   if (l_category <> 'MT' or l_category is null)
954     and (p_segment1  is not null or
955          p_segment2  is not null or
956          p_segment3  is not null or
957          p_segment4  is not null or
958          p_segment5  is not null or
959          p_segment6  is not null or
960          p_segment7  is not null or
961          p_segment8  is not null or
962          p_segment9  is not null or
963          p_segment10 is not null or
964          p_segment11 is not null or
965          p_segment12 is not null or
966          p_segment13 is not null or
967          p_segment14 is not null or
968          p_segment15 is not null or
969          p_segment16 is not null or
970          p_segment17 is not null or
971          p_segment18 is not null or
972          p_segment19 is not null or
973          p_segment20 is not null or
974          p_segment21 is not null or
975          p_segment22 is not null or
976          p_segment23 is not null or
977          p_segment24 is not null or
978          p_segment25 is not null or
979          p_segment26 is not null or
980          p_segment27 is not null or
981          p_segment28 is not null or
982          p_segment29 is not null or
983          p_segment30 is not null ) then
984   --
985   --  Raise Error
986       hr_utility.set_message(801, 'HR_51377_PPM_NON_MAG_TAPE_SEGM');
987       hr_utility.raise_error;
988   --
989   elsif l_category = 'MT' then
990     --
991   if g_debug then
992      hr_utility.set_location(l_proc, 50);
993   end if;
994     --
995     -- call table handler pay_exa_ins to control the processing of the external
996     -- account combination keyflex, discarding the returning parameter
997     -- p_object_version_number
998     --
999     pay_exa_ins.ins_or_sel
1000     (p_segment1              => p_segment1
1001     ,p_segment2              => p_segment2
1002     ,p_segment3              => p_segment3
1003 --  ,p_segment4              => lpad(p_segment4,9,'0')
1004     ,p_segment4              => p_segment4
1005     ,p_segment5              => p_segment5
1006     ,p_segment6              => p_segment6
1007     ,p_segment7              => p_segment7
1008     ,p_segment8              => p_segment8
1009     ,p_segment9              => p_segment9
1010     ,p_segment10             => p_segment10
1011     ,p_segment11             => p_segment11
1012     ,p_segment12             => p_segment12
1013     ,p_segment13             => p_segment13
1014     ,p_segment14             => p_segment14
1015     ,p_segment15             => p_segment15
1016     ,p_segment16             => p_segment16
1017     ,p_segment17             => p_segment17
1018     ,p_segment18             => p_segment18
1019     ,p_segment19             => p_segment19
1020     ,p_segment20             => p_segment20
1021     ,p_segment21             => p_segment21
1022     ,p_segment22             => p_segment22
1023     ,p_segment23             => p_segment23
1024     ,p_segment24             => p_segment24
1025     ,p_segment25             => p_segment25
1026     ,p_segment26             => p_segment26
1027     ,p_segment27             => p_segment27
1028     ,p_segment28             => p_segment28
1029     ,p_segment29             => p_segment29
1030     ,p_segment30             => p_segment30
1031 /** sbilling **/
1032     ,p_concat_segments       => p_concat_segments
1033     ,p_business_group_id     => l_business_group_id
1034     ,p_territory_code        => p_territory_code
1035     ,p_external_account_id   => l_external_account_id
1036     ,p_object_version_number => l_exa_ovn
1037     ,p_validate              => l_validate
1038     --
1039     -- Special p_prenote_date value after bug2307154 changes.
1040     --
1041     ,p_prenote_date          => hr_api.g_date
1042     );
1043   end if;
1044   --
1045   if g_debug then
1046      hr_utility.set_location(l_proc, 60);
1047   end if;
1048   --
1049   -- Call the row handler to insert the personal payment method.
1050   --
1051   pay_ppm_ins.ins
1052   (p_personal_payment_method_id   => l_personal_payment_method_id
1053   ,p_effective_start_date         => l_effective_start_date
1054   ,p_effective_end_date           => l_effective_end_date
1055   ,p_business_group_id            => l_business_group_id
1056   ,p_external_account_id          => l_external_account_id
1057   ,p_assignment_id                => p_assignment_id
1058   ,p_run_type_id                  => p_run_type_id
1059   ,p_org_payment_method_id        => p_org_payment_method_id
1060   ,p_amount                       => p_amount
1061   ,p_comment_id                   => l_comment_id
1062   ,p_comments                     => p_comments
1063   ,p_percentage                   => p_percentage
1064   ,p_priority                     => p_priority
1065   ,p_attribute_category           => p_attribute_category
1066   ,p_attribute1                   => p_attribute1
1067   ,p_attribute2                   => p_attribute2
1068   ,p_attribute3                   => p_attribute3
1069   ,p_attribute4                   => p_attribute4
1070   ,p_attribute5                   => p_attribute5
1071   ,p_attribute6                   => p_attribute6
1072   ,p_attribute7                   => p_attribute7
1073   ,p_attribute8                   => p_attribute8
1074   ,p_attribute9                   => p_attribute9
1075   ,p_attribute10                  => p_attribute10
1076   ,p_attribute11                  => p_attribute11
1077   ,p_attribute12                  => p_attribute12
1078   ,p_attribute13                  => p_attribute13
1079   ,p_attribute14                  => p_attribute14
1080   ,p_attribute15                  => p_attribute15
1081   ,p_attribute16                  => p_attribute16
1082   ,p_attribute17                  => p_attribute17
1083   ,p_attribute18                  => p_attribute18
1084   ,p_attribute19                  => p_attribute19
1085   ,p_attribute20                  => p_attribute20
1086   ,p_object_version_number        => l_object_version_number
1087   ,p_payee_type                   => p_payee_type
1088   ,p_payee_id                     => p_payee_id
1089   ,p_effective_date               => l_effective_date
1090   ,p_validate                     => l_validate
1091   ,p_ppm_information_category     => l_ppm_information_category
1092   ,p_ppm_information1             => p_ppm_information1
1093   ,p_ppm_information2             => p_ppm_information2
1094   ,p_ppm_information3             => p_ppm_information3
1095   ,p_ppm_information4             => p_ppm_information4
1096   ,p_ppm_information5             => p_ppm_information5
1097   ,p_ppm_information6             => p_ppm_information6
1098   ,p_ppm_information7             => p_ppm_information7
1099   ,p_ppm_information8             => p_ppm_information8
1100   ,p_ppm_information9             => p_ppm_information9
1101   ,p_ppm_information10            => p_ppm_information10
1102   ,p_ppm_information11            => p_ppm_information11
1103   ,p_ppm_information12            => p_ppm_information12
1104   ,p_ppm_information13            => p_ppm_information13
1105   ,p_ppm_information14            => p_ppm_information14
1106   ,p_ppm_information15            => p_ppm_information15
1107   ,p_ppm_information16            => p_ppm_information16
1108   ,p_ppm_information17            => p_ppm_information17
1109   ,p_ppm_information18            => p_ppm_information18
1110   ,p_ppm_information19            => p_ppm_information19
1111   ,p_ppm_information20            => p_ppm_information20
1112   ,p_ppm_information21            => p_ppm_information21
1113   ,p_ppm_information22            => p_ppm_information22
1114   ,p_ppm_information23            => p_ppm_information23
1115   ,p_ppm_information24            => p_ppm_information24
1116   ,p_ppm_information25            => p_ppm_information25
1117   ,p_ppm_information26            => p_ppm_information26
1118   ,p_ppm_information27            => p_ppm_information27
1119   ,p_ppm_information28            => p_ppm_information28
1120   ,p_ppm_information29            => p_ppm_information29
1121   ,p_ppm_information30            => p_ppm_information30
1122   );
1123   --
1124   -- Stamp the prenote_date on the external accounts row for 'US' magtape
1125   -- payments only.
1126   --
1127   if g_debug then
1128      hr_utility.set_location(l_proc, 65);
1129   end if;
1130   if p_territory_code = 'US' and l_category = 'MT' then
1131     stamp_prenote_date
1132     (p_personal_payment_method_id => l_personal_payment_method_id
1133     ,p_effective_date             => l_effective_date
1134     ,p_external_account_id        => l_external_account_id
1135     ,p_external_account_ovn       => l_exa_ovn
1136     );
1137   end if;
1138   --
1139   if g_debug then
1140      hr_utility.set_location(l_proc, 70);
1141   end if;
1142   --
1143   begin
1144     --
1145     -- Start of API User Hook for the after hook of create_personal_pay_method
1146     --
1147     hr_personal_pay_method_bk1.create_personal_pay_method_a
1148       (p_effective_date                => l_effective_date
1149       ,p_assignment_id                 => p_assignment_id
1150       ,p_org_payment_method_id         => p_org_payment_method_id
1151       ,p_amount                        => p_amount
1152       ,p_percentage                    => p_percentage
1153       ,p_priority                      => p_priority
1154       ,p_comments                      => p_comments
1155       ,p_attribute_category            => p_attribute_category
1156       ,p_attribute1                    => p_attribute1
1157       ,p_attribute2                    => p_attribute2
1158       ,p_attribute3                    => p_attribute3
1159       ,p_attribute4                    => p_attribute4
1160       ,p_attribute5                    => p_attribute5
1161       ,p_attribute6                    => p_attribute6
1162       ,p_attribute7                    => p_attribute7
1163       ,p_attribute8                    => p_attribute8
1164       ,p_attribute9                    => p_attribute9
1165       ,p_attribute10                   => p_attribute10
1166       ,p_attribute11                   => p_attribute11
1167       ,p_attribute12                   => p_attribute12
1168       ,p_attribute13                   => p_attribute13
1169       ,p_attribute14                   => p_attribute14
1170       ,p_attribute15                   => p_attribute15
1171       ,p_attribute16                   => p_attribute16
1172       ,p_attribute17                   => p_attribute17
1173       ,p_attribute18                   => p_attribute18
1174       ,p_attribute19                   => p_attribute19
1175       ,p_attribute20                   => p_attribute20
1176       ,p_territory_code                => p_territory_code
1177       ,p_segment1                      => p_segment1
1178       ,p_segment2                      => p_segment2
1179       ,p_segment3                      => p_segment3
1180 --    ,p_segment4                      => lpad(p_segment4,9,'0')
1181       ,p_segment4                      => p_segment4
1182       ,p_segment5                      => p_segment5
1183       ,p_segment6                      => p_segment6
1184       ,p_segment7                      => p_segment7
1185       ,p_segment8                      => p_segment8
1186       ,p_segment9                      => p_segment9
1187       ,p_segment10                     => p_segment10
1188       ,p_segment11                     => p_segment11
1189       ,p_segment12                     => p_segment12
1190       ,p_segment13                     => p_segment13
1191       ,p_segment14                     => p_segment14
1192       ,p_segment15                     => p_segment15
1193       ,p_segment16                     => p_segment16
1194       ,p_segment17                     => p_segment17
1195       ,p_segment18                     => p_segment18
1196       ,p_segment19                     => p_segment19
1197       ,p_segment20                     => p_segment20
1198       ,p_segment21                     => p_segment21
1199       ,p_segment22                     => p_segment22
1200       ,p_segment23                     => p_segment23
1201       ,p_segment24                     => p_segment24
1202       ,p_segment25                     => p_segment25
1203       ,p_segment26                     => p_segment26
1204       ,p_segment27                     => p_segment27
1205       ,p_segment28                     => p_segment28
1206       ,p_segment29                     => p_segment29
1207       ,p_segment30                     => p_segment30
1208       ,p_payee_type                    => p_payee_type
1209       ,p_payee_id                      => p_payee_id
1210       ,p_personal_payment_method_id    => l_personal_payment_method_id
1211       ,p_external_account_id           => l_external_account_id
1212       ,p_object_version_number         => l_object_version_number
1213       ,p_effective_start_date          => l_effective_start_date
1214       ,p_effective_end_date            => l_effective_end_date
1215       ,p_comment_id                    => l_comment_id
1216       ,p_ppm_information1              => p_ppm_information1
1217       ,p_ppm_information2              => p_ppm_information2
1218       ,p_ppm_information3              => p_ppm_information3
1219       ,p_ppm_information4              => p_ppm_information4
1220       ,p_ppm_information5              => p_ppm_information5
1221       ,p_ppm_information6              => p_ppm_information6
1222       ,p_ppm_information7              => p_ppm_information7
1223       ,p_ppm_information8              => p_ppm_information8
1224       ,p_ppm_information9              => p_ppm_information9
1225       ,p_ppm_information10             => p_ppm_information10
1226       ,p_ppm_information11             => p_ppm_information11
1227       ,p_ppm_information12             => p_ppm_information12
1228       ,p_ppm_information13             => p_ppm_information13
1229       ,p_ppm_information14             => p_ppm_information14
1230       ,p_ppm_information15             => p_ppm_information15
1231       ,p_ppm_information16             => p_ppm_information16
1232       ,p_ppm_information17             => p_ppm_information17
1233       ,p_ppm_information18             => p_ppm_information18
1234       ,p_ppm_information19             => p_ppm_information19
1235       ,p_ppm_information20             => p_ppm_information20
1236       ,p_ppm_information21             => p_ppm_information21
1237       ,p_ppm_information22             => p_ppm_information22
1238       ,p_ppm_information23             => p_ppm_information23
1239       ,p_ppm_information24             => p_ppm_information24
1240       ,p_ppm_information25             => p_ppm_information25
1241       ,p_ppm_information26             => p_ppm_information26
1242       ,p_ppm_information27             => p_ppm_information27
1243       ,p_ppm_information28             => p_ppm_information28
1244       ,p_ppm_information29             => p_ppm_information29
1245       ,p_ppm_information30             => p_ppm_information30
1246       ,p_ppm_information_category      => l_ppm_information_category
1247       );
1248   exception
1249     when hr_api.cannot_find_prog_unit then
1250       hr_api.cannot_find_prog_unit_error
1251         (p_module_name => 'CREATE_PERSONAL_PAY_METHOD'
1252         ,p_hook_type   => 'AP'
1253         );
1254     --
1255     -- End of API User Hook for the after hook of create_personal_pay_method
1256     --
1257   end;
1258   --
1259   -- When in validation only mode raise the Validate_Enabled exception
1260   --
1261   if p_validate then
1262     raise hr_api.validate_enabled;
1263   end if;
1264   --
1265   -- Set remaining output arguments
1266   --
1267   p_personal_payment_method_id    := l_personal_payment_method_id;
1268   p_external_account_id           := l_external_account_id;
1269   p_object_version_number         := l_object_version_number;
1270   p_effective_start_date          := l_effective_start_date;
1271   p_effective_end_date            := l_effective_end_date;
1272   p_comment_id                    := l_comment_id;
1273   --
1274   if g_debug then
1275      hr_utility.set_location(' Leaving:'||l_proc, 80);
1276   end if;
1277 exception
1278   when hr_api.validate_enabled then
1279     --
1280     -- As the Validate_Enabled exception has been raised
1281     -- we must rollback to the savepoint
1282     --
1283     ROLLBACK TO create_personal_pay_method;
1284     --
1285     -- Only set output warning arguments
1286     -- (Any key or derived arguments must be set to null
1287     -- when validation only mode is being used.)
1288     --
1289     p_personal_payment_method_id := null;
1290     p_external_account_id := null;
1291     p_object_version_number  := null;
1292     p_effective_start_date := null;
1293     p_effective_end_date := null;
1294     p_comment_id := null;
1295     --
1296   when others then
1297     --
1298     -- A validation or unexpected error has occurred
1299     --
1300     -- Added as part of fix to bug 632479
1301     --
1302     ROLLBACK TO create_personal_pay_method;
1303     p_personal_payment_method_id := null;
1304     p_external_account_id := null;
1305     p_object_version_number  := null;
1306     p_effective_start_date := null;
1307     p_effective_end_date := null;
1308     p_comment_id := null;
1309     raise;
1310     --
1311     -- End of fix.
1312     --
1313   if g_debug then
1314      hr_utility.set_location(' Leaving:'||l_proc, 90);
1315   end if;
1316     --
1317 end create_personal_pay_method;
1318 --
1319 -- ----------------------------------------------------------------------------
1320 -- |--------------------< create_gb_personal_pay_method >---------------------|
1321 -- ----------------------------------------------------------------------------
1322 --
1323 procedure create_gb_personal_pay_method
1324   (p_validate                      in     boolean  default false
1325   ,p_effective_date                in     date
1326   ,p_assignment_id                 in     number
1327   ,p_run_type_id                   in     number  default null
1328   ,p_org_payment_method_id         in     number
1329   ,p_account_name                  in     varchar2
1330   ,p_account_number                in     varchar2
1331   ,p_sort_code                     in     varchar2
1332   ,p_bank_name                     in     varchar2
1333   ,p_account_type                  in     varchar2 default null
1334   ,p_bank_branch                   in     varchar2 default null
1335   ,p_bank_branch_location          in     varchar2 default null
1336   ,p_bldg_society_account_number   in     varchar2 default null
1337   ,p_amount                        in     number   default null
1338   ,p_percentage                    in     number   default null
1339   ,p_priority                      in     number   default null
1340   ,p_comments                      in     varchar2 default null
1341   ,p_attribute_category            in     varchar2 default null
1342   ,p_attribute1                    in     varchar2 default null
1343   ,p_attribute2                    in     varchar2 default null
1344   ,p_attribute3                    in     varchar2 default null
1345   ,p_attribute4                    in     varchar2 default null
1346   ,p_attribute5                    in     varchar2 default null
1347   ,p_attribute6                    in     varchar2 default null
1348   ,p_attribute7                    in     varchar2 default null
1349   ,p_attribute8                    in     varchar2 default null
1350   ,p_attribute9                    in     varchar2 default null
1351   ,p_attribute10                   in     varchar2 default null
1352   ,p_attribute11                   in     varchar2 default null
1353   ,p_attribute12                   in     varchar2 default null
1354   ,p_attribute13                   in     varchar2 default null
1355   ,p_attribute14                   in     varchar2 default null
1356   ,p_attribute15                   in     varchar2 default null
1357   ,p_attribute16                   in     varchar2 default null
1358   ,p_attribute17                   in     varchar2 default null
1359   ,p_attribute18                   in     varchar2 default null
1360   ,p_attribute19                   in     varchar2 default null
1361   ,p_attribute20                   in     varchar2 default null
1362   ,p_payee_type                    in     varchar2 default null
1363   ,p_payee_id                      in     number   default null
1364   ,p_territory_code                in     varchar2 default null      -- Bug 6469439
1365   ,p_personal_payment_method_id    out    nocopy number
1366   ,p_external_account_id           out    nocopy number
1367   ,p_object_version_number         out    nocopy number
1368   ,p_effective_start_date          out    nocopy date
1369   ,p_effective_end_date            out    nocopy date
1370   ,p_comment_id                    out    nocopy number
1371   ,p_segment9                      in     varchar2 default null -- Bug 7185344
1372   ,p_segment10                     in     varchar2 default null
1373   ,p_segment11                     in     varchar2 default null
1374   ,p_segment12                     in     varchar2 default null
1375   ,p_segment13                     in     varchar2 default null
1376   ,p_segment14                     in     varchar2 default null
1377   ,p_segment15                     in     varchar2 default null
1378   ,p_segment16                     in     varchar2 default null
1379   ,p_segment17                     in     varchar2 default null
1380   ,p_segment18                     in     varchar2 default null
1381   ,p_segment19                     in     varchar2 default null
1382   ,p_segment20                     in     varchar2 default null
1383   ,p_segment21                     in     varchar2 default null
1384   ,p_segment22                     in     varchar2 default null
1385   ,p_segment23                     in     varchar2 default null
1386   ,p_segment24                     in     varchar2 default null
1387   ,p_segment25                     in     varchar2 default null
1388   ,p_segment26                     in     varchar2 default null
1389   ,p_segment27                     in     varchar2 default null
1390   ,p_segment28                     in     varchar2 default null
1391   ,p_segment29                     in     varchar2 default null
1392   ,p_segment30                     in     varchar2 default null -- Bug 7185344
1393   /*Bug# 8717589*/
1394   ,p_ppm_information_category      in     varchar2 default null
1395   ,p_ppm_information1              in     varchar2 default null
1396   ,p_ppm_information2              in     varchar2 default null
1397   ,p_ppm_information3              in     varchar2 default null
1398   ,p_ppm_information4              in     varchar2 default null
1399   ,p_ppm_information5              in     varchar2 default null
1400   ,p_ppm_information6              in     varchar2 default null
1401   ,p_ppm_information7              in     varchar2 default null
1402   ,p_ppm_information8              in     varchar2 default null
1403   ,p_ppm_information9              in     varchar2 default null
1404   ,p_ppm_information10             in     varchar2 default null
1405   ,p_ppm_information11             in     varchar2 default null
1406   ,p_ppm_information12             in     varchar2 default null
1407   ,p_ppm_information13             in     varchar2 default null
1408   ,p_ppm_information14             in     varchar2 default null
1409   ,p_ppm_information15             in     varchar2 default null
1410   ,p_ppm_information16             in     varchar2 default null
1411   ,p_ppm_information17             in     varchar2 default null
1412   ,p_ppm_information18             in     varchar2 default null
1413   ,p_ppm_information19             in     varchar2 default null
1414   ,p_ppm_information20             in     varchar2 default null
1415   ,p_ppm_information21             in     varchar2 default null
1416   ,p_ppm_information22             in     varchar2 default null
1417   ,p_ppm_information23             in     varchar2 default null
1418   ,p_ppm_information24             in     varchar2 default null
1419   ,p_ppm_information25             in     varchar2 default null
1420   ,p_ppm_information26             in     varchar2 default null
1421   ,p_ppm_information27             in     varchar2 default null
1422   ,p_ppm_information28             in     varchar2 default null
1423   ,p_ppm_information29             in     varchar2 default null
1424   ,p_ppm_information30             in     varchar2 default null
1425   ) is
1426   --
1427   -- Declare cursors and local variables
1428   --
1429   l_proc                varchar2(72);
1430   l_valid               varchar2(150);
1431   l_effective_date      date;
1432   l_territory_code      varchar2(30);
1433   --
1434 begin
1435   g_debug := hr_utility.debug_enabled;
1436   --
1437   if g_debug then
1438      l_proc := g_package||'create_gb_personal_pay_method';
1439      hr_utility.set_location('Entering:'|| l_proc, 5);
1440   end if;
1441   --
1442   l_effective_date := p_effective_date;
1443   --
1444   hr_personal_pay_method_api.check_insert_legislation
1445   (p_assignment_id   => p_assignment_id
1446   ,p_effective_date  => l_effective_date
1447   ,p_leg_code        => 'GB');
1448   --
1449   if g_debug then
1450      hr_utility.set_location(l_proc, 7);
1451   end if;
1452   --
1453   if p_territory_code is null then
1454      l_territory_code := 'GB';
1455   else
1456      l_territory_code := p_territory_code;
1457   end if;
1458   --
1459   -- Call the business process to create the personal payment method
1460   --
1461   hr_personal_pay_method_api.create_personal_pay_method
1462   (p_validate                      => p_validate
1463   ,p_effective_date                => l_effective_date
1464   ,p_assignment_id                 => p_assignment_id
1465   ,p_run_type_id                   => p_run_type_id
1466   ,p_org_payment_method_id         => p_org_payment_method_id
1467   ,p_amount                        => p_amount
1468   ,p_percentage                    => p_percentage
1469   ,p_priority                      => p_priority
1470   ,p_comments                      => p_comments
1471   ,p_attribute_category            => p_attribute_category
1472   ,p_attribute1                    => p_attribute1
1473   ,p_attribute2                    => p_attribute2
1474   ,p_attribute3                    => p_attribute3
1475   ,p_attribute4                    => p_attribute4
1476   ,p_attribute5                    => p_attribute5
1477   ,p_attribute6                    => p_attribute6
1478   ,p_attribute7                    => p_attribute7
1479   ,p_attribute8                    => p_attribute8
1480   ,p_attribute9                    => p_attribute9
1481   ,p_attribute10                   => p_attribute10
1482   ,p_attribute11                   => p_attribute11
1483   ,p_attribute12                   => p_attribute12
1484   ,p_attribute13                   => p_attribute13
1485   ,p_attribute14                   => p_attribute14
1486   ,p_attribute15                   => p_attribute15
1487   ,p_attribute16                   => p_attribute16
1488   ,p_attribute17                   => p_attribute17
1489   ,p_attribute18                   => p_attribute18
1490   ,p_attribute19                   => p_attribute19
1491   ,p_attribute20                   => p_attribute20
1492   ,p_territory_code                => l_territory_code   --6469439
1493   ,p_segment1                      => p_bank_name
1494   ,p_segment2                      => p_bank_branch
1495   ,p_segment3                      => p_sort_code
1496   ,p_segment4                      => p_account_number
1497   ,p_segment5                      => p_account_name
1498   ,p_segment6                      => p_account_type
1499   ,p_segment7                      => p_bldg_society_account_number
1500   ,p_segment8                      => p_bank_branch_location
1501   ,p_payee_type                    => p_payee_type
1502   ,p_payee_id                      => p_payee_id
1503   ,p_personal_payment_method_id    => p_personal_payment_method_id
1504   ,p_external_account_id           => p_external_account_id
1505   ,p_object_version_number         => p_object_version_number
1506   ,p_effective_start_date          => p_effective_start_date
1507   ,p_effective_end_date            => p_effective_end_date
1508   ,p_comment_id                    => p_comment_id
1509   ,p_segment9                      => p_segment9    -- Bug 7185344
1510   ,p_segment10                     => p_segment10
1511   ,p_segment11                     => p_segment11
1512   ,p_segment12                     => p_segment12
1513   ,p_segment13                     => p_segment13
1514   ,p_segment14                     => p_segment14
1515   ,p_segment15                     => p_segment15
1516   ,p_segment16                     => p_segment16
1517   ,p_segment17                     => p_segment17
1518   ,p_segment18                     => p_segment18
1519   ,p_segment19                     => p_segment19
1520   ,p_segment20                     => p_segment20
1521   ,p_segment21                     => p_segment21
1522   ,p_segment22                     => p_segment22
1523   ,p_segment23                     => p_segment23
1524   ,p_segment24                     => p_segment24
1525   ,p_segment25                     => p_segment25
1526   ,p_segment26                     => p_segment26
1527   ,p_segment27                     => p_segment27
1528   ,p_segment28                     => p_segment28
1529   ,p_segment29                     => p_segment29
1530   ,p_segment30                     => p_segment30   -- Bug 7185344
1531   ,p_ppm_information_category      => p_ppm_information_category
1532   ,p_ppm_information1              => p_ppm_information1
1533   ,p_ppm_information2              => p_ppm_information2
1534   ,p_ppm_information3              => p_ppm_information3
1535   ,p_ppm_information4              => p_ppm_information4
1536   ,p_ppm_information5              => p_ppm_information5
1537   ,p_ppm_information6              => p_ppm_information6
1538   ,p_ppm_information7              => p_ppm_information7
1539   ,p_ppm_information8              => p_ppm_information8
1540   ,p_ppm_information9              => p_ppm_information9
1541   ,p_ppm_information10             => p_ppm_information10
1542   ,p_ppm_information11             => p_ppm_information11
1543   ,p_ppm_information12             => p_ppm_information12
1544   ,p_ppm_information13             => p_ppm_information13
1545   ,p_ppm_information14             => p_ppm_information14
1546   ,p_ppm_information15             => p_ppm_information15
1547   ,p_ppm_information16             => p_ppm_information16
1548   ,p_ppm_information17             => p_ppm_information17
1549   ,p_ppm_information18             => p_ppm_information18
1550   ,p_ppm_information19             => p_ppm_information19
1551   ,p_ppm_information20             => p_ppm_information20
1552   ,p_ppm_information21             => p_ppm_information21
1553   ,p_ppm_information22             => p_ppm_information22
1554   ,p_ppm_information23             => p_ppm_information23
1555   ,p_ppm_information24             => p_ppm_information24
1556   ,p_ppm_information25             => p_ppm_information25
1557   ,p_ppm_information26             => p_ppm_information26
1558   ,p_ppm_information27             => p_ppm_information27
1559   ,p_ppm_information28             => p_ppm_information28
1560   ,p_ppm_information29             => p_ppm_information29
1561   ,p_ppm_information30             => p_ppm_information30
1562   );
1563   --
1564   if g_debug then
1565      hr_utility.set_location(' Leaving:'||l_proc, 8);
1566   end if;
1567 end create_gb_personal_pay_method;
1568 --
1569 -- ----------------------------------------------------------------------------
1570 -- |--------------------< create_us_personal_pay_method >---------------------|
1571 -- ----------------------------------------------------------------------------
1572 --
1573 procedure create_us_personal_pay_method
1574   (p_validate                      in     boolean  default false
1575   ,p_effective_date                in     date
1576   ,p_assignment_id                 in     number
1577   ,p_run_type_id                   in     number  default null
1578   ,p_org_payment_method_id         in     number
1579   ,p_account_name                  in     varchar2
1580   ,p_account_number                in     varchar2
1581   ,p_transit_code                  in     varchar2
1582   ,p_bank_name                     in     varchar2
1583   ,p_account_type                  in     varchar2 default null
1584   ,p_bank_branch                   in     varchar2 default null
1585   ,p_amount                        in     number   default null
1586   ,p_percentage                    in     number   default null
1587   ,p_priority                      in     number   default null
1588   ,p_comments                      in     varchar2 default null
1589   ,p_attribute_category            in     varchar2 default null
1590   ,p_attribute1                    in     varchar2 default null
1591   ,p_attribute2                    in     varchar2 default null
1592   ,p_attribute3                    in     varchar2 default null
1593   ,p_attribute4                    in     varchar2 default null
1594   ,p_attribute5                    in     varchar2 default null
1595   ,p_attribute6                    in     varchar2 default null
1596   ,p_attribute7                    in     varchar2 default null
1597   ,p_attribute8                    in     varchar2 default null
1598   ,p_attribute9                    in     varchar2 default null
1599   ,p_attribute10                   in     varchar2 default null
1600   ,p_attribute11                   in     varchar2 default null
1601   ,p_attribute12                   in     varchar2 default null
1602   ,p_attribute13                   in     varchar2 default null
1603   ,p_attribute14                   in     varchar2 default null
1604   ,p_attribute15                   in     varchar2 default null
1605   ,p_attribute16                   in     varchar2 default null
1606   ,p_attribute17                   in     varchar2 default null
1607   ,p_attribute18                   in     varchar2 default null
1608   ,p_attribute19                   in     varchar2 default null
1609   ,p_attribute20                   in     varchar2 default null
1610   ,p_payee_type                    in     varchar2 default null
1611   ,p_payee_id                      in     number   default null
1612   ,p_prenote_date                  in     date     default null
1613   ,p_territory_code                in     varchar2 default null      -- Bug 6469439
1614   /*Bug# 8717589*/
1615   ,p_ppm_information_category      in     varchar2 default null
1616   ,p_ppm_information1              in     varchar2 default null
1617   ,p_ppm_information2              in     varchar2 default null
1618   ,p_ppm_information3              in     varchar2 default null
1619   ,p_ppm_information4              in     varchar2 default null
1620   ,p_ppm_information5              in     varchar2 default null
1621   ,p_ppm_information6              in     varchar2 default null
1622   ,p_ppm_information7              in     varchar2 default null
1623   ,p_ppm_information8              in     varchar2 default null
1624   ,p_ppm_information9              in     varchar2 default null
1625   ,p_ppm_information10             in     varchar2 default null
1626   ,p_ppm_information11             in     varchar2 default null
1627   ,p_ppm_information12             in     varchar2 default null
1628   ,p_ppm_information13             in     varchar2 default null
1629   ,p_ppm_information14             in     varchar2 default null
1630   ,p_ppm_information15             in     varchar2 default null
1631   ,p_ppm_information16             in     varchar2 default null
1632   ,p_ppm_information17             in     varchar2 default null
1633   ,p_ppm_information18             in     varchar2 default null
1634   ,p_ppm_information19             in     varchar2 default null
1635   ,p_ppm_information20             in     varchar2 default null
1636   ,p_ppm_information21             in     varchar2 default null
1637   ,p_ppm_information22             in     varchar2 default null
1638   ,p_ppm_information23             in     varchar2 default null
1639   ,p_ppm_information24             in     varchar2 default null
1640   ,p_ppm_information25             in     varchar2 default null
1641   ,p_ppm_information26             in     varchar2 default null
1642   ,p_ppm_information27             in     varchar2 default null
1643   ,p_ppm_information28             in     varchar2 default null
1644   ,p_ppm_information29             in     varchar2 default null
1645   ,p_ppm_information30             in     varchar2 default null
1646   ,p_personal_payment_method_id    out    nocopy number
1647   ,p_external_account_id           out    nocopy number
1648   ,p_object_version_number         out    nocopy number
1649   ,p_effective_start_date          out    nocopy date
1650   ,p_effective_end_date            out    nocopy date
1651   ,p_comment_id                    out    nocopy number
1652   ) is
1653   --
1654   -- Declare cursors and local variables
1655   --
1656   l_proc                varchar2(72);
1657   l_valid               varchar2(150);
1658   l_effective_date      date;
1659   l_territory_code      varchar2(30);
1660   --
1661 begin
1662   g_debug := hr_utility.debug_enabled;
1663   if g_debug then
1664      l_proc := g_package||'create_us_personal_pay_method';
1665      hr_utility.set_location('Entering:'|| l_proc, 5);
1666   end if;
1667   --
1668   l_effective_date := p_effective_date;
1669   --
1670   --
1671   hr_personal_pay_method_api.check_insert_legislation
1672   (p_assignment_id   => p_assignment_id
1673   ,p_effective_date  => l_effective_date
1674   ,p_leg_code        => 'US');
1675   --
1676   if g_debug then
1677      hr_utility.set_location(l_proc, 7);
1678   end if;
1679   --
1680   if p_territory_code is null then
1681      l_territory_code := 'US';
1682   else
1683      l_territory_code := p_territory_code;
1684   end if;
1685   --
1686   -- Call the business process to create the personal payment method
1687   --
1688   hr_personal_pay_method_api.create_personal_pay_method
1689   (p_validate                      => p_validate
1690   ,p_effective_date                => l_effective_date
1691   ,p_assignment_id                 => p_assignment_id
1692   ,p_run_type_id                   => p_run_type_id
1693   ,p_org_payment_method_id         => p_org_payment_method_id
1694   ,p_amount                        => p_amount
1695   ,p_percentage                    => p_percentage
1696   ,p_priority                      => p_priority
1697   ,p_comments                      => p_comments
1698   ,p_attribute_category            => p_attribute_category
1699   ,p_attribute1                    => p_attribute1
1700   ,p_attribute2                    => p_attribute2
1701   ,p_attribute3                    => p_attribute3
1702   ,p_attribute4                    => p_attribute4
1703   ,p_attribute5                    => p_attribute5
1704   ,p_attribute6                    => p_attribute6
1705   ,p_attribute7                    => p_attribute7
1706   ,p_attribute8                    => p_attribute8
1707   ,p_attribute9                    => p_attribute9
1708   ,p_attribute10                   => p_attribute10
1709   ,p_attribute11                   => p_attribute11
1710   ,p_attribute12                   => p_attribute12
1711   ,p_attribute13                   => p_attribute13
1712   ,p_attribute14                   => p_attribute14
1713   ,p_attribute15                   => p_attribute15
1714   ,p_attribute16                   => p_attribute16
1715   ,p_attribute17                   => p_attribute17
1716   ,p_attribute18                   => p_attribute18
1717   ,p_attribute19                   => p_attribute19
1718   ,p_attribute20                   => p_attribute20
1719   ,p_territory_code                => l_territory_code   --6469439
1720   ,p_segment1                      => p_account_name
1721   ,p_segment2                      => p_account_type
1722   ,p_segment3                      => p_account_number
1723   ,p_segment4                      => lpad(p_transit_code,9,'0')
1724   ,p_segment5                      => p_bank_name
1725   ,p_segment6                      => p_bank_branch
1726   ,p_payee_type                    => p_payee_type
1727   ,p_payee_id                      => p_payee_id
1728   ,p_ppm_information_category      => p_ppm_information_category
1729   ,p_ppm_information1              => p_ppm_information1
1730   ,p_ppm_information2              => p_ppm_information2
1731   ,p_ppm_information3              => p_ppm_information3
1732   ,p_ppm_information4              => p_ppm_information4
1733   ,p_ppm_information5              => p_ppm_information5
1734   ,p_ppm_information6              => p_ppm_information6
1735   ,p_ppm_information7              => p_ppm_information7
1736   ,p_ppm_information8              => p_ppm_information8
1737   ,p_ppm_information9              => p_ppm_information9
1738   ,p_ppm_information10             => p_ppm_information10
1739   ,p_ppm_information11             => p_ppm_information11
1740   ,p_ppm_information12             => p_ppm_information12
1741   ,p_ppm_information13             => p_ppm_information13
1742   ,p_ppm_information14             => p_ppm_information14
1743   ,p_ppm_information15             => p_ppm_information15
1744   ,p_ppm_information16             => p_ppm_information16
1745   ,p_ppm_information17             => p_ppm_information17
1746   ,p_ppm_information18             => p_ppm_information18
1747   ,p_ppm_information19             => p_ppm_information19
1748   ,p_ppm_information20             => p_ppm_information20
1749   ,p_ppm_information21             => p_ppm_information21
1750   ,p_ppm_information22             => p_ppm_information22
1751   ,p_ppm_information23             => p_ppm_information23
1752   ,p_ppm_information24             => p_ppm_information24
1753   ,p_ppm_information25             => p_ppm_information25
1754   ,p_ppm_information26             => p_ppm_information26
1755   ,p_ppm_information27             => p_ppm_information27
1756   ,p_ppm_information28             => p_ppm_information28
1757   ,p_ppm_information29             => p_ppm_information29
1758   ,p_ppm_information30             => p_ppm_information30
1759   ,p_personal_payment_method_id    => p_personal_payment_method_id
1760   ,p_external_account_id           => p_external_account_id
1761   ,p_object_version_number         => p_object_version_number
1762   ,p_effective_start_date          => p_effective_start_date
1763   ,p_effective_end_date            => p_effective_end_date
1764   ,p_comment_id                    => p_comment_id
1765   );
1766   --
1767   -- Update prenote date if external account is generated.
1768   --
1769   if p_prenote_date is not null and p_external_account_id is not null then
1770     --
1771     upd_prenote_date
1772       (p_personal_payment_method_id => p_personal_payment_method_id
1773       ,p_external_account_id        => p_external_account_id
1774       ,p_effective_date             => l_effective_date
1775       ,p_prenote_date               => p_prenote_date);
1776     --
1777   end if;
1778   --
1779   if g_debug then
1780      hr_utility.set_location(' Leaving:'||l_proc, 10);
1781   end if;
1782 end create_us_personal_pay_method;
1783 --
1784 -- ----------------------------------------------------------------------------
1785 -- |--------------------< create_ca_personal_pay_method >---------------------|
1786 -- ----------------------------------------------------------------------------
1787 --
1788 procedure create_ca_personal_pay_method
1789   (p_validate                      in     boolean  default false
1790   ,p_effective_date                in     date
1791   ,p_assignment_id                 in     number
1792   ,p_run_type_id                   in     number  default null
1793   ,p_org_payment_method_id         in     number
1794   ,p_account_name                  in     varchar2
1795   ,p_account_number                in     varchar2
1796   ,p_transit_code                  in     varchar2
1797   ,p_bank_name                     in     varchar2
1798   ,p_bank_number                   in     varchar2
1799   ,p_account_type                  in     varchar2 default null
1800   ,p_bank_branch                   in     varchar2 default null
1801   ,p_amount                        in     number   default null
1802   ,p_percentage                    in     number   default null
1803   ,p_priority                      in     number   default null
1804   ,p_comments                      in     varchar2 default null
1805   ,p_attribute_category            in     varchar2 default null
1806   ,p_attribute1                    in     varchar2 default null
1807   ,p_attribute2                    in     varchar2 default null
1808   ,p_attribute3                    in     varchar2 default null
1809   ,p_attribute4                    in     varchar2 default null
1810   ,p_attribute5                    in     varchar2 default null
1811   ,p_attribute6                    in     varchar2 default null
1812   ,p_attribute7                    in     varchar2 default null
1813   ,p_attribute8                    in     varchar2 default null
1814   ,p_attribute9                    in     varchar2 default null
1815   ,p_attribute10                   in     varchar2 default null
1816   ,p_attribute11                   in     varchar2 default null
1817   ,p_attribute12                   in     varchar2 default null
1818   ,p_attribute13                   in     varchar2 default null
1819   ,p_attribute14                   in     varchar2 default null
1820   ,p_attribute15                   in     varchar2 default null
1821   ,p_attribute16                   in     varchar2 default null
1822   ,p_attribute17                   in     varchar2 default null
1823   ,p_attribute18                   in     varchar2 default null
1824   ,p_attribute19                   in     varchar2 default null
1825   ,p_attribute20                   in     varchar2 default null
1826   ,p_payee_type                    in     varchar2 default null
1827   ,p_payee_id                      in     number   default null
1828   ,p_territory_code                in     varchar2 default null      -- Bug 6469439
1829   /*Bug# 8717589*/
1830   ,p_ppm_information_category      in     varchar2 default null
1831   ,p_ppm_information1              in     varchar2 default null
1832   ,p_ppm_information2              in     varchar2 default null
1833   ,p_ppm_information3              in     varchar2 default null
1834   ,p_ppm_information4              in     varchar2 default null
1835   ,p_ppm_information5              in     varchar2 default null
1836   ,p_ppm_information6              in     varchar2 default null
1837   ,p_ppm_information7              in     varchar2 default null
1838   ,p_ppm_information8              in     varchar2 default null
1839   ,p_ppm_information9              in     varchar2 default null
1840   ,p_ppm_information10             in     varchar2 default null
1841   ,p_ppm_information11             in     varchar2 default null
1842   ,p_ppm_information12             in     varchar2 default null
1843   ,p_ppm_information13             in     varchar2 default null
1844   ,p_ppm_information14             in     varchar2 default null
1845   ,p_ppm_information15             in     varchar2 default null
1846   ,p_ppm_information16             in     varchar2 default null
1847   ,p_ppm_information17             in     varchar2 default null
1848   ,p_ppm_information18             in     varchar2 default null
1849   ,p_ppm_information19             in     varchar2 default null
1850   ,p_ppm_information20             in     varchar2 default null
1851   ,p_ppm_information21             in     varchar2 default null
1852   ,p_ppm_information22             in     varchar2 default null
1853   ,p_ppm_information23             in     varchar2 default null
1854   ,p_ppm_information24             in     varchar2 default null
1855   ,p_ppm_information25             in     varchar2 default null
1856   ,p_ppm_information26             in     varchar2 default null
1857   ,p_ppm_information27             in     varchar2 default null
1858   ,p_ppm_information28             in     varchar2 default null
1859   ,p_ppm_information29             in     varchar2 default null
1860   ,p_ppm_information30             in     varchar2 default null
1861   ,p_personal_payment_method_id    out    nocopy number
1862   ,p_external_account_id           out    nocopy number
1863   ,p_object_version_number         out    nocopy number
1864   ,p_effective_start_date          out    nocopy date
1865   ,p_effective_end_date            out    nocopy date
1866   ,p_comment_id                    out    nocopy number
1867   ) is
1868   --
1869   -- Declare cursors and local variables
1870   --
1871   l_proc                varchar2(72);
1872   l_valid               varchar2(150);
1873   l_effective_date      date;
1874   l_territory_code      varchar2(30);
1875   --
1876 begin
1877   g_debug := hr_utility.debug_enabled;
1878   if g_debug then
1879      l_proc := g_package||'create_ca_personal_pay_method';
1880      hr_utility.set_location('Entering:'|| l_proc, 5);
1881   end if;
1882   --
1883   l_effective_date := p_effective_date;
1884   --
1885   --
1886   hr_personal_pay_method_api.check_insert_legislation
1887   (p_assignment_id   => p_assignment_id
1888   ,p_effective_date  => l_effective_date
1889   ,p_leg_code        => 'CA');
1890   --
1891   if g_debug then
1892      hr_utility.set_location(l_proc, 7);
1893   end if;
1894   --
1895   if p_territory_code is null then
1896      l_territory_code := 'CA';
1897   else
1898      l_territory_code := p_territory_code;
1899   end if;
1900   --
1901   -- Call the business process to create the personal payment method
1902   --
1903   hr_personal_pay_method_api.create_personal_pay_method
1904   (p_validate                      => p_validate
1905   ,p_effective_date                => l_effective_date
1906   ,p_assignment_id                 => p_assignment_id
1907   ,p_run_type_id                   => p_run_type_id
1908   ,p_org_payment_method_id         => p_org_payment_method_id
1909   ,p_amount                        => p_amount
1910   ,p_percentage                    => p_percentage
1911   ,p_priority                      => p_priority
1912   ,p_comments                      => p_comments
1913   ,p_attribute_category            => p_attribute_category
1914   ,p_attribute1                    => p_attribute1
1915   ,p_attribute2                    => p_attribute2
1916   ,p_attribute3                    => p_attribute3
1917   ,p_attribute4                    => p_attribute4
1918   ,p_attribute5                    => p_attribute5
1919   ,p_attribute6                    => p_attribute6
1920   ,p_attribute7                    => p_attribute7
1921   ,p_attribute8                    => p_attribute8
1922   ,p_attribute9                    => p_attribute9
1923   ,p_attribute10                   => p_attribute10
1924   ,p_attribute11                   => p_attribute11
1925   ,p_attribute12                   => p_attribute12
1926   ,p_attribute13                   => p_attribute13
1927   ,p_attribute14                   => p_attribute14
1928   ,p_attribute15                   => p_attribute15
1929   ,p_attribute16                   => p_attribute16
1930   ,p_attribute17                   => p_attribute17
1931   ,p_attribute18                   => p_attribute18
1932   ,p_attribute19                   => p_attribute19
1933   ,p_attribute20                   => p_attribute20
1934   ,p_territory_code                => l_territory_code   --6469439
1935   ,p_segment1                      => p_account_name
1936   ,p_segment2                      => p_account_type
1937   ,p_segment3                      => p_account_number
1938   ,p_segment4                      => lpad(p_transit_code,5,'0')
1939   ,p_segment5                      => p_bank_name
1940   ,p_segment6                      => p_bank_branch
1941   ,p_segment7                      => p_bank_number
1942   ,p_payee_type                    => p_payee_type
1943   ,p_payee_id                      => p_payee_id
1944   ,p_ppm_information_category      => p_ppm_information_category
1945   ,p_ppm_information1              => p_ppm_information1
1946   ,p_ppm_information2              => p_ppm_information2
1947   ,p_ppm_information3              => p_ppm_information3
1948   ,p_ppm_information4              => p_ppm_information4
1949   ,p_ppm_information5              => p_ppm_information5
1950   ,p_ppm_information6              => p_ppm_information6
1951   ,p_ppm_information7              => p_ppm_information7
1952   ,p_ppm_information8              => p_ppm_information8
1953   ,p_ppm_information9              => p_ppm_information9
1954   ,p_ppm_information10             => p_ppm_information10
1955   ,p_ppm_information11             => p_ppm_information11
1956   ,p_ppm_information12             => p_ppm_information12
1957   ,p_ppm_information13             => p_ppm_information13
1958   ,p_ppm_information14             => p_ppm_information14
1959   ,p_ppm_information15             => p_ppm_information15
1960   ,p_ppm_information16             => p_ppm_information16
1961   ,p_ppm_information17             => p_ppm_information17
1962   ,p_ppm_information18             => p_ppm_information18
1963   ,p_ppm_information19             => p_ppm_information19
1964   ,p_ppm_information20             => p_ppm_information20
1965   ,p_ppm_information21             => p_ppm_information21
1966   ,p_ppm_information22             => p_ppm_information22
1967   ,p_ppm_information23             => p_ppm_information23
1968   ,p_ppm_information24             => p_ppm_information24
1969   ,p_ppm_information25             => p_ppm_information25
1970   ,p_ppm_information26             => p_ppm_information26
1971   ,p_ppm_information27             => p_ppm_information27
1972   ,p_ppm_information28             => p_ppm_information28
1973   ,p_ppm_information29             => p_ppm_information29
1974   ,p_ppm_information30             => p_ppm_information30
1975   ,p_personal_payment_method_id    => p_personal_payment_method_id
1976   ,p_external_account_id           => p_external_account_id
1977   ,p_object_version_number         => p_object_version_number
1978   ,p_effective_start_date          => p_effective_start_date
1979   ,p_effective_end_date            => p_effective_end_date
1980   ,p_comment_id                    => p_comment_id
1981   );
1982   --
1983   if g_debug then
1984      hr_utility.set_location(' Leaving:'||l_proc, 8);
1985   end if;
1986 end create_ca_personal_pay_method;
1987 --
1988 -- ----------------------------------------------------------------------------
1989 -- |----------------------< update_personal_pay_method >----------------------|
1990 -- ----------------------------------------------------------------------------
1991 --
1992 procedure update_personal_pay_method
1993   (p_validate                      in     boolean  default false
1994   ,p_effective_date                in     date
1995   ,p_datetrack_update_mode         in     varchar2
1996   ,p_personal_payment_method_id    in     number
1997   ,p_object_version_number         in out nocopy number
1998   ,p_amount                        in     number   default hr_api.g_number
1999   ,p_comments                      in     varchar2 default hr_api.g_varchar2
2000   ,p_percentage                    in     number   default hr_api.g_number
2001   ,p_priority                      in     number   default hr_api.g_number
2002   ,p_attribute_category            in     varchar2 default hr_api.g_varchar2
2003   ,p_attribute1                    in     varchar2 default hr_api.g_varchar2
2004   ,p_attribute2                    in     varchar2 default hr_api.g_varchar2
2005   ,p_attribute3                    in     varchar2 default hr_api.g_varchar2
2006   ,p_attribute4                    in     varchar2 default hr_api.g_varchar2
2007   ,p_attribute5                    in     varchar2 default hr_api.g_varchar2
2008   ,p_attribute6                    in     varchar2 default hr_api.g_varchar2
2009   ,p_attribute7                    in     varchar2 default hr_api.g_varchar2
2010   ,p_attribute8                    in     varchar2 default hr_api.g_varchar2
2011   ,p_attribute9                    in     varchar2 default hr_api.g_varchar2
2012   ,p_attribute10                   in     varchar2 default hr_api.g_varchar2
2013   ,p_attribute11                   in     varchar2 default hr_api.g_varchar2
2014   ,p_attribute12                   in     varchar2 default hr_api.g_varchar2
2015   ,p_attribute13                   in     varchar2 default hr_api.g_varchar2
2016   ,p_attribute14                   in     varchar2 default hr_api.g_varchar2
2017   ,p_attribute15                   in     varchar2 default hr_api.g_varchar2
2018   ,p_attribute16                   in     varchar2 default hr_api.g_varchar2
2019   ,p_attribute17                   in     varchar2 default hr_api.g_varchar2
2020   ,p_attribute18                   in     varchar2 default hr_api.g_varchar2
2021   ,p_attribute19                   in     varchar2 default hr_api.g_varchar2
2022   ,p_attribute20                   in     varchar2 default hr_api.g_varchar2
2023   ,p_territory_code                in     varchar2 default hr_api.g_varchar2
2024   ,p_segment1                      in     varchar2 default hr_api.g_varchar2
2025   ,p_segment2                      in     varchar2 default hr_api.g_varchar2
2026   ,p_segment3                      in     varchar2 default hr_api.g_varchar2
2027   ,p_segment4                      in     varchar2 default hr_api.g_varchar2
2028   ,p_segment5                      in     varchar2 default hr_api.g_varchar2
2029   ,p_segment6                      in     varchar2 default hr_api.g_varchar2
2030   ,p_segment7                      in     varchar2 default hr_api.g_varchar2
2031   ,p_segment8                      in     varchar2 default hr_api.g_varchar2
2032   ,p_segment9                      in     varchar2 default hr_api.g_varchar2
2033   ,p_segment10                     in     varchar2 default hr_api.g_varchar2
2034   ,p_segment11                     in     varchar2 default hr_api.g_varchar2
2035   ,p_segment12                     in     varchar2 default hr_api.g_varchar2
2036   ,p_segment13                     in     varchar2 default hr_api.g_varchar2
2037   ,p_segment14                     in     varchar2 default hr_api.g_varchar2
2038   ,p_segment15                     in     varchar2 default hr_api.g_varchar2
2039   ,p_segment16                     in     varchar2 default hr_api.g_varchar2
2040   ,p_segment17                     in     varchar2 default hr_api.g_varchar2
2041   ,p_segment18                     in     varchar2 default hr_api.g_varchar2
2042   ,p_segment19                     in     varchar2 default hr_api.g_varchar2
2043   ,p_segment20                     in     varchar2 default hr_api.g_varchar2
2044   ,p_segment21                     in     varchar2 default hr_api.g_varchar2
2045   ,p_segment22                     in     varchar2 default hr_api.g_varchar2
2046   ,p_segment23                     in     varchar2 default hr_api.g_varchar2
2047   ,p_segment24                     in     varchar2 default hr_api.g_varchar2
2048   ,p_segment25                     in     varchar2 default hr_api.g_varchar2
2049   ,p_segment26                     in     varchar2 default hr_api.g_varchar2
2050   ,p_segment27                     in     varchar2 default hr_api.g_varchar2
2051   ,p_segment28                     in     varchar2 default hr_api.g_varchar2
2052   ,p_segment29                     in     varchar2 default hr_api.g_varchar2
2053   ,p_segment30                     in     varchar2 default hr_api.g_varchar2
2054 /** sbilling **/
2055   ,p_concat_segments               in     varchar2 default null
2056   ,p_payee_type                    in     varchar2 default hr_api.g_varchar2
2057   ,p_payee_id                      in     number   default hr_api.g_number
2058   ,p_ppm_information_category      in     varchar2 default hr_api.g_varchar2  --Bug 6439573
2059   ,p_ppm_information1              in     varchar2 default hr_api.g_varchar2
2060   ,p_ppm_information2              in     varchar2 default hr_api.g_varchar2
2061   ,p_ppm_information3              in     varchar2 default hr_api.g_varchar2
2062   ,p_ppm_information4              in     varchar2 default hr_api.g_varchar2
2063   ,p_ppm_information5              in     varchar2 default hr_api.g_varchar2
2064   ,p_ppm_information6              in     varchar2 default hr_api.g_varchar2
2065   ,p_ppm_information7              in     varchar2 default hr_api.g_varchar2
2066   ,p_ppm_information8              in     varchar2 default hr_api.g_varchar2
2067   ,p_ppm_information9              in     varchar2 default hr_api.g_varchar2
2068   ,p_ppm_information10             in     varchar2 default hr_api.g_varchar2
2069   ,p_ppm_information11             in     varchar2 default hr_api.g_varchar2
2070   ,p_ppm_information12             in     varchar2 default hr_api.g_varchar2
2071   ,p_ppm_information13             in     varchar2 default hr_api.g_varchar2
2072   ,p_ppm_information14             in     varchar2 default hr_api.g_varchar2
2073   ,p_ppm_information15             in     varchar2 default hr_api.g_varchar2
2074   ,p_ppm_information16             in     varchar2 default hr_api.g_varchar2
2075   ,p_ppm_information17             in     varchar2 default hr_api.g_varchar2
2076   ,p_ppm_information18             in     varchar2 default hr_api.g_varchar2
2077   ,p_ppm_information19             in     varchar2 default hr_api.g_varchar2
2078   ,p_ppm_information20             in     varchar2 default hr_api.g_varchar2
2079   ,p_ppm_information21             in     varchar2 default hr_api.g_varchar2
2080   ,p_ppm_information22             in     varchar2 default hr_api.g_varchar2
2081   ,p_ppm_information23             in     varchar2 default hr_api.g_varchar2
2082   ,p_ppm_information24             in     varchar2 default hr_api.g_varchar2
2083   ,p_ppm_information25             in     varchar2 default hr_api.g_varchar2
2084   ,p_ppm_information26             in     varchar2 default hr_api.g_varchar2
2085   ,p_ppm_information27             in     varchar2 default hr_api.g_varchar2
2086   ,p_ppm_information28             in     varchar2 default hr_api.g_varchar2
2087   ,p_ppm_information29             in     varchar2 default hr_api.g_varchar2
2088   ,p_ppm_information30             in     varchar2 default hr_api.g_varchar2
2089   ,p_comment_id                    out nocopy    number
2090   ,p_external_account_id           out nocopy    number
2091   ,p_effective_start_date          out nocopy    date
2092   ,p_effective_end_date            out nocopy    date
2093   ) is
2094   --
2095   -- Declare cursors and local variables
2096   --
2097   --
2098   l_proc               varchar2(72);
2099   l_business_group_id  per_assignments_f.business_group_id%TYPE;
2100   l_validate           boolean := FALSE;
2101   l_external_account_id
2102                        pay_personal_payment_methods_f.external_account_id%TYPE;
2103   l_object_version_number
2104                        pay_external_accounts.object_version_number%TYPE;
2105   l_exa_ovn            number;
2106   l_effective_date     date;
2107   l_ppm_information_category pay_personal_payment_methods_f.ppm_information_category%TYPE;
2108   --
2109   -- Declare OUT variables
2110   --
2111   l_comment_id
2112                        pay_personal_payment_methods_f.comment_id%TYPE;
2113   l_effective_start_date
2114                        pay_personal_payment_methods_f.effective_start_date%TYPE;
2115   l_effective_end_date
2116                        pay_personal_payment_methods_f.effective_end_date%TYPE;
2117   l_category varchar(2000);
2118   l_territory_code varchar2(2000);
2119   l_exa_territory_code varchar2(2000);
2120   --
2121   cursor bgsel is
2122     select ppm.business_group_id,
2123            ppm.external_account_id
2124     from   pay_personal_payment_methods_f ppm
2125     where  ppm.personal_payment_method_id = p_personal_payment_method_id
2126     and    p_effective_date between ppm.effective_start_date
2127                             and     ppm.effective_end_date;
2128   --
2129   cursor ovnsel is
2130     select pea.object_version_number
2131     ,      pea.territory_code
2132     from pay_external_accounts pea
2133     where pea.external_account_id = l_external_account_id;
2134   --
2135   cursor csr_chk_pay_type is
2136   select pyt.category
2137   from pay_personal_payment_methods_f ppm
2138   ,    pay_org_payment_methods_f opm
2139   ,    pay_payment_types pyt
2140   where ppm.personal_payment_method_id = p_personal_payment_method_id
2141   and   p_effective_date between
2142         ppm.effective_start_date and ppm.effective_end_date
2143   and   opm.org_payment_method_id = ppm.org_payment_method_id
2144   and   p_effective_date between
2145         opm.effective_start_date and opm.effective_end_date
2146   and   opm.payment_type_id = pyt.payment_type_id
2147   ;
2148   --
2149   cursor csr_ppm_info_category ( p_personal_payment_method_id number,
2150                                  p_effective_date date) is
2151      select decode(ppt.territory_code,null,null,ppt.territory_code||'_')||UPPER(ppt.payment_type_name) ppm_information_category
2152        from pay_payment_types ppt,
2153             pay_org_payment_methods_f opm,
2154             pay_personal_payment_methods_f ppm
2155       where ppm.personal_payment_method_id = p_personal_payment_method_id
2156         and p_effective_date between ppm.effective_start_date and ppm.effective_end_date
2157         and opm.org_payment_method_id = ppm.org_payment_method_id
2158         and p_effective_date between opm.effective_start_date and opm.effective_end_date
2159         and opm.payment_type_id = ppt.payment_type_id;
2160   --
2161 --
2162 -- In Out parameter
2163 --
2164   l_object_version_number1        number;
2165 --
2166 begin
2167   g_debug := hr_utility.debug_enabled;
2168   if g_debug then
2169      l_proc := g_package||'update_personal_pay_method';
2170      hr_utility.set_location('Entering:'|| l_proc, 5);
2171   end if;
2172   --
2173   -- Assign in-out parameters to local variable
2174   -- and issue the savepoint.
2175   --
2176   l_object_version_number1 := p_object_version_number;
2177   --
2178   savepoint update_personal_pay_method;
2179   --
2180   --
2181   -- Check that p_personal_payment_method_id and p_effective_date are not null
2182   -- as they are used by the cursor to derive the business group.
2183   --
2184   hr_api.mandatory_arg_error
2185     (p_api_name       => l_proc,
2186      p_argument       => 'personal_payment_method_id',
2187      p_argument_value => p_personal_payment_method_id);
2188 
2189   hr_api.mandatory_arg_error
2190     (p_api_name       => l_proc,
2191      p_argument       => 'effective_date',
2192      p_argument_value => p_effective_date);
2193   --
2194   if g_debug then
2195      hr_utility.set_location(l_proc, 6);
2196   end if;
2197   --
2198   l_effective_date := trunc(p_effective_date);
2199   --
2200   begin
2201     --
2202     -- Start of API User Hook for the before hook of update_personal_pay_method
2203     --
2204     hr_personal_pay_method_bk2.update_personal_pay_method_b
2205       (p_effective_date                => l_effective_date
2206       ,p_datetrack_update_mode         => p_datetrack_update_mode
2207       ,p_personal_payment_method_id    => p_personal_payment_method_id
2208       ,p_object_version_number         => p_object_version_number
2209       ,p_amount                        => p_amount
2210       ,p_comments                      => p_comments
2211       ,p_percentage                    => p_percentage
2212       ,p_priority                      => p_priority
2213       ,p_attribute_category            => p_attribute_category
2214       ,p_attribute1                    => p_attribute1
2215       ,p_attribute2                    => p_attribute2
2216       ,p_attribute3                    => p_attribute3
2217       ,p_attribute4                    => p_attribute4
2218       ,p_attribute5                    => p_attribute5
2219       ,p_attribute6                    => p_attribute6
2220       ,p_attribute7                    => p_attribute7
2221       ,p_attribute8                    => p_attribute8
2222       ,p_attribute9                    => p_attribute9
2223       ,p_attribute10                   => p_attribute10
2224       ,p_attribute11                   => p_attribute11
2225       ,p_attribute12                   => p_attribute12
2226       ,p_attribute13                   => p_attribute13
2227       ,p_attribute14                   => p_attribute14
2228       ,p_attribute15                   => p_attribute15
2229       ,p_attribute16                   => p_attribute16
2230       ,p_attribute17                   => p_attribute17
2231       ,p_attribute18                   => p_attribute18
2232       ,p_attribute19                   => p_attribute19
2233       ,p_attribute20                   => p_attribute20
2234       ,p_territory_code                => p_territory_code
2235       ,p_segment1                      => p_segment1
2236       ,p_segment2                      => p_segment2
2237       ,p_segment3                      => p_segment3
2238 --    ,p_segment4                      => lpad(p_segment4,9,'0')
2239       ,p_segment4                      => p_segment4
2240       ,p_segment5                      => p_segment5
2241       ,p_segment6                      => p_segment6
2242       ,p_segment7                      => p_segment7
2243       ,p_segment8                      => p_segment8
2244       ,p_segment9                      => p_segment9
2245       ,p_segment10                     => p_segment10
2246       ,p_segment11                     => p_segment11
2247       ,p_segment12                     => p_segment12
2248       ,p_segment13                     => p_segment13
2249       ,p_segment14                     => p_segment14
2250       ,p_segment15                     => p_segment15
2251       ,p_segment16                     => p_segment16
2252       ,p_segment17                     => p_segment17
2253       ,p_segment18                     => p_segment18
2254       ,p_segment19                     => p_segment19
2255       ,p_segment20                     => p_segment20
2256       ,p_segment21                     => p_segment21
2257       ,p_segment22                     => p_segment22
2258       ,p_segment23                     => p_segment23
2259       ,p_segment24                     => p_segment24
2260       ,p_segment25                     => p_segment25
2261       ,p_segment26                     => p_segment26
2262       ,p_segment27                     => p_segment27
2263       ,p_segment28                     => p_segment28
2264       ,p_segment29                     => p_segment29
2265       ,p_segment30                     => p_segment30
2266       ,p_payee_type                    => p_payee_type
2267       ,p_payee_id                      => p_payee_id
2268       ,p_ppm_information1              => p_ppm_information1
2269       ,p_ppm_information2              => p_ppm_information2
2270       ,p_ppm_information3              => p_ppm_information3
2271       ,p_ppm_information4              => p_ppm_information4
2272       ,p_ppm_information5              => p_ppm_information5
2273       ,p_ppm_information6              => p_ppm_information6
2274       ,p_ppm_information7              => p_ppm_information7
2275       ,p_ppm_information8              => p_ppm_information8
2276       ,p_ppm_information9              => p_ppm_information9
2277       ,p_ppm_information10             => p_ppm_information10
2278       ,p_ppm_information11             => p_ppm_information11
2279       ,p_ppm_information12             => p_ppm_information12
2280       ,p_ppm_information13             => p_ppm_information13
2281       ,p_ppm_information14             => p_ppm_information14
2282       ,p_ppm_information15             => p_ppm_information15
2283       ,p_ppm_information16             => p_ppm_information16
2284       ,p_ppm_information17             => p_ppm_information17
2285       ,p_ppm_information18             => p_ppm_information18
2286       ,p_ppm_information19             => p_ppm_information19
2287       ,p_ppm_information20             => p_ppm_information20
2288       ,p_ppm_information21             => p_ppm_information21
2289       ,p_ppm_information22             => p_ppm_information22
2290       ,p_ppm_information23             => p_ppm_information23
2291       ,p_ppm_information24             => p_ppm_information24
2292       ,p_ppm_information25             => p_ppm_information25
2293       ,p_ppm_information26             => p_ppm_information26
2294       ,p_ppm_information27             => p_ppm_information27
2295       ,p_ppm_information28             => p_ppm_information28
2296       ,p_ppm_information29             => p_ppm_information29
2297       ,p_ppm_information30             => p_ppm_information30
2298       ,p_ppm_information_category      => p_ppm_information_category
2299       );
2300   exception
2301     when hr_api.cannot_find_prog_unit then
2302       hr_api.cannot_find_prog_unit_error
2303         (p_module_name => 'UPDATE_PERSONAL_PAY_METHOD'
2304         ,p_hook_type   => 'BP'
2305         );
2306     --
2307     -- End of API User Hook for the before hook of update_personal_pay_method
2308     --
2309   end;
2310   --
2311   -- Derive the business group id, using the personal payment method id.
2312   --
2313   open bgsel;
2314   fetch bgsel
2315   into l_business_group_id,
2316        l_external_account_id;
2317   --
2318   if bgsel%notfound then
2319     close bgsel;
2320     hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
2321     Hr_utility.raise_error;
2322   end if;
2323   --
2324   close bgsel;
2325   --
2326   if l_external_account_id is not null then
2327     open ovnsel;
2328     fetch ovnsel
2329     into l_object_version_number
2330     ,    l_territory_code;
2331     if ovnsel%notfound then
2332       close ovnsel;
2333       --
2334       -- The external account primary key is invalid, so raise an error.
2335       --
2336       hr_utility.set_message(801, 'HR_51457_PPM_INVALID_OVN');
2337       hr_utility.raise_error;
2338     end if;
2339     close ovnsel;
2340   end if;
2341   --
2342   if g_debug then
2343      hr_utility.set_location(l_proc, 7);
2344   end if;
2345   --
2346   -- Check that if payment type of the organization payment method
2347   -- is not 'MT' then all external account details should be null.
2348   -- If the values have been defaulted then assume that the code is
2349   -- updating a valid record.
2350   --
2351   open csr_chk_pay_type;
2352   fetch csr_chk_pay_type into l_category;
2353   close csr_chk_pay_type;
2354   --
2355   if l_category <> 'MT'and
2356      (nvl(p_segment1, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2357       nvl(p_segment2, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2358       nvl(p_segment3, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2359       nvl(p_segment4, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2360       nvl(p_segment5, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2361       nvl(p_segment6, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2362       nvl(p_segment7, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2363       nvl(p_segment8, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2364       nvl(p_segment9, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2365       nvl(p_segment10, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2366       nvl(p_segment11, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2367       nvl(p_segment12, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2368       nvl(p_segment13, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2369       nvl(p_segment14, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2370       nvl(p_segment15, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2371       nvl(p_segment16, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2372       nvl(p_segment17, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2373       nvl(p_segment18, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2374       nvl(p_segment19, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2375       nvl(p_segment20, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2376       nvl(p_segment21, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2377       nvl(p_segment22, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2378       nvl(p_segment23, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2379       nvl(p_segment24, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2380       nvl(p_segment25, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2381       nvl(p_segment26, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2382       nvl(p_segment27, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2383       nvl(p_segment28, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2384       nvl(p_segment29, hr_api.g_varchar2) <> hr_api.g_varchar2 or
2385       nvl(p_segment30, hr_api.g_varchar2) <> hr_api.g_varchar2) then
2386    --
2387    --  Raise Error
2388    --
2389    hr_utility.set_message(801, 'HR_51377_PPM_NON_MAG_TAPE_SEGM');
2390    hr_utility.raise_error;
2391   --
2392   elsif l_category = 'MT' then
2393     --
2394     -- Call table handler pay_exa_upd to control the processing of the external
2395     -- account combination keyflex.
2396     --
2397 
2398     -- Bug #3829284. When territory code is defaulted with hr_api.g_varchar2
2399     -- pass the derived territory code.
2400 
2401     l_exa_territory_code := p_territory_code;
2402 
2403     if p_territory_code = hr_api.g_varchar2 then
2404 
2405         l_exa_territory_code := l_territory_code;
2406 
2407     end if;
2408 
2409     pay_exa_upd.upd_or_sel
2410     (p_segment1              => p_segment1
2411     ,p_segment2              => p_segment2
2412     ,p_segment3              => p_segment3
2413     ,p_segment4              => p_segment4
2414     ,p_segment5              => p_segment5
2415     ,p_segment6              => p_segment6
2416     ,p_segment7              => p_segment7
2417     ,p_segment8              => p_segment8
2418     ,p_segment9              => p_segment9
2419     ,p_segment10             => p_segment10
2420     ,p_segment11             => p_segment11
2421     ,p_segment12             => p_segment12
2422     ,p_segment13             => p_segment13
2423     ,p_segment14             => p_segment14
2424     ,p_segment15             => p_segment15
2425     ,p_segment16             => p_segment16
2426     ,p_segment17             => p_segment17
2427     ,p_segment18             => p_segment18
2428     ,p_segment19             => p_segment19
2429     ,p_segment20             => p_segment20
2430     ,p_segment21             => p_segment21
2431     ,p_segment22             => p_segment22
2432     ,p_segment23             => p_segment23
2433     ,p_segment24             => p_segment24
2434     ,p_segment25             => p_segment25
2435     ,p_segment26             => p_segment26
2436     ,p_segment27             => p_segment27
2437     ,p_segment28             => p_segment28
2438     ,p_segment29             => p_segment29
2439     ,p_segment30             => p_segment30
2440   /** sbilling **/
2441     ,p_concat_segments       => p_concat_segments
2442     ,p_business_group_id     => l_business_group_id
2443     ,p_territory_code        => l_exa_territory_code
2444     ,p_external_account_id   => l_external_account_id
2445     ,p_object_version_number => l_exa_ovn
2446     ,p_validate              => l_validate
2447     --
2448     -- Special p_prenote_date value after bug2307154 changes.
2449     --
2450     ,p_prenote_date          => hr_api.g_date
2451     );
2452   end if;
2453   --
2454   -- Bug 3940935. Derive PPM_INFORMATION_CATEGORY.
2455   --
2456   l_ppm_information_category := hr_api.g_varchar2;
2457 
2458   if ((p_ppm_information1 <> hr_api.g_varchar2 or
2459       p_ppm_information2 <> hr_api.g_varchar2 or
2460       p_ppm_information3 <> hr_api.g_varchar2 or
2461       p_ppm_information4 <> hr_api.g_varchar2 or
2462       p_ppm_information5 <> hr_api.g_varchar2 or
2463       p_ppm_information6 <> hr_api.g_varchar2 or
2464       p_ppm_information7 <> hr_api.g_varchar2 or
2465       p_ppm_information8 <> hr_api.g_varchar2 or
2466       p_ppm_information9 <> hr_api.g_varchar2 or
2467       p_ppm_information10 <> hr_api.g_varchar2 or
2468       p_ppm_information11 <> hr_api.g_varchar2 or
2469       p_ppm_information12 <> hr_api.g_varchar2 or
2470       p_ppm_information13 <> hr_api.g_varchar2 or
2471       p_ppm_information14 <> hr_api.g_varchar2 or
2472       p_ppm_information15 <> hr_api.g_varchar2 or
2473       p_ppm_information16 <> hr_api.g_varchar2 or
2474       p_ppm_information17 <> hr_api.g_varchar2 or
2475       p_ppm_information18 <> hr_api.g_varchar2 or
2476       p_ppm_information19 <> hr_api.g_varchar2 or
2477       p_ppm_information20 <> hr_api.g_varchar2 or
2478       p_ppm_information21 <> hr_api.g_varchar2 or
2479       p_ppm_information22 <> hr_api.g_varchar2 or
2480       p_ppm_information23 <> hr_api.g_varchar2 or
2481       p_ppm_information24 <> hr_api.g_varchar2 or
2482       p_ppm_information25 <> hr_api.g_varchar2 or
2483       p_ppm_information26 <> hr_api.g_varchar2 or
2484       p_ppm_information27 <> hr_api.g_varchar2 or
2485       p_ppm_information28 <> hr_api.g_varchar2 or
2486       p_ppm_information29 <> hr_api.g_varchar2 or
2487       p_ppm_information30 <> hr_api.g_varchar2   ) and
2488       p_ppm_information_category = hr_api.g_varchar2   )then  --6439573
2489 
2490       open csr_ppm_info_category ( p_personal_payment_method_id => p_personal_payment_method_id
2491                                   ,p_effective_date => p_effective_date );
2492 
2493       fetch csr_ppm_info_category into l_ppm_information_category;
2494       if (csr_ppm_info_category%notfound) then
2495          close csr_ppm_info_category;
2496          fnd_message.set_name('PAY', 'HR_7462_PLK_INVLD_VALUE');
2497          fnd_message.set_token('COLUMN_NAME', 'PPM_INFORMATION_CATEGORY');
2498          fnd_message.raise_error;
2499       end if;
2500       close csr_ppm_info_category;
2501   /* Bug 6439573 ppm_info_category is not null, then assigned to the local one */
2502   elsif p_ppm_information_category <> hr_api.g_varchar2 then
2503       l_ppm_information_category := p_ppm_information_category;
2504   end if;
2505   --
2506   if g_debug then
2507      hr_utility.set_location(l_proc, 8);
2508   end if;
2509   --
2510   -- Call the row handler to update the personal payment method.
2511   --
2512   pay_ppm_upd.upd
2513   (p_personal_payment_method_id   => p_personal_payment_method_id
2514   ,p_effective_start_date         => l_effective_start_date
2515   ,p_effective_end_date           => l_effective_end_date
2516   ,p_external_account_id          => l_external_account_id
2517   ,p_amount                       => p_amount
2518   ,p_comment_id                   => l_comment_id
2519   ,p_comments                     => p_comments
2520   ,p_percentage                   => p_percentage
2521   ,p_priority                     => p_priority
2522   ,p_attribute_category           => p_attribute_category
2523   ,p_attribute1                   => p_attribute1
2524   ,p_attribute2                   => p_attribute2
2525   ,p_attribute3                   => p_attribute3
2526   ,p_attribute4                   => p_attribute4
2527   ,p_attribute5                   => p_attribute5
2528   ,p_attribute6                   => p_attribute6
2529   ,p_attribute7                   => p_attribute7
2530   ,p_attribute8                   => p_attribute8
2531   ,p_attribute9                   => p_attribute9
2532   ,p_attribute10                  => p_attribute10
2533   ,p_attribute11                  => p_attribute11
2534   ,p_attribute12                  => p_attribute12
2535   ,p_attribute13                  => p_attribute13
2536   ,p_attribute14                  => p_attribute14
2537   ,p_attribute15                  => p_attribute15
2538   ,p_attribute16                  => p_attribute16
2539   ,p_attribute17                  => p_attribute17
2540   ,p_attribute18                  => p_attribute18
2541   ,p_attribute19                  => p_attribute19
2542   ,p_attribute20                  => p_attribute20
2543   ,p_object_version_number        => p_object_version_number
2544   ,p_payee_type                   => p_payee_type
2545   ,p_payee_id                     => p_payee_id
2546   ,p_effective_date               => l_effective_date
2547   ,p_datetrack_mode               => p_datetrack_update_mode
2548   ,p_validate                     => l_validate
2549   ,p_ppm_information_category     => l_ppm_information_category
2550   ,p_ppm_information1             => p_ppm_information1
2551   ,p_ppm_information2             => p_ppm_information2
2552   ,p_ppm_information3             => p_ppm_information3
2553   ,p_ppm_information4             => p_ppm_information4
2554   ,p_ppm_information5             => p_ppm_information5
2555   ,p_ppm_information6             => p_ppm_information6
2556   ,p_ppm_information7             => p_ppm_information7
2557   ,p_ppm_information8             => p_ppm_information8
2558   ,p_ppm_information9             => p_ppm_information9
2559   ,p_ppm_information10            => p_ppm_information10
2560   ,p_ppm_information11            => p_ppm_information11
2561   ,p_ppm_information12            => p_ppm_information12
2562   ,p_ppm_information13            => p_ppm_information13
2563   ,p_ppm_information14            => p_ppm_information14
2564   ,p_ppm_information15            => p_ppm_information15
2565   ,p_ppm_information16            => p_ppm_information16
2566   ,p_ppm_information17            => p_ppm_information17
2567   ,p_ppm_information18            => p_ppm_information18
2568   ,p_ppm_information19            => p_ppm_information19
2569   ,p_ppm_information20            => p_ppm_information20
2570   ,p_ppm_information21            => p_ppm_information21
2571   ,p_ppm_information22            => p_ppm_information22
2572   ,p_ppm_information23            => p_ppm_information23
2573   ,p_ppm_information24            => p_ppm_information24
2574   ,p_ppm_information25            => p_ppm_information25
2575   ,p_ppm_information26            => p_ppm_information26
2576   ,p_ppm_information27            => p_ppm_information27
2577   ,p_ppm_information28            => p_ppm_information28
2578   ,p_ppm_information29            => p_ppm_information29
2579   ,p_ppm_information30            => p_ppm_information30
2580   );
2581   --
2582   -- Stamp the prenote_date on the external accounts row for 'US' magtape
2583   -- payments only.
2584   --
2585   if g_debug then
2586      hr_utility.set_location(l_proc, 9);
2587   end if;
2588   if l_territory_code = 'US' and l_category = 'MT' then
2589     stamp_prenote_date
2590     (p_personal_payment_method_id => p_personal_payment_method_id
2591     ,p_effective_date             => l_effective_date
2592     ,p_external_account_id        => l_external_account_id
2593     ,p_external_account_ovn       => l_exa_ovn
2594     );
2595   end if;
2596   --
2597   if g_debug then
2598      hr_utility.set_location(l_proc, 10);
2599   end if;
2600   --
2601   begin
2602     --
2603     -- Start of API User Hook for the after hook of update_personal_pay_method
2604     --
2605     hr_personal_pay_method_bk2.update_personal_pay_method_a
2606       (p_effective_date                => l_effective_date
2607       ,p_datetrack_update_mode         => p_datetrack_update_mode
2608       ,p_personal_payment_method_id    => p_personal_payment_method_id
2609       ,p_object_version_number         => p_object_version_number
2610       ,p_amount                        => p_amount
2611       ,p_comments                      => p_comments
2612       ,p_percentage                    => p_percentage
2613       ,p_priority                      => p_priority
2614       ,p_attribute_category            => p_attribute_category
2615       ,p_attribute1                    => p_attribute1
2616       ,p_attribute2                    => p_attribute2
2617       ,p_attribute3                    => p_attribute3
2618       ,p_attribute4                    => p_attribute4
2619       ,p_attribute5                    => p_attribute5
2620       ,p_attribute6                    => p_attribute6
2621       ,p_attribute7                    => p_attribute7
2622       ,p_attribute8                    => p_attribute8
2623       ,p_attribute9                    => p_attribute9
2624       ,p_attribute10                   => p_attribute10
2625       ,p_attribute11                   => p_attribute11
2626       ,p_attribute12                   => p_attribute12
2627       ,p_attribute13                   => p_attribute13
2628       ,p_attribute14                   => p_attribute14
2629       ,p_attribute15                   => p_attribute15
2630       ,p_attribute16                   => p_attribute16
2631       ,p_attribute17                   => p_attribute17
2632       ,p_attribute18                   => p_attribute18
2633       ,p_attribute19                   => p_attribute19
2634       ,p_attribute20                   => p_attribute20
2635       ,p_territory_code                => p_territory_code
2636       ,p_segment1                      => p_segment1
2637       ,p_segment2                      => p_segment2
2638       ,p_segment3                      => p_segment3
2639 --    ,p_segment4                      => lpad(p_segment4,9,'0')
2640       ,p_segment4                      => p_segment4
2641       ,p_segment5                      => p_segment5
2642       ,p_segment6                      => p_segment6
2643       ,p_segment7                      => p_segment7
2644       ,p_segment8                      => p_segment8
2645       ,p_segment9                      => p_segment9
2646       ,p_segment10                     => p_segment10
2647       ,p_segment11                     => p_segment11
2648       ,p_segment12                     => p_segment12
2649       ,p_segment13                     => p_segment13
2650       ,p_segment14                     => p_segment14
2651       ,p_segment15                     => p_segment15
2652       ,p_segment16                     => p_segment16
2653       ,p_segment17                     => p_segment17
2654       ,p_segment18                     => p_segment18
2655       ,p_segment19                     => p_segment19
2656       ,p_segment20                     => p_segment20
2657       ,p_segment21                     => p_segment21
2658       ,p_segment22                     => p_segment22
2659       ,p_segment23                     => p_segment23
2660       ,p_segment24                     => p_segment24
2661       ,p_segment25                     => p_segment25
2662       ,p_segment26                     => p_segment26
2663       ,p_segment27                     => p_segment27
2664       ,p_segment28                     => p_segment28
2665       ,p_segment29                     => p_segment29
2666       ,p_segment30                     => p_segment30
2667       ,p_payee_type                    => p_payee_type
2668       ,p_payee_id                      => p_payee_id
2669       ,p_comment_id                    => l_comment_id
2670       ,p_external_account_id           => l_external_account_id
2671       ,p_effective_start_date          => l_effective_start_date
2672       ,p_effective_end_date            => l_effective_end_date
2673       ,p_ppm_information1              => p_ppm_information1
2674       ,p_ppm_information2              => p_ppm_information2
2675       ,p_ppm_information3              => p_ppm_information3
2676       ,p_ppm_information4              => p_ppm_information4
2677       ,p_ppm_information5              => p_ppm_information5
2678       ,p_ppm_information6              => p_ppm_information6
2679       ,p_ppm_information7              => p_ppm_information7
2680       ,p_ppm_information8              => p_ppm_information8
2681       ,p_ppm_information9              => p_ppm_information9
2682       ,p_ppm_information10             => p_ppm_information10
2683       ,p_ppm_information11             => p_ppm_information11
2684       ,p_ppm_information12             => p_ppm_information12
2685       ,p_ppm_information13             => p_ppm_information13
2686       ,p_ppm_information14             => p_ppm_information14
2687       ,p_ppm_information15             => p_ppm_information15
2688       ,p_ppm_information16             => p_ppm_information16
2689       ,p_ppm_information17             => p_ppm_information17
2690       ,p_ppm_information18             => p_ppm_information18
2691       ,p_ppm_information19             => p_ppm_information19
2692       ,p_ppm_information20             => p_ppm_information20
2693       ,p_ppm_information21             => p_ppm_information21
2694       ,p_ppm_information22             => p_ppm_information22
2695       ,p_ppm_information23             => p_ppm_information23
2696       ,p_ppm_information24             => p_ppm_information24
2697       ,p_ppm_information25             => p_ppm_information25
2698       ,p_ppm_information26             => p_ppm_information26
2699       ,p_ppm_information27             => p_ppm_information27
2700       ,p_ppm_information28             => p_ppm_information28
2701       ,p_ppm_information29             => p_ppm_information29
2702       ,p_ppm_information30             => p_ppm_information30
2703       ,p_ppm_information_category      => l_ppm_information_category
2704       );
2705   exception
2706     when hr_api.cannot_find_prog_unit then
2707       hr_api.cannot_find_prog_unit_error
2708         (p_module_name => 'UPDATE_PERSONAL_PAY_METHOD'
2709         ,p_hook_type   => 'AP'
2710         );
2711     --
2712     -- End of API User Hook for the after hook of update_personal_pay_method
2713     --
2714   end;
2715   --
2716   -- When in validation only mode raise the Validate_Enabled exception
2717   --
2718   if p_validate then
2719     raise hr_api.validate_enabled;
2720   end if;
2721   --
2722   -- Set remaining output arguments
2723   --
2724   p_comment_id                  := l_comment_id;
2725   p_external_account_id         := l_external_account_id;
2726   p_effective_start_date        := l_effective_start_date;
2727   p_effective_end_date          := l_effective_end_date;
2728   --
2729   if g_debug then
2730      hr_utility.set_location(' Leaving:'||l_proc, 10);
2731   end if;
2732   --
2733 exception
2734   when hr_api.validate_enabled then
2735     --
2736     -- As the Validate_Enabled exception has been raised
2737     -- we must rollback to the savepoint
2738     --
2739     ROLLBACK TO update_personal_pay_method;
2740     --
2741     -- Only set output warning arguments
2742     -- (Any key or derived arguments must be set to null
2743     -- when validation only mode is being used.)
2744     --
2745     p_object_version_number  := l_object_version_number1;
2746     p_comment_id := null;
2747     p_external_account_id := null;
2748     p_effective_start_date := null;
2749     p_effective_end_date := null;
2750     --
2751   when others then
2752     --
2753     -- A validation or unexpected error has occurred
2754     --
2755     -- Added as part of fix to bug 632479
2756     --
2757     ROLLBACK TO update_personal_pay_method;
2758     p_object_version_number  := l_object_version_number1;
2759     p_comment_id := null;
2760     p_external_account_id := null;
2761     p_effective_start_date := null;
2762     p_effective_end_date := null;
2763     raise;
2764     --
2765     -- End of fix.
2766     --
2767   if g_debug then
2768      hr_utility.set_location(' Leaving:'||l_proc, 11);
2769   end if;
2770 end update_personal_pay_method;
2771 --
2772 -- ----------------------------------------------------------------------------
2773 -- |--------------------< update_gb_personal_pay_method >---------------------|
2774 -- ----------------------------------------------------------------------------
2775 --
2776 procedure update_gb_personal_pay_method
2777   (p_validate                      in     boolean  default false
2778   ,p_effective_date                in     date
2779   ,p_datetrack_update_mode         in     varchar2
2780   ,p_personal_payment_method_id    in     number
2781   ,p_object_version_number         in out nocopy number
2782   ,p_account_name                  in     varchar2 default hr_api.g_varchar2
2783   ,p_account_number                in     varchar2 default hr_api.g_varchar2
2784   ,p_sort_code                     in     varchar2 default hr_api.g_varchar2
2785   ,p_bank_name                     in     varchar2 default hr_api.g_varchar2
2786   ,p_account_type                  in     varchar2 default hr_api.g_varchar2
2787   ,p_bank_branch                   in     varchar2 default hr_api.g_varchar2
2788   ,p_bank_branch_location          in     varchar2 default hr_api.g_varchar2
2789   ,p_bldg_society_account_number   in     varchar2 default hr_api.g_varchar2
2790   ,p_amount                        in     number   default hr_api.g_number
2791   ,p_comments                      in     varchar2 default hr_api.g_varchar2
2792   ,p_percentage                    in     number   default hr_api.g_number
2793   ,p_priority                      in     number   default hr_api.g_number
2794   ,p_attribute_category            in     varchar2 default hr_api.g_varchar2
2795   ,p_attribute1                    in     varchar2 default hr_api.g_varchar2
2796   ,p_attribute2                    in     varchar2 default hr_api.g_varchar2
2797   ,p_attribute3                    in     varchar2 default hr_api.g_varchar2
2798   ,p_attribute4                    in     varchar2 default hr_api.g_varchar2
2799   ,p_attribute5                    in     varchar2 default hr_api.g_varchar2
2800   ,p_attribute6                    in     varchar2 default hr_api.g_varchar2
2801   ,p_attribute7                    in     varchar2 default hr_api.g_varchar2
2802   ,p_attribute8                    in     varchar2 default hr_api.g_varchar2
2803   ,p_attribute9                    in     varchar2 default hr_api.g_varchar2
2804   ,p_attribute10                   in     varchar2 default hr_api.g_varchar2
2805   ,p_attribute11                   in     varchar2 default hr_api.g_varchar2
2806   ,p_attribute12                   in     varchar2 default hr_api.g_varchar2
2807   ,p_attribute13                   in     varchar2 default hr_api.g_varchar2
2808   ,p_attribute14                   in     varchar2 default hr_api.g_varchar2
2809   ,p_attribute15                   in     varchar2 default hr_api.g_varchar2
2810   ,p_attribute16                   in     varchar2 default hr_api.g_varchar2
2811   ,p_attribute17                   in     varchar2 default hr_api.g_varchar2
2812   ,p_attribute18                   in     varchar2 default hr_api.g_varchar2
2813   ,p_attribute19                   in     varchar2 default hr_api.g_varchar2
2814   ,p_attribute20                   in     varchar2 default hr_api.g_varchar2
2815   ,p_payee_type                    in     varchar2 default hr_api.g_varchar2
2816   ,p_payee_id                      in     number   default hr_api.g_number
2817   ,p_territory_code                in     varchar2 default hr_api.g_varchar2
2818   ,p_comment_id                    out    nocopy number
2819   ,p_external_account_id           out    nocopy number
2820   ,p_effective_start_date          out    nocopy date
2821   ,p_effective_end_date            out    nocopy date
2822   ,p_segment9                      in     varchar2 default null -- Bug 7185344
2823   ,p_segment10                     in     varchar2 default null
2824   ,p_segment11                     in     varchar2 default null
2825   ,p_segment12                     in     varchar2 default null
2826   ,p_segment13                     in     varchar2 default null
2827   ,p_segment14                     in     varchar2 default null
2828   ,p_segment15                     in     varchar2 default null
2829   ,p_segment16                     in     varchar2 default null
2830   ,p_segment17                     in     varchar2 default null
2831   ,p_segment18                     in     varchar2 default null
2832   ,p_segment19                     in     varchar2 default null
2833   ,p_segment20                     in     varchar2 default null
2834   ,p_segment21                     in     varchar2 default null
2835   ,p_segment22                     in     varchar2 default null
2836   ,p_segment23                     in     varchar2 default null
2837   ,p_segment24                     in     varchar2 default null
2838   ,p_segment25                     in     varchar2 default null
2839   ,p_segment26                     in     varchar2 default null
2840   ,p_segment27                     in     varchar2 default null
2841   ,p_segment28                     in     varchar2 default null
2842   ,p_segment29                     in     varchar2 default null
2843   ,p_segment30                     in     varchar2 default null -- Bug 7185344
2844   /*Bug# 8717589*/
2845   ,p_ppm_information_category      in     varchar2 default hr_api.g_varchar2
2846   ,p_ppm_information1              in     varchar2 default hr_api.g_varchar2
2847   ,p_ppm_information2              in     varchar2 default hr_api.g_varchar2
2848   ,p_ppm_information3              in     varchar2 default hr_api.g_varchar2
2849   ,p_ppm_information4              in     varchar2 default hr_api.g_varchar2
2850   ,p_ppm_information5              in     varchar2 default hr_api.g_varchar2
2851   ,p_ppm_information6              in     varchar2 default hr_api.g_varchar2
2852   ,p_ppm_information7              in     varchar2 default hr_api.g_varchar2
2853   ,p_ppm_information8              in     varchar2 default hr_api.g_varchar2
2854   ,p_ppm_information9              in     varchar2 default hr_api.g_varchar2
2855   ,p_ppm_information10             in     varchar2 default hr_api.g_varchar2
2856   ,p_ppm_information11             in     varchar2 default hr_api.g_varchar2
2857   ,p_ppm_information12             in     varchar2 default hr_api.g_varchar2
2858   ,p_ppm_information13             in     varchar2 default hr_api.g_varchar2
2859   ,p_ppm_information14             in     varchar2 default hr_api.g_varchar2
2860   ,p_ppm_information15             in     varchar2 default hr_api.g_varchar2
2861   ,p_ppm_information16             in     varchar2 default hr_api.g_varchar2
2862   ,p_ppm_information17             in     varchar2 default hr_api.g_varchar2
2863   ,p_ppm_information18             in     varchar2 default hr_api.g_varchar2
2864   ,p_ppm_information19             in     varchar2 default hr_api.g_varchar2
2865   ,p_ppm_information20             in     varchar2 default hr_api.g_varchar2
2866   ,p_ppm_information21             in     varchar2 default hr_api.g_varchar2
2867   ,p_ppm_information22             in     varchar2 default hr_api.g_varchar2
2868   ,p_ppm_information23             in     varchar2 default hr_api.g_varchar2
2869   ,p_ppm_information24             in     varchar2 default hr_api.g_varchar2
2870   ,p_ppm_information25             in     varchar2 default hr_api.g_varchar2
2871   ,p_ppm_information26             in     varchar2 default hr_api.g_varchar2
2872   ,p_ppm_information27             in     varchar2 default hr_api.g_varchar2
2873   ,p_ppm_information28             in     varchar2 default hr_api.g_varchar2
2874   ,p_ppm_information29             in     varchar2 default hr_api.g_varchar2
2875   ,p_ppm_information30             in     varchar2 default hr_api.g_varchar2
2876 
2877   ) is
2878   --
2879   -- Declare cursors and local variables
2880   --
2881   l_proc                varchar2(72);
2882   --
2883 begin
2884   g_debug := hr_utility.debug_enabled;
2885   if g_debug then
2886      l_proc := g_package||'update_gb_personal_pay_method';
2887      hr_utility.set_location('Entering:'|| l_proc, 5);
2888   end if;
2889   --
2890   -- Ensure that the legislation rule for the employee assignment business
2891   -- group is 'GB'.
2892   --
2893   hr_personal_pay_method_api.check_update_legislation
2894   (p_personal_payment_method_id => p_personal_payment_method_id
2895   ,p_effective_date             => p_effective_date
2896   ,p_leg_code                   => 'GB');
2897   --
2898   if g_debug then
2899      hr_utility.set_location(l_proc, 6);
2900   end if;
2901   --
2902   -- Call the business process to update the personal payment method
2903   --
2904 hr_personal_pay_method_api.update_personal_pay_method
2905   (p_validate                      => p_validate
2906   ,p_effective_date                => trunc(p_effective_date)
2907   ,p_datetrack_update_mode         => p_datetrack_update_mode
2908   ,p_personal_payment_method_id    => p_personal_payment_method_id
2909   ,p_object_version_number         => p_object_version_number
2910   ,p_amount                        => p_amount
2911   ,p_comments                      => p_comments
2912   ,p_percentage                    => p_percentage
2913   ,p_priority                      => p_priority
2914   ,p_attribute_category            => p_attribute_category
2915   ,p_attribute1                    => p_attribute1
2916   ,p_attribute2                    => p_attribute2
2917   ,p_attribute3                    => p_attribute3
2918   ,p_attribute4                    => p_attribute4
2919   ,p_attribute5                    => p_attribute5
2920   ,p_attribute6                    => p_attribute6
2921   ,p_attribute7                    => p_attribute7
2922   ,p_attribute8                    => p_attribute8
2923   ,p_attribute9                    => p_attribute9
2924   ,p_attribute10                   => p_attribute10
2925   ,p_attribute11                   => p_attribute11
2926   ,p_attribute12                   => p_attribute12
2927   ,p_attribute13                   => p_attribute13
2928   ,p_attribute14                   => p_attribute14
2929   ,p_attribute15                   => p_attribute15
2930   ,p_attribute16                   => p_attribute16
2931   ,p_attribute17                   => p_attribute17
2932   ,p_attribute18                   => p_attribute18
2933   ,p_attribute19                   => p_attribute19
2934   ,p_attribute20                   => p_attribute20
2935   ,p_territory_code                => p_territory_code     --Bug 6469439
2936   ,p_segment1                      => p_bank_name
2937   ,p_segment2                      => p_bank_branch
2938   ,p_segment3                      => p_sort_code
2939   ,p_segment4                      => p_account_number
2940   ,p_segment5                      => p_account_name
2941   ,p_segment6                      => p_account_type
2942   ,p_segment7                      => p_bldg_society_account_number
2943   ,p_segment8                      => p_bank_branch_location
2944   ,p_payee_type                    => p_payee_type
2945   ,p_payee_id                      => p_payee_id
2946   ,p_comment_id                    => p_comment_id
2947   ,p_external_account_id           => p_external_account_id
2948   ,p_effective_start_date          => p_effective_start_date
2949   ,p_effective_end_date            => p_effective_end_date
2950   ,p_segment9                      => p_segment9    -- Bug 7185344
2951   ,p_segment10                     => p_segment10
2952   ,p_segment11                     => p_segment11
2953   ,p_segment12                     => p_segment12
2954   ,p_segment13                     => p_segment13
2955   ,p_segment14                     => p_segment14
2956   ,p_segment15                     => p_segment15
2957   ,p_segment16                     => p_segment16
2958   ,p_segment17                     => p_segment17
2959   ,p_segment18                     => p_segment18
2960   ,p_segment19                     => p_segment19
2961   ,p_segment20                     => p_segment20
2962   ,p_segment21                     => p_segment21
2963   ,p_segment22                     => p_segment22
2964   ,p_segment23                     => p_segment23
2965   ,p_segment24                     => p_segment24
2966   ,p_segment25                     => p_segment25
2967   ,p_segment26                     => p_segment26
2968   ,p_segment27                     => p_segment27
2969   ,p_segment28                     => p_segment28
2970   ,p_segment29                     => p_segment29
2971   ,p_segment30                     => p_segment30   -- Bug 7185344
2972   ,p_ppm_information_category      => p_ppm_information_category
2973   ,p_ppm_information1              => p_ppm_information1
2974   ,p_ppm_information2              => p_ppm_information2
2975   ,p_ppm_information3              => p_ppm_information3
2976   ,p_ppm_information4              => p_ppm_information4
2977   ,p_ppm_information5              => p_ppm_information5
2978   ,p_ppm_information6              => p_ppm_information6
2979   ,p_ppm_information7              => p_ppm_information7
2980   ,p_ppm_information8              => p_ppm_information8
2981   ,p_ppm_information9              => p_ppm_information9
2982   ,p_ppm_information10             => p_ppm_information10
2983   ,p_ppm_information11             => p_ppm_information11
2984   ,p_ppm_information12             => p_ppm_information12
2985   ,p_ppm_information13             => p_ppm_information13
2986   ,p_ppm_information14             => p_ppm_information14
2987   ,p_ppm_information15             => p_ppm_information15
2988   ,p_ppm_information16             => p_ppm_information16
2989   ,p_ppm_information17             => p_ppm_information17
2990   ,p_ppm_information18             => p_ppm_information18
2991   ,p_ppm_information19             => p_ppm_information19
2992   ,p_ppm_information20             => p_ppm_information20
2993   ,p_ppm_information21             => p_ppm_information21
2994   ,p_ppm_information22             => p_ppm_information22
2995   ,p_ppm_information23             => p_ppm_information23
2996   ,p_ppm_information24             => p_ppm_information24
2997   ,p_ppm_information25             => p_ppm_information25
2998   ,p_ppm_information26             => p_ppm_information26
2999   ,p_ppm_information27             => p_ppm_information27
3000   ,p_ppm_information28             => p_ppm_information28
3001   ,p_ppm_information29             => p_ppm_information29
3002   ,p_ppm_information30             => p_ppm_information30
3003   );
3004   --
3005   if g_debug then
3006      hr_utility.set_location(' Leaving:'||l_proc, 7);
3007   end if;
3008 end update_gb_personal_pay_method;
3009 --
3010 -- ----------------------------------------------------------------------------
3011 -- |--------------------< update_us_personal_pay_method >---------------------|
3012 -- ----------------------------------------------------------------------------
3013 --
3014 procedure update_us_personal_pay_method
3015   (p_validate                      in     boolean  default false
3016   ,p_effective_date                in     date
3017   ,p_datetrack_update_mode         in     varchar2
3018   ,p_personal_payment_method_id    in     number
3019   ,p_object_version_number         in out nocopy number
3020   ,p_account_name                  in     varchar2 default hr_api.g_varchar2
3021   ,p_account_number                in     varchar2 default hr_api.g_varchar2
3022   ,p_transit_code                  in     varchar2 default hr_api.g_varchar2
3023   ,p_bank_name                     in     varchar2 default hr_api.g_varchar2
3024   ,p_account_type                  in     varchar2 default hr_api.g_varchar2
3025   ,p_bank_branch                   in     varchar2 default hr_api.g_varchar2
3026   ,p_amount                        in     number   default hr_api.g_number
3027   ,p_comments                      in     varchar2 default hr_api.g_varchar2
3028   ,p_percentage                    in     number   default hr_api.g_number
3029   ,p_priority                      in     number   default hr_api.g_number
3030   ,p_attribute_category            in     varchar2 default hr_api.g_varchar2
3031   ,p_attribute1                    in     varchar2 default hr_api.g_varchar2
3032   ,p_attribute2                    in     varchar2 default hr_api.g_varchar2
3033   ,p_attribute3                    in     varchar2 default hr_api.g_varchar2
3034   ,p_attribute4                    in     varchar2 default hr_api.g_varchar2
3035   ,p_attribute5                    in     varchar2 default hr_api.g_varchar2
3036   ,p_attribute6                    in     varchar2 default hr_api.g_varchar2
3037   ,p_attribute7                    in     varchar2 default hr_api.g_varchar2
3038   ,p_attribute8                    in     varchar2 default hr_api.g_varchar2
3039   ,p_attribute9                    in     varchar2 default hr_api.g_varchar2
3040   ,p_attribute10                   in     varchar2 default hr_api.g_varchar2
3041   ,p_attribute11                   in     varchar2 default hr_api.g_varchar2
3042   ,p_attribute12                   in     varchar2 default hr_api.g_varchar2
3043   ,p_attribute13                   in     varchar2 default hr_api.g_varchar2
3044   ,p_attribute14                   in     varchar2 default hr_api.g_varchar2
3045   ,p_attribute15                   in     varchar2 default hr_api.g_varchar2
3046   ,p_attribute16                   in     varchar2 default hr_api.g_varchar2
3047   ,p_attribute17                   in     varchar2 default hr_api.g_varchar2
3048   ,p_attribute18                   in     varchar2 default hr_api.g_varchar2
3049   ,p_attribute19                   in     varchar2 default hr_api.g_varchar2
3050   ,p_attribute20                   in     varchar2 default hr_api.g_varchar2
3051   ,p_payee_type                    in     varchar2 default hr_api.g_varchar2
3052   ,p_payee_id                      in     number   default hr_api.g_number
3053   ,p_prenote_date                  in     date     default hr_api.g_date
3054   ,p_territory_code                in     varchar2 default hr_api.g_varchar2
3055    /*Bug# 8717589*/
3056   ,p_ppm_information_category      in     varchar2 default hr_api.g_varchar2
3057   ,p_ppm_information1              in     varchar2 default hr_api.g_varchar2
3058   ,p_ppm_information2              in     varchar2 default hr_api.g_varchar2
3059   ,p_ppm_information3              in     varchar2 default hr_api.g_varchar2
3060   ,p_ppm_information4              in     varchar2 default hr_api.g_varchar2
3061   ,p_ppm_information5              in     varchar2 default hr_api.g_varchar2
3062   ,p_ppm_information6              in     varchar2 default hr_api.g_varchar2
3063   ,p_ppm_information7              in     varchar2 default hr_api.g_varchar2
3064   ,p_ppm_information8              in     varchar2 default hr_api.g_varchar2
3065   ,p_ppm_information9              in     varchar2 default hr_api.g_varchar2
3066   ,p_ppm_information10             in     varchar2 default hr_api.g_varchar2
3067   ,p_ppm_information11             in     varchar2 default hr_api.g_varchar2
3068   ,p_ppm_information12             in     varchar2 default hr_api.g_varchar2
3069   ,p_ppm_information13             in     varchar2 default hr_api.g_varchar2
3070   ,p_ppm_information14             in     varchar2 default hr_api.g_varchar2
3071   ,p_ppm_information15             in     varchar2 default hr_api.g_varchar2
3072   ,p_ppm_information16             in     varchar2 default hr_api.g_varchar2
3073   ,p_ppm_information17             in     varchar2 default hr_api.g_varchar2
3074   ,p_ppm_information18             in     varchar2 default hr_api.g_varchar2
3075   ,p_ppm_information19             in     varchar2 default hr_api.g_varchar2
3076   ,p_ppm_information20             in     varchar2 default hr_api.g_varchar2
3077   ,p_ppm_information21             in     varchar2 default hr_api.g_varchar2
3078   ,p_ppm_information22             in     varchar2 default hr_api.g_varchar2
3079   ,p_ppm_information23             in     varchar2 default hr_api.g_varchar2
3080   ,p_ppm_information24             in     varchar2 default hr_api.g_varchar2
3081   ,p_ppm_information25             in     varchar2 default hr_api.g_varchar2
3082   ,p_ppm_information26             in     varchar2 default hr_api.g_varchar2
3083   ,p_ppm_information27             in     varchar2 default hr_api.g_varchar2
3084   ,p_ppm_information28             in     varchar2 default hr_api.g_varchar2
3085   ,p_ppm_information29             in     varchar2 default hr_api.g_varchar2
3086   ,p_ppm_information30             in     varchar2 default hr_api.g_varchar2
3087   ,p_comment_id                    out    nocopy number
3088   ,p_external_account_id           out    nocopy number
3089   ,p_effective_start_date          out    nocopy date
3090   ,p_effective_end_date            out    nocopy date
3091   ) is
3092   --
3093   -- Declare cursors and local variables
3094   --
3095   l_proc                varchar2(72);
3096   --
3097 begin
3098   g_debug := hr_utility.debug_enabled;
3099   if g_debug then
3100      l_proc := g_package||'update_gb_personal_pay_method';
3101      hr_utility.set_location('Entering:'|| l_proc, 5);
3102   end if;
3103   --
3104   -- Ensure that the legislation rule for the employee assignment business
3105   -- group is 'US'.
3106   --
3107   hr_personal_pay_method_api.check_update_legislation
3108   (p_personal_payment_method_id => p_personal_payment_method_id
3109   ,p_effective_date             => p_effective_date
3110   ,p_leg_code                   => 'US');
3111   --
3112   if g_debug then
3113      hr_utility.set_location(l_proc, 6);
3114   end if;
3115   --
3116   -- Call the business process to update the personal payment method
3117   --
3118 hr_personal_pay_method_api.update_personal_pay_method
3119   (p_validate                      => p_validate
3120   ,p_effective_date                => trunc(p_effective_date)
3121   ,p_datetrack_update_mode         => p_datetrack_update_mode
3122   ,p_personal_payment_method_id    => p_personal_payment_method_id
3123   ,p_object_version_number         => p_object_version_number
3124   ,p_amount                        => p_amount
3125   ,p_comments                      => p_comments
3126   ,p_percentage                    => p_percentage
3127   ,p_priority                      => p_priority
3128   ,p_attribute_category            => p_attribute_category
3129   ,p_attribute1                    => p_attribute1
3130   ,p_attribute2                    => p_attribute2
3131   ,p_attribute3                    => p_attribute3
3132   ,p_attribute4                    => p_attribute4
3133   ,p_attribute5                    => p_attribute5
3134   ,p_attribute6                    => p_attribute6
3135   ,p_attribute7                    => p_attribute7
3136   ,p_attribute8                    => p_attribute8
3137   ,p_attribute9                    => p_attribute9
3138   ,p_attribute10                   => p_attribute10
3139   ,p_attribute11                   => p_attribute11
3140   ,p_attribute12                   => p_attribute12
3141   ,p_attribute13                   => p_attribute13
3142   ,p_attribute14                   => p_attribute14
3143   ,p_attribute15                   => p_attribute15
3144   ,p_attribute16                   => p_attribute16
3145   ,p_attribute17                   => p_attribute17
3146   ,p_attribute18                   => p_attribute18
3147   ,p_attribute19                   => p_attribute19
3148   ,p_attribute20                   => p_attribute20
3149   ,p_territory_code                => p_territory_code     --Bug 6469439
3150   ,p_segment1                      => p_account_name
3151   ,p_segment2                      => p_account_type
3152   ,p_segment3                      => p_account_number
3153   ,p_segment4                      => lpad(p_transit_code,9,'0')
3154   ,p_segment5                      => p_bank_name
3155   ,p_segment6                      => p_bank_branch
3156   ,p_payee_type                    => p_payee_type
3157   ,p_payee_id                      => p_payee_id
3158   ,p_ppm_information_category      => p_ppm_information_category
3159   ,p_ppm_information1              => p_ppm_information1
3160   ,p_ppm_information2              => p_ppm_information2
3161   ,p_ppm_information3              => p_ppm_information3
3162   ,p_ppm_information4              => p_ppm_information4
3163   ,p_ppm_information5              => p_ppm_information5
3164   ,p_ppm_information6              => p_ppm_information6
3165   ,p_ppm_information7              => p_ppm_information7
3166   ,p_ppm_information8              => p_ppm_information8
3167   ,p_ppm_information9              => p_ppm_information9
3168   ,p_ppm_information10             => p_ppm_information10
3169   ,p_ppm_information11             => p_ppm_information11
3170   ,p_ppm_information12             => p_ppm_information12
3171   ,p_ppm_information13             => p_ppm_information13
3172   ,p_ppm_information14             => p_ppm_information14
3173   ,p_ppm_information15             => p_ppm_information15
3174   ,p_ppm_information16             => p_ppm_information16
3175   ,p_ppm_information17             => p_ppm_information17
3176   ,p_ppm_information18             => p_ppm_information18
3177   ,p_ppm_information19             => p_ppm_information19
3178   ,p_ppm_information20             => p_ppm_information20
3179   ,p_ppm_information21             => p_ppm_information21
3180   ,p_ppm_information22             => p_ppm_information22
3181   ,p_ppm_information23             => p_ppm_information23
3182   ,p_ppm_information24             => p_ppm_information24
3183   ,p_ppm_information25             => p_ppm_information25
3184   ,p_ppm_information26             => p_ppm_information26
3185   ,p_ppm_information27             => p_ppm_information27
3186   ,p_ppm_information28             => p_ppm_information28
3187   ,p_ppm_information29             => p_ppm_information29
3188   ,p_ppm_information30             => p_ppm_information30
3189   ,p_comment_id                    => p_comment_id
3190   ,p_external_account_id           => p_external_account_id
3191   ,p_effective_start_date          => p_effective_start_date
3192   ,p_effective_end_date            => p_effective_end_date
3193   );
3194   --
3195   -- Update prenote date if external account is generated.
3196   --
3197   if nvl(p_prenote_date, hr_api.g_date+1) <> hr_api.g_date and p_external_account_id is not null then
3198     --
3199     upd_prenote_date
3200       (p_personal_payment_method_id => p_personal_payment_method_id
3201       ,p_external_account_id        => p_external_account_id
3202       ,p_effective_date             => p_effective_date
3203       ,p_prenote_date               => p_prenote_date);
3204     --
3205   end if;
3206   --
3207   if g_debug then
3208      hr_utility.set_location(' Leaving:'||l_proc, 7);
3209   end if;
3210 end update_us_personal_pay_method;
3211 --
3212 -- ----------------------------------------------------------------------------
3213 -- |--------------------< update_ca_personal_pay_method >---------------------|
3214 -- ----------------------------------------------------------------------------
3215 --
3216 procedure update_ca_personal_pay_method
3217   (p_validate                      in     boolean  default false
3218   ,p_effective_date                in     date
3219   ,p_datetrack_update_mode         in     varchar2
3220   ,p_personal_payment_method_id    in     number
3221   ,p_object_version_number         in out nocopy number
3222   ,p_account_name                  in     varchar2 default hr_api.g_varchar2
3223   ,p_account_number                in     varchar2 default hr_api.g_varchar2
3224   ,p_transit_code                  in     varchar2 default hr_api.g_varchar2
3225   ,p_bank_number                   in     varchar2 default hr_api.g_varchar2
3226   ,p_bank_name                     in     varchar2 default hr_api.g_varchar2
3227   ,p_account_type                  in     varchar2 default hr_api.g_varchar2
3228   ,p_bank_branch                   in     varchar2 default hr_api.g_varchar2
3229   ,p_amount                        in     number   default hr_api.g_number
3230   ,p_comments                      in     varchar2 default hr_api.g_varchar2
3231   ,p_percentage                    in     number   default hr_api.g_number
3232   ,p_priority                      in     number   default hr_api.g_number
3233   ,p_attribute_category            in     varchar2 default hr_api.g_varchar2
3234   ,p_attribute1                    in     varchar2 default hr_api.g_varchar2
3235   ,p_attribute2                    in     varchar2 default hr_api.g_varchar2
3236   ,p_attribute3                    in     varchar2 default hr_api.g_varchar2
3237   ,p_attribute4                    in     varchar2 default hr_api.g_varchar2
3238   ,p_attribute5                    in     varchar2 default hr_api.g_varchar2
3239   ,p_attribute6                    in     varchar2 default hr_api.g_varchar2
3240   ,p_attribute7                    in     varchar2 default hr_api.g_varchar2
3241   ,p_attribute8                    in     varchar2 default hr_api.g_varchar2
3242   ,p_attribute9                    in     varchar2 default hr_api.g_varchar2
3243   ,p_attribute10                   in     varchar2 default hr_api.g_varchar2
3244   ,p_attribute11                   in     varchar2 default hr_api.g_varchar2
3245   ,p_attribute12                   in     varchar2 default hr_api.g_varchar2
3246   ,p_attribute13                   in     varchar2 default hr_api.g_varchar2
3247   ,p_attribute14                   in     varchar2 default hr_api.g_varchar2
3248   ,p_attribute15                   in     varchar2 default hr_api.g_varchar2
3249   ,p_attribute16                   in     varchar2 default hr_api.g_varchar2
3250   ,p_attribute17                   in     varchar2 default hr_api.g_varchar2
3251   ,p_attribute18                   in     varchar2 default hr_api.g_varchar2
3252   ,p_attribute19                   in     varchar2 default hr_api.g_varchar2
3253   ,p_attribute20                   in     varchar2 default hr_api.g_varchar2
3254   ,p_payee_type                    in     varchar2 default hr_api.g_varchar2
3255   ,p_payee_id                      in     number   default hr_api.g_number
3256   ,p_territory_code                in     varchar2 default hr_api.g_varchar2
3257   /*Bug# 8717589*/
3258   ,p_ppm_information_category      in     varchar2 default hr_api.g_varchar2
3259   ,p_ppm_information1              in     varchar2 default hr_api.g_varchar2
3260   ,p_ppm_information2              in     varchar2 default hr_api.g_varchar2
3261   ,p_ppm_information3              in     varchar2 default hr_api.g_varchar2
3262   ,p_ppm_information4              in     varchar2 default hr_api.g_varchar2
3263   ,p_ppm_information5              in     varchar2 default hr_api.g_varchar2
3264   ,p_ppm_information6              in     varchar2 default hr_api.g_varchar2
3265   ,p_ppm_information7              in     varchar2 default hr_api.g_varchar2
3266   ,p_ppm_information8              in     varchar2 default hr_api.g_varchar2
3267   ,p_ppm_information9              in     varchar2 default hr_api.g_varchar2
3268   ,p_ppm_information10             in     varchar2 default hr_api.g_varchar2
3269   ,p_ppm_information11             in     varchar2 default hr_api.g_varchar2
3270   ,p_ppm_information12             in     varchar2 default hr_api.g_varchar2
3271   ,p_ppm_information13             in     varchar2 default hr_api.g_varchar2
3272   ,p_ppm_information14             in     varchar2 default hr_api.g_varchar2
3273   ,p_ppm_information15             in     varchar2 default hr_api.g_varchar2
3274   ,p_ppm_information16             in     varchar2 default hr_api.g_varchar2
3275   ,p_ppm_information17             in     varchar2 default hr_api.g_varchar2
3276   ,p_ppm_information18             in     varchar2 default hr_api.g_varchar2
3277   ,p_ppm_information19             in     varchar2 default hr_api.g_varchar2
3278   ,p_ppm_information20             in     varchar2 default hr_api.g_varchar2
3279   ,p_ppm_information21             in     varchar2 default hr_api.g_varchar2
3280   ,p_ppm_information22             in     varchar2 default hr_api.g_varchar2
3281   ,p_ppm_information23             in     varchar2 default hr_api.g_varchar2
3282   ,p_ppm_information24             in     varchar2 default hr_api.g_varchar2
3283   ,p_ppm_information25             in     varchar2 default hr_api.g_varchar2
3284   ,p_ppm_information26             in     varchar2 default hr_api.g_varchar2
3285   ,p_ppm_information27             in     varchar2 default hr_api.g_varchar2
3286   ,p_ppm_information28             in     varchar2 default hr_api.g_varchar2
3287   ,p_ppm_information29             in     varchar2 default hr_api.g_varchar2
3288   ,p_ppm_information30             in     varchar2 default hr_api.g_varchar2
3289   ,p_comment_id                    out    nocopy number
3290   ,p_external_account_id           out    nocopy number
3291   ,p_effective_start_date          out    nocopy date
3292   ,p_effective_end_date            out    nocopy date
3293   ) is
3294   --
3295   -- Declare cursors and local variables
3296   --
3297   l_proc                varchar2(72);
3298   --
3299 begin
3300   g_debug := hr_utility.debug_enabled;
3301   if g_debug then
3302      l_proc := g_package||'update_gb_personal_pay_method';
3303      hr_utility.set_location('Entering:'|| l_proc, 5);
3304   end if;
3305   --
3306   -- Ensure that the legislation rule for the employee assignment business
3307   -- group is 'US'.
3308   --
3309   hr_personal_pay_method_api.check_update_legislation
3310   (p_personal_payment_method_id => p_personal_payment_method_id
3311   ,p_effective_date             => p_effective_date
3312   ,p_leg_code                   => 'CA');
3313   --
3314   if g_debug then
3315      hr_utility.set_location(l_proc, 6);
3316   end if;
3317   --
3318   -- Call the business process to update the personal payment method
3319   --
3320 hr_personal_pay_method_api.update_personal_pay_method
3321   (p_validate                      => p_validate
3322   ,p_effective_date                => trunc(p_effective_date)
3323   ,p_datetrack_update_mode         => p_datetrack_update_mode
3324   ,p_personal_payment_method_id    => p_personal_payment_method_id
3325   ,p_object_version_number         => p_object_version_number
3326   ,p_amount                        => p_amount
3327   ,p_comments                      => p_comments
3328   ,p_percentage                    => p_percentage
3329   ,p_priority                      => p_priority
3330   ,p_attribute_category            => p_attribute_category
3331   ,p_attribute1                    => p_attribute1
3332   ,p_attribute2                    => p_attribute2
3333   ,p_attribute3                    => p_attribute3
3334   ,p_attribute4                    => p_attribute4
3335   ,p_attribute5                    => p_attribute5
3336   ,p_attribute6                    => p_attribute6
3337   ,p_attribute7                    => p_attribute7
3338   ,p_attribute8                    => p_attribute8
3339   ,p_attribute9                    => p_attribute9
3340   ,p_attribute10                   => p_attribute10
3341   ,p_attribute11                   => p_attribute11
3342   ,p_attribute12                   => p_attribute12
3343   ,p_attribute13                   => p_attribute13
3344   ,p_attribute14                   => p_attribute14
3345   ,p_attribute15                   => p_attribute15
3346   ,p_attribute16                   => p_attribute16
3347   ,p_attribute17                   => p_attribute17
3348   ,p_attribute18                   => p_attribute18
3349   ,p_attribute19                   => p_attribute19
3350   ,p_attribute20                   => p_attribute20
3351   ,p_territory_code                => p_territory_code     --Bug 6469439
3352   ,p_segment1                      => p_account_name
3353   ,p_segment2                      => p_account_type
3354   ,p_segment3                      => p_account_number
3355   ,p_segment4                      => lpad(p_transit_code,5,'0')
3356   ,p_segment5                      => p_bank_name
3357   ,p_segment6                      => p_bank_branch
3358   ,p_segment7                      => p_bank_number
3359   ,p_payee_type                    => p_payee_type
3360   ,p_payee_id                      => p_payee_id
3361   ,p_ppm_information_category      => p_ppm_information_category
3362   ,p_ppm_information1              => p_ppm_information1
3363   ,p_ppm_information2              => p_ppm_information2
3364   ,p_ppm_information3              => p_ppm_information3
3365   ,p_ppm_information4              => p_ppm_information4
3366   ,p_ppm_information5              => p_ppm_information5
3367   ,p_ppm_information6              => p_ppm_information6
3368   ,p_ppm_information7              => p_ppm_information7
3369   ,p_ppm_information8              => p_ppm_information8
3370   ,p_ppm_information9              => p_ppm_information9
3371   ,p_ppm_information10             => p_ppm_information10
3372   ,p_ppm_information11             => p_ppm_information11
3373   ,p_ppm_information12             => p_ppm_information12
3374   ,p_ppm_information13             => p_ppm_information13
3375   ,p_ppm_information14             => p_ppm_information14
3376   ,p_ppm_information15             => p_ppm_information15
3377   ,p_ppm_information16             => p_ppm_information16
3378   ,p_ppm_information17             => p_ppm_information17
3379   ,p_ppm_information18             => p_ppm_information18
3380   ,p_ppm_information19             => p_ppm_information19
3381   ,p_ppm_information20             => p_ppm_information20
3382   ,p_ppm_information21             => p_ppm_information21
3383   ,p_ppm_information22             => p_ppm_information22
3384   ,p_ppm_information23             => p_ppm_information23
3385   ,p_ppm_information24             => p_ppm_information24
3386   ,p_ppm_information25             => p_ppm_information25
3387   ,p_ppm_information26             => p_ppm_information26
3388   ,p_ppm_information27             => p_ppm_information27
3389   ,p_ppm_information28             => p_ppm_information28
3390   ,p_ppm_information29             => p_ppm_information29
3391   ,p_ppm_information30             => p_ppm_information30
3392   ,p_comment_id                    => p_comment_id
3393   ,p_external_account_id           => p_external_account_id
3394   ,p_effective_start_date          => p_effective_start_date
3395   ,p_effective_end_date            => p_effective_end_date
3396   );
3397   --
3398   if g_debug then
3399      hr_utility.set_location(' Leaving:'||l_proc, 7);
3400   end if;
3401 end update_ca_personal_pay_method;
3402 --
3403 -- ----------------------------------------------------------------------------
3404 -- |----------------------< delete_personal_pay_method >----------------------|
3405 -- ----------------------------------------------------------------------------
3406 --
3407 procedure delete_personal_pay_method
3408   (p_validate                      in     boolean  default false
3409   ,p_effective_date                in     date
3410   ,p_datetrack_delete_mode         in     varchar2
3411   ,p_personal_payment_method_id    in     number
3412   ,p_object_version_number         in out nocopy number
3413   ,p_effective_start_date          out    nocopy date
3414   ,p_effective_end_date            out    nocopy date
3415   ) is
3416   --
3417   -- Declare cursors and local variables
3418   --
3419   l_proc               varchar2(72);
3420   l_validate           boolean := FALSE;
3421   --
3422 begin
3423   g_debug := hr_utility.debug_enabled;
3424   if g_debug then
3425      l_proc := g_package||'delete_personal_pay_method';
3426      hr_utility.set_location('Entering:'|| l_proc, 5);
3427   end if;
3428   --
3429   -- Issue a savepoint.
3430   --
3431   savepoint delete_personal_pay_method;
3432   --
3433   if g_debug then
3434      hr_utility.set_location(l_proc, 6);
3435   end if;
3436   --
3437   -- Call the row handler to delete the personal payment method.
3438   --
3439   pay_ppm_del.del
3440   (p_personal_payment_method_id   => p_personal_payment_method_id
3441   ,p_effective_start_date         => p_effective_start_date
3442   ,p_effective_end_date           => p_effective_end_date
3443   ,p_object_version_number        => p_object_version_number
3444   ,p_effective_date               => trunc(p_effective_date)
3445   ,p_datetrack_mode               => p_datetrack_delete_mode
3446   ,p_validate                     => l_validate
3447   );
3448   --
3449   if g_debug then
3450      hr_utility.set_location(l_proc, 7);
3451   end if;
3452   --
3453   -- When in validation only mode raise the Validate_Enabled exception
3454   --
3455   if p_validate then
3456     raise hr_api.validate_enabled;
3457   end if;
3458   --
3459   if g_debug then
3460      hr_utility.set_location(' Leaving:'||l_proc, 8);
3461   end if;
3462 exception
3463   when hr_api.validate_enabled then
3464     --
3465     -- As the Validate_Enabled exception has been raised
3466     -- we must rollback to the savepoint
3467     --
3468     ROLLBACK TO delete_personal_pay_method;
3469     --
3470     -- Only set output warning arguments
3471     -- (Any key or derived arguments must be set to null
3472     -- when validation only mode is being used.)
3473     --
3474     p_object_version_number  := null;
3475     p_effective_start_date := null;
3476     p_effective_end_date := null;
3477     --
3478   when others then
3479     --
3480     -- A validation or unexpected error has occurred
3481     --
3482     -- Added as part of fix to bug 632479
3483     --
3484     ROLLBACK TO delete_personal_pay_method;
3485     p_object_version_number  := null;
3486     p_effective_start_date := null;
3487     p_effective_end_date := null;
3488     raise;
3489     --
3490     -- End of fix.
3491     --
3492   if g_debug then
3493      hr_utility.set_location(' Leaving:'||l_proc, 9);
3494   end if;
3495 end delete_personal_pay_method;
3496 --
3497 end hr_personal_pay_method_api;