Beispiel #1
0
	private function compute_persuasive_annual_inc($writ_rec) {

		$staff_id = $writ_rec['staff_id'];
		$cur_group = $writ_rec['cur_group'];
		$persuasive_group = $this->param1;
		$execute_date = $writ_rec['execute_date'];

		$query = " SELECT SUBSTRING(CONCAT(execute_date,' ',cur_group),12) cur_group
                            FROM writs
                                WHERE staff_id =" . $writ_rec['staff_id'];

		$dt = PdoDataAccess::runquery($query);

		$input_group = $dt[0]['cur_group'];

		$query = "  SELECT work_start_date
                            FROM staff
                                WHERE staff_id = $staff_id
                     ";
		$res = PdoDataAccess::runquery($query);
		$work_start_date = $res[0]['work_start_date'];
		$work_start_jdate = DateModules::Miladi_to_Shamsi($work_start_date);
		$start_year = substr($work_start_jdate, 0, 4);

		if ($start_year < 1371)
			$start_year = 1371;

		$execute_jdate = DateModules::Miladi_to_Shamsi($execute_date);
		$end_year = substr($execute_jdate, 0, 4);

		// استخراج اطلاعات جانبازي
		$devotions_info = manage_person_devotion::get_devotions_coefs($staff_id, $start_year, $end_year);

		// استخراج اطلاعات احكام
		$writs_info = manage_writ::get_writs_info($staff_id, $start_year - 1, $end_year);

		// استخراج اطلاعات بسيج
		$mob_info = manage_person_devotion::get_mobilizations_coefs($staff_id, $start_year, $end_year);

		$rial_coefs = manage_salary_params::get_rial_coefs($start_year, $end_year, $writ_rec['person_type']);

		$devotion_inc = 0;
		$mobilization_inc = 0;
		$year_coef = array();

		for ($year = $start_year; $year <= $end_year; $year++) {
			// گروه ورودي و عوامل ايثارگري
			$prev_year_coef = $year_coef;
			$year_coef =
					$devotions_info[$year][DEVOTION_TYPE_FIGHTER] +
					$devotions_info[$year][DEVOTION_TYPE_PRISONER] +
					$devotions_info[$year][DEVOTION_TYPE_WOUNDED];

			if ($devotion_inc == 0)
				$devotion_inc += $year_coef * ((array_key_exists(($year - 1), $writs_info)) ? $writs_info[$year - 1]['base_salary'] : 0);
			else if ($year_coef != $prev_year_coef)
				$devotion_inc += ($year_coef - $prev_year_coef) * ((array_key_exists(($year - 1), $writs_info)) ? $writs_info[$year - 1]['base_salary'] : 0 );

			// گروه ورودي و بسيج
			$x3 = ((array_key_exists(($year - 1), $mob_info)) ? $mob_info[$year - 1] : 0 ) * ((array_key_exists(($year - 1), $writs_info)) ? $writs_info[$year - 1]['base_salary'] : 0);
			$mobilization_inc += $x3;
		}

		// اختلاف حقوق پایه با احتساب و بدون احتساب گروه تشویقی
		$base_salary = $rial_coefs[$end_year] * manage_writ_item::Get_employee_base_number($cur_group);

		$base_salary_wp = $rial_coefs[$end_year] * manage_writ_item::Get_employee_base_number($cur_group - $persuasive_group);

		$base_salary_inc = $base_salary - $base_salary_wp;

		$job_extra_inc = $writs_info[$end_year]['job_coef'] * $base_salary - $writs_info[$end_year]['job_coef'] * $base_salary_wp;

		$dominant_job_extra_inc = $writs_info[$end_year]['dominant_job_coef'] * $base_salary - $writs_info[$end_year]['dominant_job_coef'] * $base_salary_wp;

		// جمع مبالغ مربوط به �?وق العاده ايثارگري تشويقي
		$add_value = $devotion_inc + $mobilization_inc + $base_salary_inc + $job_extra_inc + $dominant_job_extra_inc;

		$min_sal_items_sum = manage_writ_item::compute_writ_items_sum($writ_rec['writ_id'], $writ_rec['writ_ver'], $writ_rec['staff_id'], '( ' . SIT_STAFF_BASE_SALARY . ' , ' . SIT_STAFF_ADAPTION_DIFFERENCE . ' , ' . SIT_STAFF_JOB_EXTRA . ' , ' .
						SIT_STAFF_DOMINANT_JOB_EXTRA . ' , ' . SIT_STAFF_ANNUAL_INC . ')');

		$min_sal_param = manage_salary_params::get_salaryParam_value("", $writ_rec['person_type'].",101", SPT_MIN_SALARY, $writ_rec['execute_date']);

		// ت�?اوت حداقل حقوق در صورتي كه تاثير من�?ي دارد اعمال مي گردد
		$min_salary_diff = ($min_sal_param - $min_sal_items_sum);
		if ($min_salary_diff > 0)
			$min_salary_diff = 0;

		$value = $min_salary_diff + $add_value;
		if ($value < 0)
			return false;

		$this->param2 = $input_group;
		$this->param3 = round($devotion_inc);
		$this->param4 = round($base_salary_inc);
		$this->param5 = round($mobilization_inc);
		$this->param6 = round($job_extra_inc);
		$this->param7 = 'مبلغ فوق العاده شغل برجسته :' . round($dominant_job_extra_inc) . '<br>' .
				'جمع همه عوامل :' . round($add_value) . '<br>' .
				'پارامتر حداقل حقوق :' . round($min_sal_param) . '<br>' .
				'اقلام مشمول حداقل حقوق :' . round($min_sal_items_sum) . '<br>';
		return round($value);
	}