DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_ES_ORG_INFO

Source


1 PACKAGE BODY PER_ES_ORG_INFO AS
2 /* $Header: peesorgp.pkb 120.1.12010000.2 2008/12/16 11:44:03 parusia ship $ */
3 
4 -----------------------------------------------------------------------------------------
5 -- PROCEDURE create_es_org_info
6 -----------------------------------------------------------------------------------------
7 
8 PROCEDURE create_es_org_info(p_org_info_type_code   VARCHAR2
9                             ,p_org_information1     VARCHAR2
10                             ,p_org_information2     VARCHAR2
11                             ,p_org_information3     VARCHAR2
12                             ,p_org_information4     VARCHAR2
13                             ,p_org_information5     VARCHAR2
14                             ,p_org_information6     VARCHAR2
15                             ,p_org_information7     VARCHAR2
16                             ,p_org_information8     VARCHAR2
17                             ,p_organization_id      NUMBER
18                             ,p_effective_date       DATE
19                             ) is
20     CURSOR get_business_group is
21     SELECT  business_group_id
22     FROM    hr_all_organization_units
23     WHERE   organization_id=p_organization_id;
24     --
25     CURSOR csr_chk_province_code(c_prov_code VARCHAR2) IS
26     SELECT 'Y' FROM dual
27     WHERE  EXISTS (SELECT /*+ ORDERED */ NULL from hr_lookups
28                    WHERE LOOKUP_TYPE = 'ES_PROVINCE_CODES'
29                    AND   LOOKUP_CODE = c_prov_code);
30     --
31     CURSOR csr_chk_contribution_ac_type(c_business_group_id NUMBER
32                                        ,c_org_info1         VARCHAR2
33                                        ,c_org_info2         VARCHAR2
34                                        ,c_effective_date    DATE) IS
35     SELECT 'Y'
36     FROM   hr_organization_information hoi,hr_all_organization_units hou
37     WHERE  hoi.org_information_context = 'ES_WORK_CENTER_DETAILS'
38     AND    hou.organization_id = hoi.organization_id
39     AND    org_information4 = c_org_info2
40     AND    org_information1 <> c_org_info1
41     AND    hou.business_group_id = c_business_group_id
42     AND    c_effective_date <= nvl(hou.date_to,to_Date('4712/12/31','YYYY/MM/DD'))
43     AND    EXISTS (SELECT 1 FROM hr_organization_information hoi1
44                    WHERE hoi1.org_information1 = 'ES_WORK_CENTER'
45                    AND   hoi1.org_information_context = 'CLASS'
46                    AND   hoi1.organization_id = hoi.organization_id
47                    AND   hoi1.org_information2 = 'Y');
48     --
49     l_code VARCHAR2(2);
50     l_chk  VARCHAR2(1);
51 
52 l_business_group_id     hr_all_organization_units.business_group_id%TYPE;
53 --
54 BEGIN
55    --
56    -- Added for GSI Bug 5472781
57    --
58    IF hr_utility.chk_product_install('Oracle Human Resources', 'ES') THEN
59      --
60     OPEN get_business_group;
61         FETCH get_business_group into l_business_group_id;
62     CLOSE get_business_group;
63     --
64     IF  p_org_info_type_code='ES_STATUTORY_INFO' THEN
65         hr_es_utility.validate_cif(p_org_information5);
66         hr_es_utility.unique_cif(null,p_org_information5,l_business_group_id,p_effective_date);
67         hr_es_utility.validate_cac(p_org_information8);
68         hr_es_utility.unique_cac(null,p_org_info_type_code,p_org_information8,l_business_group_id,p_effective_date);
69     END IF;
70     --
71     -- Bug 7508536
72     -- 1) Allow sharing of CAC numbers at the following levels -
73     --    a) Amongst Work Centres
74     --    b) Between Work Centre and Legal Employer.
75     IF  p_org_info_type_code = 'ES_WORK_CENTER_DETAILS' THEN
76         hr_es_utility.validate_cac(p_org_information1);
77         -- hr_es_utility.unique_cac(null,p_org_info_type_code,p_org_information1,l_business_group_id,p_effective_date);
78         --
79         --
80         -- Bug 7508536
81         -- 2) Allow sharing of Contribution Account Types
82         /* l_chk := 'N';
83         OPEN  csr_chk_contribution_ac_type(l_business_group_id,p_org_information1,p_org_information4,p_effective_date);
84         FETCH csr_chk_contribution_ac_type into l_chk;
85         CLOSE csr_chk_contribution_ac_type;
86         --
87         IF l_chk = 'Y' THEN
88             hr_utility.set_message(800, 'HR_ES_CAT_UNIQUE_ERROR');
89             hr_utility.raise_error;
90         END IF;
91         */
92         --
93     END IF;
94     --
95     -- Validation for Natural Disater dates
96     --
97     IF  p_org_info_type_code = 'ES_WC_NATURAL_DISASTER' THEN
98        IF  (p_org_information1 IS NOT NULL) AND (p_org_information2 IS NOT NULL) THEN
99             IF  fnd_date.canonical_to_date(p_org_information1) > fnd_date.canonical_to_date(p_org_information2) THEN
100                 hr_utility.set_message(800, 'HR_ES_NAT_DIS_DATE_VALIDATION');
101                 hr_utility.raise_error;
102             END IF;
103         END IF;
104     END IF;
105     --
106     -- Validation for Natural Disater dates
107     --
108     IF  p_org_info_type_code = 'ES_WC_SHUTDOWN' THEN
109        IF  (p_org_information1 IS NOT NULL) AND (p_org_information2 IS NOT NULL) THEN
110             IF  fnd_date.canonical_to_date(p_org_information1) > fnd_date.canonical_to_date(p_org_information2) THEN
111                 hr_utility.set_message(800, 'HR_ES_SD_DATE_VALIDATION');
112                 hr_utility.raise_error;
113             END IF;
114         END IF;
115     END IF;
116     --
117     -- Validation for Partial Unemployment dates
118     --
119     IF  p_org_info_type_code = 'ES_WC_PARTIAL_UNEMPLOYMENT' THEN
120          IF  (p_org_information1 IS NOT NULL) AND (p_org_information2 IS NOT NULL) THEN
121             IF  fnd_date.canonical_to_date(p_org_information1) > fnd_date.canonical_to_date(p_org_information2) THEN
122                 hr_utility.set_message(800, 'HR_ES_PAR_UE_DATE_VALIDATION');
123                 hr_utility.raise_error;
124             END IF;
125         END IF;
126         IF (p_org_information5 = 'GROSS_PAY' ) AND (p_org_information6 IS NULL) THEN
127             hr_utility.set_message(800, 'HR_ES_BU_RATE_FORMULA_MISSING');
128             hr_utility.raise_error;
129         END IF;
130     END IF;
131    --
132    -- Validation for Contribution Exempt Situation dates
133    --
134     IF  p_org_info_type_code='ES_CONTRIB_EXEMPT' THEN
135         IF  (p_org_information2 IS NOT NULL) AND (p_org_information3 IS NOT NULL) THEN
136             IF  fnd_date.canonical_to_date(p_org_information2) > fnd_date.canonical_to_date(p_org_information3) THEN
137                 hr_utility.set_message(800, 'HR_ES_CON_EXMT_DATE_VALIDATION');
138                 hr_utility.raise_error;
139             END IF;
140         END IF;
141     END IF;
142     --
143     -- Validation for Temporary Disability Management Deduction dates
144     --
145     IF  p_org_info_type_code='ES_TEMP_DISABILITY_MGT' THEN
146         IF (p_org_information2 IS NOT NULL) AND (p_org_information3 IS NOT NULL) THEN
147             IF  fnd_date.canonical_to_date(p_org_information2) > fnd_date.canonical_to_date(p_org_information3) THEN
148                 hr_utility.set_message(800, 'HR_ES_TEMP_DIS_DATE_VALIDATION');
149                 hr_utility.raise_error;
150             END IF;
151         END IF;
152     END IF;
153     --
154     IF  p_org_info_type_code in('ES_WORK_CENTER_REF','ES_SECTION_REF') THEN
155         hr_es_utility.validate_wc_sec_ref(p_org_info_type_code,p_org_information1,l_business_group_id,p_effective_date);
156     END IF;
157 
158     IF  p_org_info_type_code in('ES_SS_PROVINCE_DETAILS','ES_SS_OFFICE_DETAILS') then
159         hr_es_utility.unique_ss(null,p_org_info_type_code,p_org_information1,l_business_group_id,p_effective_date);
160     END IF;
161     --
162     -- Validation for Benefit Uplift Formulas -- Employer level.
163     --
164     IF p_org_info_type_code = 'ES_BENEFIT_UPLIFT' THEN
165         IF (p_org_information2 = 'GROSS_PAY' ) AND (p_org_information3 IS NULL) THEN
166             hr_utility.set_message(800, 'HR_ES_BU_RATE_FORMULA_MISSING');
167             hr_utility.raise_error;
168         END IF;
169         IF  (p_org_information5 IS NOT NULL) AND (p_org_information6 IS NOT NULL) THEN
170              IF  fnd_date.canonical_to_date(p_org_information5) > fnd_date.canonical_to_date(p_org_information6) THEN
171                  hr_utility.set_message(800, 'HR_ES_BU_DATE_VALIDATION');
172                  hr_utility.raise_error;
173              END IF;
174         END IF;
175     END IF;
176     --
177     -- Validation for Tax Office Code and Tax Administration Code.
178     --
179     IF p_org_info_type_code = 'ES_TAX_OFFICE_DETAILS' OR
180        p_org_info_type_code = 'ES_TAX_ADMIN_DETAILS' THEN
181         l_code := substr(p_org_information1,1,2);
182         l_chk := 'N';
183         --
184         OPEN  csr_chk_province_code(l_code);
185         FETCH csr_chk_province_code into l_chk;
186         CLOSE csr_chk_province_code;
187         --
188         IF l_chk <> 'Y' THEN
189             hr_utility.set_message(800, 'HR_ES_INVALID_TAX_CODE');
190             hr_utility.raise_error;
191         END IF;
192     END IF;
193     --
194   END IF;
195   --
196 END create_es_org_info;
197 -----------------------------------------------------------------------------------------
198 -- PROCEDURE update_es_org_info
199 -----------------------------------------------------------------------------------------
200 
201 PROCEDURE update_es_org_info(p_org_info_type_code   VARCHAR2
202                             ,p_org_information1     VARCHAR2
203                             ,p_org_information2     VARCHAR2
204                             ,p_org_information3     VARCHAR2
205                             ,p_org_information4     VARCHAR2
206                             ,p_org_information5     VARCHAR2
207                             ,p_org_information6     VARCHAR2
208                             ,p_org_information7     VARCHAR2
209                             ,p_org_information8     VARCHAR2
210                             ,p_org_information_id   NUMBER
211                             ,p_effective_date       DATE
212                             ) IS
213     --
214     CURSOR get_business_group is
215     SELECT business_group_id
216     FROM   hr_all_organization_units   hou
217           ,hr_organization_information hoi
218     WHERE  hoi.org_information_id      = p_org_information_id
219     AND    hoi.organization_id         = hou.organization_id;
220     --
221     CURSOR csr_chk_province_code(c_prov_code VARCHAR2) IS
222     SELECT 'Y' FROM dual
223     WHERE  EXISTS (SELECT /*+ ORDERED */ NULL from hr_lookups
224                    WHERE LOOKUP_TYPE = 'ES_PROVINCE_CODES'
225                    AND   LOOKUP_CODE = c_prov_code);
226     --
227     CURSOR csr_chk_contribution_ac_type(c_business_group_id NUMBER
228                                        ,c_org_info1         VARCHAR2
229                                        ,c_org_info2         VARCHAR2
230                                        ,c_effective_date    DATE) IS
231     SELECT 'Y'
232     FROM   hr_organization_information hoi,hr_all_organization_units hou
233     WHERE  hoi.org_information_context = 'ES_WORK_CENTER_DETAILS'
234     AND    hou.organization_id = hoi.organization_id
235     AND    org_information4 = c_org_info2
236     AND    org_information1 <> c_org_info1
237     AND    hou.business_group_id = c_business_group_id
238     AND    c_effective_date <= nvl(hou.date_to,to_Date('4712/12/31','YYYY/MM/DD'))
239     AND    EXISTS (SELECT 1 FROM hr_organization_information hoi1
240                    WHERE hoi1.org_information1 = 'ES_WORK_CENTER'
241                    AND   hoi1.org_information_context = 'CLASS'
242                    AND   hoi1.organization_id = hoi.organization_id
243                    AND   hoi1.org_information2 = 'Y');
244     --
245     l_code VARCHAR2(2);
246     l_chk  VARCHAR2(1);
250    --
247     l_business_group_id     hr_all_organization_units.business_group_id%TYPE;
248     --
249 BEGIN
251    -- Added for GSI Bug 5472781
252    --
253    IF hr_utility.chk_product_install('Oracle Human Resources', 'ES') THEN
254      --
255     --
256     OPEN get_business_group;
257         FETCH get_business_group into l_business_group_id;
258     CLOSE get_business_group;
259     --
260     IF  p_org_info_type_code = 'ES_STATUTORY_INFO' THEN
261         IF  p_org_information5 IS NOT NULL THEN
262             hr_es_utility.validate_cif(p_org_information5);
263             hr_es_utility.unique_cif(p_org_information_id,p_org_information5,l_business_group_id,p_effective_date);
264         END IF;
265         IF  p_org_information8 IS NOT NULL THEN
266             hr_es_utility.validate_cac(p_org_information8);
267             hr_es_utility.unique_cac(p_org_information_id,p_org_info_type_code,p_org_information8,l_business_group_id,p_effective_date);
268         END IF;
269     END IF;
270     IF  p_org_info_type_code = 'ES_WORK_CENTER_DETAILS' THEN
271        -- Bug 7508536
272        -- 1) Allow sharing of CAC numbers at the following levels -
273        --    a) Amongst Work Centres
274        --    b) Between Work Centre and Legal Employer.
275         IF  p_org_information1 IS NOT NULL THEN
276             hr_es_utility.validate_cac(p_org_information1);
277             -- hr_es_utility.unique_cac(p_org_information_id,p_org_info_type_code,p_org_information1,l_business_group_id,p_effective_date);
278         END IF;
279         --
280         -- Bug 7508536
281         -- 2) Allow sharing of Contribution Account Types
282         /*l_chk := 'N';
283         OPEN  csr_chk_contribution_ac_type(l_business_group_id,p_org_information1,p_org_information4,p_effective_date);
284         FETCH csr_chk_contribution_ac_type into l_chk;
285         CLOSE csr_chk_contribution_ac_type;
286         --
287         IF l_chk = 'Y' THEN
288             hr_utility.set_message(800, 'HR_ES_CAT_UNIQUE_ERROR');
289             hr_utility.raise_error;
290         END IF;
291         */
292         --
293     END IF;
294     --
295     -- Validation for Natural Disater dates
296     --
297     IF  p_org_info_type_code = 'ES_WC_NATURAL_DISASTER' THEN
298        IF  (p_org_information1 IS NOT NULL) AND (p_org_information2 IS NOT NULL) THEN
299             IF  fnd_date.canonical_to_date(p_org_information1) > fnd_date.canonical_to_date(p_org_information2) THEN
300                 hr_utility.set_message(800, 'HR_ES_NAT_DIS_DATE_VALIDATION');
301                 hr_utility.raise_error;
302             END IF;
303         END IF;
304     END IF;
305     --
306     -- Validation for Natural Disater dates
307     --
308     IF  p_org_info_type_code = 'ES_WC_SHUTDOWN' THEN
309        IF  (p_org_information1 IS NOT NULL) AND (p_org_information2 IS NOT NULL) THEN
310             IF  fnd_date.canonical_to_date(p_org_information1) > fnd_date.canonical_to_date(p_org_information2) THEN
311                 hr_utility.set_message(800, 'HR_ES_SD_DATE_VALIDATION');
312                 hr_utility.raise_error;
313             END IF;
314         END IF;
315     END IF;
316     --
317     -- Validation for Partial Unemployment dates
318     --
319     IF  p_org_info_type_code = 'ES_WC_PARTIAL_UNEMPLOYMENT' THEN
320          IF  (p_org_information1 IS NOT NULL) AND (p_org_information2 IS NOT NULL) THEN
321             IF  fnd_date.canonical_to_date(p_org_information1) > fnd_date.canonical_to_date(p_org_information2) THEN
322                 hr_utility.set_message(800, 'HR_ES_PAR_UE_DATE_VALIDATION');
323                 hr_utility.raise_error;
324             END IF;
325         END IF;
326         IF (p_org_information5 = 'GROSS_PAY' ) AND (p_org_information6 IS NULL) THEN
327             hr_utility.set_message(800, 'HR_ES_BU_RATE_FORMULA_MISSING');
328             hr_utility.raise_error;
329         END IF;
330     END IF;
331     --
332     -- Validation for Contribution Exempt Situation dates
333     --
334     IF  p_org_info_type_code = 'ES_CONTRIB_EXEMPT' THEN
335         IF  (p_org_information2 IS NOT NULL) AND (p_org_information3 IS NOT NULL) THEN
336             IF  fnd_date.canonical_to_date(p_org_information2) > fnd_date.canonical_to_date(p_org_information3) THEN
337                 hr_utility.set_message(800, 'HR_ES_CON_EXMT_DATE_VALIDATION');
338                 hr_utility.raise_error;
339             END IF;
340          END IF;
341     END IF;
342     --
343     -- Validation for Temporary Disability Management Deduction dates
344     --
345     IF  p_org_info_type_code='ES_TEMP_DISABILITY_MGT' THEN
346         IF  (p_org_information2 IS NOT NULL) AND (p_org_information3 IS NOT NULL) THEN
347              IF  fnd_date.canonical_to_date(p_org_information2) > fnd_date.canonical_to_date(p_org_information3) THEN
348                  hr_utility.set_message(800, 'HR_ES_TEMP_DIS_DATE_VALIDATION');
349                  hr_utility.raise_error;
350              END IF;
351         END IF;
352     END IF;
353     --
354     IF p_org_info_type_code in('ES_WORK_CENTER_REF','ES_SECTION_REF') THEN
355         hr_es_utility.validate_wc_sec_ref(p_org_info_type_code,p_org_information1,l_business_group_id,p_effective_date);
356     END IF;
357     --
358     IF p_org_info_type_code in('ES_SS_PROVINCE_DETAILS','ES_SS_OFFICE_DETAILS') then
359         hr_es_utility.unique_ss(p_org_information_id,p_org_info_type_code,p_org_information1,l_business_group_id,p_effective_date);
360     END IF;
361     --
362     -- Validation for Benefit Uplift Formulas -- Employer level.
363     --
364     IF p_org_info_type_code = 'ES_BENEFIT_UPLIFT' THEN
365         IF (p_org_information2 = 'GROSS_PAY' ) AND (p_org_information3 IS NULL) THEN
366             hr_utility.set_message(800, 'HR_ES_BU_RATE_FORMULA_MISSING');
367             hr_utility.raise_error;
368         END IF;
369         IF  (p_org_information5 IS NOT NULL) AND (p_org_information6 IS NOT NULL) THEN
370              IF  fnd_date.canonical_to_date(p_org_information5) > fnd_date.canonical_to_date(p_org_information6) THEN
371                  hr_utility.set_message(800, 'HR_ES_BU_DATE_VALIDATION');
372                  hr_utility.raise_error;
373              END IF;
374         END IF;
375     END IF;
376         --
377     -- Validation for Tax Office Code and Tax Administration Code.
378     --
379     IF p_org_info_type_code = 'ES_TAX_OFFICE_DETAILS' OR
380        p_org_info_type_code = 'ES_TAX_ADMIN_DETAILS' THEN
381         l_code := substr(p_org_information1,1,2);
382         l_chk := 'N';
383         --
384         OPEN  csr_chk_province_code(l_code);
385         FETCH csr_chk_province_code into l_chk;
386         CLOSE csr_chk_province_code;
387         --
388         IF l_chk <> 'Y' THEN
389             hr_utility.set_message(800, 'HR_ES_INVALID_TAX_CODE');
390             hr_utility.raise_error;
391         END IF;
392     END IF;
393     --
394   END IF;
395   --
396 END update_es_org_info;
397 
398 END per_es_org_info;