[Home] [Help]
1274: if FND_API.to_Boolean (p_init_msg_list) then
1275: FND_MSG_PUB.initialize;
1276: end if;
1277:
1278: delete from PSB_POSITION_ASSIGNMENTS
1279: where worksheet_id = p_worksheet_id;
1280:
1281:
1282: -- Standard check of p_commit.
1348: if FND_API.to_Boolean (p_init_msg_list) then
1349: FND_MSG_PUB.initialize;
1350: end if;
1351:
1352: delete from PSB_POSITION_ASSIGNMENTS
1353: where assignment_type = 'EMPLOYEE'
1354: and data_extract_id = p_data_extract_id;
1355:
1356:
1459: primary_employee_flag,
1460: global_default_flag,
1461: assignment_default_rule_id,
1462: modify_flag
1463: from PSB_POSITION_ASSIGNMENTS
1464: where (worksheet_id is null or worksheet_id = p_worksheet_id)
1465: and (((p_assignment_type = 'ATTRIBUTE')
1466: and (attribute_id = p_attribute_id))
1467: or ((p_assignment_type = 'EMPLOYEE')
1516: a.primary_employee_flag,
1517: a.global_default_flag,
1518: a.assignment_default_rule_id,
1519: a.modify_flag
1520: from PSB_POSITION_ASSIGNMENTS a,
1521: PSB_PAY_ELEMENTS el
1522: where
1523: ( (nvl(a.worksheet_id, FND_API.G_MISS_NUM) = nvl(p_worksheet_id, FND_API.G_MISS_NUM)) OR
1524: (p_worksheet_id is not null and worksheet_id is null
1523: ( (nvl(a.worksheet_id, FND_API.G_MISS_NUM) = nvl(p_worksheet_id, FND_API.G_MISS_NUM)) OR
1524: (p_worksheet_id is not null and worksheet_id is null
1525: and not exists
1526: (select 1 from
1527: psb_position_assignments c ,psb_pay_elements pe2
1528: where c.position_id = a.position_id
1529: and c.pay_element_id = pe2.pay_element_id
1530: and pe2.salary_flag = 'Y'
1531: and c.worksheet_id = p_worksheet_id
1563:
1564: /*For Bug No : 2847566 Start*/
1565: Cursor C_Get_Pay_Basis Is
1566: Select pay_basis
1567: From psb_position_assignments
1568: Where ((worksheet_id is null) or (worksheet_id = p_worksheet_id))
1569: And assignment_type = 'ELEMENT'
1570: And position_id = p_position_id
1571: And pay_basis is not null
1617: --++
1618: -- modified update_row to pass pay_element_id and modify with input p_pay_element_id for salary overlap
1619: -- added order by on cursors
1620:
1621: update PSB_POSITION_ASSIGNMENTS
1622: set attribute_value_id = decode(p_attribute_value_id, null, attribute_value_id, p_attribute_value_id),
1623: attribute_value = decode(p_attribute_value, null, attribute_value, p_attribute_value),
1624: pay_element_option_id = decode(p_pay_element_option_id, null, pay_element_option_id, p_pay_element_option_id),
1625: element_value_type = decode(p_element_value_type, null, element_value_type, p_element_value_type),
1807: /* No Overlaps, Input not for protecting assignment: direct insert */
1808: -- removed salary validation
1809: begin
1810:
1811: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
1812: (p_api_version => 1.0,
1813: p_return_status => l_return_status,
1814: p_msg_count => l_msg_count,
1815: p_msg_data => l_msg_data,
1882: )
1883: ) then
1884: begin
1885:
1886: PSB_POSITION_ASSIGNMENTS_PVT.Update_Row
1887: (p_api_version => 1.0,
1888: p_return_status => l_return_status,
1889: p_msg_count => l_msg_count,
1890: p_msg_data => l_msg_data,
2017:
2018: --+ pass input pay_element_id and pay_element_option_id so that salary overlap will result
2019: --+ of update will have the new input salary values
2020:
2021: PSB_POSITION_ASSIGNMENTS_PVT.Update_Row
2022: (p_api_version => 1.0,
2023: p_return_status => l_return_status,
2024: p_msg_count => l_msg_count,
2025: p_msg_data => l_msg_data,
2048: end;
2049: elsif ((g_assign(l_assign_index).worksheet_id is null) and (p_worksheet_id is not null) and
2050: (not FND_API.to_Boolean(l_ws_overlap))) then
2051: begin
2052: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
2053: (p_api_version => 1.0,
2054: p_return_status => l_return_status,
2055: p_msg_count => l_msg_count,
2056: p_msg_data => l_msg_data,
2128: l_element_id := p_pay_element_id;
2129: END IF;
2130: /* end bug no 4213882 */
2131:
2132: PSB_POSITION_ASSIGNMENTS_PVT.Update_Row
2133: (p_api_version => 1.0,
2134: p_return_status => l_return_status,
2135: p_msg_count => l_msg_count,
2136: p_msg_data => l_msg_data,
2181: l_element_id := p_pay_element_id;
2182: END IF;
2183: /* end bug no 4213882 */
2184:
2185: PSB_POSITION_ASSIGNMENTS_PVT.Update_Row
2186: (p_api_version => 1.0,
2187: p_return_status => l_return_status,
2188: p_msg_count => l_msg_count,
2189: p_msg_data => l_msg_data,
2229: (g_assign(l_assign_index).effective_start_date > p_effective_start_date) AND
2230: (p_effective_end_date is null)) THEN
2231: /* end bug 4153562 */
2232:
2233: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
2234: (p_api_version => 1.0,
2235: p_return_status => l_return_status,
2236: p_msg_count => l_msg_count,
2237: p_msg_data => l_msg_data,
2283:
2284: if FND_API.to_Boolean(l_updated_record) then
2285: begin
2286:
2287: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
2288: (p_api_version => 1.0,
2289: p_return_status => l_return_status,
2290: p_msg_count => l_msg_count,
2291: p_msg_data => l_msg_data,
2325: begin
2326:
2327: --++ pass input pay_element_option_id so that if input is salary, the updated row will
2328: --++ reflect the input value
2329: PSB_POSITION_ASSIGNMENTS_PVT.Update_Row
2330: (p_api_version => 1.0,
2331: p_return_status => l_return_status,
2332: p_msg_count => l_msg_count,
2333: p_msg_data => l_msg_data,
2457:
2458: if not FND_API.to_Boolean(l_created_record) then
2459: begin
2460:
2461: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
2462: (p_api_version => 1.0,
2463: p_return_status => l_return_status,
2464: p_msg_count => l_msg_count,
2465: p_msg_data => l_msg_data,
2594:
2595: IF (PSB_HR_POPULATE_DATA_PVT.g_extract_method = 'REFRESH') THEN
2596: IF ( g_assign(l_assign_index).effective_start_date > p_effective_start_date ) THEN
2597:
2598: PSB_POSITION_ASSIGNMENTS_PVT.Delete_Row
2599: (p_api_version => 1.0,
2600: p_return_status => l_return_status,
2601: p_msg_count => l_msg_count,
2602: p_msg_data => l_msg_data,
2605: END IF;
2606: ELSE
2607: /* End bug 4153562 */
2608:
2609: PSB_POSITION_ASSIGNMENTS_PVT.Delete_Row
2610: (p_api_version => 1.0,
2611: p_return_status => l_return_status,
2612: p_msg_count => l_msg_count,
2613: p_msg_data => l_msg_data,
2715: ) IS
2716:
2717: cursor c_Overlap is
2718: select position_assignment_id
2719: from PSB_POSITION_ASSIGNMENTS
2720: where worksheet_id = p_worksheet_id
2721: and (((p_assignment_type = 'ATTRIBUTE')
2722: and (attribute_id = p_attribute_id))
2723: or ((p_assignment_type = 'EMPLOYEE')
2764: -- should process all the overlaps records - deleting all existing overlaps
2765:
2766: begin
2767:
2768: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
2769: (p_api_version => 1.0,
2770: p_return_status => l_return_status,
2771: p_msg_count => l_msg_count,
2772: p_msg_data => l_msg_data,
4312: l_api_version CONSTANT NUMBER := 1.0;
4313:
4314: cursor c_Overlap is
4315: select 'Salary Overlaps'
4316: from PSB_POSITION_ASSIGNMENTS a,
4317: PSB_PAY_ELEMENTS b
4318: where ((((p_effective_end_date is not null)
4319: and ((a.effective_start_date <= p_effective_end_date)
4320: and (a.effective_end_date is null))
4327: and ( (nvl(a.worksheet_id, FND_API.G_MISS_NUM) = nvl(p_worksheet_id, FND_API.G_MISS_NUM)) OR
4328: (p_worksheet_id is not null and worksheet_id is null
4329: and not exists
4330: (select 1 from
4331: psb_position_assignments c ,psb_pay_elements pe2
4332: where c.position_id = a.position_id
4333: and c.pay_element_id = pe2.pay_element_id
4334: and pe2.salary_flag = 'Y'
4335: and c.worksheet_id = p_worksheet_id
4688: FROM dual
4689: WHERE exists
4690: (SELECT 1
4691: FROM psb_attribute_values patv,
4692: psb_position_assignments pass,
4693: psb_attributes pat
4694: WHERE patv.attribute_value_id = pass.attribute_value_id
4695: AND (pass.worksheet_id is NULL OR pass.worksheet_id = p_worksheet_id)
4696: AND pass.attribute_id = pat.attribute_id
4701:
4702: CURSOR c_salary IS
4703: SELECT pass.effective_start_date,pass.effective_end_date,pass.pay_basis
4704: FROM psb_pay_elements pe,
4705: psb_position_assignments pass
4706: WHERE pe.salary_flag = 'Y'
4707: AND pe.pay_element_id = pass.pay_element_id
4708: AND (pass.worksheet_id is NULL OR pass.worksheet_id = p_worksheet_id)
4709: AND (((pass.effective_start_date <= p_effective_end_date)
4720: FROM DUAL
4721: WHERE EXISTS
4722: (SELECT 1
4723: FROM psb_pay_elements pe,
4724: psb_position_assignments pass
4725: WHERE NVL(pass.pay_basis,'DUMMY') NOT IN ('ANNUAL', 'HOURLY', 'MONTHLY', 'PERIOD')
4726: AND pe.salary_flag = 'Y'
4727: AND pe.pay_element_id = pass.pay_element_id
4728: AND (pass.worksheet_id is NULL OR pass.worksheet_id = p_worksheet_id)
4754: FROM dual
4755: WHERE exists
4756: (SELECT 1
4757: FROM psb_attributes pat,
4758: psb_position_assignments pass
4759: WHERE pat.attribute_id = pass.attribute_id
4760: AND pat.system_attribute_type = 'DEFAULT_WEEKLY_HOURS'
4761: AND (pass.worksheet_id is NULL OR pass.worksheet_id = p_worksheet_id)
4762: AND pass.position_id = p_position_id);
4913: psb_pay_elements b,
4914: psb_element_pos_Set_groups c,
4915: psb_set_relations d,
4916: psb_budget_positions e,
4917: psb_position_assignments f
4918: WHERE
4919: a.position_set_group_id = c.position_set_group_id
4920: AND b.pay_element_id = c.pay_element_id
4921: AND b.data_extract_id = l_data_extract_id
5763: IF p_worksheet_id IS NULL THEN
5764:
5765: SELECT emp.employee_id
5766: INTO l_emp_id
5767: FROM psb_employees emp, psb_position_assignments pavb
5768: WHERE pavb.position_id = p_position_id
5769: AND pavb.assignment_type = 'EMPLOYEE'
5770: AND emp.data_extract_id = p_data_extract_id
5771: AND emp.employee_id = pavb.employee_id
5775:
5776: ELSE
5777: SELECT emp.employee_id
5778: INTO l_emp_id
5779: FROM psb_employees emp, psb_position_assignments pavb
5780: WHERE pavb.position_id = p_position_id
5781: AND pavb.assignment_type = 'EMPLOYEE'
5782: AND emp.data_extract_id = p_data_extract_id
5783: AND emp.employee_id = pavb.employee_id
5813: IF p_worksheet_id IS NULL THEN
5814:
5815: SELECT emp.employee_number
5816: INTO l_emp_number
5817: FROM psb_employees emp, psb_position_assignments pavb
5818: WHERE pavb.position_id = p_position_id
5819: AND pavb.assignment_type = 'EMPLOYEE'
5820: AND emp.data_extract_id = p_data_extract_id
5821: AND emp.employee_id = pavb.employee_id
5825:
5826: ELSE
5827: SELECT emp.employee_number
5828: INTO l_emp_number
5829: FROM psb_employees emp, psb_position_assignments pavb
5830: WHERE pavb.position_id = p_position_id
5831: AND pavb.assignment_type = 'EMPLOYEE'
5832: AND emp.data_extract_id = p_data_extract_id
5833: AND emp.employee_id = pavb.employee_id
5864: IF p_worksheet_id IS NULL THEN
5865:
5866: SELECT emp.full_name
5867: INTO l_emp_name
5868: FROM psb_employees emp, psb_position_assignments pavb
5869: WHERE pavb.position_id = p_position_id
5870: AND pavb.assignment_type = 'EMPLOYEE'
5871: AND emp.data_extract_id = p_data_extract_id
5872: AND emp.employee_id = pavb.employee_id
5876:
5877: ELSE
5878: SELECT emp.full_name
5879: INTO l_emp_name
5880: FROM psb_employees emp, psb_position_assignments pavb
5881: WHERE pavb.position_id = p_position_id
5882: AND pavb.assignment_type = 'EMPLOYEE'
5883: AND emp.data_extract_id = p_data_extract_id
5884: AND emp.employee_id = pavb.employee_id
5915:
5916: SELECT patv.attribute_value
5917: INTO l_job_name
5918: FROM psb_attribute_values patv,
5919: psb_position_assignments pava
5920: WHERE patv.attribute_value_id = pava.attribute_value_id
5921: AND pava.position_id = p_position_id
5922: AND patv.data_extract_id = p_data_extract_id
5923: AND rownum=1
5931:
5932: SELECT patv.attribute_value
5933: INTO l_job_name
5934: FROM psb_attribute_values patv,
5935: psb_position_assignments pava
5936: WHERE patv.attribute_value_id = pava.attribute_value_id
5937: AND pava.position_id = p_position_id
5938: AND patv.data_extract_id = p_data_extract_id
5939: AND rownum=1
6017:
6018:
6019: CURSOR l_get_pay_basis IS
6020: SELECT pay_basis
6021: FROM psb_position_assignments past
6022: WHERE past.assignment_type = 'ELEMENT'
6023: AND past.position_id = p_position_id
6024: AND past.pay_basis IS NOT NULL
6025: AND ROWNUM < 2;
6028: l_de_exists BOOLEAN := FALSE;
6029: l_element_id NUMBER;
6030:
6031: CURSOR l_exists IS SELECT assignment_type,pay_element_id
6032: FROM psb_position_assignments
6033: WHERE (((p_assignment_type = 'ELEMENT') AND (p_assignment_type = assignment_type))
6034: OR ((p_assignment_type = 'ATTRIBUTE') AND (attribute_id = p_attribute_id))
6035: OR ((p_assignment_type = 'EMPLOYEE') AND (employee_id = p_employee_id)))
6036: AND data_extract_id = p_data_extract_id
6078:
6079: -- following code processes overwrite default rules.
6080: IF p_modify_flag = 'Y' THEN
6081: -- bug 5002080 changed the set clause for modify_flag below
6082: UPDATE PSB_POSITION_ASSIGNMENTS
6083: SET attribute_value_id = DECODE(p_attribute_value_id, NULL, attribute_value_id, p_attribute_value_id),
6084: attribute_value = DECODE(p_attribute_value, NULL, attribute_value, p_attribute_value),
6085: pay_element_option_id = DECODE(p_pay_element_option_id, NULL, pay_element_option_id, p_pay_element_option_id),
6086: element_value_type = DECODE(p_element_value_type, NULL, element_value_type, p_element_value_type),
6112:
6113: IF (l_def_salary_flag = 'Y') THEN
6114:
6115: FOR l_assignment_rec IN (SELECT past.position_assignment_id
6116: FROM psb_position_assignments past ,
6117: psb_pay_elements ppay
6118: WHERE past.data_extract_id = p_data_extract_id
6119: AND ((worksheet_id IS NULL AND p_worksheet_id IS NULL)
6120: OR worksheet_id = p_worksheet_id)
6133: AND (NVL(past.effective_end_date, p_effective_start_date) >= p_effective_start_date)))
6134: )
6135: LOOP
6136:
6137: PSB_POSITION_ASSIGNMENTS_PVT.delete_row
6138: (p_api_version => 1.0,
6139: p_return_status => l_return_status,
6140: p_msg_count => l_msg_count,
6141: p_msg_data => l_msg_data,
6158: -- the first insert_row call create the worksheet specific record
6159: -- the second insert_row call create the extract specific record
6160: IF l_de_exists THEN
6161:
6162: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
6163: (p_api_version => 1.0,
6164: p_return_status => l_return_status,
6165: p_msg_count => l_msg_count,
6166: p_msg_data => l_msg_data,
6193: END IF;
6194:
6195: ELSE
6196:
6197: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
6198: (p_api_version => 1.0,
6199: p_return_status => l_return_status,
6200: p_msg_count => l_msg_count,
6201: p_msg_data => l_msg_data,
6234:
6235: l_matching_assmt := FALSE;
6236:
6237: FOR l_pos_assignment_rec IN( SELECT *
6238: FROM psb_position_assignments past
6239: WHERE past.data_extract_id = p_data_extract_id
6240: AND past.position_id = p_position_id
6241: AND ((worksheet_id IS NULL AND NOT EXISTS
6242: (SELECT 1 FROM psb_position_assignments ppa
6238: FROM psb_position_assignments past
6239: WHERE past.data_extract_id = p_data_extract_id
6240: AND past.position_id = p_position_id
6241: AND ((worksheet_id IS NULL AND NOT EXISTS
6242: (SELECT 1 FROM psb_position_assignments ppa
6243: WHERE ppa.worksheet_id = p_worksheet_id
6244: AND ppa.position_id = p_position_id AND
6245: (p_assignment_type = 'ATTRIBUTE' AND past.attribute_id = ppa.attribute_id) OR
6246: (p_assignment_type = 'ELEMENT' AND past.pay_element_id = ppa.pay_element_id)))
6288: IF l_matching_assmt <> TRUE THEN
6289:
6290: -- Bug 4545909. added the following IF clause
6291: IF l_de_exists THEN
6292: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
6293: (p_api_version => 1.0,
6294: p_return_status => l_return_status,
6295: p_msg_count => l_msg_count,
6296: p_msg_data => l_msg_data,
6318: -- p_modify_flag => p_modify_flag,
6319: p_modify_flag => 'Y', -- bug 5002080
6320: p_mode => p_mode);
6321: ELSE
6322: PSB_POSITION_ASSIGNMENTS_PVT.Insert_Row
6323: (p_api_version => 1.0,
6324: p_return_status => l_return_status,
6325: p_msg_count => l_msg_count,
6326: p_msg_data => l_msg_data,