2042: ,p_person_id in number
2043: ,p_date_start in date
2044: ,p_object_version_number in out nocopy number
2045: ,p_actual_termination_date in date
2046: ,p_last_standard_process_date in out nocopy date
2047: ,p_person_type_id in number default hr_api.g_number
2048: ,p_assignment_status_type_id in number default hr_api.g_number
2049: ,p_termination_reason in varchar2 default hr_api.g_varchar2
2050: ,p_supervisor_warning out nocopy boolean
2065: l_asg_future_changes_warning boolean := FALSE;
2066: l_entries_changed_warning varchar2(1) := 'N';
2067: l_event_warning boolean := FALSE;
2068: l_interview_warning boolean := FALSE;
2069: l_last_standard_process_date date;
2070: l_pdp_object_version_number number;
2071: l_recruiter_warning boolean := FALSE;
2072: l_review_warning boolean := FALSE;
2073: l_supervisor_warning boolean := FALSE;
2195: -- Initialise local variables
2196: --
2197: l_person_type_id := p_person_type_id;
2198: l_assignment_status_type_id := p_assignment_status_type_id;
2199: l_last_standard_process_date := trunc(p_last_standard_process_date);
2200: l_pdp_object_version_number := p_object_version_number;
2201: l_actual_termination_date := trunc(p_actual_termination_date);
2202: l_effective_date := trunc(p_effective_date);
2203: l_date_start := trunc(p_date_start);
2343: */
2344: --
2345: hr_utility.set_location(l_proc, 100);
2346: --
2347: -- Validate/derive the last standard process date.
2348: --
2349: --
2350: hr_utility.set_location(l_proc, 130);
2351: --
2348: --
2349: --
2350: hr_utility.set_location(l_proc, 130);
2351: --
2352: if l_last_standard_process_date is not null
2353: then
2354: --
2355: hr_utility.set_location(l_proc, 140);
2356: --
2353: then
2354: --
2355: hr_utility.set_location(l_proc, 140);
2356: --
2357: -- Check that the last standard process date is on or after the actual
2358: -- termination date.
2359: --
2360: if not l_last_standard_process_date >= l_actual_termination_date
2361: then
2356: --
2357: -- Check that the last standard process date is on or after the actual
2358: -- termination date.
2359: --
2360: if not l_last_standard_process_date >= l_actual_termination_date
2361: then
2362: --
2363: hr_utility.set_location(l_proc, 150);
2364: --
2368: else
2369: --
2370: hr_utility.set_location(l_proc, 160);
2371: --
2372: -- Last standard process date is null => derive it.
2373: --
2374: -- Find the max tpe end date of any payrolls that are assigned.
2375: --
2376: open csr_get_max_tpe_end_date;
2401: then
2402: --
2403: hr_utility.set_location(l_proc, 190);
2404: --
2405: -- A time period end date has been found, so set the last standard
2406: -- process date to that.
2407: --
2408: l_last_standard_process_date := l_max_tpe_end_date;
2409: else
2404: --
2405: -- A time period end date has been found, so set the last standard
2406: -- process date to that.
2407: --
2408: l_last_standard_process_date := l_max_tpe_end_date;
2409: else
2410: --
2411: hr_utility.set_location(l_proc, 200);
2412: --
2414: -- there was no time period for that payroll as of the actual
2415: -- termination date. It doesn't matter which as we will default
2416: -- the LSPD to the ATD.
2417: --
2418: l_last_standard_process_date := l_actual_termination_date;
2419: end if;
2420: end if;
2421: --
2422: hr_utility.set_location(l_proc, 240);
2454: );
2455:
2456: hr_utility.set_location(l_proc, 245);
2457: --
2458: -- Update actual termination date and last standard process date in
2459: -- periods of placement table.
2460:
2461: per_pdp_upd.upd
2462: (p_effective_date => p_actual_termination_date + 1
2463: ,p_object_version_number => l_pdp_object_version_number
2464: ,p_person_id => l_person_id
2465: ,p_date_start => l_date_start
2466: ,p_actual_termination_date => l_actual_termination_date
2467: ,p_last_standard_process_date => l_last_standard_process_date
2468: ,p_termination_reason => p_termination_reason);
2469:
2470: --
2471: if p_termination_reason = 'D' then
2531: hr_assignment_internal.actual_term_cwk_asg
2532: (p_assignment_id => csr_rec.assignment_id
2533: ,p_object_version_number => csr_rec.object_version_number
2534: ,p_actual_termination_date => l_actual_termination_date
2535: ,p_last_standard_process_date => l_last_standard_process_date
2536: ,p_assignment_status_type_id => l_assignment_status_type_id
2537: ,p_effective_start_date => l_effective_start_date
2538: ,p_effective_end_date => l_effective_end_date
2539: ,p_asg_future_changes_warning => l_cr_asg_future_changes_warn
2665: p_asg_future_changes_warning := l_asg_future_changes_warning;
2666: p_entries_changed_warning := l_entries_changed_warning;
2667: p_pay_proposal_warning := l_pay_proposal_warn;
2668: p_dod_warning := l_dod_warning;
2669: p_last_standard_process_date := l_last_standard_process_date;
2670: p_object_version_number := l_pdp_object_version_number;
2671: --
2672: --
2673: hr_utility.set_location(' Leaving:'||l_proc, 340);
2687: p_entries_changed_warning := l_entries_changed_warning;
2688: p_pay_proposal_warning := l_pay_proposal_warn;
2689: p_dod_warning := l_dod_warning;
2690: --
2691: -- p_object_version_number and p_last_standard_process_date
2692: -- should return their IN values, they still hold their IN values
2693: -- so do nothing here.
2694: --
2695: --
2701: --
2702: -- set in out parameters and set out parameters
2703: --
2704: p_object_version_number := l_pdp_object_version_number;
2705: p_last_standard_process_date := l_last_standard_process_date;
2706: p_supervisor_warning := null;
2707: p_event_warning := null;
2708: p_interview_warning := null;
2709: p_review_warning := null;
2750: l_cr_org_now_no_manager_warn boolean := FALSE;
2751: l_effective_end_date date;
2752: l_effective_start_date date;
2753: l_exists varchar2(1);
2754: l_last_standard_process_date date;
2755: l_legislation_code per_business_groups.legislation_code%TYPE;
2756: l_object_version_number number;
2757: l_person_id number;
2758: l_proc varchar2(72) := g_package ||
2761: --
2762: cursor csr_get_derived_details is
2763: select bus.legislation_code
2764: , pdp.actual_termination_date
2765: , pdp.last_standard_process_date
2766: , pdp.person_id
2767: , pdp.object_version_number
2768: from per_business_groups bus
2769: , per_periods_of_placement pdp
2825: open csr_get_derived_details;
2826: fetch csr_get_derived_details
2827: into l_legislation_code
2828: ,l_actual_termination_date
2829: ,l_last_standard_process_date
2830: ,l_person_id
2831: ,l_object_version_number;
2832: --
2833: if csr_get_derived_details%NOTFOUND
2874: -- Default the FPD to the LSPD
2875: --
2876: l_final_process_date := l_actual_termination_date;
2877: --
2878: -- Add one day to the last standard process date to get the
2879: -- validation date
2880: --
2881: -- Set the EX CWK effective date to the FPD + 1
2882: --
2889: then
2890: --
2891: -- Default the FPD to the LSPD
2892: --
2893: l_final_process_date := l_last_standard_process_date;
2894: --
2895: -- Add one day to the last standard process date to get the
2896: -- validation date
2897: --
2891: -- Default the FPD to the LSPD
2892: --
2893: l_final_process_date := l_last_standard_process_date;
2894: --
2895: -- Add one day to the last standard process date to get the
2896: -- validation date
2897: --
2898: -- Set the EX CWK effective date to the FPD + 1
2899: --
3102: payroll support for contingent workers is introduced. Setting them has
3103: no impact.
3104: */
3105: ,p_final_process_date in out nocopy date
3106: ,p_last_standard_process_date in out nocopy date
3107:
3108: ,p_termination_reason in varchar2 default hr_api.g_varchar2
3109: ,p_projected_termination_date in date default hr_api.g_date
3110: ,p_attribute_category in varchar2 default hr_api.g_varchar2
3226:
3227: hr_utility.set_location(l_proc, 15);
3228:
3229: /* For CWK Phase I we default the final process
3230: and last standard process date to the actual
3231: termination date so that assignments are immediately
3232: ended.
3233: For CWK Phase II, this defaulting will be removed
3234: so that the behaviour supports CWKs on payrolls. */
3234: so that the behaviour supports CWKs on payrolls. */
3235:
3236: -- l_final_process_date := p_final_process_date;
3237: l_final_process_date := p_actual_termination_date;
3238: p_last_standard_process_date := p_actual_termination_date;
3239:
3240: --
3241: -- Start of API User Hook for the before hook of terminate_placement
3242: --
3249: ,p_person_type_id => p_person_type_id
3250: ,p_assignment_status_type_id => p_assignment_status_type_id
3251: ,p_actual_termination_date => p_actual_termination_date
3252: ,p_final_process_date => l_final_process_date
3253: ,p_last_standard_process_date => p_last_standard_process_date
3254: ,p_termination_reason => p_termination_reason
3255: ,p_projected_termination_date => null
3256: ,p_attribute_category => p_attribute_category
3257: ,p_attribute1 => p_attribute1
3435: ,p_person_id => p_person_id
3436: ,p_date_start => p_date_start
3437: ,p_object_version_number => p_object_version_number
3438: ,p_actual_termination_date => p_actual_termination_date
3439: ,p_last_standard_process_date => p_last_standard_process_date
3440: ,p_person_type_id => p_person_type_id
3441: ,p_assignment_status_type_id => p_assignment_status_type_id
3442: ,p_termination_reason => p_termination_reason
3443: ,p_supervisor_warning => p_supervisor_warning
3529: ,p_person_type_id => p_person_type_id
3530: ,p_assignment_status_type_id => p_assignment_status_type_id
3531: ,p_actual_termination_date => p_actual_termination_date
3532: ,p_final_process_date => l_final_process_date
3533: ,p_last_standard_process_date => p_last_standard_process_date
3534: ,p_termination_reason => p_termination_reason
3535: ,p_projected_termination_date => null
3536: ,p_attribute_category => p_attribute_category
3537: ,p_attribute1 => p_attribute1
3661: ) is
3662:
3663: l_proc varchar2(80) := g_package||'reverse_terminate_placement';
3664: l_final_process_date DATE;
3665: l_last_standard_process_date DATE;
3666: l_per_system_status VARCHAR2(30);
3667: l_max_end_date DATE;
3668: l_effective_end_date DATE;
3669: l_action_chk VARCHAR2(1) := 'N';
3790: --
3791: hr_utility.set_location(l_proc,25);
3792: begin
3793: SELECT pdp.final_process_date
3794: , pdp.last_standard_process_date
3795: INTO l_final_process_date
3796: , l_last_standard_process_date
3797: FROM per_periods_of_placement pdp
3798: WHERE pdp.person_id = p_person_id
3792: begin
3793: SELECT pdp.final_process_date
3794: , pdp.last_standard_process_date
3795: INTO l_final_process_date
3796: , l_last_standard_process_date
3797: FROM per_periods_of_placement pdp
3798: WHERE pdp.person_id = p_person_id
3799: AND pdp.actual_termination_date = p_actual_termination_date;
3800: --
3833:
3834: --
3835: -- Check for future completed actions.
3836: --
3837: if l_last_standard_process_date is not null then
3838:
3839: if p_actual_termination_date is not null
3840: and l_last_standard_process_date > p_actual_termination_date then
3841: l_action_date := l_last_standard_process_date;
3836: --
3837: if l_last_standard_process_date is not null then
3838:
3839: if p_actual_termination_date is not null
3840: and l_last_standard_process_date > p_actual_termination_date then
3841: l_action_date := l_last_standard_process_date;
3842: else
3843: l_action_date := null;
3844: end if;
3837: if l_last_standard_process_date is not null then
3838:
3839: if p_actual_termination_date is not null
3840: and l_last_standard_process_date > p_actual_termination_date then
3841: l_action_date := l_last_standard_process_date;
3842: else
3843: l_action_date := null;
3844: end if;
3845:
3990: -- END WWBUG fix for 1390173
3991: --
3992: UPDATE per_periods_of_placement pdp
3993: SET pdp.actual_termination_date = null
3994: , pdp.last_standard_process_date = null
3995: , pdp.final_process_date = null
3996: , pdp.termination_reason = null
3997: , pdp.projected_termination_date = null
3998: WHERE pdp.person_id = p_person_id
4043: -- END WWBUG fix for 1390173
4044: --
4045: UPDATE per_periods_of_placement pdp
4046: SET pdp.actual_termination_date = null
4047: , pdp.last_standard_process_date = null
4048: , pdp.final_process_date = null
4049: , pdp.termination_reason = null
4050: , pdp.projected_termination_date = null
4051: WHERE pdp.person_id = p_person_id
4246: hrentmnt.maintain_entries_asg(c_asg_rec.assignment_id
4247: ,c_asg_rec.business_group_id
4248: ,'CNCL_TERM'
4249: ,p_actual_termination_date
4250: ,l_last_standard_process_date
4251: ,l_final_process_date
4252: ,'DELETE_NEXT_CHANGE'
4253: ,null
4254: ,null);