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