Example #1
0
	/** حق شاغل	 */
	private function compute_salary_item2_36($writ_rec) {
		//param1 : امتیاز
		//param2 : سنوات خدمت مربوط و مشابه
		//param3 : دوره های آموزشی
		//param4 : ضريب امتياز سرپرستي و مديريت
		//param5 : امتياز کامل
		//param6 :  سنوات خدمت
		//param7 : تفاوت مبلغ
 
		$educQry = " select education_level , doc_date
                                from  person_educations
                                             where personid =" . $writ_rec['PersonID'] . " and doc_date <= '" . $writ_rec['execute_date'] . "'  ";

		$resEduc = parent::runquery($educQry);

		$score = 0;

		$prev_onduty_year = 0;
		$prev_onduty_month = 0;
		$prev_onduty_day = 0;

		$prev_related_onduty_year = 0;
		$prev_related_onduty_month = 0;
		$prev_related_onduty_day = 0;

		$Sum_duty_year = 0;
		$Sum_related_duty_year = 0;

		$qry = " SELECT param1 FROM Basic_Info
 					   where typeid = 6	and InfoID = " . $writ_rec['education_level'];

		$res = parent::runquery($qry);

		$education_level['max_education_level'] = $res[0]['param1'];
                
                
		$person_devotions = manage_person_devotion::get_person_devotions($writ_rec['PersonID'], '(' . DEVOTION_TYPE_WOUNDED . ')');
		$devFlag = 0;
		if ($writ_rec['execute_date'] >= '2010-03-21') {
			$person_family_shohada = manage_person_devotion::get_person_devotions($writ_rec['PersonID'], '(' . BEHOLDER_FAMILY_DEVOTION . ')', BOY . ',' . DAUGHTER);

			if (count($person_family_shohada) > 0) {
				if ($person_family_shohada[0]['devotion_type'] > 0)
					$devFlag = 1;
			}
		}

		if (count($person_devotions) > 0) {
			if ($person_devotions[0]['amount'] > 0)
				$devFlag = 1;
		}

		if ($devFlag == 1) {

			if ($education_level['max_education_level'] < 122)
				$education_level['max_education_level'] = 122;

			else if ($education_level['max_education_level'] < 200)
				$education_level['max_education_level'] = 200;

			else if ($education_level['max_education_level'] < 300)
				$education_level['max_education_level'] = 300;
			else
				$education_level['max_education_level'] += 100;
		}

		//کسانی که دارای مدرک تحصیلی زیر دیپلم هستند.
		if ($education_level['max_education_level'] < 200) {
			$score = 1100;
			//امتیاز مهارت وتوانایی
			$score += 200;
		}

		//کسانی که دارای مدرک تحصیلی دیپلم هستند
		else if ($education_level['max_education_level'] < 300) {
			$score = 1200;
			//امتیاز مهارت وتوانایی
			$score += 250;
		} //کسانی که دارای مدرک تحصیلی کاردانی هستند.
		else if ($education_level['max_education_level'] == 300 || $education_level['max_education_level'] == 301) {
			$score = 1400;
			//امتیاز مهارت وتوانایی
			$score += 300;
		} //کسانی که دارای مدرک تحصیلی کارشناسی هستند.
		else if ($education_level['max_education_level'] == 400 || $education_level['max_education_level'] == 401) {
			$score = 1700;
			//امتیاز مهارت وتوانایی
			$score += 400;
		} //کسانی که دارای مدرک تحصیلی کارشناسی ارشد می باشند.
		else if ($education_level['max_education_level'] == 500 || $education_level['max_education_level'] == 501) {
			 $score = 2000;
			//امتیاز مهارت وتوانایی
			$score += 600;
		} //کسانی که دارای مدرک تحصیلی دکتری می باشند.
		else if ($education_level['max_education_level'] > 501) {
			$score = 2300;
			//امتیاز مهارت وتوانایی
			$score += 800;
		}
                
            

		for ($i = 0; $i < count($resEduc); $i++) {

			if (isset($resEduc[$i + 1])) {
				$date = $resEduc[$i + 1]['doc_date'];
			}
			else
				$date = $writ_rec['execute_date'];

			$last_writ_rec = manage_writ::get_last_writ_by_date($writ_rec['staff_id'], $date);
                       
			$education_level['max_education_level'] = $resEduc[$i]['education_level'];

			$myqry = " SELECT param1 FROM Basic_Info
 					  where typeid = 6	and InfoID = " . $resEduc[$i]['education_level'];
			$myres = parent::runquery($myqry);

			$education_level['max_education_level'] = $myres[0]['param1'];
			$person_devotions = manage_person_devotion::get_person_devotions($writ_rec['PersonID'], '(' . DEVOTION_TYPE_WOUNDED . ')');

			$devFlag = 0;

			if ($writ_rec['execute_date'] >= '2010-03-21') {
				$person_family_shohada = manage_person_devotion::get_person_devotions($writ_rec['PersonID'], '(' . BEHOLDER_FAMILY_DEVOTION . ')', BOY . ',' . DAUGHTER);
				if (count($person_family_shohada) > 0) {
					if ($person_family_shohada[0]['devotion_type'] > 0)
						$devFlag = 1;
				}
			}
			/* if($person_devotions[0]['amount']>0 || $person_family_shohada ){

			  if($education_level['max_education_level']< 122)
			  $education_level['max_education_level'] = 122 ;

			  else if($education_level['max_education_level']< 200)
			  $education_level['max_education_level'] = 200 ;

			  else if($education_level['max_education_level']< 300)
			  $education_level['max_education_level'] = 300 ;
			  else
			  $education_level['max_education_level'] += 100 ;
			  } */


			if (count($person_devotions) > 0) {
				if ($person_devotions[0]['amount'] > 0)
					$devFlag = 1;
			}

 
			if ($devFlag == 1) {

				if ($education_level['max_education_level'] < 122)
					$education_level['max_education_level'] = 122;

				else if ($education_level['max_education_level'] < 200)
					$education_level['max_education_level'] = 200;

				else if ($education_level['max_education_level'] < 300)
					$education_level['max_education_level'] = 300;
				else
					$education_level['max_education_level'] += 100;
			}

  
                    
			$first_duty_day = $prev_onduty_year * 365.25 + $prev_onduty_month * 30.4375 + $prev_onduty_day;
			$last_duty_day = $last_writ_rec->onduty_year * 365.25 + $last_writ_rec->onduty_month * 30.4375 + $last_writ_rec->onduty_day;
			$onduty_year = ($last_duty_day - $first_duty_day ) / 365.25;

			if ($onduty_year >= 30) {
				$onduty_year = 30;
			}
			if (($Sum_duty_year + $onduty_year ) >= 30) {
				$onduty_year = 30 - $Sum_duty_year;
			}


			$Sum_duty_year += $onduty_year;
                     
                    
			$first_related_duty_day = $prev_related_onduty_year * 365.25 + $prev_related_onduty_month * 30.4375 + $prev_related_onduty_day;
			$last_related_duty_day = $last_writ_rec->related_onduty_year * 365.25 + $last_writ_rec->related_onduty_month * 30.4375 + $last_writ_rec->related_onduty_day;
			$related_onduty_year = ($last_related_duty_day - $first_related_duty_day ) / 365.25;

                                           
			if ($related_onduty_year >= 30) {
				$related_onduty_year = 30;
			}

			if (($Sum_related_duty_year + $related_onduty_year ) >= 30) {
				$related_onduty_year = 30 - $Sum_related_duty_year;
			}
                        
        
			$Sum_related_duty_year += $related_onduty_year;

			$dev_coef = 1;
			$related_onduty_year *= $dev_coef;
			$onduty_year *= $dev_coef;
                        
              
			$prev_onduty_year = $last_writ_rec->onduty_year;
			$prev_onduty_month = $last_writ_rec->onduty_month;
			$prev_onduty_day = $last_writ_rec->onduty_day;

			$prev_related_onduty_year = $last_writ_rec->related_onduty_year;
			$prev_related_onduty_month = $last_writ_rec->related_onduty_month;
			$prev_related_onduty_day = $last_writ_rec->related_onduty_day;

                      
			//کسانی که دارای مدرک تحصیلی زیر دیپلم هستند.
			if ($education_level['max_education_level'] < 200) {

				//امتیاز سنوات خدمت در هر سال
				$score += $onduty_year * 10;
				//امتیاز تجربه مربوط و مشابه در هر سال
				$score += $related_onduty_year * 8;
			}

			//کسانی که دارای مدرک تحصیلی دیپلم هستند
			else if ($education_level['max_education_level'] < 300) {

				//امتیاز سنوات خدمت در هر سال
				$score += $onduty_year * 15;
				//امتیاز تجربه مربوط و مشابه در هر سال
				$score += $related_onduty_year * 10;
			} //کسانی که دارای مدرک تحصیلی کاردانی هستند.
			else if ($education_level['max_education_level'] == 300 || $education_level['max_education_level'] == 301) {

				//امتیاز سنوات خدمت در هر سال
				$score += $onduty_year * 20;
				//امتیاز تجربه مربوط و مشابه در هر سال
				$score += $related_onduty_year * 12;
			} //کسانی که دارای مدرک تحصیلی کارشناسی هستند.
			else if ($education_level['max_education_level'] == 400 || $education_level['max_education_level'] == 401) {

				//امتیاز سنوات خدمت در هر سال
				$score += $onduty_year * 25;
				//امتیاز تجربه مربوط و مشابه در هر سال
				$score += $related_onduty_year * 14;
			} //کسانی که دارای مدرک تحصیلی کارشناسی ارشد می باشند.
			else if ($education_level['max_education_level'] == 500 || $education_level['max_education_level'] == 501) {
                          
				//امتیاز سنوات خدمت در هر سال
				$score += $onduty_year * 30;
				//امتیاز تجربه مربوط و مشابه در هر سال
				$score += $related_onduty_year * 16;
                            
			} //کسانی که دارای مدرک تحصیلی دکتری می باشند.
			else if ($education_level['max_education_level'] > 501) {

				//امتیاز سنوات خدمت در هر سال
				$score += $onduty_year * 35;
				//امتیاز تجربه مربوط و مشابه در هر سال
				$score += $related_onduty_year * 18;
			}
                        
                          
		}



		if ($writ_rec['onduty_year'] >= 30) {
			$writ_rec['onduty_year'] = 30;
			$writ_rec['onduty_month'] = 0;
			$writ_rec['onduty_day'] = 0;
		}

		$onduty_year = ($writ_rec['onduty_year'] +
				($writ_rec['onduty_month'] / 12) +
				($writ_rec['onduty_day'] / 365.25));

		if ($writ_rec['related_onduty_year'] >= 30) {
			$writ_rec['related_onduty_year'] = 30;
			$writ_rec['related_onduty_month'] = 0;
			$writ_rec['related_onduty_day'] = 0;
		}

		$related_onduty_year = ($writ_rec['related_onduty_year'] +
				($writ_rec['related_onduty_month'] / 12) +
				($writ_rec['related_onduty_day'] / 365.25));


		$this->param2 = round($related_onduty_year, 2);
		$this->param6 = round($onduty_year, 2);

		$cqry = " SELECT SUM(total_hours) c_hours
			    	 FROM staff s
			    		  INNER JOIN person_courses pc
			    			    ON (s.PersonID = pc.PersonID)
			    	 WHERE s.staff_id = " . $writ_rec['staff_id'] . " AND pc.to_date<= '" . $writ_rec['execute_date'] . "'";
		$cres = parent::runquery($cqry);
		$hours = $cres[0]['c_hours'];
		if ($hours > 1000) {
			$hours = 1000;
		}
		$this->param3 = $hours;

		$score += ($this->param3 * 0.5);
                                    
		$mng_coef = manage_posts::compute_manager_score_percent($writ_rec["staff_id"],$writ_rec["execute_date"]) / 100;

               
                    
		$score = $score + $score * $mng_coef;
		$this->param4 = $mng_coef;
		$this->param5 = $score;

		$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;
		}             
               

		$value = $score * $rial_coef;

		if (!($value > 0)) {
			return false;
		}
		$this->param1 = round($score, 2);
		//حق شاغل باید حداکثر 75 درصد حق شغل باشد.
		$hagh_shoghl_value = manage_writ_item::get_writSalaryItem_value($writ_rec['writ_id'], $writ_rec['writ_ver'], $writ_rec["staff_id"], 34);

		if (($hagh_shoghl_value * 0.75) < $value) {
			$this->param7 = $value - $hagh_shoghl_value;
			$value = $hagh_shoghl_value * 0.75;
		}

		return $value;
	}