private function compute_salary_item3_07($writ_rec) { //param1 : افزایش سنواتی سال قبل //param2 : نرخ سنوات امسال //param3 : تعداد روزهاي ماه // should be deleted at the first of 91 ------------------------------------------ if ($writ_rec['execute_date'] == '2015-01-31') { $qry = " select (wsi.value ) bv , param1,param2,param3 from writs w inner join writ_salary_items wsi on w.staff_id = wsi.staff_id and w.writ_id = wsi.writ_id and w.writ_ver = wsi.writ_ver where w.execute_date = '2015-01-31' and salary_item_type_id = 283 and w.staff_id = ".$writ_rec['staff_id'] ; $res = PdoDataAccess::runquery($qry) ; $this->param1 =$res[0]['param1']; $this->param2 =$res[0]['param2']; $this->param3 =$res[0]['bv']; if( $res[0]['bv'] > 0 ) return $res[0]['bv'] ; } if ($writ_rec['execute_date'] > '2015-03-20') { $qry = " select (wsi.value/30 ) bv from writs w inner join writ_salary_items wsi on w.staff_id = wsi.staff_id and w.writ_id = wsi.writ_id and w.writ_ver = wsi.writ_ver where w.execute_date = '2015-01-31' and salary_item_type_id = 283 and w.staff_id = ".$writ_rec['staff_id'] ; $res = PdoDataAccess::runquery($qry) ; $job_group = $writ_rec['job_group']; $annual_rate = manage_salary_params::get_salaryParam_value("", $writ_rec['person_type'].",101", SPT_GROUP1_ANNUAL_RATE, $writ_rec['execute_date'], $job_group); if (!(0 < $annual_rate)) { parent::PushException(UNKNOWN_GROUP1_ANNUAL_RATE); return false; } $this->param1 = $res[0]['bv'] ; $this->param2 = $annual_rate ; $this->param3 = 1.17 ; $value = (($res[0]['bv'] * 1.17) + $annual_rate) * 30 ; } else { $MONTH_DAY_COUNT = ($writ_rec["person_type"] == HR_WORKER) ? 31 : MONTH_DAY_COUNT; if ($writ_rec['execute_date'] >= '2012-03-20') { $MONTH_DAY_COUNT = 30; } if (!(1 <= $writ_rec['job_group'] && $writ_rec['job_group'] <= 20)) { parent::PushException(UNKNOWN_JOB_GROUP); return false; } $job_group = $writ_rec['job_group']; $Jexecute_date = DateModules::miladi_to_shamsi($writ_rec['execute_date']); $year = substr($Jexecute_date, 0, 4); $prior_year_last_day = ($year - 1) . "/12/29"; $prior_Gexecute_date = DateModules::shamsi_to_miladi($prior_year_last_day); $annual_rate = manage_salary_params::get_salaryParam_value("", $writ_rec['person_type'].",101", SPT_GROUP1_ANNUAL_RATE, $writ_rec['execute_date'], $job_group); if (!(0 < $annual_rate)) { parent::PushException(UNKNOWN_GROUP1_ANNUAL_RATE); return false; } $last_writ_year = manage_writ::get_last_writ_With_salry_before_date($writ_rec['staff_id'], $prior_Gexecute_date); if ($last_writ_year) { $prior_annual_inc = manage_writ_item::get_writSalaryItem_value($last_writ_year->writ_id, $last_writ_year->writ_ver, $last_writ_year->staff_id, SIT_WORKER_ANNUAL_INC); } else { $prior_annual_inc = 0; } //مبناي محاسبه تعداد روز در ماه براي محاسبه 31 روز است نه 30 روز. $month_duration = $MONTH_DAY_COUNT; $value = $prior_annual_inc + ($annual_rate * $month_duration); } return $value; }