161: /* Changes for 9147438 start */
162: type fw_gross_type_table is table of varchar2(1) index by binary_integer;
163: t_fw_gross_type fw_gross_type_table;
164:
165: f_fw_date_tab_g pay_au_foreign_workers.tab_fw_dates;
166: j_fw_date_tab_g pay_au_foreign_workers.tab_fw_dates;
167: g_fw_date_tab pay_au_foreign_workers.tab_fw_dates;
168: g_fw_total_resc number;
169: g_fw_total_cdep number;
162: type fw_gross_type_table is table of varchar2(1) index by binary_integer;
163: t_fw_gross_type fw_gross_type_table;
164:
165: f_fw_date_tab_g pay_au_foreign_workers.tab_fw_dates;
166: j_fw_date_tab_g pay_au_foreign_workers.tab_fw_dates;
167: g_fw_date_tab pay_au_foreign_workers.tab_fw_dates;
168: g_fw_total_resc number;
169: g_fw_total_cdep number;
170: g_fw_total_workplace number;
163: t_fw_gross_type fw_gross_type_table;
164:
165: f_fw_date_tab_g pay_au_foreign_workers.tab_fw_dates;
166: j_fw_date_tab_g pay_au_foreign_workers.tab_fw_dates;
167: g_fw_date_tab pay_au_foreign_workers.tab_fw_dates;
168: g_fw_total_resc number;
169: g_fw_total_cdep number;
170: g_fw_total_workplace number;
171: g_balance_type_id pay_balance_types.balance_type_id%type;
168: g_fw_total_resc number;
169: g_fw_total_cdep number;
170: g_fw_total_workplace number;
171: g_balance_type_id pay_balance_types.balance_type_id%type;
172: p_fw_fbt_bal_type_tab pay_au_foreign_workers.tab_bal_type;
173: g_fw_fbt_balance number;
174: g_fw_reporting_amt number;
175: /* Changes for 9147438 end */
176:
662: l_fw_reporting_amt number;
663: /* Changes for 9147438 start */
664: l_fw_f_type varchar2(1);
665: l_fw_j_type varchar2(1);
666: f_fw_date_tab pay_au_foreign_workers.tab_fw_dates;
667: j_fw_date_tab pay_au_foreign_workers.tab_fw_dates;
668: l_fw_fbt_output_tab pay_balance_pkg.t_detailed_bal_out_tab;
669: /* Changes for 9147438 end */
670:
663: /* Changes for 9147438 start */
664: l_fw_f_type varchar2(1);
665: l_fw_j_type varchar2(1);
666: f_fw_date_tab pay_au_foreign_workers.tab_fw_dates;
667: j_fw_date_tab pay_au_foreign_workers.tab_fw_dates;
668: l_fw_fbt_output_tab pay_balance_pkg.t_detailed_bal_out_tab;
669: /* Changes for 9147438 end */
670:
671: /* Bug: 3603495 - Performance Fix - Introduced per_assignments_f and its joins in the following cursor */
783: j_fw_date_tab.delete;
784:
785: IF p_termination IS NOT NULL THEN
786:
787: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
788: pay_au_foreign_workers.g_fw_f_type);
789: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
790: pay_au_foreign_workers.g_fw_j_type);
791:
784:
785: IF p_termination IS NOT NULL THEN
786:
787: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
788: pay_au_foreign_workers.g_fw_f_type);
789: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
790: pay_au_foreign_workers.g_fw_j_type);
791:
792:
785: IF p_termination IS NOT NULL THEN
786:
787: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
788: pay_au_foreign_workers.g_fw_f_type);
789: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
790: pay_au_foreign_workers.g_fw_j_type);
791:
792:
793: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
786:
787: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
788: pay_au_foreign_workers.g_fw_f_type);
789: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
790: pay_au_foreign_workers.g_fw_j_type);
791:
792:
793: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
794:
792:
793: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
794:
795: if l_fw_f_type = 'Y' then
796: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
797: pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab);
798: end if;
799:
800: if l_fw_j_type = 'Y' then
793: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
794:
795: if l_fw_f_type = 'Y' then
796: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
797: pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab);
798: end if;
799:
800: if l_fw_j_type = 'Y' then
801: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
797: pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab);
798: end if;
799:
800: if l_fw_j_type = 'Y' then
801: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
802: pay_au_foreign_workers.g_fw_j_type, j_fw_date_tab);
803: end if;
804:
805: if f_fw_date_tab.count > 0 then
798: end if;
799:
800: if l_fw_j_type = 'Y' then
801: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), (c_year_start - 1),
802: pay_au_foreign_workers.g_fw_j_type, j_fw_date_tab);
803: end if;
804:
805: if f_fw_date_tab.count > 0 then
806: t_fw_gross_type(1) := 'F';
814: for i_idx in t_fw_gross_type.first .. t_fw_gross_type.last loop
815:
816: IF t_fw_gross_type(i_idx) = 'F' THEN
817:
818: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
819: p_tax_unit_id,
820: f_fw_date_tab,
821: add_months(c_year_start,-3),
822: (c_year_start - 1),
819: p_tax_unit_id,
820: f_fw_date_tab,
821: add_months(c_year_start,-3),
822: (c_year_start - 1),
823: pay_au_foreign_workers.g_fw_f_type,
824: p_fw_fbt_bal_type_tab,
825: l_fw_fbt_output_tab) ;
826:
827: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
824: p_fw_fbt_bal_type_tab,
825: l_fw_fbt_output_tab) ;
826:
827: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
828: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
829: p_tax_unit_id,
830: j_fw_date_tab,
831: add_months(c_year_start,-3),
832: (c_year_start - 1),
829: p_tax_unit_id,
830: j_fw_date_tab,
831: add_months(c_year_start,-3),
832: (c_year_start - 1),
833: pay_au_foreign_workers.g_fw_j_type,
834: p_fw_fbt_bal_type_tab,
835: l_fw_fbt_output_tab) ;
836: END IF;
837:
846: END IF;
847: end if;
848: else
849:
850: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
851: pay_au_foreign_workers.g_fw_f_type);
852: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
853: pay_au_foreign_workers.g_fw_j_type);
854:
847: end if;
848: else
849:
850: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
851: pay_au_foreign_workers.g_fw_f_type);
852: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
853: pay_au_foreign_workers.g_fw_j_type);
854:
855: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
848: else
849:
850: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
851: pay_au_foreign_workers.g_fw_f_type);
852: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
853: pay_au_foreign_workers.g_fw_j_type);
854:
855: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
856:
849:
850: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
851: pay_au_foreign_workers.g_fw_f_type);
852: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
853: pay_au_foreign_workers.g_fw_j_type);
854:
855: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
856:
857: if l_fw_f_type = 'Y' then
854:
855: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
856:
857: if l_fw_f_type = 'Y' then
858: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
859: pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab);
860: end if;
861:
862: if l_fw_j_type = 'Y' then
855: if l_fw_f_type <> 'N' or l_fw_j_type <> 'N' then
856:
857: if l_fw_f_type = 'Y' then
858: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
859: pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab);
860: end if;
861:
862: if l_fw_j_type = 'Y' then
863: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
859: pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab);
860: end if;
861:
862: if l_fw_j_type = 'Y' then
863: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
864: pay_au_foreign_workers.g_fw_j_type, j_fw_date_tab);
865: end if;
866:
867: if f_fw_date_tab.count > 0 then
860: end if;
861:
862: if l_fw_j_type = 'Y' then
863: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, add_months(c_year_start,-3), add_months(c_year_start,9)-1,
864: pay_au_foreign_workers.g_fw_j_type, j_fw_date_tab);
865: end if;
866:
867: if f_fw_date_tab.count > 0 then
868: t_fw_gross_type(1) := 'F';
875:
876: for i_idx in t_fw_gross_type.first .. t_fw_gross_type.last loop
877:
878: IF t_fw_gross_type(i_idx) = 'F' THEN
879: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
880: p_tax_unit_id,
881: f_fw_date_tab,
882: add_months(c_year_start,-3),
883: add_months(c_year_start,9)-1,
880: p_tax_unit_id,
881: f_fw_date_tab,
882: add_months(c_year_start,-3),
883: add_months(c_year_start,9)-1,
884: pay_au_foreign_workers.g_fw_f_type,
885: p_fw_fbt_bal_type_tab,
886: l_fw_fbt_output_tab) ;
887:
888: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
885: p_fw_fbt_bal_type_tab,
886: l_fw_fbt_output_tab) ;
887:
888: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
889: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
890: p_tax_unit_id,
891: j_fw_date_tab,
892: add_months(c_year_start,-3),
893: add_months(c_year_start,9)-1,
890: p_tax_unit_id,
891: j_fw_date_tab,
892: add_months(c_year_start,-3),
893: add_months(c_year_start,9)-1,
894: pay_au_foreign_workers.g_fw_j_type,
895: p_fw_fbt_bal_type_tab,
896: l_fw_fbt_output_tab) ;
897: END IF;
898:
1917: /* Changes for 9147438 Starts */
1918:
1919: if (to_number(to_char(c_year_start,'YYYY')) >= 2010) then
1920:
1921: g_fw_check := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end);
1922:
1923: if g_debug then
1924: hr_utility.set_location('FW EMP check .. g_fw_check for assignment_id '||c_assignment_id||' is '||g_fw_check, 2);
1925:
1929:
1930:
1931: if g_fw_check = 'Y' then
1932:
1933: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_f_type);
1934: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_j_type);
1935:
1936: if l_fw_f_type = 'Y' then
1937: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab_g);
1930:
1931: if g_fw_check = 'Y' then
1932:
1933: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_f_type);
1934: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_j_type);
1935:
1936: if l_fw_f_type = 'Y' then
1937: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab_g);
1938: end if;
1933: l_fw_f_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_f_type);
1934: l_fw_j_type := pay_au_foreign_workers.check_foreign_worker(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_j_type);
1935:
1936: if l_fw_f_type = 'Y' then
1937: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab_g);
1938: end if;
1939:
1940: if l_fw_j_type = 'Y' then
1941: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_j_type, j_fw_date_tab_g);
1937: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_f_type, f_fw_date_tab_g);
1938: end if;
1939:
1940: if l_fw_j_type = 'Y' then
1941: pay_au_foreign_workers.get_foreign_worker_dates(c_assignment_id, p_tax_unit_id, c_year_start, c_year_end, pay_au_foreign_workers.g_fw_j_type, j_fw_date_tab_g);
1942: end if;
1943:
1944: if f_fw_date_tab_g.count > 0 then
1945: t_fw_gross_type(1) := 'F';
1954:
1955: g_fw_result_table.delete;
1956:
1957: IF t_fw_gross_type(i_idx) = 'F' THEN
1958: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
1959: p_tax_unit_id,
1960: f_fw_date_tab_g,
1961: c_year_start,
1962: c_year_end,
1959: p_tax_unit_id,
1960: f_fw_date_tab_g,
1961: c_year_start,
1962: c_year_end,
1963: pay_au_foreign_workers.g_fw_f_type,
1964: g_fw_input_table,
1965: g_fw_result_table) ;
1966: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
1967: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
1963: pay_au_foreign_workers.g_fw_f_type,
1964: g_fw_input_table,
1965: g_fw_result_table) ;
1966: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
1967: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
1968: p_tax_unit_id,
1969: j_fw_date_tab_g,
1970: c_year_start,
1971: c_year_end,
1968: p_tax_unit_id,
1969: j_fw_date_tab_g,
1970: c_year_start,
1971: c_year_end,
1972: pay_au_foreign_workers.g_fw_j_type,
1973: g_fw_input_table,
1974: g_fw_result_table) ;
1975: END IF;
1976:
2037: n := pay_au_payment_summary.adjust_retro_fw(c_assignment_id
2038: ,p_tax_unit_id
2039: ,c_year_start
2040: ,c_year_end
2041: ,pay_au_foreign_workers.g_fw_f_type
2042: ,l_retro_fw_gross
2043: ,l_retro_fw_tax);
2044: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
2045: n := pay_au_payment_summary.adjust_retro_fw(c_assignment_id
2045: n := pay_au_payment_summary.adjust_retro_fw(c_assignment_id
2046: ,p_tax_unit_id
2047: ,c_year_start
2048: ,c_year_end
2049: ,pay_au_foreign_workers.g_fw_j_type
2050: ,l_retro_fw_gross
2051: ,l_retro_fw_tax);
2052: END IF;
2053:
2088:
2089: g_fw_result_alw_table.delete;
2090:
2091: IF t_fw_gross_type(i_idx) = 'F' THEN
2092: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
2093: p_tax_unit_id,
2094: f_fw_date_tab_g,
2095: c_year_start,
2096: c_year_end,
2093: p_tax_unit_id,
2094: f_fw_date_tab_g,
2095: c_year_start,
2096: c_year_end,
2097: pay_au_foreign_workers.g_fw_f_type,
2098: g_fw_input_alw_table,
2099: g_fw_result_alw_table) ;
2100: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
2101: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
2097: pay_au_foreign_workers.g_fw_f_type,
2098: g_fw_input_alw_table,
2099: g_fw_result_alw_table) ;
2100: ELSIF t_fw_gross_type(i_idx) = 'J' THEN
2101: pay_au_foreign_workers.get_foreign_payment_amounts(c_assignment_id,
2102: p_tax_unit_id,
2103: j_fw_date_tab_g,
2104: c_year_start,
2105: c_year_end,
2102: p_tax_unit_id,
2103: j_fw_date_tab_g,
2104: c_year_start,
2105: c_year_end,
2106: pay_au_foreign_workers.g_fw_j_type,
2107: g_fw_input_alw_table,
2108: g_fw_result_alw_table) ;
2109: END IF;
2110: