query("SELECT * FROM setting_salary_tax WHERE tax_type = 'slip_month_setting' LIMIT 1"); if(mysqli_num_rows($query_setting) > 0){ $result_setting = mysqli_fetch_assoc($query_setting); $setting_month = $result_setting['tax_title']; } if($setting_month == 'current'){ $month = date('Y-m-01', strtotime($today_date)); }else if($setting_month == 'previous'){ $temp_month = date('Y-m-01', strtotime($today_date)); $month = date('Y-m-01', strtotime($temp_month. ' - 1 months')); } $query_staff = $mysqli->query("SELECT * FROM staff WHERE deleted_at is NULL"); if(mysqli_num_rows($query_staff) > 0){ //get all tax rate and store $tax_rate = []; $query_tax_rate = $mysqli->query("SELECT * FROM setting_salary_tax WHERE deleted_at is NULL"); while($row_tax = mysqli_fetch_assoc($query_tax_rate)){ $tax_rate[$row_tax['tax_id']] = $row_tax; } while($row = mysqli_fetch_assoc($query_staff)){ $staff_id = $row['staff_id']; $staff_idno = $row['staff_idno']; $basic_salary = $row['staff_salary']; $epf_rate_id = $row['staff_epf_rate_id']; $socso_rate_id = $row['staff_socso_rate_id']; $eis_rate_id = $row['staff_eis_rate_id']; $zakat_rate_id = $row['staff_zakat_rate_id']; $tax_status_id = $row['tax_status_id']; //pcb category, resident, non-resident, no tax $staff_epf_rate = $tax_rate[$epf_rate_id]['employee_rate']; $employer_epf_rate = $tax_rate[$epf_rate_id]['employer_rate']; $staff_socso_rate = $tax_rate[$socso_rate_id]['employee_rate']; $employer_socso_rate = $tax_rate[$socso_rate_id]['employer_rate']; $staff_eis_rate = $tax_rate[$eis_rate_id]['employee_rate']; $employer_eis_rate = $tax_rate[$eis_rate_id]['employer_rate']; $staff_zakat_rate = $tax_rate[$zakat_rate_id]['employee_rate']; $employer_zakat_rate = $tax_rate[$zakat_rate_id]['employer_rate']; $socso_category_id = $row['socso_category_id']; $eis_status = $row['staff_eis_status']; $birthday = $row['staff_birthdate']; if($birthday == NULL || $birthday == '0000-00-00'){ $age = 0; }else{ $birthDate = date("Y",strtotime($birthday)); $age = date("Y") - $birthDate; } $country_id = $row['country_id']; $query_country = $mysqli->query("SELECT country_desc FROM master_country WHERE country_id = '$country_id' LIMIT 1"); $country = mysqli_fetch_assoc($query_country)['country_desc']; if($country == 'MALAYSIA'){ $citizen = 'yes'; }else{ $citizen = 'yes'; } $staff_settings = $row['staff_settings'] ; if ( $staff_settings != '' ){ $staff_settings = JsonEncodeDecode('decode', $staff_settings) ; }else{ $staff_settings = [] ; } $marital_status = $staff_settings['marital_status']; $num_children = $staff_settings['no_children']; $spouse_working = $staff_settings['spouse_working']; //for kindlemind $query_commission_temp = $mysqli->query("SELECT * FROM staff_commission_temp WHERE staff_id='$staff_idno' AND month='$month' LIMIT 1"); if(mysqli_num_rows($query_commission_temp) > 0){ $commission = mysqli_fetch_assoc($query_commission_temp)['commission']; }else{ $commission = 0; } $allowance = $row['staff_allowance_topup'] + $row['staff_allowance_work'] + $row['staff_allowance_food']; //calculate epf, socso, eis, pcb $staff_epf = 0; $staff_socso = 0; $staff_eis = 0; $staff_zakat = 0; $staff_pcb = 0; $employer_epf = 0; $employer_socso = 0; $employer_eis = 0; $employer_zakat = 0; $employer_pcb = 0; $deduction = 0; $gross_total = $basic_salary + $commission + $allowance; //calculate pcb tax $boolean_pcb = true; if($row['tax_status_id'] == 1){ if($marital_status == 'Single' || $marital_status == 'Divorced' || $marital_status == 'Widow'){ $category = 1; $category2 = 'B'; }else if($marital_status == 'Married'){ if($num_children == '' || $num_children == 0){ $category2 = 'K'; }else{ $category2 = 'KA'.$num_children; } if($spouse_working == 'Yes'){ $category = 3; }else{ $category = 2; } }else{ $boolean_pcb = false; } }else{ $boolean_pcb = false; } if($boolean_pcb){ $pcb = calculateTax('pcb', $gross_total, $category, $category2); }else{ $pcb = 0; } $staff_pcb = $pcb; //calculate pcb tax end //calculate epf tax if($staff_epf_rate == '11'){ $epf_array = calculateTaxEPF('epf', $gross_total, $age, $citizen); }else if($staff_epf_rate == '9'){ $epf_array = calculateTaxEPF('epf', $gross_total, $age, $citizen); }else if($staff_epf_rate == '0' || $staff_epf_rate == ''){ $epf_array = []; } if($epf_array['staff_epf']!= ''){ $staff_epf = $epf_array['staff_epf']; } if($epf_array['employer_epf']!= ''){ $employer_epf = $epf_array['employer_epf']; } //calculate epf tax end //calculate socso tax if($socso_category_id == 1){ $socso_array = calculateTaxSOCSO('socso', $gross_total, $socso_category_id); }else if($socso_category_id == 2){ $socso_array = calculateTaxSOCSO('socso', $gross_total, $socso_category_id); }else{ $socso_array = []; } if($socso_array['staff_socso']!= ''){ $staff_socso = $socso_array['staff_socso']; } if($socso_array['employer_socso']!= ''){ $employer_socso = $socso_array['employer_socso']; } //calculate socso tax end //calculate eis tax if($eis_status == 1){ $eis_array = calculateTaxEIS('eis', $gross_total); }else{ $eis_array = []; } if($eis_array['staff_eis']!= ''){ $staff_eis = $eis_array['staff_eis']; } if($eis_array['employer_eis']!= ''){ $employer_eis = $eis_array['employer_eis']; } //calculate eis tax end //calculate zakat fund if($staff_zakat_rate > 0){ $staff_zakat = calculateTaxZAKAT($gross_total, $staff_zakat_rate); } //calculate zakat fund end $subtotal = $basic_salary + $commission + $allowance ; $total = $basic_salary + $commission + $allowance - $staff_epf - $staff_socso - $staff_eis - $staff_zakat - $staff_pcb ; $query_salary_slip = $mysqli->query("SELECT slip_id FROM salary_slip WHERE staff_id = '$staff_id' AND month = '$month' LIMIT 1"); if(mysqli_num_rows($query_salary_slip) <= 0){ $insert = $mysqli->query("INSERT INTO salary_slip ( staff_id, basic_salary, commission, allowance, staff_epf, staff_socso, staff_eis, staff_zakat, staff_pcb, employer_epf, employer_socso, employer_eis, employer_zakat, employer_pcb, deduction, deduction_reason, status, sub_total, total, month ) VALUES ( '$staff_id', '$basic_salary', '$commission', '$allowance', '$staff_epf', '$staff_socso', '$staff_eis', '$staff_zakat', '$staff_pcb', '$employer_epf', '$employer_socso', '$employer_eis', '$employer_zakat', '$employer_pcb', '$deduction', '', 'active', '$subtotal', '$total', '$month' )"); if($insert){ $slip_id = $mysqli->insert_id; $mysqli->query("INSERT INTO setting_slip_tax( slip_id, staff_epf_rate, employer_epf_rate, age, country_id, staff_socso_rate, employer_socso_rate, socso_category_id, staff_eis_rate, employer_eis_rate, staff_eis_status, staff_zakat_rate, employer_zakat_rate, tax_status_id, marital_status, spouse_working, num_children ) VALUES ( '$slip_id', '$staff_epf_rate', '$employer_epf_rate', '$age', '$country_id', '$staff_socso_rate', '$employer_socso_rate', '$socso_category_id', '$staff_eis_rate', '$employer_eis_rate', '$eis_status', '$staff_zakat_rate', '$employer_zakat_rate', '$tax_status_id', '$marital_status', '$spouse_working', '$num_children')"); } } } } ?>