Пример #1
0
	private function compute_salary_item5_33($writ_rec) {

		//param1 : مبلغ فوق العاده تعديل سال قبل
		//param2 : ضريب

		$this_writ_year = substr(DateModules::miladi_to_shamsi($writ_rec['execute_date']), 0, 4);

		$one_year_ago = $this_writ_year - 1;
		$one_year_ago_last_day = $one_year_ago . "/12/29";
		$Gone_year_ago_last_day = DateModules::shamsi_to_miladi($one_year_ago_last_day);

		//آخرين حکم قبل از سال شخص را استخراج مي کند.
		$prior_writObj = manage_writ::get_last_writ_by_date($writ_rec['staff_id'], $Gone_year_ago_last_day);

		//مقدار قلم فوق العاده تعديل آخرين حکم سال قبل را استخراج مي کند.
		//اين قلم بر اساس بخشنامه افزايش حقوق سال 87 اضافه شد.
		$this->param1 = manage_writ_item::get_writSalaryItem_value($prior_writObj->writ_id, $prior_writObj->writ_ver, $prior_writObj->staff_id, SIT5_STAFF_EXTRA_ADJUST);
		$this->param2 = 1.5;

		$value = $this->param1 * $this->param2;

		if (!($value > 0)) {
			return false;
		}

		return $value;
	}
