56: l_proc varchar2(30):= 'update_last_change_date';
57:
58: begin
59:
60: hr_utility.set_location('Entering:'||l_proc,5);
61: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
62: hr_utility.set_location('p_change_date:'||p_change_date,25);
63:
64: l_last_change_date:=p_change_date;
57:
58: begin
59:
60: hr_utility.set_location('Entering:'||l_proc,5);
61: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
62: hr_utility.set_location('p_change_date:'||p_change_date,25);
63:
64: l_last_change_date:=p_change_date;
65:
58: begin
59:
60: hr_utility.set_location('Entering:'||l_proc,5);
61: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
62: hr_utility.set_location('p_change_date:'||p_change_date,25);
63:
64: l_last_change_date:=p_change_date;
65:
66: OPEN csr_next_proposal;
65:
66: OPEN csr_next_proposal;
67: FETCH csr_next_proposal into l_pay_proposal_id,l_row_id;
68:
69: hr_utility.set_location('l_pay_proposal_id:'||l_pay_proposal_id,15);
70:
71: if csr_next_proposal%FOUND then
72: hr_utility.set_location('Cursor found:',25);
73:
68:
69: hr_utility.set_location('l_pay_proposal_id:'||l_pay_proposal_id,15);
70:
71: if csr_next_proposal%FOUND then
72: hr_utility.set_location('Cursor found:',25);
73:
74: update per_pay_proposals
75: set last_change_date = l_last_change_date
76: where rowid=l_row_id;
73:
74: update per_pay_proposals
75: set last_change_date = l_last_change_date
76: where rowid=l_row_id;
77: hr_utility.set_location('Updated successfuly:',35);
78: end if;
79:
80: CLOSE csr_next_proposal;
81:
78: end if;
79:
80: CLOSE csr_next_proposal;
81:
82: hr_utility.set_location('Leaving:'||l_proc,5);
83:
84: EXCEPTION
85: When others then
86: --
85: When others then
86: --
87: -- An unexpected error has occured
88: --
89: hr_utility.set_location('When Others:'||l_proc,5);
90: raise;
91: --
92: end update_last_change_date;
93:
122: l_proc varchar2(30):= 'end_date_proposed_proposal';
123:
124: begin
125:
126: hr_utility.set_location('Entering:'||l_proc,5);
127: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
128: hr_utility.set_location('p_date_to:'||p_date_to,25);
129:
130: OPEN csr_prev_prop_details;
123:
124: begin
125:
126: hr_utility.set_location('Entering:'||l_proc,5);
127: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
128: hr_utility.set_location('p_date_to:'||p_date_to,25);
129:
130: OPEN csr_prev_prop_details;
131: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
124: begin
125:
126: hr_utility.set_location('Entering:'||l_proc,5);
127: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
128: hr_utility.set_location('p_date_to:'||p_date_to,25);
129:
130: OPEN csr_prev_prop_details;
131: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
132:
129:
130: OPEN csr_prev_prop_details;
131: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
132:
133: hr_utility.set_location('l_pay_proposal_id:'||l_pay_proposal_id,15);
134: hr_utility.set_location('l_date_to:'||l_date_to,25);
135:
136: if csr_prev_prop_details%FOUND then
137: hr_utility.set_location('Cursor found:',35);
130: OPEN csr_prev_prop_details;
131: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
132:
133: hr_utility.set_location('l_pay_proposal_id:'||l_pay_proposal_id,15);
134: hr_utility.set_location('l_date_to:'||l_date_to,25);
135:
136: if csr_prev_prop_details%FOUND then
137: hr_utility.set_location('Cursor found:',35);
138: if l_date_to is null OR l_date_to > p_date_to then
133: hr_utility.set_location('l_pay_proposal_id:'||l_pay_proposal_id,15);
134: hr_utility.set_location('l_date_to:'||l_date_to,25);
135:
136: if csr_prev_prop_details%FOUND then
137: hr_utility.set_location('Cursor found:',35);
138: if l_date_to is null OR l_date_to > p_date_to then
139: hr_utility.set_location('About to update',45);
140: update per_pay_proposals
141: set date_to = p_date_to,
135:
136: if csr_prev_prop_details%FOUND then
137: hr_utility.set_location('Cursor found:',35);
138: if l_date_to is null OR l_date_to > p_date_to then
139: hr_utility.set_location('About to update',45);
140: update per_pay_proposals
141: set date_to = p_date_to,
142: -- added by vkodedal fix for 6831216
143: last_update_date = sysdate,
145: last_update_login = fnd_global.login_id
146: -- end of fix
147: where assignment_id = p_assignment_id
148: and pay_proposal_id = l_pay_proposal_id;
149: hr_utility.set_location('Updated successfuly:',85);
150: end if;
151: end if;
152: CLOSE csr_prev_prop_details;
153:
150: end if;
151: end if;
152: CLOSE csr_prev_prop_details;
153:
154: hr_utility.set_location('Leaving:'||l_proc,5);
155:
156: end end_date_proposed_proposal;
157: --
158: --
203: l_del_warn boolean;
204:
205: begin
206:
207: hr_utility.set_location('Entering:'||l_proc,5);
208: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
209: hr_utility.set_location('p_date_to:'||p_date_to,25);
210:
211: OPEN csr_prev_prop_details;
204:
205: begin
206:
207: hr_utility.set_location('Entering:'||l_proc,5);
208: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
209: hr_utility.set_location('p_date_to:'||p_date_to,25);
210:
211: OPEN csr_prev_prop_details;
212: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
205: begin
206:
207: hr_utility.set_location('Entering:'||l_proc,5);
208: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
209: hr_utility.set_location('p_date_to:'||p_date_to,25);
210:
211: OPEN csr_prev_prop_details;
212: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
213:
211: OPEN csr_prev_prop_details;
212: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
213:
214: if csr_prev_prop_details%FOUND then
215: hr_utility.set_location('Cursor found:',35);
216: if l_date_to is null OR l_date_to > p_date_to then
217: hr_utility.set_location('About to update',45);
218: update per_pay_proposals
219: set date_to = p_date_to,
213:
214: if csr_prev_prop_details%FOUND then
215: hr_utility.set_location('Cursor found:',35);
216: if l_date_to is null OR l_date_to > p_date_to then
217: hr_utility.set_location('About to update',45);
218: update per_pay_proposals
219: set date_to = p_date_to,
220: -- added by vkodedal fix for 6831216
221: last_update_date = sysdate,
223: last_update_login = fnd_global.login_id
224: -- end of fix
225: where assignment_id = p_assignment_id
226: and pay_proposal_id = l_pay_proposal_id;
227: hr_utility.set_location('Updated successfuly:',85);
228: end if;
229: end if;
230: CLOSE csr_prev_prop_details;
231: -- This condition is added to delete the proposed proposals in case it is not yet done from
231: -- This condition is added to delete the proposed proposals in case it is not yet done from
232: -- the OA layer. schowdhu - 01-Dec-2008
233: if( HR_MAINTAIN_PROPOSAL_API.g_deleted_from_oa = 'N')
234: then
235: hr_utility.set_location('Within delete from OA',90);
236: -- now delete all the inactivated proposed proposals. Bug#7386307 by schowdhu
237: for a in get_all_proposed_proposals loop
238: hr_maintain_proposal_api.delete_salary_proposal
239: (p_pay_proposal_id => a.pay_proposal_id
242: ,p_salary_warning => l_del_warn);
243: end loop;
244: end if;
245:
246: hr_utility.set_location('Leaving:'||l_proc,100);
247:
248: end end_date_approved_proposal;
249: --
250: -----------------------------------------------------------------------------
282: and assignment_id = p_assignment_id
283: and change_date = p_date_to +1 ;
284: begin
285:
286: hr_utility.set_location('Entering:'||l_proc,5);
287: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
288: hr_utility.set_location('p_date_to:'||p_date_to,25);
289: /*
290: OPEN csr_prev_prop_details;
283: and change_date = p_date_to +1 ;
284: begin
285:
286: hr_utility.set_location('Entering:'||l_proc,5);
287: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
288: hr_utility.set_location('p_date_to:'||p_date_to,25);
289: /*
290: OPEN csr_prev_prop_details;
291: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
284: begin
285:
286: hr_utility.set_location('Entering:'||l_proc,5);
287: hr_utility.set_location('p_assignment_id:'||p_assignment_id,15);
288: hr_utility.set_location('p_date_to:'||p_date_to,25);
289: /*
290: OPEN csr_prev_prop_details;
291: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
292:
289: /*
290: OPEN csr_prev_prop_details;
291: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
292:
293: hr_utility.set_location('l_pay_proposal_id:'||l_pay_proposal_id,15);
294: hr_utility.set_location('l_date_to:'||l_date_to,25);
295:
296:
297: if csr_prev_prop_details%FOUND then
290: OPEN csr_prev_prop_details;
291: FETCH csr_prev_prop_details into l_pay_proposal_id,l_date_to;
292:
293: hr_utility.set_location('l_pay_proposal_id:'||l_pay_proposal_id,15);
294: hr_utility.set_location('l_date_to:'||l_date_to,25);
295:
296:
297: if csr_prev_prop_details%FOUND then
298: hr_utility.set_location('Cursor found:',35);
294: hr_utility.set_location('l_date_to:'||l_date_to,25);
295:
296:
297: if csr_prev_prop_details%FOUND then
298: hr_utility.set_location('Cursor found:',35);
299: if l_date_to is null OR l_date_to > p_date_to then
300: hr_utility.set_location('About to update',45);
301: update per_pay_proposals
302: set date_to = p_date_to,
296:
297: if csr_prev_prop_details%FOUND then
298: hr_utility.set_location('Cursor found:',35);
299: if l_date_to is null OR l_date_to > p_date_to then
300: hr_utility.set_location('About to update',45);
301: update per_pay_proposals
302: set date_to = p_date_to,
303: -- added by vkodedal fix for 6831216
304: last_update_date = sysdate,
306: last_update_login = fnd_global.login_id
307: -- end of fix
308: where assignment_id = p_assignment_id
309: and pay_proposal_id = l_pay_proposal_id;
310: hr_utility.set_location('Updated successfuly:',85);
311: end if;
312: end if;
313: CLOSE csr_prev_prop_details;
314: */
321: end_date_approved_proposal (p_assignment_id, p_date_to, p_proposal_id);
322: end if;
323: CLOSE chk_approved_flg;
324:
325: hr_utility.set_location('Leaving:'||l_proc,5);
326:
327: end end_date_salary_proposal;
328:
329: -----------------------------------------------------------------------------
934: where assignment_id = p_assignment_id
935: and change_date > p_change_date;
936:
937: begin
938: hr_utility.set_location('Entering:'|| l_proc, 5);
939: --
940: -- Issue a savepoint
941: --
942: savepoint upload_salary_proposal;
1175: (
1176: l_change_amount_table
1177: ,l_change_percentage_table
1178: );
1179: hr_utility.set_location(l_proc, 10);
1180: --
1181: -- get the last salary proposal.
1182: --
1183: open csr_get_last_approved_salary;
1182: --
1183: open csr_get_last_approved_salary;
1184: fetch csr_get_last_approved_salary into l_last_proposed_salary;
1185: if csr_get_last_approved_salary%notfound then
1186: hr_utility.set_location(l_proc, 15);
1187: --
1188: -- this means that, this is the first proposal, hence apply
1189: -- create proposal (i.e.first) or update proposal depending
1190: -- on the value of the l_pay_proposal_id
1195: -- raise the component error if any of the components
1196: -- were set. Note: the first proposal has no components.
1197: --
1198: if (l_is_component_not_null) then
1199: hr_utility.set_location(l_proc, 20);
1200: close csr_get_last_approved_salary;
1201: hr_utility.set_message(801,'HR_51312_PPC_COMP_NOT_ALLOWED');
1202: hr_utility.raise_error;
1203: end if;
1197: --
1198: if (l_is_component_not_null) then
1199: hr_utility.set_location(l_proc, 20);
1200: close csr_get_last_approved_salary;
1201: hr_utility.set_message(801,'HR_51312_PPC_COMP_NOT_ALLOWED');
1202: hr_utility.raise_error;
1203: end if;
1204: --
1205: if (l_trunc_date IS NULL AND p_proposed_salary IS NULL AND
1198: if (l_is_component_not_null) then
1199: hr_utility.set_location(l_proc, 20);
1200: close csr_get_last_approved_salary;
1201: hr_utility.set_message(801,'HR_51312_PPC_COMP_NOT_ALLOWED');
1202: hr_utility.raise_error;
1203: end if;
1204: --
1205: if (l_trunc_date IS NULL AND p_proposed_salary IS NULL AND
1206: p_proposal_reason IS NULL ) then
1206: p_proposal_reason IS NULL ) then
1207: --
1208: -- this means that no action need to be taken for this record
1209: --
1210: hr_utility.set_location(l_proc, 25);
1211: --
1212: else
1213: --
1214: -- p_next_sal_review_date is being set to null if it is
1220: -- This means that the record need to be inserted
1221: -- Note that the proposal gets approved automatically,
1222: -- because it is the first proposal.
1223: --
1224: hr_utility.set_location(l_proc, 30);
1225: l_multiple_components := 'N';
1226: --
1227: -- insert an unapproved single component salary proposal
1228: -- record in per_pay_proposal_table using the row_handler
1231: --Retain auto approve first proposal functionality if profile is null or set to Yes
1232: l_approved :='N';
1233: l_autoApprove:=fnd_profile.value('HR_AUTO_APPROVE_FIRST_PROPOSAL');
1234: if(l_autoApprove is null or l_autoApprove ='Y') then
1235: hr_utility.set_location(l_proc, 32);
1236: l_approved:='Y';
1237: end if;
1238: per_pyp_ins.ins
1239: (p_pay_proposal_id => l_pay_proposal_id
1287: open csr_get_element_detail;
1288: fetch csr_get_element_detail into l_element_type_id,
1289: l_input_value_id;
1290: if csr_get_element_detail%notfound then
1291: hr_utility.set_location(l_proc,35);
1292: close csr_get_element_detail;
1293: hr_utility.set_message(801,'HR_289855_SAL_ASS_NOT_SAL_ELIG');
1294: hr_utility.raise_error;
1295: else
1289: l_input_value_id;
1290: if csr_get_element_detail%notfound then
1291: hr_utility.set_location(l_proc,35);
1292: close csr_get_element_detail;
1293: hr_utility.set_message(801,'HR_289855_SAL_ASS_NOT_SAL_ELIG');
1294: hr_utility.raise_error;
1295: else
1296: close csr_get_element_detail;
1297: if (l_element_type_id IS NULL OR l_input_value_id IS NULL)
1290: if csr_get_element_detail%notfound then
1291: hr_utility.set_location(l_proc,35);
1292: close csr_get_element_detail;
1293: hr_utility.set_message(801,'HR_289855_SAL_ASS_NOT_SAL_ELIG');
1294: hr_utility.raise_error;
1295: else
1296: close csr_get_element_detail;
1297: if (l_element_type_id IS NULL OR l_input_value_id IS NULL)
1298: then
1295: else
1296: close csr_get_element_detail;
1297: if (l_element_type_id IS NULL OR l_input_value_id IS NULL)
1298: then
1299: hr_utility.set_location(l_proc,40);
1300: hr_utility.set_message
1301: (801,'HR_289855_SAL_ASS_NOT_SAL_ELIG');
1302: hr_utility.raise_error;
1303: else
1296: close csr_get_element_detail;
1297: if (l_element_type_id IS NULL OR l_input_value_id IS NULL)
1298: then
1299: hr_utility.set_location(l_proc,40);
1300: hr_utility.set_message
1301: (801,'HR_289855_SAL_ASS_NOT_SAL_ELIG');
1302: hr_utility.raise_error;
1303: else
1304: l_element_link_id := hr_entry_api.get_link
1298: then
1299: hr_utility.set_location(l_proc,40);
1300: hr_utility.set_message
1301: (801,'HR_289855_SAL_ASS_NOT_SAL_ELIG');
1302: hr_utility.raise_error;
1303: else
1304: l_element_link_id := hr_entry_api.get_link
1305: (p_assignment_id
1306: ,l_element_type_id
1305: (p_assignment_id
1306: ,l_element_type_id
1307: ,l_trunc_date);
1308: if l_element_link_id IS NULL then
1309: hr_utility.set_message
1310: (801,'HR_13016_SAL_ELE_NOT_ELIG');
1311: hr_utility.raise_error;
1312: end if;
1313: --
1307: ,l_trunc_date);
1308: if l_element_link_id IS NULL then
1309: hr_utility.set_message
1310: (801,'HR_13016_SAL_ELE_NOT_ELIG');
1311: hr_utility.raise_error;
1312: end if;
1313: --
1314: -- Now we insert an element entry for this proposal
1315: -- by calling the insert_element_entry_api.
1356: fetch csr_get_proposal_detail into l_change_date,l_proposed_salary_db,
1357: l_multiple_components,l_pyp_approved,l_proposal_reason,
1358: l_pyp_object_version_number;
1359: if csr_get_proposal_detail%notfound then
1360: hr_utility.set_location(l_proc,45);
1361: close csr_get_proposal_detail;
1362: hr_utility.set_message(801,'HR_51310_PPC_INVAL_PRO_ID');
1363: hr_utility.raise_error;
1364: else
1358: l_pyp_object_version_number;
1359: if csr_get_proposal_detail%notfound then
1360: hr_utility.set_location(l_proc,45);
1361: close csr_get_proposal_detail;
1362: hr_utility.set_message(801,'HR_51310_PPC_INVAL_PRO_ID');
1363: hr_utility.raise_error;
1364: else
1365: close csr_get_proposal_detail;
1366: --
1359: if csr_get_proposal_detail%notfound then
1360: hr_utility.set_location(l_proc,45);
1361: close csr_get_proposal_detail;
1362: hr_utility.set_message(801,'HR_51310_PPC_INVAL_PRO_ID');
1363: hr_utility.raise_error;
1364: else
1365: close csr_get_proposal_detail;
1366: --
1367: -- check that the object version number is the same (the record has
1367: -- check that the object version number is the same (the record has
1368: -- not been changed since it has been out via the HRMS)
1369: --
1370: if (l_pyp_object_version_number <> p_object_version_number) then
1371: hr_utility.set_location(l_proc,50);
1372: hr_utility.set_message(801,'HR_51348_PYP_RECORD_CHG');
1373: hr_utility.raise_error;
1374: end if;
1375: --
1368: -- not been changed since it has been out via the HRMS)
1369: --
1370: if (l_pyp_object_version_number <> p_object_version_number) then
1371: hr_utility.set_location(l_proc,50);
1372: hr_utility.set_message(801,'HR_51348_PYP_RECORD_CHG');
1373: hr_utility.raise_error;
1374: end if;
1375: --
1376: -- Check that the proposal is multiple or single component.
1369: --
1370: if (l_pyp_object_version_number <> p_object_version_number) then
1371: hr_utility.set_location(l_proc,50);
1372: hr_utility.set_message(801,'HR_51348_PYP_RECORD_CHG');
1373: hr_utility.raise_error;
1374: end if;
1375: --
1376: -- Check that the proposal is multiple or single component.
1377: -- if it is single_component and some components exists then
1378: -- raise error.
1379: --
1380: if (l_multiple_components = 'N') then
1381: if (l_is_component_not_null) then
1382: hr_utility.set_location(l_proc,55);
1383: hr_utility.set_message(801,'HR_51312_PPC_COMP_NOT_ALLOWED');
1384: hr_utility.raise_error;
1385: else
1386: --
1379: --
1380: if (l_multiple_components = 'N') then
1381: if (l_is_component_not_null) then
1382: hr_utility.set_location(l_proc,55);
1383: hr_utility.set_message(801,'HR_51312_PPC_COMP_NOT_ALLOWED');
1384: hr_utility.raise_error;
1385: else
1386: --
1387: -- check that the change_date has not been updated
1380: if (l_multiple_components = 'N') then
1381: if (l_is_component_not_null) then
1382: hr_utility.set_location(l_proc,55);
1383: hr_utility.set_message(801,'HR_51312_PPC_COMP_NOT_ALLOWED');
1384: hr_utility.raise_error;
1385: else
1386: --
1387: -- check that the change_date has not been updated
1388: -- This extra check is done here since the update api has
1390: -- the change date we need to do this validation before
1391: -- calling the update routine
1392: --
1393: if (l_trunc_date <> l_change_date) then
1394: hr_utility.set_location(l_proc,60);
1395: hr_utility.set_message(801,'HR_51349_PYP_CNT_UPD_CHG_DATE');
1396: hr_utility.raise_error;
1397: end if;
1398: --
1391: -- calling the update routine
1392: --
1393: if (l_trunc_date <> l_change_date) then
1394: hr_utility.set_location(l_proc,60);
1395: hr_utility.set_message(801,'HR_51349_PYP_CNT_UPD_CHG_DATE');
1396: hr_utility.raise_error;
1397: end if;
1398: --
1399: --
1392: --
1393: if (l_trunc_date <> l_change_date) then
1394: hr_utility.set_location(l_proc,60);
1395: hr_utility.set_message(801,'HR_51349_PYP_CNT_UPD_CHG_DATE');
1396: hr_utility.raise_error;
1397: end if;
1398: --
1399: --
1400: -- update the salary proposal
1434: ,p_attribute19 => p_attribute19
1435: ,p_attribute20 => p_attribute20
1436: );
1437: --
1438: hr_utility.set_location(l_proc,65);
1439: --
1440: end if;
1441: else
1442: --
1443: -- l_multiple_components = 'Y'
1444: -- This is when the proposal has multiple components.
1445: -- We need to calculate the sum of the components in this case
1446: --
1447: hr_utility.set_location(l_proc,70);
1448: l_component_cal := TRUE;
1449: --
1450: end if;
1451: --
1457: -- already existed( i.e. it need to be created).
1458: -- first of all we need to determine whether the proposal is of type
1459: -- multiple components or not. This is done by checking the components.
1460: --
1461: hr_utility.set_location(l_proc,75);
1462: if (l_is_component_not_null) then
1463: l_multiple_components := 'Y';
1464: l_component_cal := TRUE;
1465: hr_utility.set_location(l_proc,80);
1461: hr_utility.set_location(l_proc,75);
1462: if (l_is_component_not_null) then
1463: l_multiple_components := 'Y';
1464: l_component_cal := TRUE;
1465: hr_utility.set_location(l_proc,80);
1466: else l_multiple_components := 'N';
1467: hr_utility.set_location(l_proc,85);
1468: --
1469: end if;
1463: l_multiple_components := 'Y';
1464: l_component_cal := TRUE;
1465: hr_utility.set_location(l_proc,80);
1466: else l_multiple_components := 'N';
1467: hr_utility.set_location(l_proc,85);
1468: --
1469: end if;
1470: --
1471: if l_next_sal_review_date = hr_api.g_date then
1527: ,p_attribute19 => p_attribute19
1528: ,p_attribute20 => p_attribute20
1529: );
1530: --
1531: hr_utility.set_location(l_proc,90);
1532: --
1533: end if; -- l_pay_proposal_id is not null
1534: --
1535: end if; -- csr_get_last_approved_salary not found
1535: end if; -- csr_get_last_approved_salary not found
1536: --
1537: if (csr_get_last_approved_salary%isopen) then
1538: close csr_get_last_approved_salary;
1539: hr_utility.set_location(l_proc,95);
1540: end if;
1541: --
1542: if (csr_get_proposal_detail%isopen) then
1543: close csr_get_proposal_detail;
1540: end if;
1541: --
1542: if (csr_get_proposal_detail%isopen) then
1543: close csr_get_proposal_detail;
1544: hr_utility.set_location(l_proc,100);
1545: end if;
1546: --
1547: -- Now loop round the components and insert the components followed by
1548: -- updating the appropriate proposal
1547: -- Now loop round the components and insert the components followed by
1548: -- updating the appropriate proposal
1549: --
1550: if(l_component_cal = true and l_last_proposed_salary IS NOT NULL) then
1551: hr_utility.set_location(l_proc,105);
1552: for i in 1 .. MAX_COMP_NO
1553: loop
1554: --
1555: -- set the value of the local parameters to be the appropriate
1564: l_object_version_number_in := get_value(l_ovn_table,i);
1565:
1566:
1567: if (l_component_id_in IS NOT NULL ) then
1568: hr_utility.set_location(l_proc,110);
1569: open csr_get_component_detail (l_component_id_in);
1570: fetch csr_get_component_detail into l_component_reason, l_change_amount,
1571: l_change_percentage,l_ppc_approved, l_ppc_object_version_number;
1572: if csr_get_component_detail%notfound then
1570: fetch csr_get_component_detail into l_component_reason, l_change_amount,
1571: l_change_percentage,l_ppc_approved, l_ppc_object_version_number;
1572: if csr_get_component_detail%notfound then
1573: close csr_get_component_detail;
1574: hr_utility.set_location(l_proc,115);
1575: hr_utility.set_message(801,'HR_51319_PPC_INVAL_COMP_ID');
1576: hr_utility.raise_error;
1577: else
1578: close csr_get_component_detail;
1571: l_change_percentage,l_ppc_approved, l_ppc_object_version_number;
1572: if csr_get_component_detail%notfound then
1573: close csr_get_component_detail;
1574: hr_utility.set_location(l_proc,115);
1575: hr_utility.set_message(801,'HR_51319_PPC_INVAL_COMP_ID');
1576: hr_utility.raise_error;
1577: else
1578: close csr_get_component_detail;
1579: hr_utility.set_location(l_proc,120);
1572: if csr_get_component_detail%notfound then
1573: close csr_get_component_detail;
1574: hr_utility.set_location(l_proc,115);
1575: hr_utility.set_message(801,'HR_51319_PPC_INVAL_COMP_ID');
1576: hr_utility.raise_error;
1577: else
1578: close csr_get_component_detail;
1579: hr_utility.set_location(l_proc,120);
1580: --
1575: hr_utility.set_message(801,'HR_51319_PPC_INVAL_COMP_ID');
1576: hr_utility.raise_error;
1577: else
1578: close csr_get_component_detail;
1579: hr_utility.set_location(l_proc,120);
1580: --
1581: -- check that the record has not been changed since last time.
1582: --
1583: if (l_ppc_object_version_number <> l_object_version_number_in) then
1580: --
1581: -- check that the record has not been changed since last time.
1582: --
1583: if (l_ppc_object_version_number <> l_object_version_number_in) then
1584: hr_utility.set_location(l_proc,125);
1585: hr_utility.set_message(801,'HR_51455_PPC_RECORD_CHANGED');
1586: hr_utility.raise_error;
1587: end if;
1588: --
1581: -- check that the record has not been changed since last time.
1582: --
1583: if (l_ppc_object_version_number <> l_object_version_number_in) then
1584: hr_utility.set_location(l_proc,125);
1585: hr_utility.set_message(801,'HR_51455_PPC_RECORD_CHANGED');
1586: hr_utility.raise_error;
1587: end if;
1588: --
1589: -- Do nothing if the component has not changed at all.
1582: --
1583: if (l_ppc_object_version_number <> l_object_version_number_in) then
1584: hr_utility.set_location(l_proc,125);
1585: hr_utility.set_message(801,'HR_51455_PPC_RECORD_CHANGED');
1586: hr_utility.raise_error;
1587: end if;
1588: --
1589: -- Do nothing if the component has not changed at all.
1590: --
1597: --
1598: -- this means that the component has not changed
1599: -- we just adding the amount.
1600: --
1601: hr_utility.set_location(l_proc,130);
1602: l_component_sum
1603: := l_component_sum + l_change_amount;
1604: --
1605: elsif (l_component_reason = l_component_reason_in AND
1616: l_component_sum
1617: := l_component_sum + l_change_amount;
1618: l_comp_update := true;
1619: --
1620: hr_utility.set_location(l_proc,135);
1621: --
1622: -- issue an error if updating an approved component
1623: --
1624: elsif (l_ppc_approved = 'Y' AND
1626: nvl(l_change_amount,hr_api.g_number)
1627: <> nvl(l_change_amount_in,hr_api.g_number) OR
1628: nvl(l_change_percentage,hr_api.g_number)
1629: <> nvl(l_change_percentage_in,hr_api.g_number))) then
1630: hr_utility.set_location(l_proc,140);
1631: hr_utility.set_message(801,'HR_51454_PPC_CANT_UPD_COMP');
1632: hr_utility.raise_error;
1633: elsif (l_ppc_approved = 'N') then
1634: --
1627: <> nvl(l_change_amount_in,hr_api.g_number) OR
1628: nvl(l_change_percentage,hr_api.g_number)
1629: <> nvl(l_change_percentage_in,hr_api.g_number))) then
1630: hr_utility.set_location(l_proc,140);
1631: hr_utility.set_message(801,'HR_51454_PPC_CANT_UPD_COMP');
1632: hr_utility.raise_error;
1633: elsif (l_ppc_approved = 'N') then
1634: --
1635: -- This is when the component is not already approved and some
1628: nvl(l_change_percentage,hr_api.g_number)
1629: <> nvl(l_change_percentage_in,hr_api.g_number))) then
1630: hr_utility.set_location(l_proc,140);
1631: hr_utility.set_message(801,'HR_51454_PPC_CANT_UPD_COMP');
1632: hr_utility.raise_error;
1633: elsif (l_ppc_approved = 'N') then
1634: --
1635: -- This is when the component is not already approved and some
1636: -- changes has taken place, hence we need to update or delete
1642: --
1643: -- calculate the component_sum from the change_percentage
1644: -- and update the record.
1645: --
1646: hr_utility.set_location(l_proc,145);
1647: l_component_sum := l_component_sum +
1648: l_last_proposed_salary
1649: * l_change_percentage_in /100;
1650: --
1652: -- update the record and set the approved flag to Y
1653: --
1654: l_prop_update := true;
1655: l_comp_update := true;
1656: hr_utility.set_location(l_proc,150);
1657: else
1658: --
1659: -- the change_amount and the change percentage are
1660: -- both null, this means that the component need to
1672: := l_component_sum - l_change_amount;
1673:
1674: l_prop_update := true;
1675: --
1676: hr_utility.set_location(l_proc,155);
1677: --
1678: end if; -- l_change_percentage IS NOT NULL
1679: else
1680: --
1687: -- Set the comp_update and prop_update to true
1688: --
1689: l_comp_update := true;
1690: l_prop_update := true;
1691: hr_utility.set_location(l_proc,160);
1692: end if; -- l_change_amount_is not null
1693: --
1694: end if;
1695: --
1704: ,p_approved => l_approved_in
1705: ,p_object_version_number => l_object_version_number_in
1706: ,p_validate => false
1707: );
1708: hr_utility.set_location(l_proc, 165);
1709: end if;
1710: --
1711: end if; -- csr_get_component_details
1712: --
1723: l_prop_update := true;
1724: if (l_change_amount_in IS NOT NULL ) then
1725: l_component_sum := l_component_sum +
1726: l_change_amount_in;
1727: hr_utility.set_location(l_proc, 170);
1728: else
1729: if (l_change_percentage_in IS NOT NULL) then
1730: l_component_sum := l_component_sum +
1731: l_last_proposed_salary *
1729: if (l_change_percentage_in IS NOT NULL) then
1730: l_component_sum := l_component_sum +
1731: l_last_proposed_salary *
1732: l_change_percentage_in /100;
1733: hr_utility.set_location(l_proc, 175);
1734: end if;
1735: --
1736: end if;
1737: --
1745: ,p_approved => l_approved_in
1746: ,p_object_version_number => l_object_version_number_in
1747: ,p_validate => false
1748: );
1749: hr_utility.set_location(l_proc, 180);
1750: --
1751: end if;
1752: end if; -- the l_component_id is null
1753: --
1829: ,p_payroll_warning => l_payroll_warning
1830: ,p_validate => false
1831: );
1832: --
1833: hr_utility.set_location(l_proc, 185);
1834: end if;
1835: end if; -- L_component_cal
1836: --
1837: -- Call After Process User Hook upload_salary_proposal
1966: p_component_id_10 := l_component_id_10;
1967: p_ppc_object_version_number_10:= l_ppc_ovn_10;
1968:
1969: --
1970: hr_utility.set_location(' Leaving:'||l_proc, 190);
1971: exception
1972: when hr_api.validate_enabled then
1973: --
1974: -- As the Validate_Enabled exception has been raised
2005: p_ppc_object_version_number_9 := lt_ppc_ovn_9;
2006: p_component_id_10 := lt_component_id_10;
2007: p_ppc_object_version_number_10:= lt_ppc_ovn_10;
2008: --
2009: hr_utility.set_location(' Leaving:'||l_proc, 195);
2010: --
2011: when others then
2012: --
2013: -- A validation or unexpected error has occurred