DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.PAY_US_PPM_HOOK

Source


1 PACKAGE BODY PAY_US_PPM_HOOK AS
2 /* $Header: payusppmhook.pkb 120.0.12010000.5 2010/01/20 07:03:16 mikarthi noship $ */
3 /*
4    ******************************************************************
5    *                                                                *
6    *  Copyright (C) 1993 Oracle Corporation.                        *
7    *  All rights reserved.                                          *
8    *                                                                *
9    *  This material has been provided pursuant to an agreement      *
10    *  containing restrictions on its use.  The material is also     *
11    *  protected by copyright law.  No part of this material may     *
12    *  be copied or distributed, transmitted or transcribed, in      *
13    *  any form or by any means, electronic, mechanical, magnetic,   *
14    *  manual, or otherwise, or disclosed to third parties without   *
15    *  the express written permission of Oracle Corporation,         *
16    *  500 Oracle Parkway, Redwood City, CA, 94065.                  *
17    *                                                                *
18    ******************************************************************
19 
20     Name        : PAY_US_PPM_HOOK
21     File Name   : payusppmhook.pkb
22 
23     Description : This package is called from the BEFORE INSERT/UPDATE
24                   User Hooks. The following are the functionalities present
25                   in User Hook
26 
27                   1. Validates the Bank Account Number in the Bank Details KFF
28 
29                   2. Validates the IAT Transit Code in the Further Information DFF
30 
31                   3. Validates the Tranks Code in the Bank Details KFF
32 
33 
34     Change List
35     -----------
36     Name           Date          Version Bug      Text
37     -------------- -----------   ------- -------  -----------------------------
38     mikarthi       05-Dec-2008   115.0   8806003  Initial Version
39     mikarthi       20-Jan-2010   115.4   8904560  Included validation for DFI
40                                                   Qualifier and Country Code.
41 
42   *****************************************************************************/
43 
44 /* *****************************************************************************
45    Name        : VALIDATE_BANK_DETAILS
46    Scope       : LOCAL
47    Description : This Function validates the Transit Code and Bank AccountNum
48                  During Insert operation
49 ******************************************************************************/
50 
51     procedure VALIDATE_BANK_DETAILS(P_ORG_PAYMENT_METHOD_ID in NUMBER
52                                    ,P_SEGMENT3 in VARCHAR2
53                                    ,P_SEGMENT4 in VARCHAR2
54                                    ,p_ppm_information1 in VARCHAR2
55                                    ,p_ppm_information2 in VARCHAR2
56                                    ,p_ppm_information3 in VARCHAR2
57                                    ,p_effective_date in date) is
58 
59     l_is_foreign_trans  VARCHAR2(30);
60     transit_code        NUMBER;
61 
62     begin
63 
64         select PMETH_INFORMATION9
65         INTO l_is_foreign_trans
66         from pay_org_payment_methods_f where ORG_PAYMENT_METHOD_ID = P_ORG_PAYMENT_METHOD_ID
67         AND p_effective_date BETWEEN effective_start_date
68                          AND effective_end_date;
69 
70         hr_utility.trace('l_is_foreign_trans : ' || l_is_foreign_trans);
71 
72         if l_is_foreign_trans <> 'Y' or l_is_foreign_trans is null then
73         --Not IAT transaction
74             if length(P_SEGMENT3) > 17 then
75                  hr_utility.trace('Test 1');
76                  hr_utility.set_message(801, 'PAY_US_NACHA_INVALD_BANK_ACCNT');
77                  hr_utility.raise_error;
78             end if;
79 
80         else
81         --IAT transaction
82                if P_SEGMENT4 <> '000000000' then
83 
84                  hr_utility.set_message(801, 'PAY_US_IAT_INVALD_TRANSIT_CODE');
85                  hr_utility.raise_error;
86 
87                end if;
88 
89                if (p_ppm_information1 is null) or
90                   (p_ppm_information2 is null) or
91                   (p_ppm_information3 is null) then
92 
93                  hr_utility.set_message(801, 'PAY_US_IAT_NO_TRANSIT_CODE');
94                  hr_utility.raise_error;
95                end if;
96 
97         end if;
98 
99 
100     end   VALIDATE_BANK_DETAILS;
101 
102     /* *****************************************************************************
103        Name        : UPDATE_BANK_DETAILS
104        Scope       : LOCAL
105        Description : This Function validates the Transit Code and Bank AccountNum
106                      During Update operation
107     ******************************************************************************/
108 
109     procedure UPDATE_BANK_DETAILS(P_PERSONAL_PAYMENT_METHOD_ID in NUMBER
110                                    ,P_SEGMENT3 in VARCHAR2
111                                    ,P_SEGMENT4 in VARCHAR2
112                                    ,p_ppm_information1 in VARCHAR2
113                                    ,p_ppm_information2 in VARCHAR2
114                                    ,p_ppm_information3 in VARCHAR2
115                                    ,p_effective_date in date) is
116 
117         l_is_foreign_trans  VARCHAR2(30);
118         transit_code        NUMBER;
119         L_SEGMENT3          PAY_EXTERNAL_ACCOUNTS.SEGMENT3%TYPE;
120         L_SEGMENT4          PAY_EXTERNAL_ACCOUNTS.SEGMENT4%TYPE;
121         L_PPM_INFORMATION1  PAY_PERSONAL_PAYMENT_METHODS_F.PPM_INFORMATION1%TYPE;
122         L_PPM_INFORMATION2  PAY_PERSONAL_PAYMENT_METHODS_F.PPM_INFORMATION2%TYPE;
123         L_PPM_INFORMATION3  PAY_PERSONAL_PAYMENT_METHODS_F.PPM_INFORMATION3%TYPE;
124 
125         CURSOR CSR_BANK_SEGMENTS IS
126         SELECT EXT.SEGMENT3, EXT.SEGMENT4
127         FROM   PAY_PERSONAL_PAYMENT_METHODS_F PPM, PAY_EXTERNAL_ACCOUNTS EXT
128         WHERE  PPM.PERSONAL_PAYMENT_METHOD_ID = P_PERSONAL_PAYMENT_METHOD_ID
129         AND    EXT.EXTERNAL_ACCOUNT_ID        = PPM.EXTERNAL_ACCOUNT_ID
130         AND    P_EFFECTIVE_DATE BETWEEN PPM.EFFECTIVE_START_DATE
131                                 AND     PPM.EFFECTIVE_END_DATE;
132 
133         CURSOR CSR_PPM_INFORMATION IS
134         SELECT PPM.PPM_INFORMATION1,
135                PPM.PPM_INFORMATION2,
136                PPM.PPM_INFORMATION3
137         FROM   PAY_PERSONAL_PAYMENT_METHODS_F PPM
138         WHERE  PPM.PERSONAL_PAYMENT_METHOD_ID = P_PERSONAL_PAYMENT_METHOD_ID
139         AND    P_EFFECTIVE_DATE BETWEEN PPM.EFFECTIVE_START_DATE
140                                 AND     PPM.EFFECTIVE_END_DATE;
141 
142     begin
143 
144         select popm.PMETH_INFORMATION9
145         INTO l_is_foreign_trans
146         from pay_org_payment_methods popm,  pay_Personal_payment_methods pppm
147         where popm.ORG_PAYMENT_METHOD_ID =  pppm.ORG_PAYMENT_METHOD_ID
148         and pppm.PERSONAL_PAYMENT_METHOD_ID = P_PERSONAL_PAYMENT_METHOD_ID
149         AND p_effective_date BETWEEN popm.effective_start_date
150                              AND popm.effective_end_date;
151 
152         IF (p_segment3 = hr_api.g_varchar2 or p_segment4 = hr_api.g_varchar2) then
153 
154           OPEN CSR_BANK_SEGMENTS;
155           FETCH CSR_BANK_SEGMENTS INTO L_SEGMENT3, L_SEGMENT4;
156           CLOSE CSR_BANK_SEGMENTS;
157 
158           if (p_segment3 <> hr_api.g_varchar2) then
159             l_segment3 := p_segment3;
160           end if;
161 
162           if (p_segment4 <> hr_api.g_varchar2) then
163             l_segment4 := p_segment4;
164           end if;
165 
166         end if;
167 
168 
169         if l_is_foreign_trans <> 'Y' or l_is_foreign_trans is null then
170         --Not IAT transaction
171             if length(l_segment3) > 17 then
172                  hr_utility.trace('Test 1');
173                  hr_utility.set_message(801, 'PAY_US_NACHA_INVALD_BANK_ACCNT');
174                  hr_utility.raise_error;
175             end if;
176 
177         else
178         --IAT transaction
179             if l_segment4 <> '000000000' then
180 
181              hr_utility.set_message(801, 'PAY_US_IAT_INVALD_TRANSIT_CODE');
182              hr_utility.raise_error;
183 
184             end if;
185 
186            if (p_ppm_information1 = hr_api.g_varchar2) then
187                OPEN CSR_PPM_INFORMATION;
188                FETCH CSR_PPM_INFORMATION INTO L_PPM_INFORMATION1, L_PPM_INFORMATION2, L_PPM_INFORMATION3;
189                CLOSE CSR_PPM_INFORMATION;
190            ELSE
191                L_PPM_INFORMATION1 := P_PPM_INFORMATION1;
192                L_PPM_INFORMATION2 := P_PPM_INFORMATION2;
193                L_PPM_INFORMATION3 := P_PPM_INFORMATION3;
194            end if;
195 
196             if (L_PPM_INFORMATION1 is null) or
197                (L_PPM_INFORMATION2 is null) or
198                (L_PPM_INFORMATION3 is null) then
199 
200              hr_utility.set_message(801, 'PAY_US_IAT_NO_TRANSIT_CODE');
201              hr_utility.raise_error;
202             end if;
203 
204         end if;
205 
206     end   UPDATE_BANK_DETAILS;
207 
208 end PAY_US_PPM_HOOK;