Пример #2
0
function corrective_writ_detail($writ_id, $writ_ver, $staff_id, $execute_date)
{
    ob_start();
    // get corrected writs by a specfied writ
    $query = "SELECT w.* ,  wst.* , wsi.param3 \n\n        FROM   writs w\n        \t   LEFT OUTER JOIN writ_subtypes wst\n               \t\tON ((w.writ_type_id = wst.writ_type_id) AND\n                    \t(w.writ_subtype_id = wst.writ_subtype_id) AND\n                        (w.person_type = wst.person_type))\n\t\t\t   LEFT JOIN writ_salary_items wsi \n\t\t\t\t\tON w.staff_id = wsi.staff_id  AND w.writ_id = wsi.writ_id AND w.writ_ver = wsi.writ_ver AND wsi.salary_item_type_id = 10364 \n\t\t\t\t\t\n        WHERE  w.corrective_writ_id = {$writ_id}   AND\n               w.corrective_writ_ver = {$writ_ver} AND\n\t\t\t   w.staff_id = {$staff_id} AND\n               w.writ_ver > 1\n        ORDER BY execute_date";
    $corrected_writs = PdoDataAccess::runquery($query);
    $writ_count = count($corrected_writs);
    if ($writ_count == 0) {
        return;
    }
    $persent = 75 / $writ_count;
    echo "<tr>\n\t\t\t<td style='border-top:1px solid black' colspan=2>نوع حکم</td>";
    $width = round(400 / count($corrected_writs));
    for ($i = 0; $i < count($corrected_writs); $i++) {
        echo "<td style='border-top:1px solid black;width:" . $width . "px'>" . $corrected_writs[$i]["print_title"] . "</td>";
    }
    echo "</tr>";
    //----------- get all writ salary items of specified person_type -----------
    $minExecuteDate = $corrected_writs[0]["execute_date"];
    $writs = "";
    $prevwrit = "";
    for ($i = 0; $i < count($corrected_writs); $i++) {
        $writs .= "'" . $corrected_writs[$i]["staff_id"] . "-" . $corrected_writs[$i]["writ_id"] . "-" . $corrected_writs[$i]["writ_ver"] . "',";
        $prevwrit .= "'" . $corrected_writs[$i]["staff_id"] . "-" . $corrected_writs[$i]["writ_id"] . "-" . ($corrected_writs[$i]["writ_ver"] - 1) . "',";
        /*$minExecuteDate = DateModules::CompareDate($corrected_writs[$i]["execute_date"], $minExecuteDate) < 0 ?
        		$corrected_writs[$i]["execute_date"] : $minExecuteDate;*/
    }
    /*$query = "SELECT *
         FROM   salary_item_types sit
         WHERE  person_type = " . $corrected_writs[0]["person_type"] . " AND
         	   compute_place = " . SALARY_ITEM_COMPUTE_PLACE_WRIT . " AND
         	   validity_start_date <= '" . $execute_date . "' AND
         	   (validity_end_date IS NULL OR validity_end_date = '0000-00-00' OR
    		(validity_end_date >= '" . $minExecuteDate . "' AND validity_end_date >= '" . $execute_date . "'))
         ORDER BY print_order";*/
    $writs = substr($writs, 0, strlen($writs) - 1);
    $prevwrit = substr($prevwrit, 0, strlen($prevwrit) - 1);
    $query = "select distinct sit.* from writ_salary_items si join salary_item_types sit using(salary_item_type_id)\n\t\t\t\twhere concat(si.staff_id,'-',si.writ_id,'-',si.writ_ver) in (" . $writs . "," . $prevwrit . ")\n\t\t\t\t\t\t\t\tAND compute_place = " . SALARY_ITEM_COMPUTE_PLACE_WRIT . "\n\t\t\t\t\t\t\t\tAND person_type in (" . $corrected_writs[0]["person_type"] . " , 101 ) ORDER BY print_order";
    $salary_item_types = PdoDataAccess::runquery($query);
    //--------------------------------------------------------------------------
    $current_execute_date = $prior_execute_date = $current_field = $prior_field = $field_title = "";
    $current_writ_items = $prior_writ_items = array();
    $current_item_sum = $prior_item_sum = "";
    $field_title2 = "";
    for ($i = 0; $i < count($corrected_writs); $i++) {
        $current_writ = $corrected_writs[$i];
        if ($current_writ['writ_ver'] > 1) {
            $prior_writ = new manage_writ($current_writ["writ_id"], $current_writ["writ_ver"] - 1, $current_writ["staff_id"]);
            if ($current_writ["person_type"] != 1) {
                $qry = " select param3 from writ_salary_items\n\t\t\t\t\t\t\t\twhere writ_id= " . $current_writ["writ_id"] . " and \n\t\t\t\t\t\t\t\t\t\twrit_ver = " . ($current_writ["writ_ver"] - 1) . " and staff_id = " . $current_writ["staff_id"] . " and salary_item_type_id = 10364 ";
                $ResPrev = PdoDataAccess::runquery($qry);
                if (empty($ResPrev[0]['param3'])) {
                    $ResPrev[0]['param3'] = ' ';
                }
            }
            $current_execute_date .= "<td>" . DateModules::miladi_to_shamsi($current_writ["execute_date"]) . "</td>";
            $prior_execute_date .= "<td>" . DateModules::miladi_to_shamsi($prior_writ->execute_date) . "</td>";
            if ($current_writ["person_type"] == HR_EMPLOYEE || $current_writ["person_type"] == HR_PROFESSOR) {
                if ($current_writ["person_type"] == HR_EMPLOYEE && DateModules::CompareDate($execute_date, "2009-03-21") >= 0 && (DateModules::CompareDate($execute_date, "2013-02-19") < 0 || DateModules::CompareDate($execute_date, "2013-03-20") > 0 && DateModules::CompareDate($execute_date, "2014-03-20") < 0)) {
                    $field_title = 'طبقه';
                    $current_field .= "<td>" . ($current_writ["cur_group"] - 4) . "</td>";
                    $prior_field .= "<td>" . ($prior_writ->cur_group - 4) . "</td>";
                } else {
                    if ($current_writ["person_type"] == HR_EMPLOYEE && DateModules::CompareDate($execute_date, "2009-03-21") < 0) {
                        $field_title = 'گروه';
                        $current_field .= "<td>" . $current_writ["cur_group"] . "</td>";
                        $prior_field .= "<td>" . $prior_writ->cur_group . "</td>";
                    } else {
                        $field_title2 = "";
                        $field_title = 'پایه';
                        $current_writ["base"] = DateModules::CompareDate($current_writ["execute_date"], "2013-02-19") >= 0 && $current_writ["person_type"] != 1 ? substr($current_writ["param3"], 0, 2) : $current_writ["base"];
                        $prior_writ_base = DateModules::CompareDate($current_writ["execute_date"], "2013-02-19") >= 0 && $current_writ["person_type"] != 1 ? substr($ResPrev[0]['param3'], 0, 2) : $prior_writ->base;
                        $cf = DateModules::CompareDate($current_writ["execute_date"], "2013-02-19") < 0 && $current_writ["person_type"] == HR_EMPLOYEE ? "-" : $current_writ["base"];
                        $pf = DateModules::CompareDate($prior_writ->execute_date, "2013-02-19") < 0 && $current_writ["person_type"] == HR_EMPLOYEE ? "-" : $prior_writ_base;
                        $current_field .= "<td>" . $cf . "</td>";
                        $prior_field .= "<td>" . $pf . "</td>";
                        if (DateModules::CompareDate($current_writ["execute_date"], "2013-02-19") < 0 || DateModules::CompareDate($execute_date, "2013-03-20") > 0 && DateModules::CompareDate($execute_date, "2014-03-20") < 0) {
                            $field_title2 = 'طبقه';
                            $cf2 = DateModules::CompareDate($current_writ["execute_date"], "2013-02-19") < 0 || DateModules::CompareDate($execute_date, "2013-03-20") > 0 && DateModules::CompareDate($execute_date, "2014-03-20") < 0 ? $current_writ["cur_group"] - 4 : "-";
                            $pf2 = DateModules::CompareDate($prior_writ->execute_date, "2013-02-19") < 0 || DateModules::CompareDate($execute_date, "2013-03-20") > 0 && DateModules::CompareDate($execute_date, "2014-03-20") < 0 ? $prior_writ->cur_group - 4 : "-";
                            $current_field2 .= "<td>" . $cf2 . "</td>";
                            $prior_field2 .= "<td>" . $pf2 . "</td>";
                        } elseif ((DateModules::CompareDate($current_writ["execute_date"], "2013-02-19") >= 0 || DateModules::CompareDate($execute_date, "2013-03-21") < 0 || DateModules::CompareDate($execute_date, "2014-03-20") >= 0) && $field_title2 != "") {
                            $current_field2 .= "<td>" . "-" . "</td>";
                            $prior_field2 .= "<td>" . "-" . "</td>";
                        }
                    }
                }
            } else {
                $field_title = "";
                $field_title2 = "";
            }
            $sum1 = $sum2 = 0;
            $item46 = $item10374 = 0;
            $item10329 = $item10370 = $item51 = 0;
            $item10330 = $item10371 = $item50 = 0;
            foreach ($salary_item_types as $element) {
                if (in_array("46", $element)) {
                    $item46 = 1;
                }
                if (in_array("10374", $element)) {
                    $item10374 = 1;
                }
                if (in_array("10329", $element)) {
                    $item10329 = 1;
                }
                if (in_array("10370", $element)) {
                    $item10370 = 1;
                }
                if (in_array("51", $element)) {
                    $item51 = 1;
                }
                if (in_array("10330", $element)) {
                    $item10330 = 1;
                }
                if (in_array("10371", $element)) {
                    $item10371 = 1;
                }
                if (in_array("50", $element)) {
                    $item50 = 1;
                }
            }
            for ($j = 0; $j < count($salary_item_types); $j++) {
                if ($salary_item_types[$j]["salary_item_type_id"] == 10374 && $item46 == 1) {
                    continue;
                }
                if ($salary_item_types[$j]["salary_item_type_id"] == 10370 && $item51 == 1) {
                    continue;
                }
                if ($salary_item_types[$j]["salary_item_type_id"] == 10370 && $item10329 == 1) {
                    continue;
                }
                if ($salary_item_types[$j]["salary_item_type_id"] == 10371 && $item50 == 1) {
                    continue;
                }
                if ($salary_item_types[$j]["salary_item_type_id"] == 10371 && $item10330 == 1) {
                    continue;
                }
                if (!isset($current_writ_items[$j])) {
                    $current_writ_items[$j] = "";
                    $prior_writ_items[$j] = "";
                }
                $val = manage_writ_item::get_writSalaryItem_value($current_writ["writ_id"], $current_writ["writ_ver"], $current_writ["staff_id"], $salary_item_types[$j]["salary_item_type_id"]);
                if ($item46 == 1 && $item10374 == 1 && !($val > 0) && ($salary_item_types[$j]["salary_item_type_id"] == 46 || $salary_item_types[$j]["salary_item_type_id"] == 10374)) {
                    $val = manage_writ_item::get_writSalaryItem_value($current_writ["writ_id"], $current_writ["writ_ver"], $current_writ["staff_id"], 10374);
                }
                if ($item51 == 1 && $item10370 == 1 && !($val > 0) && ($salary_item_types[$j]["salary_item_type_id"] == 51 || $salary_item_types[$j]["salary_item_type_id"] == 10370)) {
                    $val = manage_writ_item::get_writSalaryItem_value($current_writ["writ_id"], $current_writ["writ_ver"], $current_writ["staff_id"], 10370);
                }
                if ($item50 == 1 && $item10371 == 1 && !($val > 0) && ($salary_item_types[$j]["salary_item_type_id"] == 50 || $salary_item_types[$j]["salary_item_type_id"] == 10371)) {
                    $val = manage_writ_item::get_writSalaryItem_value($current_writ["writ_id"], $current_writ["writ_ver"], $current_writ["staff_id"], 10371);
                }
                $current_writ_items[$j] .= "<td class='money'>" . ($val == 0 ? "-" : CurrencyModulesclass::toCurrency($val)) . "</td>";
                $sum2 += $val;
                $val = manage_writ_item::get_writSalaryItem_value($prior_writ->writ_id, $prior_writ->writ_ver, $prior_writ->staff_id, $salary_item_types[$j]["salary_item_type_id"]);
                if ($item46 == 1 && $item10374 == 1 && !($val > 0) && ($salary_item_types[$j]["salary_item_type_id"] == 46 || $salary_item_types[$j]["salary_item_type_id"] == 10374)) {
                    $val = manage_writ_item::get_writSalaryItem_value($prior_writ->writ_id, $prior_writ->writ_ver, $prior_writ->staff_id, 10374);
                }
                if ($item51 == 1 && $item10370 == 1 && !($val > 0) && ($salary_item_types[$j]["salary_item_type_id"] == 51 || $salary_item_types[$j]["salary_item_type_id"] == 10370)) {
                    $val = manage_writ_item::get_writSalaryItem_value($prior_writ->writ_id, $prior_writ->writ_ver, $prior_writ->staff_id, 10370);
                }
                if ($item50 == 1 && $item10371 == 1 && !($val > 0) && ($salary_item_types[$j]["salary_item_type_id"] == 50 || $salary_item_types[$j]["salary_item_type_id"] == 10371)) {
                    $val = manage_writ_item::get_writSalaryItem_value($prior_writ->writ_id, $prior_writ->writ_ver, $prior_writ->staff_id, 10371);
                }
                $prior_writ_items[$j] .= "<td class='money'>" . ($val == 0 ? "-" : CurrencyModulesclass::toCurrency($val)) . "</td>";
                $sum1 += $val;
            }
            $current_item_sum .= "<td class='money'>" . CurrencyModulesclass::toCurrency($sum2) . "</td>";
            $prior_item_sum .= "<td class='money'>" . CurrencyModulesclass::toCurrency($sum1) . "</td>";
        }
    }
    echo "<tr>\n\t\t\t<td style='width:80px' rowspan=2>تاريخ اجراي حکم</td>\n\t\t\t<td style='width:20px'>قبلي</td>\n\t\t\t" . $prior_execute_date . "\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>فعلی</td>\n\t\t\t" . $current_execute_date . "\n\t\t</tr>";
    if ($field_title != "") {
        echo "<tr>\n\t\t\t<td style='width:80px'  rowspan=2> " . $field_title . "</td>\n\t\t\t<td>قبلی</td>\n\t\t\t" . $prior_field . "\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>فعلی</td>\n\t\t\t" . $current_field . "\n\t\t</tr>";
    }
    if ($field_title2 != "" && $corrected_writs[0]["person_type"] != 1) {
        echo "<tr>\n\t\t\t<td style='width:80px'  rowspan=2> " . $field_title2 . "</td>\n\t\t\t<td>قبلی</td>\n\t\t\t" . $prior_field2 . "\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>فعلی</td>\n\t\t\t" . $current_field2 . "\n\t\t</tr>";
    }
    for ($i = 0; $i < count($salary_item_types); $i++) {
        if ($salary_item_types[$i]["salary_item_type_id"] == 10374 && $item46 == 1) {
            continue;
        }
        if ($salary_item_types[$i]["salary_item_type_id"] == 10370 && $item51 == 1) {
            continue;
        }
        if ($salary_item_types[$i]["salary_item_type_id"] == 10371 && $item50 == 1) {
            continue;
        }
        echo "\n\t\t<tr>\n\t\t\t<td style='width:80px'  rowspan=2>" . $salary_item_types[$i]["print_title"] . "</td>\n\t\t\t<td>قبلي</td>\n\t\t\t" . $prior_writ_items[$i] . "\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>فعلی</td>\n\t\t\t" . $current_writ_items[$i] . "\n\t\t</tr>";
    }
    echo "<tr>\n\t\t\t<td style='width:80px' rowspan=2>جمع کل</td>\n\t\t\t<td>قبلي</td>\n\t\t\t" . $prior_item_sum . "\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td>فعلی</td>\n\t\t\t" . $current_item_sum . "\n\t\t</tr>";
    $ret = ob_get_contents();
    ob_end_clean();
    return $ret;
}