DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_AE_IV_MIGRATE_PKG

Source


1 PACKAGE BODY pay_ae_iv_migrate_pkg AS
2 /* $Header: payaeivmigr.pkb 120.2.12000000.1 2007/02/16 08:45:49 abppradh noship $ */
3 
4   ------------------------------------------------------------------------
5   ------------------------------------------------------------------------
6   -- Procedure update_iv_si_element
7   -- This procedure is used to migrate input value for SI Exception of SI Adjustment element
8   -- to Exception input value for SI element.
9   ------------------------------------------------------------------------
10   ------------------------------------------------------------------------
11 
12   PROCEDURE update_iv_si_element
13     (errbuf                      OUT NOCOPY VARCHAR2
14     ,retcode                    OUT NOCOPY VARCHAR2
15     ,p_business_group_id IN NUMBER) IS
16 
17 
18     /* Check if the entry for BG exists in pay_patch_status table */
19 	CURSOR csr_pay_patch_status (l_number	NUMBER) IS
20 	SELECT PATCH_NUMBER
21 	FROM PAY_PATCH_STATUS
22 	WHERE	PATCH_NUMBER = L_NUMBER
23 	AND	PATCH_NAME = 'AE_IV_MIGRATION'
24 	AND	STATUS = 'C'
25 	AND	LEGISLATION_CODE = 'AE';
26 
27    /* Get the element type id for SI and SI Adjustment element's id */
28 	CURSOR csr_get_ele_id (l_ele_name VARCHAR2, l_date date) IS
29 	SELECT element_type_id
30 	FROM pay_element_types_f ele
31 	WHERE	ele.element_name = l_ele_name
32 	AND	ele.legislation_code = 'AE'
33 	/*AND	l_date between ele.effective_start_date and ele.effective_end_date*/;
34 
35 
36     /* Get input value id for input on SI and SI Adjustment element */
37 	CURSOR csr_get_iv_id (l_element_type_id number, l_date date) IS
38 	SELECT input_value_id
39 	FROM pay_input_values_f piv
40 	WHERE	piv.element_type_id = l_element_type_id
41 	AND	piv.name = 'Exception Type'
42 	AND	piv.legislation_code = 'AE'
43 	/*AND	l_date between piv.effective_start_date and piv.effective_end_date*/;
44 
45     /* Get input value id for Pay value for SI Element */
46 	CURSOR csr_get_py_id (l_element_type_id number, l_date date) IS
47 	SELECT input_value_id
48 	FROM pay_input_values_f piv
49 	WHERE	piv.element_type_id = l_element_type_id
50 	AND	piv.name = 'Pay Value'
51 	AND	piv.legislation_code = 'AE'
52 	/*AND	l_date between piv.effective_start_date and piv.effective_end_date*/;
53 
54     /* Get all the primary assignment ids for the BG */
55 	CURSOR csr_get_asg_ids (l_bg_id NUMBER, l_date DATE) IS
56 	SELECT	assignment_id
57 	FROM	per_all_assignments_f paf
58 	WHERE	paf.business_group_id = l_bg_id
59 	AND	paf.primary_flag = 'Y'
60 	/*AND	l_date between paf.effective_start_date and paf.effective_end_date*/;
61 
62     /* Get the element entries for SI and SI Adjustment element */
63 	CURSOR csr_get_ele_entries (l_si_et NUMBER, l_asg_id NUMBER) IS
64 	SELECT	pee.element_entry_id , pee.effective_start_date,pee.effective_end_date
65 	FROM	pay_element_entries_f pee
66 	WHERE	pee.element_type_id = l_si_et
67 	AND	pee.assignment_id = l_asg_id
68 	Order by effective_start_date asc;
69 
70 
71    /* Get all the columns for element entry for SI element */
72    	CURSOR csr_get_si_ee_all (l_si_et NUMBER, l_asg_id NUMBER) IS
73    	SELECT *
74    	FROM pay_element_entries_f
75    	WHERE	element_type_id = l_si_et
76    	AND	assignment_id = l_asg_id
77    	ORDER BY effective_start_date ASC;
78 
79    	rec_ele_entry csr_get_si_ee_all%ROWTYPE;
80 
81 	CURSOR csr_get_max_ovn (l_si_et NUMBER,l_asg_id NUMBER) IS
82 	SELECT max(pee.object_version_number)
83 	FROM	pay_element_entries_f pee
84 	WHERE	pee.element_type_id = l_si_et
85 	AND	pee.assignment_id = l_asg_id;
86 
87     /* Get the screen entry value for SI Adjustment Exception type value */
88 	CURSOR csr_get_sia_entry_value (l_sia_exc_iv_id NUMBER, l_date DATE , l_sia_eeid NUMBER  ) IS
89 	SELECT	peev.screen_entry_value
90 	FROM	pay_element_entry_values_f peev
91 	WHERE	peev.element_entry_id = l_sia_eeid
92 	AND	peev.input_value_id = l_sia_exc_iv_id
93 	AND	l_date BETWEEN peev.effective_start_date AND peev.effective_end_date;
94 
95     /* Get the screen entry value for SI Elements Exception type value for current date */
96 	CURSOR csr_get_si_entry_value (l_si_exc_iv_id NUMBER, l_date DATE , l_si_eeid NUMBER  ) IS
97 	SELECT	peev.screen_entry_value
98 	FROM	pay_element_entry_values_f peev
99 	WHERE	peev.element_entry_id = l_si_eeid
100 	AND	peev.input_value_id = l_si_exc_iv_id
101 	AND	l_date BETWEEN peev.effective_start_date AND peev.effective_end_date;
102 
103     /* Check if Exception type exists on SI element */
104 	CURSOR csr_check_exc_on_si (L_SI_EE NUMBER ,l_si_exc_id NUMBER) IS
105 	SELECT	element_entry_value_id
106 	FROM	PAY_ELEMENT_ENTRY_VALUES_F
107 	WHERE	ELEMENT_ENTRY_ID = L_SI_EE
108 	AND 	INPUT_VALUE_ID = l_si_exc_id;
109 
110 	l_status	NUMBER;
111 	l_effective_date DATE;
112 	l_si_ele_id	NUMBER;
113 	l_sia_ele_id	NUMBER;
114 	l_si_iv_id	NUMBER;
115 	l_sia_iv_id	NUMBER;
116 	l_assignment_id	NUMBER;
117 	l_si_ee_id	NUMBER;
118 	l_sia_ee_id	NUMBER;
119 	l_sia_eev	VARCHAR2(30);
120 	l_si_eev	VARCHAR2(30);
121 	l_mg		VARCHAR2(10);
122 	l_bg_id NUMBER;
123 	l_si_ovn NUMBER;
124 	L_EFFECTIVE_START_DATE	DATE;
125 	L_EFFECTIVE_END_DATE	DATE;
126 	L_UPDATE_WARNING	BOOLEAN;
127 	l_max_ovn	NUMBER;
128 	l_t_sia_exc_val VARCHAR2(30);
129 
130 	L_T_SIA_EE_ID NUMBER;
131 	L_T_SIA_START_DATE DATE;
132 	L_T_SIA_END_DATE DATE;
133 
134 	l_si_ee_start_date date;
135 	l_si_ee_end_date date;
136 	l_found varchar2(10);
137 	l_f_ee_id	number;
138 	L_F_EEV_ID number;
139 	L_F_2_EEV_ID	NUMBER;
140 	l_si_py_id	number;
141 	L_F_EE2_ID NUMBER;
142 
143 	l_t_eff_date DATE;
144 
145 
146 	L_DATETRACK_UPDATE_MODE varchar2(240);
147 	L_SI_OBJECT_VERSION_NUMBER number;
148 	L_OBJECT_VERSION_NUMBER number;
149 	L_SI_EFFECTIVE_START_DATE date;
150 	L_SI_EFFECTIVE_END_DATE date;
151 	l_temp_exc_on_si NUMBER;
152 
153 	TYPE rec_sia_ele IS RECORD
154 	  (element_entry_id            NUMBER
155 	  ,effective_start_date DATE
156 	  ,effective_end_date   DATE
157 	  ,exception_value	VARCHAR2(30));
158 
159 	TYPE t_rec_sia_ele IS TABLE OF rec_sia_ele INDEX BY BINARY_INTEGER;
160 
161 BEGIN
162 
163 	l_status := null;
164 
165 	OPEN csr_pay_patch_status (p_business_group_id);
166 	FETCH csr_pay_patch_status INTO l_status;
167 	CLOSE csr_pay_patch_status;
168 
169 /*	IF l_status <> p_business_group_id THEN*/
170 	IF l_status IS NULL THEN
171 
172 		l_bg_id := p_business_group_id;
173 		l_effective_date := to_date('01-11-2007','DD-MM-YYYY');
174 
175 		INSERT INTO PAY_PATCH_STATUS
176 			(ID,
177 			PATCH_NUMBER,
178 			PATCH_NAME,
179 			STATUS,
180 			APPLIED_DATE,
181 			LEGISLATION_CODE)
182 		SELECT
183 			pay_patch_status_s.nextval,
184 			p_business_group_id,
185 			'AE_IV_MIGRATION',
186 			'C',
187 			sysdate,
188 			'AE'
189 		FROM DUAL;
190 
191 		l_bg_id := p_business_group_id;
192 		l_effective_date := to_date('01-11-2007','DD-MM-YYYY');
193 
194 		OPEN csr_get_ele_id ('Social Insurance',l_effective_date);
195 		FETCH csr_get_ele_id INTO l_si_ele_id;
196 		CLOSE csr_get_ele_id;
197 
198 		OPEN csr_get_ele_id ('Social Insurance Adjustment', l_effective_date);
199 		FETCH csr_get_ele_id INTO l_sia_ele_id;
200 		CLOSE csr_get_ele_id;
201 
202 		OPEN csr_get_iv_id (l_si_ele_id,l_effective_date);
203 		FETCH 	csr_get_iv_id INTO l_si_iv_id;
204 		CLOSE csr_get_iv_id;
205 
206 		OPEN csr_get_py_id(l_si_ele_id,l_effective_date);
207 		FETCH csr_get_py_id INTO l_si_py_id;
208 		CLOSE csr_get_py_id;
209 
210 		OPEN csr_get_iv_id (l_sia_ele_id,l_effective_date);
211 		FETCH 	csr_get_iv_id INTO l_sia_iv_id;
212 		CLOSE csr_get_iv_id;
213 
214 		OPEN csr_get_asg_ids (p_business_group_id,l_effective_date);
215 
216 		LOOP
217 			l_assignment_id := null;
218 			l_si_ee_id := null;
219 			l_sia_ee_id := null;
220 			l_sia_eev := null;
221 			l_si_eev := null;
222 			l_si_ovn := null;
223 			l_effective_start_date := null;
224 			l_effective_end_date := null;
225 			l_update_warning := null;
226 			l_mg := null;
227 			l_found := 'N';
228 			l_f_ee_id := null;
229 			L_F_EE2_ID := null;
230 			L_SI_EFFECTIVE_START_DATE := null;
231 			L_SI_EFFECTIVE_END_DATE := null;
232 			l_t_eff_date := null;
233 			l_temp_exc_on_si := NULL;
234 
235 			FETCH csr_get_asg_ids INTO l_assignment_id;
236 			EXIT WHEN csr_get_asg_ids%NOTFOUND;
237 
238 			/* Get the element entry id for SI element */
239 
240 			/*OPEN csr_get_ele_entries (l_si_ele_id,l_assignment_id);
241 			FETCH csr_get_ele_entries INTO l_si_ee_id, l_si_ee_start_date,l_si_ee_end_date;
242 			CLOSE csr_get_ele_entries;*/
243 
244 			OPEN csr_get_si_ee_all (l_si_ele_id,l_assignment_id);
245 			FETCH csr_get_si_ee_all into rec_ele_entry ;
246 			CLOSE csr_get_si_ee_all;
247 
248 			l_si_ee_id := rec_ele_entry.element_entry_id;
249 			l_si_ee_start_date := rec_ele_entry.effective_start_date;
250 			l_si_ee_end_date := rec_ele_entry.effective_end_date;
251 			L_SI_OBJECT_VERSION_NUMBER := rec_ele_entry.object_version_number;
252 
253 			/* Check if the SI element already has run results for Exception type */
254 
255 			OPEN csr_check_exc_on_si (l_si_ee_id,l_si_iv_id);
256 			FETCH csr_check_exc_on_si INTO l_temp_exc_on_si;
257 			CLOSE csr_check_exc_on_si;
258 
259 			IF l_temp_exc_on_si is null AND (l_si_ee_id IS NOT NULL AND
260                                                          l_si_ee_start_date is not null AND l_si_ee_end_date is not null) then
261 
262 
263 				/* Insert an entry value for Exception type on SI element */
264 
265 				INSERT INTO PAY_ELEMENT_ENTRY_VALUES_F
266 				( ELEMENT_ENTRY_VALUE_ID
267 				, EFFECTIVE_START_DATE
268 				, EFFECTIVE_END_DATE
269 				, INPUT_VALUE_ID
270 				, ELEMENT_ENTRY_ID
271 				, SCREEN_ENTRY_VALUE
272 				) Values
273 				(pay_element_entry_values_s.nextval
274 				, l_si_ee_start_date
275 				, l_si_ee_end_date
276 				, l_si_iv_id
277 				, l_si_ee_id
278 				, '');
279 
280 					/* Get all the records for SI Adjustment element */
281 
282 					OPEN csr_get_ele_entries (l_sia_ele_id, l_assignment_id);
283 
284 					LOOP
285 						l_t_sia_ee_id := null;
286 						l_t_sia_start_date := null;
287 						l_t_sia_end_date := null;
288 						l_t_sia_exc_val := null;
289 						L_F_EEV_ID := null;
290 
291 						FETCH csr_get_ele_entries INTO l_t_sia_ee_id,l_t_sia_start_date,l_t_sia_end_date ;
292 						EXIT WHEN csr_get_ele_entries%NOTFOUND;
293 
294 
295 
296 						OPEN csr_get_sia_entry_value(l_sia_iv_id,l_t_sia_start_date,l_t_sia_ee_id);
297 						FETCH csr_get_sia_entry_value INTO l_t_sia_exc_val;
298 						CLOSE csr_get_sia_entry_value;
299 
300 
301 						/* Initial value of OBJECT VERSION NUMBER */
302 						L_OBJECT_VERSION_NUMBER := L_SI_OBJECT_VERSION_NUMBER;
303 
304 						l_t_eff_date := nvl(L_SI_EFFECTIVE_START_DATE,l_si_ee_start_date);
305 
306 					IF  l_si_ee_id IS NOT NULL  THEN
307 
308 						L_DATETRACK_UPDATE_MODE := 'UPDATE';
309 
310 					/* Update the SI element entry and entry values with exception type value */
311 						HR_ENTRY_API.update_element_entry
312 						 (
313 						  -- Update Mode
314 						  p_dt_update_mode             => L_DATETRACK_UPDATE_MODE,
315 						  -- Date on which change is taking place
316 						  p_session_date           => l_t_sia_start_date,
320 						  p_element_entry_id           => l_si_ee_id,
317 						  -- Check to see if the entry is being updated
318 						  p_check_for_update          => 'N' ,
319 						  -- Element Entry Table
321 						  p_input_value_id1            => l_si_py_id,
322 						  p_input_value_id2            => l_si_iv_id,
323 						  p_entry_value1               => '',
324 						  p_entry_value2	       => get_lookup_meaning('AE_SI_EXCEPTION_TYPES',l_t_sia_exc_val),
325 						  p_override_user_ent_chk    => 'N'
326 						 )
327 						 ;
328 
329 						/* If SIA is end dated, then end date the SI exception record */
330 
331 						IF l_t_sia_end_date <> to_date('31-12-4712','DD-MM-YYYY') then
332 
333 							HR_ENTRY_API.update_element_entry
334 							 (
335 							  -- Update Mode
336 							  p_dt_update_mode             => L_DATETRACK_UPDATE_MODE,
337 							  -- Date on which change is taking place
338 							  p_session_date           => l_t_sia_end_date+1,
339 							  -- Check to see if the entry is being updated
340 							  p_check_for_update          => 'N' ,
341 							  -- Element Entry Table
342 							  p_element_entry_id           => l_si_ee_id,
343 							  p_input_value_id1            => l_si_py_id,
344 							  p_input_value_id2            => l_si_iv_id,
345 							  p_entry_value1               => '',
346 							  p_entry_value2	       => '',
347 							  p_override_user_ent_chk    => 'N'
348 							 )
349 							 ;
350 						END IF;
351 
352 					  END IF;
353 
354 
355 					END LOOP;
356 					CLOSE csr_get_ele_entries;
357 			END IF;
358 
359 
360 	 	END LOOP;
361 	 	CLOSE csr_get_asg_ids;
362 	 ELSE
363 		    hr_utility.set_message(800, 'HR_377443_AE_IV_MIG_RUN');
364     		    hr_utility.raise_error;
365 	END IF;
366 
367 
368 END update_iv_si_element;
369 
370   ------------------------------------------------------------------------
371   -----------------------------------------------------------------
372     FUNCTION get_lookup_meaning
373       (p_lookup_type varchar2
374       ,p_lookup_code varchar2)
375       RETURN VARCHAR2 IS
376       CURSOR csr_lookup IS
377       select meaning
378       from   hr_lookups
379       where  lookup_type = p_lookup_type
380       and    lookup_code = p_lookup_code;
381       l_meaning hr_lookups.meaning%type;
382     BEGIN
383       OPEN csr_lookup;
384       FETCH csr_lookup INTO l_Meaning;
385       CLOSE csr_lookup;
386       RETURN l_meaning;
387     END get_lookup_meaning;
388 -----------------------------------------------------------------
389   ------------------------------------------------------------------------
390 
391 END pay_ae_iv_migrate_pkg;
392