private function compute_salary_other_premium($writ_rec) { //$param1 گروه معادل استخدام كشوري افراد //$param2 افزايش سنواتي سال جاري //$param3 افزايش سنواتي سال قبل //$param4 ضريب فوق العاده شغل . //$param5 ضريب فوق العاده جذب $worker_salary = $this->compute_writ_items_sum($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"] , '( ' . SIT_WORKER_BASE_SALARY . ' , ' . SIT_WORKER_ANNUAL_INC . ')'); // ________________________________________ //compute_other_premium_base_salary $rial_coef = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"].",101", SPT_RIAL_COEF, $writ_rec['execute_date']); if (!$rial_coef) { parent::PushException(RIAL_COEF_NOT_FOUND); return false; } $worker_emp_base_salary = $rial_coef * manage_writ_item::Get_employee_base_number($this->param1); //_________________________________________ $worker_emp_annual_inc = $this->param2; $worker_emp_job_extra = $this->param4 * $worker_emp_base_salary; //_________________________________________ //compute_other_premium_min_salary $min_sal_value = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"].",101", SPT_MIN_SALARY, $writ_rec['execute_date']); $worker_emp_min_salary = max($min_sal_value - ($worker_emp_base_salary + $worker_emp_annual_inc + $worker_emp_job_extra), 0); //_________________________________________ //compute_other_premium_absorb_extra $worker_emp_absorb_extra = $this->param5 * ($worker_emp_base_salary + $worker_emp_annual_inc + $worker_emp_job_extra + $worker_emp_min_salary); //_________________________________________ //compute_other_premium_bad_weather_extra $worker_emp_bad_wheader = 0; if ($writ_rec['emp_mode'] == EMP_MODE_ENGAGEMENT || $writ_rec['emp_mode'] == EMP_MODE_EDUCATIONAL_MISSION) $worker_emp_bad_wheader = 0; $this->param1 = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"].",101", SPT_WHEATHER_COEF, $writ_rec['execute_date']); if (!$this->param1) { parent::PushException('WHEATHER_COEF_NOT_FOUND'); $worker_emp_bad_wheader = 0; } $value = $this->param1 * $worker_emp_base_salary; if (!($value > 0)) { parent::PushException('WHEATHER_ITEM_CALC_ERR'); $worker_emp_bad_wheader = 0; } //_________________________________________ //compute_other_premium_8_9_absorb //// محاسبه فوق العاده جذب بندهاي 8 و 9 // به دست آوردن اولين روز سال قبل $this_writ_year = substr(DateModules::Miladi_to_Shamsi($writ_rec['execute_date']), 0, 4); $one_year_ago = $this_writ_year - 1; $one_year_ago_first_day = $one_year_ago . "/01/01"; $Gone_year_ago_first_day = DateModules::Shamsi_to_Miladi($one_year_ago_first_day); // ضريب ريالي سال قبل $rial_coef = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"].",101", SPT_RIAL_COEF, $Gone_year_ago_first_day); if (!$rial_coef) { parent::PushException('RIAL_COEF_NOT_FOUND'); return false; } // حقوق پايه سال قبل $prior_base_salary = $rial_coef * manage_writ_item::Get_employee_base_number($this->param1); // افزايش سنواتي سال قبل $prior_annual_inc = $this->param3; //فوق العاده شغل سال قبل $prior_job_extra = $prior_base_salary * $this->param4; // حداقل دريافتي سال قبل $min_sal_value = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"].",101", SPT_MIN_SALARY, $Gone_year_ago_first_day); $prior_min_salary = max($min_sal_value - ($prior_base_salary + $prior_annual_inc + $prior_job_extra), 0); // جمع اقلام مرتبط با فوق العاده تعديل $adjust_sal_items_sum = $prior_base_salary + $prior_annual_inc + $prior_job_extra + $prior_min_salary; // محاسبه فوق العاده تعديل سال قبل $max_value = manage_writ_item::Get_employee_base_number(1) * $rial_coef * 1.5; if ($adjust_sal_items_sum <= 3000000) $value = $max_value; elseif ($adjust_sal_items_sum >= 5700000) $value = 0; else $value = (1 - (intval(($adjust_sal_items_sum - 3000000) / 300000) + 1) * 0.1) * $max_value; $worker_emp_8_9_absorb = $value * 1.5; //_________________________________________ $worker_emp_salary = $worker_emp_base_salary + $worker_emp_annual_inc + $worker_emp_job_extra + $worker_emp_min_salary + $worker_emp_absorb_extra + $worker_emp_bad_wheader + $worker_emp_8_9_absorb; $this->param6 = $worker_salary; $this->param7 = 'حقوق پايه:' . intval($worker_emp_base_salary) . '<br>' . 'سنوات:' . intval($worker_emp_annual_inc) . '<br>' . 'ف شغل:' . intval($worker_emp_job_extra) . '<br>' . 'حداقل:' . intval($worker_emp_min_salary) . '<br>' . 'ف جذب:' . intval($worker_emp_absorb_extra) . '<br>' . 'ف بدي آب و هوا:' . intval($worker_emp_bad_wheader) . '<br>' . 'جذب 8 و 9 ر:' . intval($worker_emp_8_9_absorb) . '<br>' . 'جمع:' . intval($worker_emp_salary); $this->param2 = CurrencyModulesclass::toCurrency($this->param2); $value = max((11 / 12) * $worker_emp_salary - $worker_salary, 0); if (!($value > 0)) return false; return $value; }