Пример #1
0
	private function compute_salary_item1_10($writ_rec) {
		//param1 : پايه ايثارگري
		//param2 : مرتبه علمي
		//param3 : ضريب حقوق
		//اين فوق العاده به مربي و مربي آموزشيار فقط تعلق مي گيرد.
		if ($writ_rec['science_level'] >= MASTERSTROKE)
			return 0;

		$person_devotions = manage_person_devotion::GetAllDevotions(" d.PersonID=" . $writ_rec["PersonID"] .
                                                                            " AND devotion_type in (" . DEVOTION_TYPE_WOUNDED . ")");


		if (count($person_devotions) <= 0)
			return 0;


		$this->param1 = 0;
		for ($i = 0; $i < count($person_devotions); $i++) {
			if ($person_devotions[$i]['devotion_type'] == DEVOTION_TYPE_WOUNDED) {
				if (10 <= $person_devotions[$i]['amount'] && $person_devotions[$i]['amount'] < 20) {
					$this->param1 += 1;
				} else if ($person_devotions[$i]['amount'] < 30) {
					$this->param1 += 2;
				} else if ($person_devotions[$i]['amount'] < 40) {
					$this->param1 += 3;
				} else if ($person_devotions[$i]['amount'] < 50) {
					$this->param1 += 5;
				} else if ($person_devotions[$i]['amount'] < 60) {
					$this->param1 += 7;
				} else if ($person_devotions[$i]['amount'] < 70) {
					$this->param1 += 9;
				} else {
					$this->param1 += 11;
				}
			}
		}

		$param1_base = $this->param1;


		$this->param2 = $writ_rec['science_level'];
		switch ($writ_rec['science_level']) {
			case INSTRUCTOR_EDUCATOR :
				$param2_science_level = 'مربي آموزشيار';
				break;
			case EDUCATOR :
				$param2_science_level = 'مربي';
				break;
			case MASTERSTROKE :
				$param2_science_level = 'استاديار';
				break;
			case LECTURESHIP :
				$param2_science_level = 'دانشيار';
				break;
			case MASTERSHIP :
				$param2_science_level = 'استاد';
				break;
		}

		$writ_rec['science_level']++;
		$higher_science_level_base_salary = manage_writ_item::compute_salary_item1_01($writ_rec);

		$higher_science_level_special_extra = $higher_science_level_base_salary *
				manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"], SPT_SPECIAL_EXTRA_COEF, $writ_rec['execute_date'], $writ_rec['science_level']);

		$higher_science_level_absorb_extra = $higher_science_level_base_salary *
				manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"], SPT_PROFESSOR_ABSORB_COEF, $writ_rec['execute_date'], $writ_rec['science_level'], $writ_rec['work_city_id'], $writ_rec['work_state_id']);

		$higher_science_level_wheather_extra = $higher_science_level_base_salary *
				manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"], SPT_PROFESSOR_WHEATHER_COEF, $writ_rec['execute_date'], $writ_rec['work_city_id'], $writ_rec['work_state_id']);

		$higher_science_level_particular_extra = $higher_science_level_base_salary *
				manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"], SPT_PARTICULAR_EXTRA, $writ_rec['execute_date'], $writ_rec['science_level']);
		//......................................................................

		if ($writ_rec['execute_date'] > '2010-03-20' && $writ_rec['execute_date'] < '2014-03-21') {

			$new_extra = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"], SPT_PARTICULAR_EXTRA_NEW, $writ_rec['execute_date'], $writ_rec['science_level']);

			$new_higher_science_level_particular_extra = $higher_science_level_base_salary * $new_extra;
			$maxVal = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"], MAX_SPT_PARTICULAR_EXTRA_NEW, $writ_rec['execute_date'], $writ_rec['science_level']);

			if (!($new_higher_science_level_particular_extra > 0)) {

				parent::PushException(PARTICULAR_EXTRA_CALC_ERR);
				return false;
			}

			if ($new_higher_science_level_particular_extra > $maxVal) {
				$new_higher_science_level_particular_extra = $maxVal;
			}

			$higher_science_level_particular_extra += $new_higher_science_level_particular_extra;
		}

		$sum_higher_science_level = $higher_science_level_base_salary + $higher_science_level_special_extra + $higher_science_level_absorb_extra +
				$higher_science_level_wheather_extra + $higher_science_level_particular_extra;

		$writ_rec['science_level']--;

		$base_salary = manage_writ_item::get_writSalaryItem_value($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"], SIT_PROFESSOR_BASE_SALARY);

		$special_extra = manage_writ_item::get_writSalaryItem_value($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"], SIT_PROFESSOR_SPECIAL_EXTRA);

		$absorb_extra = manage_writ_item::get_writSalaryItem_value($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"], SIT_PROFESSOR_ABSOPPTION_EXTRA);

		$wheather_extra = manage_writ_item::get_writSalaryItem_value($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"], SIT_PROFESSOR_BAD_WEATHER_EXTRA);

		$particular_extra = manage_writ_item::get_writSalaryItem_value($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"], SIT_PROFESSOR_PARTICULAR_EXTRA);

		$sum = $base_salary + $special_extra + $absorb_extra + $wheather_extra + $particular_extra;
		//......................................................................
		
		
		
		$value = $sum_higher_science_level - $sum;

		$this->param1 = $param1_base;
		$this->param2 = $param2_science_level;

		return $value;
	}