function compute_professors_salary_params($from_base, $to_base, $from_science_level, $to_science_level, $work_state_id, $work_city_id, $execute_date, $emp_state = EMP_STATE_APPROVED_CEREMONIOUS, $compute_heiat_omana_absorb_extra = true)
{
    $query = 'SELECT  validity_start_date,
    				validity_end_date,
    				salary_item_type_id
    		FROM  salary_item_types
    		WHERE  salary_item_type_id IN ( ' . SIT_PROFESSOR_BASE_SALARY . ',
                                                ' . SIT_PROFESSOR_BAD_WEATHER_EXTRA . ',
                                                ' . SIT_PROFESSOR_ABSOPPTION_EXTRA . ',
                                                ' . SIT_PROFESSOR_SPECIAL_EXTRA . ',
                                                ' . SIT_PROFESSOR_PARTICULAR_EXTRA . ',
                                                ' . SIT_PROFESSOR_HEIAT_OMANA_SPECIAL_EXTRA . '
                                                )';
    $resultSet = PdoDataAccess::runquery($query);
    foreach ($resultSet as $result) {
        switch ($result['salary_item_type_id']) {
            case SIT_PROFESSOR_BASE_SALARY:
                $is_valid_base_salary = manage_salary_item_type::validate_salary_item_type_id($result['validity_start_date'], $result['validity_end_date'], $execute_date);
                break;
            case SIT_PROFESSOR_BAD_WEATHER_EXTRA:
                $is_valid_bad_weather_extra = manage_salary_item_type::validate_salary_item_type_id($result['validity_start_date'], $result['validity_end_date'], $execute_date);
                break;
            case SIT_PROFESSOR_ABSOPPTION_EXTRA:
                $is_valid_absopption_extra = manage_salary_item_type::validate_salary_item_type_id($result['validity_start_date'], $result['validity_end_date'], $execute_date);
                break;
            case SIT_PROFESSOR_SPECIAL_EXTRA:
                $is_valid_special_extra = manage_salary_item_type::validate_salary_item_type_id($result['validity_start_date'], $result['validity_end_date'], $execute_date);
                break;
            case SIT_PROFESSOR_PARTICULAR_EXTRA:
                $is_valid_particular_extra = manage_salary_item_type::validate_salary_item_type_id($result['validity_start_date'], $result['validity_end_date'], $execute_date);
                break;
            case SIT_PROFESSOR_HEIAT_OMANA_SPECIAL_EXTRA:
                $is_valid_heiat_omana_absorb_extera = manage_salary_item_type::validate_salary_item_type_id($result['validity_start_date'], $result['validity_end_date'], $execute_date);
        }
    }
    $counter = 0;
    for ($science_level = $to_science_level; $science_level >= $from_science_level; $science_level--) {
        for ($base = $from_base; $base <= $to_base; $base++) {
            $writ_rec['base'] = $base;
            $writ_rec['science_level'] = $science_level;
            $writ_rec['work_city_id'] = $work_city_id;
            $writ_rec['work_state_id'] = $work_state_id;
            $writ_rec['execute_date'] = $execute_date;
            $writ_rec['emp_state'] = $emp_state;
            /*	if($compute_heiat_omana_absorb_extra && $is_valid_heiat_omana_absorb_extera){
            				//آخرين حكم سال قبل
                                        $base_writ_rec['base']          = $base;
                                        $base_writ_rec['science_level'] = $science_level;
                                        $base_writ_rec['work_city_id']  = $work_city_id;
                                        $base_writ_rec['work_state_id'] = $work_state_id;
                                        $base_writ_rec['emp_state']	  	= $emp_state ;
             
                                                                         
                                        $this_writ_year = substr(DateModules::miladi_to_shamsi($execute_date),0,4);
            			    $one_year_ago = $this_writ_year - 1;
            			    $one_year_ago_last_day_writ = '29/12/'.$one_year_ago;
            			    $Gone_year_ago_last_day = DateModules::shamsi_to_miladi($one_year_ago_last_day_writ);
            			    $base_writ_rec['execute_date'] = $Gone_year_ago_last_day ;
             
            			    if($base_writ_rec)
            				    $rec = compute_professors_salary_params(
            				    				$base_writ_rec['base'],
            				    				$base_writ_rec['base'],
            				    				$base_writ_rec['science_level'],
            				    				$base_writ_rec['science_level'],
            				    				$base_writ_rec['work_state_id'],
            				    				$base_writ_rec['work_city_id'],
            				    				$base_writ_rec['execute_date'] ,
            				    				$base_writ_rec['emp_state'],
            				    				false);
            			    $devotion_extra = 0 ;
            			   	$param1 =
            					$rec[0]['base_salary'] +
            					$rec[0]['absorb_extra'] +
            					$rec[0]['vijeh_extra'] +
            					$rec[0]['special_extra'] +
            					$devotion_extra ;
            				$heiat_omana_absorb_extra = $param1 * 0.02 ;
            			}
            			else
            				$heiat_omana_absorb_extra = 0 ;*/
            if ($is_valid_base_salary == true) {
                $base_salary = compute_salary_item1_01($writ_rec);
            } else {
                $base_salary = 0;
            }
            if ($is_valid_absopption_extra == true) {
                $absorb_extra = round($base_salary * manage_salary_params::get_salaryParam_value("", HR_PROFESSOR, SPT_PROFESSOR_ABSORB_COEF, $writ_rec['execute_date'], $writ_rec['science_level'], $writ_rec['work_city_id'], $writ_rec['work_state_id']));
            } else {
                $absorb_extra = 0;
            }
            if ($is_valid_bad_weather_extra == true) {
                $weather_bad_extra = round($base_salary * manage_salary_params::get_salaryParam_value("", HR_PROFESSOR, SPT_PROFESSOR_WHEATHER_COEF, $writ_rec['execute_date'], $writ_rec['work_city_id'], $writ_rec['work_state_id']));
            } else {
                $weather_bad_extra = 0;
            }
            if ($is_valid_special_extra == true) {
                $special_extra = round($base_salary * manage_salary_params::get_salaryParam_value("", HR_PROFESSOR, SPT_SPECIAL_EXTRA_COEF, $writ_rec['execute_date'], $writ_rec['science_level']));
            } else {
                $special_extra = 0;
            }
            if ($is_valid_particular_extra == true) {
                $vijeh_extra_old = $base_salary * manage_salary_params::get_salaryParam_value("", HR_PROFESSOR, SPT_PARTICULAR_EXTRA, $writ_rec['execute_date'], $writ_rec['science_level']);
                if ($writ_rec['execute_date'] > '2010-03-20') {
                    $vijeh_extra_new = $base_salary * manage_salary_params::get_salaryParam_value("", HR_PROFESSOR, SPT_PARTICULAR_EXTRA_NEW, $writ_rec['execute_date'], $writ_rec['science_level']);
                    $Mvalue = manage_salary_params::get_salaryParam_value("", HR_PROFESSOR, MAX_SPT_PARTICULAR_EXTRA_NEW, $writ_rec['execute_date'], $writ_rec['science_level']);
                    if ($vijeh_extra_new > $Mvalue) {
                        $vijeh_extra_new = $Mvalue;
                    }
                    $vijeh_extra = $vijeh_extra_new + $vijeh_extra_old;
                } else {
                    $vijeh_extra = $vijeh_extra_old;
                }
            } else {
                $vijeh_extra = 0;
            }
            $salary_params[$counter]['base_salary'] = $base_salary;
            $salary_params[$counter]['absorb_extra'] = $absorb_extra;
            $salary_params[$counter]['weather_bad_extra'] = $weather_bad_extra;
            $salary_params[$counter]['special_extra'] = $special_extra;
            // $salary_params[$counter]['heiat_omana_absorb_extra']= $heiat_omana_absorb_extra ;
            $salary_params[$counter]['vijeh_extra'] = $vijeh_extra;
            $salary_params[$counter]['total_sum'] = $base_salary + $absorb_extra + $weather_bad_extra + $special_extra + $vijeh_extra;
            // + $heiat_omana_absorb_extra;
            $salary_params[$counter]['base'] = $base;
            switch ($science_level) {
                case INSTRUCTOR_EDUCATOR:
                    $salary_params[$counter]['science_level'] = 'مربي آموزشيار';
                    break;
                case EDUCATOR:
                    $salary_params[$counter]['science_level'] = 'مربي';
                    break;
                case MASTERSTROKE:
                    $salary_params[$counter]['science_level'] = 'استاديار';
                    break;
                case LECTURESHIP:
                    $salary_params[$counter]['science_level'] = 'دانشيار';
                    break;
                case MASTERSHIP:
                    $salary_params[$counter]['science_level'] = 'استاد';
                    break;
            }
            $counter++;
        }
    }
    return $salary_params;
}
function GetCostCode()
{
    $where = 'where cc.globality ="GLOBAL" AND cc.IsActive="YES" ';
    if (isset($_REQUEST['CostID']) && $_REQUEST['CostID'] != NULL) {
        $where .= ' AND CostID=' . $_REQUEST['CostID'];
    }
    $whereParam = array();
    if (isset($_REQUEST["query"]) && $_REQUEST["query"] != "") {
        $where .= " AND (cc.CostCode LIKE :qry )";
        $whereParam = array(":qry" => $_REQUEST["query"] . "%");
    }
    $temp = manage_salary_item_type::GetAllCostCode($where, $whereParam);
    $no = count($temp);
    $temp = array_slice($temp, $_GET["start"], $_GET["limit"]);
    echo dataReader::getJsonData($temp, $no, $_GET["callback"]);
    die;
}