286: and data_extract_id = p_data_extract_id;
287:
288: BEGIN
289:
290: if ((nvl(PSB_WS_POS1.g_data_extract_id, FND_API.G_MISS_NUM) <> p_data_extract_id) or
291: (nvl(PSB_WS_POS1.g_business_group_id, FND_API.G_MISS_NUM) <> p_business_group_id)) then
292: begin
293:
294: PSB_WS_POS1.Cache_Elements
287:
288: BEGIN
289:
290: if ((nvl(PSB_WS_POS1.g_data_extract_id, FND_API.G_MISS_NUM) <> p_data_extract_id) or
291: (nvl(PSB_WS_POS1.g_business_group_id, FND_API.G_MISS_NUM) <> p_business_group_id)) then
292: begin
293:
294: PSB_WS_POS1.Cache_Elements
295: (p_return_status => l_return_status,
296: p_data_extract_id => p_data_extract_id,
297: p_business_group_id => p_business_group_id,
298: p_worksheet_id => p_worksheet_id);
299:
300: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
301: raise FND_API.G_EXC_ERROR;
302: end if;
303:
304: end;
297: p_business_group_id => p_business_group_id,
298: p_worksheet_id => p_worksheet_id);
299:
300: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
301: raise FND_API.G_EXC_ERROR;
302: end if;
303:
304: end;
305: end if;
303:
304: end;
305: end if;
306:
307: if nvl(PSB_WS_POS1.g_attr_busgrp_id, FND_API.G_MISS_NUM) <> p_business_group_id then
308: begin
309:
310: PSB_WS_POS1.Cache_Named_Attributes
311: (p_return_status => l_return_status,
310: PSB_WS_POS1.Cache_Named_Attributes
311: (p_return_status => l_return_status,
312: p_business_group_id => p_business_group_id);
313:
314: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
315: raise FND_API.G_EXC_ERROR;
316: end if;
317:
318: end;
311: (p_return_status => l_return_status,
312: p_business_group_id => p_business_group_id);
313:
314: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
315: raise FND_API.G_EXC_ERROR;
316: end if;
317:
318: end;
319: end if;
317:
318: end;
319: end if;
320:
321: if FND_API.to_Boolean(p_apply_element_parameters) then
322: begin
323:
324: PSB_WS_POS3.Apply_Element_Parameters
325: (p_api_version => 1.0,
332: p_budget_calendar_id => p_budget_calendar_id,
333: p_parameter_set_id => p_parameter_set_id,
334: p_return_status => l_return_status);
335:
336: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
337: raise FND_API.G_EXC_ERROR;
338: end if;
339:
340: end;
333: p_parameter_set_id => p_parameter_set_id,
334: p_return_status => l_return_status);
335:
336: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
337: raise FND_API.G_EXC_ERROR;
338: end if;
339:
340: end;
341: end if;
341: end if;
342:
343: commit work;
344:
345: if FND_API.to_Boolean(p_apply_position_parameters) then
346: begin
347:
348: PSB_WS_POS3.Apply_Position_Parameters
349: (p_api_version => 1.0,
356: p_budget_calendar_id => p_budget_calendar_id,
357: p_parameter_set_id => p_parameter_set_id,
358: p_return_status => l_return_status);
359:
360: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
361: raise FND_API.G_EXC_ERROR;
362: end if;
363:
364: end;
357: p_parameter_set_id => p_parameter_set_id,
358: p_return_status => l_return_status);
359:
360: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
361: raise FND_API.G_EXC_ERROR;
362: end if;
363:
364: end;
365: end if;
380: p_position_name => c_Positions_Rec.name,
381: p_start_date => PSB_WS_ACCT1.g_startdate_cy,
382: p_end_date => PSB_WS_ACCT1.g_end_est_date);
383:
384: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
385: raise FND_API.G_EXC_ERROR;
386: end if;
387:
388: PSB_WS_POS1.Create_Position_Lines
381: p_start_date => PSB_WS_ACCT1.g_startdate_cy,
382: p_end_date => PSB_WS_ACCT1.g_end_est_date);
383:
384: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
385: raise FND_API.G_EXC_ERROR;
386: end if;
387:
388: PSB_WS_POS1.Create_Position_Lines
389: (p_api_version => 1.0,
392: p_worksheet_id => p_worksheet_id,
393: p_position_id => c_Positions_Rec.position_id,
394: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
395:
396: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
397: raise FND_API.G_EXC_ERROR;
398: end if;
399:
400: G_POS_START_DATE := c_Positions_Rec.effective_start_date; -- Bug 5065066
393: p_position_id => c_Positions_Rec.position_id,
394: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
395:
396: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
397: raise FND_API.G_EXC_ERROR;
398: end if;
399:
400: G_POS_START_DATE := c_Positions_Rec.effective_start_date; -- Bug 5065066
401:
403: (p_api_version => 1.0,
404: p_return_status => l_return_status,
405: p_worksheet_id => p_worksheet_id,
406: p_position_line_id => l_position_line_id,
407: p_recalculate_flag => FND_API.G_TRUE,
408: p_root_budget_group_id => p_root_budget_group_id,
409: p_global_worksheet_id => p_global_worksheet_id,
410: p_assign_worksheet_id => p_global_worksheet_id,
411: p_worksheet_numyrs => p_worksheet_numyrs,
424: p_position_name => c_Positions_Rec.name,
425: p_position_start_date => c_Positions_Rec.effective_start_date,
426: p_position_end_date => c_Positions_Rec.effective_end_date);
427:
428: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
429: raise FND_API.G_EXC_ERROR;
430: end if;
431:
432: l_num_positions := l_num_positions + 1;
425: p_position_start_date => c_Positions_Rec.effective_start_date,
426: p_position_end_date => c_Positions_Rec.effective_end_date);
427:
428: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
429: raise FND_API.G_EXC_ERROR;
430: end if;
431:
432: l_num_positions := l_num_positions + 1;
433:
440:
441:
442: -- Initialize API return status to success
443:
444: p_return_status := FND_API.G_RET_STS_SUCCESS;
445:
446:
447: EXCEPTION
448:
445:
446:
447: EXCEPTION
448:
449: when FND_API.G_EXC_ERROR then
450: p_return_status := FND_API.G_RET_STS_ERROR;
451:
452: when FND_API.G_EXC_UNEXPECTED_ERROR then
453: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
446:
447: EXCEPTION
448:
449: when FND_API.G_EXC_ERROR then
450: p_return_status := FND_API.G_RET_STS_ERROR;
451:
452: when FND_API.G_EXC_UNEXPECTED_ERROR then
453: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
454:
448:
449: when FND_API.G_EXC_ERROR then
450: p_return_status := FND_API.G_RET_STS_ERROR;
451:
452: when FND_API.G_EXC_UNEXPECTED_ERROR then
453: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
454:
455: when OTHERS then
456: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
449: when FND_API.G_EXC_ERROR then
450: p_return_status := FND_API.G_RET_STS_ERROR;
451:
452: when FND_API.G_EXC_UNEXPECTED_ERROR then
453: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
454:
455: when OTHERS then
456: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
457: if FND_MSG_PUB.Check_Msg_Level
452: when FND_API.G_EXC_UNEXPECTED_ERROR then
453: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
454:
455: when OTHERS then
456: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
457: if FND_MSG_PUB.Check_Msg_Level
458: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
459: then
460: FND_MSG_PUB.Add_Exc_Msg
467: /* ----------------------------------------------------------------------- */
468:
469: PROCEDURE Calculate_Position_Cost
470: ( p_api_version IN NUMBER,
471: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_NONE,
472: p_return_status OUT NOCOPY VARCHAR2,
473: p_worksheet_id IN NUMBER,
474: p_position_line_id IN NUMBER,
475: p_recalculate_flag IN VARCHAR2 := FND_API.G_TRUE,
471: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_NONE,
472: p_return_status OUT NOCOPY VARCHAR2,
473: p_worksheet_id IN NUMBER,
474: p_position_line_id IN NUMBER,
475: p_recalculate_flag IN VARCHAR2 := FND_API.G_TRUE,
476: p_root_budget_group_id IN NUMBER,
477: p_global_worksheet_id IN NUMBER,
478: p_assign_worksheet_id IN NUMBER,
479: p_worksheet_numyrs IN NUMBER,
658: and a.currency_code = l_func_currency
659: and exists
660: (select 1
661: from PSB_POSITION_ASSIGNMENTS c
662: where nvl(c.pay_element_option_id, FND_API.G_MISS_NUM) = nvl(a.pay_element_option_id, FND_API.G_MISS_NUM)
663: and (c.worksheet_id is null or c.worksheet_id = l_assign_worksheet_id)
664: and c.currency_code = l_func_currency
665: and (((c.effective_start_date <= l_end_date)
666: and (c.effective_end_date is null))
711: BEGIN
712:
713: -- Standard call to check for call compatibility
714:
715: if not FND_API.Compatible_API_Call (l_api_version,
716: p_api_version,
717: l_api_name,
718: G_PKG_NAME)
719: then
716: p_api_version,
717: l_api_name,
718: G_PKG_NAME)
719: then
720: raise FND_API.G_EXC_UNEXPECTED_ERROR;
721: end if;
722:
723: if ((nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
724: (nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
719: then
720: raise FND_API.G_EXC_UNEXPECTED_ERROR;
721: end if;
722:
723: if ((nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
724: (nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
725: (nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
720: raise FND_API.G_EXC_UNEXPECTED_ERROR;
721: end if;
722:
723: if ((nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
724: (nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
725: (nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
728: (nvl(p_current_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
721: end if;
722:
723: if ((nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
724: (nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
725: (nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
728: (nvl(p_current_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
729: (nvl(p_data_extract_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
722:
723: if ((nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
724: (nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
725: (nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
728: (nvl(p_current_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
729: (nvl(p_data_extract_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
730: (nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
723: if ((nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
724: (nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
725: (nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
728: (nvl(p_current_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
729: (nvl(p_data_extract_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
730: (nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
731: begin
724: (nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
725: (nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
728: (nvl(p_current_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
729: (nvl(p_data_extract_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
730: (nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
731: begin
732:
725: (nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
728: (nvl(p_current_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
729: (nvl(p_data_extract_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
730: (nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
731: begin
732:
733: for c_WS_Rec in c_WS loop
726: (nvl(p_rounding_factor, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
727: (nvl(p_stage_set_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
728: (nvl(p_current_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
729: (nvl(p_data_extract_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
730: (nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
731: begin
732:
733: for c_WS_Rec in c_WS loop
734: l_global_worksheet_id := c_WS_Rec.global_worksheet_id;
744:
745: end;
746: end if;
747:
748: if nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
749: l_global_worksheet_id := p_global_worksheet_id;
750: end if;
751:
752: if nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
748: if nvl(p_global_worksheet_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
749: l_global_worksheet_id := p_global_worksheet_id;
750: end if;
751:
752: if nvl(p_assign_worksheet_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
753: l_assign_worksheet_id := p_assign_worksheet_id;
754: end if;
755:
756: /* Bug No 1920021 Start */
764: g_fte_profile_option := nvl(fnd_profile.value('PSB_USE_FTE_ALLOCATION'),'N');
765: END IF;
766: /*For Bug No : 2811698 End*/
767:
768: if nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
769: l_ws_num_years := p_worksheet_numyrs;
770: end if;
771:
772: if nvl(p_rounding_factor, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
768: if nvl(p_worksheet_numyrs, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
769: l_ws_num_years := p_worksheet_numyrs;
770: end if;
771:
772: if nvl(p_rounding_factor, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
773: l_rounding_factor := p_rounding_factor;
774: end if;
775:
776: if nvl(p_stage_set_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
772: if nvl(p_rounding_factor, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
773: l_rounding_factor := p_rounding_factor;
774: end if;
775:
776: if nvl(p_stage_set_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
777: l_stage_set_id := p_stage_set_id;
778: end if;
779:
780: if nvl(p_current_stage_seq, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
776: if nvl(p_stage_set_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
777: l_stage_set_id := p_stage_set_id;
778: end if;
779:
780: if nvl(p_current_stage_seq, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
781: l_current_stage_seq := p_current_stage_seq;
782: end if;
783:
784: if nvl(p_data_extract_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
780: if nvl(p_current_stage_seq, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
781: l_current_stage_seq := p_current_stage_seq;
782: end if;
783:
784: if nvl(p_data_extract_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
785: l_data_extract_id := p_data_extract_id;
786: end if;
787:
788: if nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
784: if nvl(p_data_extract_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
785: l_data_extract_id := p_data_extract_id;
786: end if;
787:
788: if nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
789: l_budget_calendar_id := p_budget_calendar_id;
790: end if;
791:
792: if nvl(p_service_package_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM then
788: if nvl(p_budget_calendar_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
789: l_budget_calendar_id := p_budget_calendar_id;
790: end if;
791:
792: if nvl(p_service_package_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM then
793: begin
794:
795: for c_sp_rec in c_sp loop
796: l_service_package_id := c_sp_rec.service_package_id;
800: else
801: l_service_package_id := p_service_package_id;
802: end if;
803:
804: if nvl(p_start_stage_seq, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM then
805: l_start_stage_seq := l_current_stage_seq;
806: else
807: l_start_stage_seq := p_start_stage_seq;
808: end if;
806: else
807: l_start_stage_seq := p_start_stage_seq;
808: end if;
809:
810: if ((nvl(p_root_budget_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
811: (nvl(p_business_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
812: (nvl(p_func_currency, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
813: (nvl(p_flex_code, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
814: begin
807: l_start_stage_seq := p_start_stage_seq;
808: end if;
809:
810: if ((nvl(p_root_budget_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
811: (nvl(p_business_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
812: (nvl(p_func_currency, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
813: (nvl(p_flex_code, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
814: begin
815:
808: end if;
809:
810: if ((nvl(p_root_budget_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
811: (nvl(p_business_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
812: (nvl(p_func_currency, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
813: (nvl(p_flex_code, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
814: begin
815:
816: for c_BG_Rec in c_BG loop
809:
810: if ((nvl(p_root_budget_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
811: (nvl(p_business_group_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
812: (nvl(p_func_currency, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
813: (nvl(p_flex_code, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM)) then
814: begin
815:
816: for c_BG_Rec in c_BG loop
817: l_root_budget_group_id := c_BG_Rec.root_budget_group_id;
822:
823: end;
824: end if;
825:
826: if nvl(p_root_budget_group_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
827: l_root_budget_group_id := p_root_budget_group_id;
828: end if;
829:
830: if nvl(p_business_group_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
826: if nvl(p_root_budget_group_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
827: l_root_budget_group_id := p_root_budget_group_id;
828: end if;
829:
830: if nvl(p_business_group_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
831: l_business_group_id := p_business_group_id;
832: end if;
833:
834: if nvl(p_func_currency, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR then
830: if nvl(p_business_group_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
831: l_business_group_id := p_business_group_id;
832: end if;
833:
834: if nvl(p_func_currency, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR then
835: l_func_currency := p_func_currency;
836: end if;
837:
838: if nvl(p_flex_code, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
834: if nvl(p_func_currency, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR then
835: l_func_currency := p_func_currency;
836: end if;
837:
838: if nvl(p_flex_code, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
839: l_flex_code := p_flex_code;
840: end if;
841:
842: if ((nvl(p_position_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
838: if nvl(p_flex_code, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
839: l_flex_code := p_flex_code;
840: end if;
841:
842: if ((nvl(p_position_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
843: (nvl(p_position_name, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
844: (nvl(p_position_start_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE) or
845: (nvl(p_position_end_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE)) then
846: begin
839: l_flex_code := p_flex_code;
840: end if;
841:
842: if ((nvl(p_position_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
843: (nvl(p_position_name, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
844: (nvl(p_position_start_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE) or
845: (nvl(p_position_end_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE)) then
846: begin
847:
840: end if;
841:
842: if ((nvl(p_position_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
843: (nvl(p_position_name, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
844: (nvl(p_position_start_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE) or
845: (nvl(p_position_end_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE)) then
846: begin
847:
848: for c_Positions_Rec in c_Positions loop
841:
842: if ((nvl(p_position_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM) or
843: (nvl(p_position_name, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) or
844: (nvl(p_position_start_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE) or
845: (nvl(p_position_end_date, FND_API.G_MISS_DATE) = FND_API.G_MISS_DATE)) then
846: begin
847:
848: for c_Positions_Rec in c_Positions loop
849: l_position_id := c_Positions_Rec.position_id;
854:
855: end;
856: end if;
857:
858: if nvl(p_position_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
859: l_position_id := p_position_id;
860: end if;
861:
862: if nvl(p_position_name, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR then
858: if nvl(p_position_id, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM then
859: l_position_id := p_position_id;
860: end if;
861:
862: if nvl(p_position_name, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR then
863: l_position_name := p_position_name;
864: end if;
865:
866: if nvl(p_position_start_date, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE then
862: if nvl(p_position_name, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR then
863: l_position_name := p_position_name;
864: end if;
865:
866: if nvl(p_position_start_date, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE then
867: l_position_start_date := p_position_start_date;
868: end if;
869:
870: if nvl(p_position_end_date, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE then
866: if nvl(p_position_start_date, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE then
867: l_position_start_date := p_position_start_date;
868: end if;
869:
870: if nvl(p_position_end_date, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE then
871: l_position_end_date := p_position_end_date;
872: end if;
873:
874: if l_budget_calendar_id <> nvl(PSB_WS_ACCT1.g_budget_calendar_id, FND_API.G_MISS_NUM) then
870: if nvl(p_position_end_date, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE then
871: l_position_end_date := p_position_end_date;
872: end if;
873:
874: if l_budget_calendar_id <> nvl(PSB_WS_ACCT1.g_budget_calendar_id, FND_API.G_MISS_NUM) then
875: begin
876:
877: PSB_WS_ACCT1.Cache_Budget_Calendar
878: (p_return_status => l_return_status,
877: PSB_WS_ACCT1.Cache_Budget_Calendar
878: (p_return_status => l_return_status,
879: p_budget_calendar_id => l_budget_calendar_id);
880:
881: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
882: raise FND_API.G_EXC_ERROR;
883: end if;
884:
885: end;
878: (p_return_status => l_return_status,
879: p_budget_calendar_id => l_budget_calendar_id);
880:
881: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
882: raise FND_API.G_EXC_ERROR;
883: end if;
884:
885: end;
886: end if;
887:
888: l_start_date := greatest(PSB_WS_ACCT1.g_startdate_cy, l_position_start_date);
889: l_end_date := least(PSB_WS_ACCT1.g_end_est_date, nvl(l_position_end_date, PSB_WS_ACCT1.g_end_est_date));
890:
891: if FND_API.to_Boolean(p_recalculate_flag) then
892: begin
893:
894: PSB_WS_POS1.g_salary_budget_group_id := null;
895:
903: p_position_name => l_position_name,
904: p_start_date => l_start_date,
905: p_end_date => l_end_date);
906:
907: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
908: raise FND_API.G_EXC_ERROR;
909: end if;
910:
911: PSB_WS_POS1.Create_Position_Lines
904: p_start_date => l_start_date,
905: p_end_date => l_end_date);
906:
907: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
908: raise FND_API.G_EXC_ERROR;
909: end if;
910:
911: PSB_WS_POS1.Create_Position_Lines
912: (p_api_version => 1.0,
915: p_worksheet_id => p_worksheet_id,
916: p_position_id => l_position_id,
917: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
918:
919: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
920: raise FND_API.G_EXC_ERROR;
921: end if;
922:
923: end;
916: p_position_id => l_position_id,
917: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
918:
919: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
920: raise FND_API.G_EXC_ERROR;
921: end if;
922:
923: end;
924: end if;
968: end loop;
969:
970: g_num_poswkh_assignments := 0;
971:
972: if nvl(PSB_WS_POS1.g_attr_busgrp_id, FND_API.G_MISS_NUM) <> l_business_group_id then
973: begin
974:
975: PSB_WS_POS1.Cache_Named_Attributes
976: (p_return_status => l_return_status,
975: PSB_WS_POS1.Cache_Named_Attributes
976: (p_return_status => l_return_status,
977: p_business_group_id => l_business_group_id);
978:
979: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
980: raise FND_API.G_EXC_ERROR;
981: end if;
982:
983: end;
976: (p_return_status => l_return_status,
977: p_business_group_id => l_business_group_id);
978:
979: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
980: raise FND_API.G_EXC_ERROR;
981: end if;
982:
983: end;
984: end if;
988: p_worksheet_id => l_assign_worksheet_id,
989: p_data_extract_id => l_data_extract_id,
990: p_position_id => l_position_id);
991:
992: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
993: raise FND_API.G_EXC_ERROR;
994: end if;
995:
996: if ((nvl(PSB_WS_POS1.g_data_extract_id, FND_API.G_MISS_NUM) <> l_data_extract_id) or
989: p_data_extract_id => l_data_extract_id,
990: p_position_id => l_position_id);
991:
992: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
993: raise FND_API.G_EXC_ERROR;
994: end if;
995:
996: if ((nvl(PSB_WS_POS1.g_data_extract_id, FND_API.G_MISS_NUM) <> l_data_extract_id) or
997: (nvl(PSB_WS_POS1.g_business_group_id, FND_API.G_MISS_NUM) <> l_business_group_id)) then
992: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
993: raise FND_API.G_EXC_ERROR;
994: end if;
995:
996: if ((nvl(PSB_WS_POS1.g_data_extract_id, FND_API.G_MISS_NUM) <> l_data_extract_id) or
997: (nvl(PSB_WS_POS1.g_business_group_id, FND_API.G_MISS_NUM) <> l_business_group_id)) then
998: begin
999:
1000: PSB_WS_POS1.Cache_Elements
993: raise FND_API.G_EXC_ERROR;
994: end if;
995:
996: if ((nvl(PSB_WS_POS1.g_data_extract_id, FND_API.G_MISS_NUM) <> l_data_extract_id) or
997: (nvl(PSB_WS_POS1.g_business_group_id, FND_API.G_MISS_NUM) <> l_business_group_id)) then
998: begin
999:
1000: PSB_WS_POS1.Cache_Elements
1001: (p_return_status => l_return_status,
1002: p_data_extract_id => l_data_extract_id,
1003: p_business_group_id => l_business_group_id,
1004: p_worksheet_id => p_worksheet_id);
1005:
1006: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1007: raise FND_API.G_EXC_ERROR;
1008: end if;
1009:
1010: end;
1003: p_business_group_id => l_business_group_id,
1004: p_worksheet_id => p_worksheet_id);
1005:
1006: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1007: raise FND_API.G_EXC_ERROR;
1008: end if;
1009:
1010: end;
1011: end if;
1124: p_position_id => l_position_id,
1125: p_data_extract_id => l_data_extract_id,
1126: p_business_group_id => l_business_group_id);
1127:
1128: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1129: raise FND_API.G_EXC_ERROR;
1130: end if;
1131: end if;
1132: /*For Bug No : 2811698 End*/
1125: p_data_extract_id => l_data_extract_id,
1126: p_business_group_id => l_business_group_id);
1127:
1128: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1129: raise FND_API.G_EXC_ERROR;
1130: end if;
1131: end if;
1132: /*For Bug No : 2811698 End*/
1133:
1150: p_budget_year_id => p_budget_year_id,
1151: p_year_start_date => PSB_WS_ACCT1.g_budget_years(l_year_index).start_date,
1152: p_year_end_date => PSB_WS_ACCT1.g_budget_years(l_year_index).end_date);
1153:
1154: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1155: raise FND_API.G_EXC_ERROR;
1156: end if;
1157:
1158: end;
1151: p_year_start_date => PSB_WS_ACCT1.g_budget_years(l_year_index).start_date,
1152: p_year_end_date => PSB_WS_ACCT1.g_budget_years(l_year_index).end_date);
1153:
1154: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1155: raise FND_API.G_EXC_ERROR;
1156: end if;
1157:
1158: end;
1159: end if;
1177: p_budget_year_id => PSB_WS_ACCT1.g_budget_years(l_year_index).budget_year_id,
1178: p_year_start_date => PSB_WS_ACCT1.g_budget_years(l_year_index).start_date,
1179: p_year_end_date => PSB_WS_ACCT1.g_budget_years(l_year_index).end_date);
1180:
1181: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1182: raise FND_API.G_EXC_ERROR;
1183: end if;
1184:
1185: end;
1178: p_year_start_date => PSB_WS_ACCT1.g_budget_years(l_year_index).start_date,
1179: p_year_end_date => PSB_WS_ACCT1.g_budget_years(l_year_index).end_date);
1180:
1181: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1182: raise FND_API.G_EXC_ERROR;
1183: end if;
1184:
1185: end;
1186: end if;
1213: p_budget_year_id => p_budget_year_id,
1214: p_start_date => l_start_date,
1215: p_end_date => l_end_date);
1216:
1217: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1218: raise FND_API.G_EXC_ERROR;
1219: end if;
1220:
1221: end;
1214: p_start_date => l_start_date,
1215: p_end_date => l_end_date);
1216:
1217: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1218: raise FND_API.G_EXC_ERROR;
1219: end if;
1220:
1221: end;
1222: end if;
1246: p_budget_year_id => PSB_WS_ACCT1.g_budget_years(l_year_index).budget_year_id,
1247: p_start_date => l_start_date,
1248: p_end_date => l_end_date);
1249:
1250: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1251: raise FND_API.G_EXC_ERROR;
1252: end if;
1253:
1254: end;
1247: p_start_date => l_start_date,
1248: p_end_date => l_end_date);
1249:
1250: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1251: raise FND_API.G_EXC_ERROR;
1252: end if;
1253:
1254: end;
1255: end if;
1310: p_current_stage_seq => l_current_stage_seq,
1311: p_budget_year_id => p_budget_year_id,
1312: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
1313:
1314: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1315: raise FND_API.G_EXC_ERROR;
1316: end if;
1317:
1318: l_num_proposed_years := l_num_proposed_years + 1;
1311: p_budget_year_id => p_budget_year_id,
1312: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
1313:
1314: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1315: raise FND_API.G_EXC_ERROR;
1316: end if;
1317:
1318: l_num_proposed_years := l_num_proposed_years + 1;
1319:
1358: p_current_stage_seq => l_current_stage_seq,
1359: p_budget_year_id => PSB_WS_ACCT1.g_budget_years(l_year_index).budget_year_id,
1360: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
1361:
1362: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1363: raise FND_API.G_EXC_ERROR;
1364: end if;
1365:
1366: l_num_proposed_years := l_num_proposed_years + 1;
1359: p_budget_year_id => PSB_WS_ACCT1.g_budget_years(l_year_index).budget_year_id,
1360: p_budget_group_id => PSB_WS_POS1.g_salary_budget_group_id);
1361:
1362: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1363: raise FND_API.G_EXC_ERROR;
1364: end if;
1365:
1366: l_num_proposed_years := l_num_proposed_years + 1;
1367:
1380:
1381:
1382: -- Initialize API return status to success
1383:
1384: p_return_status := FND_API.G_RET_STS_SUCCESS;
1385:
1386:
1387: EXCEPTION
1388:
1385:
1386:
1387: EXCEPTION
1388:
1389: when FND_API.G_EXC_ERROR then
1390: p_return_status := FND_API.G_RET_STS_ERROR;
1391: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
1392: p_data => l_msg_data);
1393:
1386:
1387: EXCEPTION
1388:
1389: when FND_API.G_EXC_ERROR then
1390: p_return_status := FND_API.G_RET_STS_ERROR;
1391: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
1392: p_data => l_msg_data);
1393:
1394:
1391: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
1392: p_data => l_msg_data);
1393:
1394:
1395: when FND_API.G_EXC_UNEXPECTED_ERROR then
1396: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1397: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
1398: p_data => l_msg_data);
1399:
1392: p_data => l_msg_data);
1393:
1394:
1395: when FND_API.G_EXC_UNEXPECTED_ERROR then
1396: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1397: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
1398: p_data => l_msg_data);
1399:
1400: when OTHERS then
1397: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
1398: p_data => l_msg_data);
1399:
1400: when OTHERS then
1401: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1402:
1403: if FND_MSG_PUB.Check_Msg_Level
1404: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1405: then
1492: l_ytd_element_cost NUMBER;
1493:
1494: l_last_period_index NUMBER;
1495:
1496: l_salary_defined VARCHAR2(1) := FND_API.G_FALSE;
1497: l_salary_element_value NUMBER;
1498: l_max_element_value NUMBER;
1499:
1500: -- Bug#3140849: To stores maximum element value per FTE.
1514: l_msg_data VARCHAR2(2000);
1515: l_msg_count NUMBER;
1516:
1517: -- for bug 2622404
1518: l_nonelm_calc_flag VARCHAR2(1) := fnd_api.g_false;
1519:
1520: /* Bug 5065066 Start */
1521: l_year_start_date DATE;
1522: l_period_ctr NUMBER;
1546:
1547: l_pay_element_id := PSB_WS_POS1.g_elements(l_element_index).pay_element_id;
1548: l_element_name := PSB_WS_POS1.g_elements(l_element_index).element_name;
1549: l_processing_type :=PSB_WS_POS1.g_elements(l_element_index).processing_type;
1550: l_element_assigned := FND_API.G_FALSE;
1551: l_nonrec_calculated := FND_API.G_FALSE;
1552:
1553: for l_assign_index in 1..g_num_poselem_assignments loop
1554:
1547: l_pay_element_id := PSB_WS_POS1.g_elements(l_element_index).pay_element_id;
1548: l_element_name := PSB_WS_POS1.g_elements(l_element_index).element_name;
1549: l_processing_type :=PSB_WS_POS1.g_elements(l_element_index).processing_type;
1550: l_element_assigned := FND_API.G_FALSE;
1551: l_nonrec_calculated := FND_API.G_FALSE;
1552:
1553: for l_assign_index in 1..g_num_poselem_assignments loop
1554:
1555: if ((g_poselem_assignments(l_assign_index).pay_element_id = l_pay_element_id) and
1559: (g_poselem_assignments(l_assign_index).end_date between p_year_start_date and p_year_end_date) or
1560: ((g_poselem_assignments(l_assign_index).start_date < p_year_start_date) and
1561: (g_poselem_assignments(l_assign_index).end_date > p_year_end_date)))) and
1562: (g_poselem_assignments(l_assign_index).use_in_calc)) then
1563: l_element_assigned := FND_API.G_TRUE;
1564: exit;
1565: end if;
1566:
1567: end loop;
1565: end if;
1566:
1567: end loop;
1568:
1569: if FND_API.to_Boolean(l_element_assigned) then
1570: begin
1571:
1572: /* Bug 5065066 Start */
1573: FOR l_year_index in 1..PSB_WS_ACCT1.g_num_budget_years
1618: PSB_WS_POS1.g_pc_costs(PSB_WS_POS1.g_num_pc_costs).budget_year_id := p_budget_year_id;
1619:
1620: l_ytd_element_cost := 0;
1621:
1622: l_calculate_from_salary := FND_API.G_FALSE;
1623: l_assign_period := FND_API.G_FALSE;
1624:
1625: for l_period_index in 1..PSB_WS_ACCT1.g_num_budget_periods loop
1626:
1619:
1620: l_ytd_element_cost := 0;
1621:
1622: l_calculate_from_salary := FND_API.G_FALSE;
1623: l_assign_period := FND_API.G_FALSE;
1624:
1625: for l_period_index in 1..PSB_WS_ACCT1.g_num_budget_periods loop
1626:
1627: if PSB_WS_ACCT1.g_budget_periods(l_period_index).budget_year_id = p_budget_year_id then
1636: for l_calcperiod_index in 1..PSB_WS_ACCT1.g_num_calc_periods loop
1637:
1638: if ((PSB_WS_ACCT1.g_calculation_periods(l_calcperiod_index).budget_period_id = l_budget_period_id) and
1639: ((l_processing_type = 'R') or
1640: ((l_processing_type = 'N') and (not FND_API.to_Boolean(l_nonrec_calculated))))) then
1641: begin
1642:
1643: l_ws_assignment := FND_API.G_FALSE;
1644: l_calc_element_assigned := FND_API.G_FALSE;
1639: ((l_processing_type = 'R') or
1640: ((l_processing_type = 'N') and (not FND_API.to_Boolean(l_nonrec_calculated))))) then
1641: begin
1642:
1643: l_ws_assignment := FND_API.G_FALSE;
1644: l_calc_element_assigned := FND_API.G_FALSE;
1645:
1646: -- for bug 2622404
1647: l_nonelm_calc_flag := fnd_api.g_false;
1640: ((l_processing_type = 'N') and (not FND_API.to_Boolean(l_nonrec_calculated))))) then
1641: begin
1642:
1643: l_ws_assignment := FND_API.G_FALSE;
1644: l_calc_element_assigned := FND_API.G_FALSE;
1645:
1646: -- for bug 2622404
1647: l_nonelm_calc_flag := fnd_api.g_false;
1648:
1643: l_ws_assignment := FND_API.G_FALSE;
1644: l_calc_element_assigned := FND_API.G_FALSE;
1645:
1646: -- for bug 2622404
1647: l_nonelm_calc_flag := fnd_api.g_false;
1648:
1649: l_calc_period_type := PSB_WS_ACCT1.g_calculation_periods(l_calcperiod_index).calc_period_type;
1650: l_calc_start_date := PSB_WS_ACCT1.g_calculation_periods(l_calcperiod_index).start_date;
1651: l_calc_end_date := PSB_WS_ACCT1.g_calculation_periods(l_calcperiod_index).end_date;
1672: ((g_poselem_assignments(l_assign_index).start_date < l_calc_start_date) and
1673: (g_poselem_assignments(l_assign_index).end_date > l_calc_end_date))))) then
1674: begin
1675:
1676: l_ws_assignment := FND_API.G_TRUE;
1677: l_calc_element_assigned := FND_API.G_TRUE;
1678:
1679: l_pay_basis := g_poselem_assignments(l_assign_index).pay_basis;
1680: l_pay_element_option_id := g_poselem_assignments(l_assign_index).pay_element_option_id;
1673: (g_poselem_assignments(l_assign_index).end_date > l_calc_end_date))))) then
1674: begin
1675:
1676: l_ws_assignment := FND_API.G_TRUE;
1677: l_calc_element_assigned := FND_API.G_TRUE;
1678:
1679: l_pay_basis := g_poselem_assignments(l_assign_index).pay_basis;
1680: l_pay_element_option_id := g_poselem_assignments(l_assign_index).pay_element_option_id;
1681: l_element_value_type := g_poselem_assignments(l_assign_index).element_value_type;
1681: l_element_value_type := g_poselem_assignments(l_assign_index).element_value_type;
1682: l_element_value := g_poselem_assignments(l_assign_index).element_value;
1683:
1684: if l_processing_type = 'N' then
1685: l_nonrec_calculated := FND_API.G_TRUE;
1686: end if;
1687:
1688: exit;
1689:
1691: end if;
1692:
1693: end loop;
1694:
1695: if not FND_API.to_Boolean(l_ws_assignment) then
1696: begin
1697:
1698: for l_assign_index in 1..g_num_poselem_assignments loop
1699:
1707: (g_poselem_assignments(l_assign_index).end_date > l_calc_end_date)))) and
1708: (g_poselem_assignments(l_assign_index).use_in_calc)) then
1709: begin
1710:
1711: l_calc_element_assigned := FND_API.G_TRUE;
1712:
1713: l_pay_basis := g_poselem_assignments(l_assign_index).pay_basis;
1714: l_pay_element_option_id := g_poselem_assignments(l_assign_index).pay_element_option_id;
1715: l_element_value_type := g_poselem_assignments(l_assign_index).element_value_type;
1715: l_element_value_type := g_poselem_assignments(l_assign_index).element_value_type;
1716: l_element_value := g_poselem_assignments(l_assign_index).element_value;
1717:
1718: if l_processing_type = 'N' then
1719: l_nonrec_calculated := FND_API.G_TRUE;
1720: end if;
1721:
1722: exit;
1723:
1728:
1729: end;
1730: end if;
1731:
1732: if FND_API.to_Boolean(l_calc_element_assigned) then
1733: begin
1734:
1735: -- for bug 2622404
1736: l_nonelm_calc_flag := fnd_api.g_true;
1732: if FND_API.to_Boolean(l_calc_element_assigned) then
1733: begin
1734:
1735: -- for bug 2622404
1736: l_nonelm_calc_flag := fnd_api.g_true;
1737:
1738: if l_element_value is null then
1739: begin
1740:
1740:
1741: for l_rate_index in 1..g_num_poselem_rates loop
1742:
1743: if ((g_poselem_rates(l_rate_index).pay_element_id = l_pay_element_id) and
1744: (nvl(g_poselem_rates(l_rate_index).pay_element_option_id, FND_API.G_MISS_NUM) =
1745: nvl(l_pay_element_option_id, FND_API.G_MISS_NUM)) and
1746: (((g_poselem_rates(l_rate_index).start_date <= l_calc_end_date) and
1747: (g_poselem_rates(l_rate_index).end_date is null)) or
1748: ((g_poselem_rates(l_rate_index).start_date between l_calc_start_date and l_calc_end_date) or
1741: for l_rate_index in 1..g_num_poselem_rates loop
1742:
1743: if ((g_poselem_rates(l_rate_index).pay_element_id = l_pay_element_id) and
1744: (nvl(g_poselem_rates(l_rate_index).pay_element_option_id, FND_API.G_MISS_NUM) =
1745: nvl(l_pay_element_option_id, FND_API.G_MISS_NUM)) and
1746: (((g_poselem_rates(l_rate_index).start_date <= l_calc_end_date) and
1747: (g_poselem_rates(l_rate_index).end_date is null)) or
1748: ((g_poselem_rates(l_rate_index).start_date between l_calc_start_date and l_calc_end_date) or
1749: (g_poselem_rates(l_rate_index).end_date between l_calc_start_date and l_calc_end_date) or
1843: message_token('ELEMENT_VALUE_TYPE', l_element_value_type);
1844: message_token('ELEMENT', PSB_WS_POS1.g_elements(l_element_index).element_name);
1845: message_token('POSITION', p_position_name);
1846: add_message('PSB', 'PSB_INVALID_ASSIGNMENT_TYPE');
1847: raise FND_API.G_EXC_ERROR;
1848: end if;
1849:
1850: /*For Bug No : 2811698 Start*/
1851: --changed the l_fte_profile values when null from g_default_fte to 0
1892: p_start_date => l_calc_start_date,
1893: p_end_date => l_calc_end_date,
1894: p_factor => l_factor);
1895:
1896: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1897: raise FND_API.G_EXC_ERROR;
1898: end if;
1899:
1900: /*For Bug No : 2811698 Start*/
1893: p_end_date => l_calc_end_date,
1894: p_factor => l_factor);
1895:
1896: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1897: raise FND_API.G_EXC_ERROR;
1898: end if;
1899:
1900: /*For Bug No : 2811698 Start*/
1901: if g_fte_profile_option = 'Y' then
1920: p_start_date => l_calc_start_date,
1921: p_end_date => l_calc_end_date,
1922: p_factor => l_factor);
1923:
1924: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1925: raise FND_API.G_EXC_ERROR;
1926: end if;
1927:
1928: if l_default_weekly_hours is null then
1921: p_end_date => l_calc_end_date,
1922: p_factor => l_factor);
1923:
1924: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1925: raise FND_API.G_EXC_ERROR;
1926: end if;
1927:
1928: if l_default_weekly_hours is null then
1929: message_token('ATTRIBUTE', 'DEFAULT_WEEKLY_HOURS');
1930: message_token('POSITION', p_position_name);
1931: message_token('START_DATE', l_calc_start_date);
1932: message_token('END_DATE', l_calc_end_date);
1933: add_message('PSB', 'PSB_INVALID_NAMED_ATTRIBUTE');
1934: raise FND_API.G_EXC_ERROR;
1935: end if;
1936:
1937: /*For Bug No : 2811698 Start*/
1938: if g_fte_profile_option = 'Y' then
1957: p_start_date => l_calc_start_date,
1958: p_end_date => l_calc_end_date,
1959: p_factor => l_factor);
1960:
1961: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1962: raise FND_API.G_EXC_ERROR;
1963: end if;
1964:
1965: /*For Bug No : 2811698 Start*/
1958: p_end_date => l_calc_end_date,
1959: p_factor => l_factor);
1960:
1961: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1962: raise FND_API.G_EXC_ERROR;
1963: end if;
1964:
1965: /*For Bug No : 2811698 Start*/
1966: if g_fte_profile_option = 'Y' then
1985: p_start_date => l_calc_start_date,
1986: p_end_date => l_calc_end_date,
1987: p_factor => l_factor);
1988:
1989: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1990: raise FND_API.G_EXC_ERROR;
1991: end if;
1992:
1993: /*For Bug No : 2811698 Start*/
1986: p_end_date => l_calc_end_date,
1987: p_factor => l_factor);
1988:
1989: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1990: raise FND_API.G_EXC_ERROR;
1991: end if;
1992:
1993: /*For Bug No : 2811698 Start*/
1994: if g_fte_profile_option = 'Y' then
2005: message_token('POSITION', p_position_name);
2006: message_token('START_DATE', l_calc_start_date);
2007: message_token('END_DATE', l_calc_end_date);
2008: add_message('PSB', 'PSB_INVALID_SALARY_BASIS');
2009: raise FND_API.G_EXC_ERROR;
2010: end if;
2011:
2012: end;
2013: end if;
2029: -- if l_element_value >= 1 then
2030: l_element_value := l_element_value / 100;
2031: -- end if;
2032:
2033: l_calculate_from_salary := FND_API.G_TRUE;
2034: exit;
2035:
2036: end;
2037: elsif l_element_value_type = 'A' then
2051: p_start_date => l_calc_start_date,
2052: p_end_date => l_calc_end_date,
2053: p_factor => l_factor);
2054:
2055: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
2056: raise FND_API.G_EXC_ERROR;
2057: end if;
2058:
2059: /*For Bug No : 2811698 Start*/
2052: p_end_date => l_calc_end_date,
2053: p_factor => l_factor);
2054:
2055: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
2056: raise FND_API.G_EXC_ERROR;
2057: end if;
2058:
2059: /*For Bug No : 2811698 Start*/
2060: if g_fte_profile_option = 'Y' then
2060: if g_fte_profile_option = 'Y' then
2061: if l_factor < 1 then
2062: l_ytd_element_cost := l_ytd_element_cost +
2063: l_element_value * l_fte_profile * l_factor;
2064: l_assign_period := FND_API.G_TRUE;
2065: else
2066: l_element_cost := l_element_cost +
2067: l_element_value * l_fte_profile * l_factor;
2068: end if;
2069: else
2070: if l_factor < 1 then
2071: l_ytd_element_cost := l_ytd_element_cost +
2072: l_element_value * nvl(l_fte, g_default_fte) * l_factor;
2073: l_assign_period := FND_API.G_TRUE;
2074: else
2075: l_element_cost := l_element_cost +
2076: l_element_value * nvl(l_fte, g_default_fte) * l_factor;
2077: end if;
2131: --
2132: -- Bug#3140849: End
2133: --
2134:
2135: if ((FND_API.to_Boolean(l_calculate_from_salary)) and
2136: (FND_API.to_Boolean(l_salary_defined)) and
2137: (l_ytd_element_cost <= nvl(l_max_element_value, l_ytd_element_cost))) then
2138: begin
2139:
2132: -- Bug#3140849: End
2133: --
2134:
2135: if ((FND_API.to_Boolean(l_calculate_from_salary)) and
2136: (FND_API.to_Boolean(l_salary_defined)) and
2137: (l_ytd_element_cost <= nvl(l_max_element_value, l_ytd_element_cost))) then
2138: begin
2139:
2140: for l_salary_index in 1..l_num_salary_indexes loop
2142: -- for bug 2622404
2143: -- added additional check of calculation flag. Repeated the same
2144: -- check for all the 60 periods defined.
2145:
2146: if l_long_index = 1 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2147: begin
2148:
2149: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period1_amount * l_element_value;
2150:
2162: end;
2163: end if;
2164:
2165: end;
2166: elsif l_long_index = 2 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2167: begin
2168:
2169: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period2_amount * l_element_value;
2170:
2182: end;
2183: end if;
2184:
2185: end;
2186: elsif l_long_index = 3 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2187: begin
2188:
2189: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period3_amount * l_element_value;
2190:
2202: end;
2203: end if;
2204:
2205: end;
2206: elsif l_long_index = 4 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2207: begin
2208:
2209: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period4_amount * l_element_value;
2210:
2222: end;
2223: end if;
2224:
2225: end;
2226: elsif l_long_index = 5 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2227: begin
2228:
2229: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period5_amount * l_element_value;
2230:
2242: end;
2243: end if;
2244:
2245: end;
2246: elsif l_long_index = 6 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2247: begin
2248:
2249: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period6_amount * l_element_value;
2250:
2262: end;
2263: end if;
2264:
2265: end;
2266: elsif l_long_index = 7 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2267: begin
2268:
2269: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period7_amount * l_element_value;
2270:
2282: end;
2283: end if;
2284:
2285: end;
2286: elsif l_long_index = 8 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2287: begin
2288:
2289: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period8_amount * l_element_value;
2290:
2302: end;
2303: end if;
2304:
2305: end;
2306: elsif l_long_index = 9 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2307: begin
2308:
2309: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period9_amount * l_element_value;
2310:
2322: end;
2323: end if;
2324:
2325: end;
2326: elsif l_long_index = 10 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2327: begin
2328:
2329: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period10_amount * l_element_value;
2330:
2342: end;
2343: end if;
2344:
2345: end;
2346: elsif l_long_index = 11 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2347: begin
2348:
2349: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period11_amount * l_element_value;
2350:
2362: end;
2363: end if;
2364:
2365: end;
2366: elsif l_long_index = 12 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2367: begin
2368:
2369: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period12_amount * l_element_value;
2370:
2382: end;
2383: end if;
2384:
2385: end;
2386: elsif l_long_index = 13 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2387: begin
2388:
2389: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period13_amount * l_element_value;
2390:
2402: end;
2403: end if;
2404:
2405: end;
2406: elsif l_long_index = 14 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2407: begin
2408:
2409: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period14_amount * l_element_value;
2410:
2422: end;
2423: end if;
2424:
2425: end;
2426: elsif l_long_index = 15 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2427: begin
2428:
2429: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period15_amount * l_element_value;
2430:
2442: end;
2443: end if;
2444:
2445: end;
2446: elsif l_long_index = 16 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2447: begin
2448:
2449: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period16_amount * l_element_value;
2450:
2462: end;
2463: end if;
2464:
2465: end;
2466: elsif l_long_index = 17 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2467: begin
2468:
2469: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period17_amount * l_element_value;
2470:
2482: end;
2483: end if;
2484:
2485: end;
2486: elsif l_long_index = 18 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2487: begin
2488:
2489: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period18_amount * l_element_value;
2490:
2502: end;
2503: end if;
2504:
2505: end;
2506: elsif l_long_index = 19 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2507: begin
2508:
2509: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period19_amount * l_element_value;
2510:
2522: end;
2523: end if;
2524:
2525: end;
2526: elsif l_long_index = 20 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2527: begin
2528:
2529: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period20_amount * l_element_value;
2530:
2542: end;
2543: end if;
2544:
2545: end;
2546: elsif l_long_index = 21 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2547: begin
2548:
2549: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period21_amount * l_element_value;
2550:
2562: end;
2563: end if;
2564:
2565: end;
2566: elsif l_long_index = 22 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2567: begin
2568:
2569: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period22_amount * l_element_value;
2570:
2582: end;
2583: end if;
2584:
2585: end;
2586: elsif l_long_index = 23 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2587: begin
2588:
2589: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period23_amount * l_element_value;
2590:
2602: end;
2603: end if;
2604:
2605: end;
2606: elsif l_long_index = 24 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2607: begin
2608:
2609: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period24_amount * l_element_value;
2610:
2622: end;
2623: end if;
2624:
2625: end;
2626: elsif l_long_index = 25 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2627: begin
2628:
2629: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period25_amount * l_element_value;
2630:
2642: end;
2643: end if;
2644:
2645: end;
2646: elsif l_long_index = 26 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2647: begin
2648:
2649: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period26_amount * l_element_value;
2650:
2662: end;
2663: end if;
2664:
2665: end;
2666: elsif l_long_index = 27 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2667: begin
2668:
2669: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period27_amount * l_element_value;
2670:
2682: end;
2683: end if;
2684:
2685: end;
2686: elsif l_long_index = 28 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2687: begin
2688:
2689: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period28_amount * l_element_value;
2690:
2702: end;
2703: end if;
2704:
2705: end;
2706: elsif l_long_index = 29 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2707: begin
2708:
2709: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period29_amount * l_element_value;
2710:
2722: end;
2723: end if;
2724:
2725: end;
2726: elsif l_long_index = 30 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2727: begin
2728:
2729: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period30_amount * l_element_value;
2730:
2742: end;
2743: end if;
2744:
2745: end;
2746: elsif l_long_index = 31 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2747: begin
2748:
2749: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period31_amount * l_element_value;
2750:
2762: end;
2763: end if;
2764:
2765: end;
2766: elsif l_long_index = 32 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2767: begin
2768:
2769: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period32_amount * l_element_value;
2770:
2782: end;
2783: end if;
2784:
2785: end;
2786: elsif l_long_index = 33 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2787: begin
2788:
2789: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period33_amount * l_element_value;
2790:
2802: end;
2803: end if;
2804:
2805: end;
2806: elsif l_long_index = 34 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2807: begin
2808:
2809: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period34_amount * l_element_value;
2810:
2822: end;
2823: end if;
2824:
2825: end;
2826: elsif l_long_index = 35 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2827: begin
2828:
2829: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period35_amount * l_element_value;
2830:
2842: end;
2843: end if;
2844:
2845: end;
2846: elsif l_long_index = 36 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2847: begin
2848:
2849: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period36_amount * l_element_value;
2850:
2862: end;
2863: end if;
2864:
2865: end;
2866: elsif l_long_index = 37 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2867: begin
2868:
2869: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period37_amount * l_element_value;
2870:
2882: end;
2883: end if;
2884:
2885: end;
2886: elsif l_long_index = 38 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2887: begin
2888:
2889: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period38_amount * l_element_value;
2890:
2902: end;
2903: end if;
2904:
2905: end;
2906: elsif l_long_index = 39 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2907: begin
2908:
2909: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period39_amount * l_element_value;
2910:
2922: end;
2923: end if;
2924:
2925: end;
2926: elsif l_long_index = 40 and (fnd_api.to_boolean(l_nonelm_calc_flag)) and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2927: begin
2928:
2929: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period40_amount * l_element_value;
2930:
2962: end;
2963: end if;
2964:
2965: end;
2966: elsif l_long_index = 42 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2967: begin
2968:
2969: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period42_amount * l_element_value;
2970:
2982: end;
2983: end if;
2984:
2985: end;
2986: elsif l_long_index = 43 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
2987: begin
2988:
2989: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period43_amount * l_element_value;
2990:
3002: end;
3003: end if;
3004:
3005: end;
3006: elsif l_long_index = 44 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3007: begin
3008:
3009: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period44_amount * l_element_value;
3010:
3022: end;
3023: end if;
3024:
3025: end;
3026: elsif l_long_index = 45 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3027: begin
3028:
3029: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period45_amount * l_element_value;
3030:
3042: end;
3043: end if;
3044:
3045: end;
3046: elsif l_long_index = 46 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3047: begin
3048:
3049: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period46_amount * l_element_value;
3050:
3062: end;
3063: end if;
3064:
3065: end;
3066: elsif l_long_index = 47 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3067: begin
3068:
3069: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period47_amount * l_element_value;
3070:
3082: end;
3083: end if;
3084:
3085: end;
3086: elsif l_long_index = 48 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3087: begin
3088:
3089: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period48_amount * l_element_value;
3090:
3102: end;
3103: end if;
3104:
3105: end;
3106: elsif l_long_index = 49 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3107: begin
3108:
3109: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period49_amount * l_element_value;
3110:
3122: end;
3123: end if;
3124:
3125: end;
3126: elsif l_long_index = 50 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3127: begin
3128:
3129: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period50_amount * l_element_value;
3130:
3142: end;
3143: end if;
3144:
3145: end;
3146: elsif l_long_index = 51 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3147: begin
3148:
3149: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period51_amount * l_element_value;
3150:
3162: end;
3163: end if;
3164:
3165: end;
3166: elsif l_long_index = 52 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3167: begin
3168:
3169: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period52_amount * l_element_value;
3170:
3182: end;
3183: end if;
3184:
3185: end;
3186: elsif l_long_index = 53 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3187: begin
3188:
3189: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period53_amount * l_element_value;
3190:
3202: end;
3203: end if;
3204:
3205: end;
3206: elsif l_long_index = 54 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3207: begin
3208:
3209: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period54_amount * l_element_value;
3210:
3222: end;
3223: end if;
3224:
3225: end;
3226: elsif l_long_index = 55 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3227: begin
3228:
3229: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period55_amount * l_element_value;
3230:
3242: end;
3243: end if;
3244:
3245: end;
3246: elsif l_long_index = 56 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3247: begin
3248:
3249: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period56_amount * l_element_value;
3250:
3262: end;
3263: end if;
3264:
3265: end;
3266: elsif l_long_index = 57 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3267: begin
3268:
3269: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period57_amount * l_element_value;
3270:
3282: end;
3283: end if;
3284:
3285: end;
3286: elsif l_long_index = 58 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3287: begin
3288:
3289: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period58_amount * l_element_value;
3290:
3302: end;
3303: end if;
3304:
3305: end;
3306: elsif l_long_index = 59 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3307: begin
3308:
3309: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period59_amount * l_element_value;
3310:
3322: end;
3323: end if;
3324:
3325: end;
3326: elsif l_long_index = 60 and (fnd_api.to_boolean(l_nonelm_calc_flag)) then
3327: begin
3328:
3329: l_element_cost := PSB_WS_POS1.g_pc_costs(l_salary_indexes(l_salary_index)).period60_amount * l_element_value;
3330:
3350: end;
3351: else
3352: begin
3353:
3354: if not FND_API.to_Boolean(l_assign_period) then
3355: begin
3356:
3357: l_ytd_element_cost := l_ytd_element_cost + l_element_cost;
3358:
3492: end if;
3493:
3494: end loop; /* Budget Periods */
3495:
3496: if FND_API.to_Boolean(l_assign_period) then
3497: begin
3498:
3499: if l_ytd_element_cost > nvl(l_max_element_value, l_ytd_element_cost) then
3500: l_ytd_element_cost := l_max_element_value;
3637: end if;
3638: /* For Bug No : 2115867 End */
3639:
3640: if PSB_WS_POS1.g_elements(l_element_index).salary_flag = 'Y' then
3641: l_salary_defined := FND_API.G_TRUE;
3642: l_num_salary_indexes := l_num_salary_indexes + 1;
3643:
3644: -- Bug#3140849: Enforce maximum element value by FTE.
3645: -- Fixing the following statement. We need to use value computed in
3664:
3665:
3666: -- Initialize API return status to success
3667:
3668: p_return_status := FND_API.G_RET_STS_SUCCESS;
3669:
3670:
3671: EXCEPTION
3672:
3669:
3670:
3671: EXCEPTION
3672:
3673: when FND_API.G_EXC_ERROR then
3674: p_return_status := FND_API.G_RET_STS_ERROR;
3675: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3676: p_data => l_msg_data);
3677:
3670:
3671: EXCEPTION
3672:
3673: when FND_API.G_EXC_ERROR then
3674: p_return_status := FND_API.G_RET_STS_ERROR;
3675: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3676: p_data => l_msg_data);
3677:
3678:
3675: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3676: p_data => l_msg_data);
3677:
3678:
3679: when FND_API.G_EXC_UNEXPECTED_ERROR then
3680: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3681: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3682: p_data => l_msg_data);
3683:
3676: p_data => l_msg_data);
3677:
3678:
3679: when FND_API.G_EXC_UNEXPECTED_ERROR then
3680: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3681: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3682: p_data => l_msg_data);
3683:
3684: when OTHERS then
3681: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3682: p_data => l_msg_data);
3683:
3684: when OTHERS then
3685: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3686:
3687: if FND_MSG_PUB.Check_Msg_Level
3688: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3689: then
3790: g_num_semiannual_profile := 0;
3791:
3792: for c_Monthly_Profile_Rec in c_Monthly_Profile loop
3793:
3794: if c_Monthly_Profile_Rec.entity_id <> nvl(l_entity_id, FND_API.G_MISS_NUM) then
3795: begin
3796:
3797: for l_init_index in 1..PSB_WS_ACCT1.g_max_num_amounts loop
3798: g_monthly_profile(l_init_index) := null;
3813: l_entity_id := null;
3814:
3815: for c_Quarterly_Profile_Rec in c_Quarterly_Profile loop
3816:
3817: if c_Quarterly_Profile_Rec.entity_id <> nvl(l_entity_id, FND_API.G_MISS_NUM) then
3818: begin
3819:
3820: for l_init_index in 1..PSB_WS_ACCT1.g_max_num_amounts loop
3821: g_quarterly_profile(l_init_index) := null;
3836: l_entity_id := null;
3837:
3838: for c_Semiannual_Profile_Rec in c_Semiannual_Profile loop
3839:
3840: if c_Semiannual_Profile_Rec.entity_id <> nvl(l_entity_id, FND_API.G_MISS_NUM) then
3841: begin
3842:
3843: for l_init_index in 1..PSB_WS_ACCT1.g_max_num_amounts loop
3844: g_semiannual_profile(l_init_index) := null;
3858:
3859:
3860: -- Initialize API return status to success
3861:
3862: p_return_status := FND_API.G_RET_STS_SUCCESS;
3863:
3864:
3865: EXCEPTION
3866:
3863:
3864:
3865: EXCEPTION
3866:
3867: when FND_API.G_EXC_ERROR then
3868: p_return_status := FND_API.G_RET_STS_ERROR;
3869:
3870: when FND_API.G_EXC_UNEXPECTED_ERROR then
3871: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3864:
3865: EXCEPTION
3866:
3867: when FND_API.G_EXC_ERROR then
3868: p_return_status := FND_API.G_RET_STS_ERROR;
3869:
3870: when FND_API.G_EXC_UNEXPECTED_ERROR then
3871: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3872:
3866:
3867: when FND_API.G_EXC_ERROR then
3868: p_return_status := FND_API.G_RET_STS_ERROR;
3869:
3870: when FND_API.G_EXC_UNEXPECTED_ERROR then
3871: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3872:
3873: when OTHERS then
3874: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3867: when FND_API.G_EXC_ERROR then
3868: p_return_status := FND_API.G_RET_STS_ERROR;
3869:
3870: when FND_API.G_EXC_UNEXPECTED_ERROR then
3871: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3872:
3873: when OTHERS then
3874: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3875: if FND_MSG_PUB.Check_Msg_Level
3870: when FND_API.G_EXC_UNEXPECTED_ERROR then
3871: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3872:
3873: when OTHERS then
3874: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3875: if FND_MSG_PUB.Check_Msg_Level
3876: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3877: then
3878: FND_MSG_PUB.Add_Exc_Msg
3925: p_budget_year_id => p_budget_year_id,
3926: p_start_date => p_start_date,
3927: p_end_date => p_end_date);
3928:
3929: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
3930: raise FND_API.G_EXC_ERROR;
3931: end if;
3932:
3933: end;
3926: p_start_date => p_start_date,
3927: p_end_date => p_end_date);
3928:
3929: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
3930: raise FND_API.G_EXC_ERROR;
3931: end if;
3932:
3933: end;
3934: else
3949: p_budget_year_id => p_budget_year_id,
3950: p_start_date => p_start_date,
3951: p_end_date => p_end_date);
3952:
3953: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
3954: raise FND_API.G_EXC_ERROR;
3955: end if;
3956:
3957: end;
3950: p_start_date => p_start_date,
3951: p_end_date => p_end_date);
3952:
3953: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
3954: raise FND_API.G_EXC_ERROR;
3955: end if;
3956:
3957: end;
3958: else
3969: p_budget_year_id => p_budget_year_id,
3970: p_start_date => p_start_date,
3971: p_end_date => p_end_date);
3972:
3973: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
3974: raise FND_API.G_EXC_ERROR;
3975: end if;
3976:
3977: end;
3970: p_start_date => p_start_date,
3971: p_end_date => p_end_date);
3972:
3973: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
3974: raise FND_API.G_EXC_ERROR;
3975: end if;
3976:
3977: end;
3978: end if;
3984:
3985:
3986: -- Initialize API return status to success
3987:
3988: p_return_status := FND_API.G_RET_STS_SUCCESS;
3989:
3990:
3991: EXCEPTION
3992:
3990:
3991: EXCEPTION
3992:
3993:
3994: when FND_API.G_EXC_ERROR then
3995: p_return_status := FND_API.G_RET_STS_ERROR;
3996: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3997: p_data => l_msg_data);
3998:
3991: EXCEPTION
3992:
3993:
3994: when FND_API.G_EXC_ERROR then
3995: p_return_status := FND_API.G_RET_STS_ERROR;
3996: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3997: p_data => l_msg_data);
3998:
3999:
3996: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
3997: p_data => l_msg_data);
3998:
3999:
4000: when FND_API.G_EXC_UNEXPECTED_ERROR then
4001: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4002: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4003: p_data => l_msg_data);
4004:
3997: p_data => l_msg_data);
3998:
3999:
4000: when FND_API.G_EXC_UNEXPECTED_ERROR then
4001: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4002: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4003: p_data => l_msg_data);
4004:
4005: when OTHERS then
4002: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4003: p_data => l_msg_data);
4004:
4005: when OTHERS then
4006: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4007:
4008: if FND_MSG_PUB.Check_Msg_Level
4009: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4010: then
4038: l_saldist_index BINARY_INTEGER;
4039:
4040: l_percent NUMBER;
4041:
4042: l_elem_found VARCHAR2(1) := FND_API.G_FALSE;
4043:
4044: l_new_start_date DATE;
4045: l_new_end_date DATE;
4046: l_update_dist BOOLEAN;
4060:
4061: if ((PSB_WS_POS1.g_pc_costs(l_calc_index).budget_year_id = p_budget_year_id) and
4062: (PSB_WS_POS1.g_pc_costs(l_calc_index).pay_element_id = p_pay_element_id)) then
4063: l_salary_index := l_calc_index;
4064: l_elem_found := FND_API.G_TRUE;
4065: exit;
4066: end if;
4067:
4068: end loop;
4066: end if;
4067:
4068: end loop;
4069:
4070: if FND_API.to_Boolean(l_elem_found) then
4071: begin
4072:
4073: /* Bug No 2278216 Start */
4074: PSB_WS_POS1.Initialize_Period_Dist;
4174: p_element_index => l_salary_index,
4175: p_dist_index => l_dist_index,
4176: p_percent => PSB_WS_POS1.g_periods(l_period_index).percent);
4177:
4178: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4179: raise FND_API.G_EXC_ERROR;
4180: end if;
4181:
4182: end if;
4175: p_dist_index => l_dist_index,
4176: p_percent => PSB_WS_POS1.g_periods(l_period_index).percent);
4177:
4178: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4179: raise FND_API.G_EXC_ERROR;
4180: end if;
4181:
4182: end if;
4183:
4201: end if;
4202:
4203: -- Initialize API return status to success
4204:
4205: p_return_status := FND_API.G_RET_STS_SUCCESS;
4206:
4207: EXCEPTION
4208:
4209: when FND_API.G_EXC_ERROR then
4205: p_return_status := FND_API.G_RET_STS_SUCCESS;
4206:
4207: EXCEPTION
4208:
4209: when FND_API.G_EXC_ERROR then
4210: p_return_status := FND_API.G_RET_STS_ERROR;
4211: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4212: p_data => l_msg_data);
4213:
4206:
4207: EXCEPTION
4208:
4209: when FND_API.G_EXC_ERROR then
4210: p_return_status := FND_API.G_RET_STS_ERROR;
4211: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4212: p_data => l_msg_data);
4213:
4214:
4211: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4212: p_data => l_msg_data);
4213:
4214:
4215: when FND_API.G_EXC_UNEXPECTED_ERROR then
4216: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4217: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4218: p_data => l_msg_data);
4219:
4212: p_data => l_msg_data);
4213:
4214:
4215: when FND_API.G_EXC_UNEXPECTED_ERROR then
4216: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4217: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4218: p_data => l_msg_data);
4219:
4220: when OTHERS then
4217: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4218: p_data => l_msg_data);
4219:
4220: when OTHERS then
4221: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4222:
4223: if FND_MSG_PUB.Check_Msg_Level
4224: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4225: then
4253: l_calc_index BINARY_INTEGER;
4254: l_element_index BINARY_INTEGER;
4255:
4256: l_percent NUMBER;
4257: l_elem_found VARCHAR2(1) := FND_API.G_FALSE;
4258:
4259: l_start_date DATE;
4260: l_end_date DATE;
4261:
4299:
4300: if ((PSB_WS_POS1.g_pc_costs(l_calc_index).budget_year_id = p_budget_year_id) and
4301: (PSB_WS_POS1.g_pc_costs(l_calc_index).pay_element_id = p_pay_element_id)) then
4302: l_element_index := l_calc_index;
4303: l_elem_found := FND_API.G_TRUE;
4304: exit;
4305: end if;
4306:
4307: end loop;
4305: end if;
4306:
4307: end loop;
4308:
4309: if FND_API.to_Boolean(l_elem_found) then
4310: begin
4311:
4312: /* Bug No 2278216 Start */
4313: PSB_WS_POS1.Initialize_Period_Dist;
4408: p_element_index => l_element_index,
4409: p_dist_index => l_dist_index,
4410: p_percent => PSB_WS_POS1.g_periods(l_period_index).percent);
4411:
4412: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4413: raise FND_API.G_EXC_ERROR;
4414: end if;
4415:
4416: end if;
4409: p_dist_index => l_dist_index,
4410: p_percent => PSB_WS_POS1.g_periods(l_period_index).percent);
4411:
4412: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4413: raise FND_API.G_EXC_ERROR;
4414: end if;
4415:
4416: end if;
4417:
4435: end if;
4436:
4437: -- Initialize API return status to success
4438:
4439: p_return_status := FND_API.G_RET_STS_SUCCESS;
4440:
4441:
4442: EXCEPTION
4443:
4440:
4441:
4442: EXCEPTION
4443:
4444: when FND_API.G_EXC_ERROR then
4445: p_return_status := FND_API.G_RET_STS_ERROR;
4446: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4447: p_data => l_msg_data);
4448:
4441:
4442: EXCEPTION
4443:
4444: when FND_API.G_EXC_ERROR then
4445: p_return_status := FND_API.G_RET_STS_ERROR;
4446: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4447: p_data => l_msg_data);
4448:
4449:
4446: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4447: p_data => l_msg_data);
4448:
4449:
4450: when FND_API.G_EXC_UNEXPECTED_ERROR then
4451: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4452: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4453: p_data => l_msg_data);
4454:
4447: p_data => l_msg_data);
4448:
4449:
4450: when FND_API.G_EXC_UNEXPECTED_ERROR then
4451: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4452: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4453: p_data => l_msg_data);
4454:
4455: when OTHERS then
4452: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
4453: p_data => l_msg_data);
4454:
4455: when OTHERS then
4456: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4457:
4458: if FND_MSG_PUB.Check_Msg_Level
4459: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4460: then
4667: l_end_date := PSB_WS_ACCT1.g_budget_periods(l_period_index).end_date;
4668: l_budget_period_type := PSB_WS_ACCT1.g_budget_periods(l_period_index).budget_period_type;
4669: l_long_sequence_no := PSB_WS_ACCT1.g_budget_periods(l_period_index).long_sequence_no;
4670:
4671: l_fte_assigned := FND_API.G_FALSE;
4672:
4673: /*For Bug No : 2811698 Start*/
4674: --Following condition has been changed to execute when there is no FTE profile option set
4675: --or when there is FTE profile option not set and corresponding profile is not available
4689: begin
4690:
4691: l_period_fte(l_long_sequence_no) := g_posfte_assignments(l_assign_index).fte;
4692: l_annual_fte := l_annual_fte + g_posfte_assignments(l_assign_index).fte;
4693: l_fte_assigned := FND_API.G_TRUE;
4694: exit;
4695:
4696: end;
4697: end if;
4699: end loop;
4700: end if;
4701: /*For Bug No : 2811698 End*/
4702:
4703: if not FND_API.to_Boolean(l_fte_assigned) then
4704: begin
4705:
4706: l_position_exists := FND_API.G_FALSE;
4707:
4702:
4703: if not FND_API.to_Boolean(l_fte_assigned) then
4704: begin
4705:
4706: l_position_exists := FND_API.G_FALSE;
4707:
4708: if (((p_position_start_date <= l_start_date) and
4709: (p_position_end_date is null)) or
4710: ((p_position_start_date between l_start_date and l_end_date) or
4711: (p_position_end_date between l_start_date and l_end_date) or
4712: ((p_position_start_date < l_start_date) and
4713: (p_position_end_date > l_end_date)))) then
4714:
4715: l_position_exists := FND_API.G_TRUE;
4716: end if;
4717:
4718: if FND_API.to_Boolean(l_position_exists) then
4719: begin
4714:
4715: l_position_exists := FND_API.G_TRUE;
4716: end if;
4717:
4718: if FND_API.to_Boolean(l_position_exists) then
4719: begin
4720:
4721: if l_budget_period_type = 'M' then
4722: begin
4798: p_current_stage_seq => p_current_stage_seq,
4799: p_period_fte => l_period_fte,
4800: p_budget_group_id => p_budget_group_id);
4801:
4802: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4803: raise FND_API.G_EXC_ERROR;
4804: end if;
4805:
4806: end;
4799: p_period_fte => l_period_fte,
4800: p_budget_group_id => p_budget_group_id);
4801:
4802: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4803: raise FND_API.G_EXC_ERROR;
4804: end if;
4805:
4806: end;
4807: else
4823: PSB_WS_POS1.Create_FTE_Lines
4824: (p_api_version => 1.0,
4825: p_return_status => l_return_status,
4826: p_fte_line_id => l_fte_line_id,
4827: p_check_spfl_exists => FND_API.G_FALSE,
4828: p_worksheet_id => p_worksheet_id,
4829: p_flex_mapping_set_id => p_flex_mapping_set_id,
4830: p_position_line_id => p_position_line_id,
4831: p_budget_year_id => p_budget_year_id,
4836: p_start_stage_seq => p_start_stage_seq,
4837: p_current_stage_seq => p_current_stage_seq,
4838: p_period_fte => l_period_fte);
4839:
4840: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4841: raise FND_API.G_EXC_ERROR;
4842: end if;
4843:
4844: g_num_pf_recalc_fte := g_num_pf_recalc_fte + 1;
4837: p_current_stage_seq => p_current_stage_seq,
4838: p_period_fte => l_period_fte);
4839:
4840: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
4841: raise FND_API.G_EXC_ERROR;
4842: end if;
4843:
4844: g_num_pf_recalc_fte := g_num_pf_recalc_fte + 1;
4845: g_pf_recalc_fte(g_num_pf_recalc_fte).fte_line_id := l_fte_line_id;
4952: l_period_amount(59) := PSB_WS_POS1.g_pd_costs(l_dist_index).period59_amount;
4953: l_period_amount(60) := PSB_WS_POS1.g_pd_costs(l_dist_index).period60_amount;
4954:
4955: if PSB_WS_POS1.g_pd_costs(l_dist_index).element_type = 'S' then
4956: l_sal_account_line := FND_API.G_TRUE;
4957: else
4958: l_sal_account_line := FND_API.G_FALSE;
4959: end if;
4960:
4954:
4955: if PSB_WS_POS1.g_pd_costs(l_dist_index).element_type = 'S' then
4956: l_sal_account_line := FND_API.G_TRUE;
4957: else
4958: l_sal_account_line := FND_API.G_FALSE;
4959: end if;
4960:
4961: -- For each recalculated distribution, match the recalculated distribution
4962: -- with the current distribution for the position
5002: p_period_amount => l_period_amount,
5003: p_current_stage_seq => p_current_stage_seq,
5004: p_budget_group_id => p_budget_group_id);
5005:
5006: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5007: raise FND_API.G_EXC_ERROR;
5008: end if;
5009:
5010: /* Bug No 1584464 Start */
5003: p_current_stage_seq => p_current_stage_seq,
5004: p_budget_group_id => p_budget_group_id);
5005:
5006: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5007: raise FND_API.G_EXC_ERROR;
5008: end if;
5009:
5010: /* Bug No 1584464 Start */
5011: ---- Create Note Id and Inserts a record in PSB_WS_ACCOUNT_LINE_NOTES table
5030: , p_cc_id => g_pd_recalc_costs(l_recalc_dist_index).ccid
5031: , p_concatenated_segments => NULL
5032: ) ;
5033:
5034: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5035: raise FND_API.G_EXC_ERROR;
5036: end if;
5037:
5038: ----
5031: , p_concatenated_segments => NULL
5032: ) ;
5033:
5034: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5035: raise FND_API.G_EXC_ERROR;
5036: end if;
5037:
5038: ----
5039: /* Bug No 1584464 End */
5055: p_account_line_id => l_account_line_id,
5056: p_worksheet_id => p_worksheet_id,
5057: p_flex_mapping_set_id => p_flex_mapping_set_id,
5058: p_map_accounts => TRUE,
5059: p_check_spal_exists => FND_API.G_FALSE,
5060: p_gl_cutoff_period => null,
5061: p_allocrule_set_id => null,
5062: p_budget_calendar_id => null,
5063: p_rounding_factor => p_rounding_factor,
5076: p_service_package_id => g_pf_recalc_fte(l_fte_index).service_package_id,
5077: p_start_stage_seq => p_start_stage_seq,
5078: p_current_stage_seq => p_current_stage_seq);
5079:
5080: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5081: raise FND_API.G_EXC_ERROR;
5082: end if;
5083:
5084: end;
5077: p_start_stage_seq => p_start_stage_seq,
5078: p_current_stage_seq => p_current_stage_seq);
5079:
5080: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5081: raise FND_API.G_EXC_ERROR;
5082: end if;
5083:
5084: end;
5085: end if;
5117: p_element_line_id => g_pc_recalc_costs(l_recalc_cost_index).element_line_id,
5118: p_current_stage_seq => p_current_stage_seq,
5119: p_element_cost => l_element_cost);
5120:
5121: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5122: raise FND_API.G_EXC_ERROR;
5123: end if;
5124:
5125: end;
5118: p_current_stage_seq => p_current_stage_seq,
5119: p_element_cost => l_element_cost);
5120:
5121: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5122: raise FND_API.G_EXC_ERROR;
5123: end if;
5124:
5125: end;
5126: end if;
5133: PSB_WS_POS1.Create_Element_Lines
5134: (p_api_version => 1.0,
5135: p_return_status => l_return_status,
5136: p_element_line_id => l_element_line_id,
5137: p_check_spel_exists => FND_API.G_FALSE,
5138: p_position_line_id => p_position_line_id,
5139: p_budget_year_id => p_budget_year_id,
5140: p_pay_element_id => PSB_WS_POS1.g_pc_costs(l_elemcost_index).pay_element_id,
5141: p_currency_code => p_func_currency,
5145: p_stage_set_id => p_stage_set_id,
5146: p_start_stage_seq => p_start_stage_seq,
5147: p_current_stage_seq => p_current_stage_seq);
5148:
5149: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5150: raise FND_API.G_EXC_ERROR;
5151: end if;
5152:
5153: end;
5146: p_start_stage_seq => p_start_stage_seq,
5147: p_current_stage_seq => p_current_stage_seq);
5148:
5149: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5150: raise FND_API.G_EXC_ERROR;
5151: end if;
5152:
5153: end;
5154: end if;
5185: p_stage_set_id => p_stage_set_id,
5186: p_current_stage_seq => p_current_stage_seq,
5187: p_budget_group_id => p_budget_group_id);
5188:
5189: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5190: raise FND_API.G_EXC_ERROR;
5191: end if;
5192:
5193: end loop;
5186: p_current_stage_seq => p_current_stage_seq,
5187: p_budget_group_id => p_budget_group_id);
5188:
5189: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5190: raise FND_API.G_EXC_ERROR;
5191: end if;
5192:
5193: end loop;
5194: */
5211: p_element_line_id => g_pc_recalc_costs(l_recalc_cost_index).element_line_id,
5212: p_current_stage_seq => p_current_stage_seq,
5213: p_element_cost => 0);
5214:
5215: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5216: raise FND_API.G_EXC_ERROR;
5217: end if;
5218:
5219: end;
5212: p_current_stage_seq => p_current_stage_seq,
5213: p_element_cost => 0);
5214:
5215: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5216: raise FND_API.G_EXC_ERROR;
5217: end if;
5218:
5219: end;
5220: end if;
5239: p_period_amount => l_period_amount,
5240: p_current_stage_seq => p_current_stage_seq,
5241: p_budget_group_id => p_budget_group_id);
5242:
5243: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5244: raise FND_API.G_EXC_ERROR;
5245: end if;
5246:
5247: end;
5240: p_current_stage_seq => p_current_stage_seq,
5241: p_budget_group_id => p_budget_group_id);
5242:
5243: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5244: raise FND_API.G_EXC_ERROR;
5245: end if;
5246:
5247: end;
5248: end if;
5264: p_stage_set_id => p_stage_set_id,
5265: p_current_stage_seq => p_current_stage_seq,
5266: p_budget_group_id => p_budget_group_id);
5267:
5268: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5269: raise FND_API.G_EXC_ERROR;
5270: end if;
5271:
5272: end loop;
5265: p_current_stage_seq => p_current_stage_seq,
5266: p_budget_group_id => p_budget_group_id);
5267:
5268: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
5269: raise FND_API.G_EXC_ERROR;
5270: end if;
5271:
5272: end loop;
5273:
5272: end loop;
5273:
5274: -- Initialize API return status to success
5275:
5276: p_return_status := FND_API.G_RET_STS_SUCCESS;
5277:
5278:
5279: EXCEPTION
5280:
5277:
5278:
5279: EXCEPTION
5280:
5281: when FND_API.G_EXC_ERROR then
5282: p_return_status := FND_API.G_RET_STS_ERROR;
5283: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
5284: p_data => l_msg_data);
5285:
5278:
5279: EXCEPTION
5280:
5281: when FND_API.G_EXC_ERROR then
5282: p_return_status := FND_API.G_RET_STS_ERROR;
5283: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
5284: p_data => l_msg_data);
5285:
5286:
5283: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
5284: p_data => l_msg_data);
5285:
5286:
5287: when FND_API.G_EXC_UNEXPECTED_ERROR then
5288: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5289: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
5290: p_data => l_msg_data);
5291:
5284: p_data => l_msg_data);
5285:
5286:
5287: when FND_API.G_EXC_UNEXPECTED_ERROR then
5288: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5289: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
5290: p_data => l_msg_data);
5291:
5292: when OTHERS then
5289: FND_MSG_PUB.Count_And_Get (p_count => l_msg_count,
5290: p_data => l_msg_data);
5291:
5292: when OTHERS then
5293: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5294:
5295: if FND_MSG_PUB.Check_Msg_Level
5296: (p_message_level => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5297: then