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