Exemplo n.º 1
0
	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;
	}