/** * اين تابع وضعيت حکم را تغيير مي دهد * اگر در تاريخ اجراي حکم، احکام ديگري با وضعيت جديد وجود داشته باشند ثبت سابقه می شوند * اگر در تاريخ اجراي حکم، احکام ديگري با وضعيت قبلي وجود داشته باشند که ثبت سابقه هستند فعال می شوند */ static function change_writ_state($old_state, $new_state, $writ_id, $writ_ver, $staff_id, $execute_date, $DB = "") { if ($DB == "") { $pdo = PdoDataAccess::getPdoObject(); /*@var $pdo PDO*/ $pdo->beginTransaction(); } else { $pdo = $DB; } if ($old_state > $new_state) { //_______________________________________________ // تغيير وضعيت حکم $query = "UPDATE HRM_writs\n\t\t\t\t\t\tSET state = " . $new_state . "\n\t\t\t\t\t\tWHERE writ_id=" . $writ_id . " AND\n\t\t\t\t\t\t\t writ_ver=" . $writ_ver . " AND\n\t\t\t\t\t\t\t staff_id=" . $staff_id; PdoDataAccess::runquery($query, array()); //.................................................. if ($new_state == 2) { $qry = " UPDATE HRM_writs\n SET writ_recieve_date = NULL\n WHERE writ_id=" . $writ_id . " AND\n\t\t\t\t\t\t\t writ_ver=" . $writ_ver . " AND\n\t\t\t\t\t\t\t staff_id=" . $staff_id; PdoDataAccess::runquery($qry, array()); } if ($new_state == 1) { $qry = " UPDATE HRM_writs\n SET writ_transfer_date = NULL\n WHERE writ_id=" . $writ_id . " AND\n\t\t\t\t\t\t\t writ_ver=" . $writ_ver . " AND\n\t\t\t\t\t\t\t staff_id=" . $staff_id; PdoDataAccess::runquery($qry, array()); } //.................................................. if (ExceptionHandler::GetExceptionCount() != 0) { if ($DB == "") { $pdo->rollBack(); } return false; } //_______________________________________________ // فعال کردن نسخه قبلي حکم $query = "UPDATE HRM_writs\n\t\t\t\t\t\tSET history_only=0\n\t\t\t\t\t\tWHERE staff_id=" . $staff_id . "\n\t\t\t\t\t\t\t AND execute_date='" . $execute_date . "'\n\t\t\t\t\t\t\t AND state=" . $old_state . "\n\t\t\t\t\t\t\t AND (writ_id=" . $writ_id . " OR writ_ver<" . $writ_ver . ")"; PdoDataAccess::runquery($query, array()); if (ExceptionHandler::GetExceptionCount() != 0) { if ($DB == "") { $pdo->rollBack(); } return false; } if (PdoDataAccess::AffectedRows() != 0) { if ($DB == "") { $pdo->commit(); } return true; } //_______________________________________________ //پيدا کردن حکم قبلی و فعال کردن آن $query = "SELECT writ_id , writ_ver , staff_id\n\t\t\t\t\t\tFROM writs\n\t\t\t\t\t\tWHERE \tstaff_id = " . $staff_id . "\n\t\t\t\t\t\t\t\tAND execute_date = '" . $execute_date . "'\n\t\t\t\t\t\t\t\tAND corrective = 0\n\t\t\t\t\t\t\t\tAND state = " . $old_state . "\n\t\t\t\t\t\t\t\tAND (writ_id <> " . $writ_id . ")\n\t\t\t\t\t\tORDER BY writ_id DESC , writ_ver DESC"; $temp = PdoDataAccess::runquery($query, array()); if (count($temp) != 0) { $query = "UPDATE writs\n\t\t\t\t\t\t\tSET history_only = 0\n\t\t\t\t\t\t\tWHERE writ_id = :wid AND writ_ver = :wver AND staff_id = :stid"; PdoDataAccess::runquery($query, array(":wid" => $temp[0]["writ_id"], ":wver" => $temp[0]["writ_ver"], ":stid" => $temp[0]["staff_id"])); if (ExceptionHandler::GetExceptionCount() != 0) { if ($DB == "") { $pdo->rollBack(); } return false; } } if ($DB == "") { $pdo->commit(); } } else { $temp = PdoDataAccess::runquery("SELECT staff_id , writ_id , writ_ver , execute_date\n\t\t\t\tFROM writs\n\t\t\t\tWHERE (history_only=0 OR history_only IS NULL)\n \t\t\t \tAND (dont_transfer = 0 OR dont_transfer IS NULL)\n \t\t\t \tAND (correct_completed !=" . WRIT_CORRECTING . ")\n \t\t\t \tAND writ_id=" . $writ_id . " AND writ_ver=" . $writ_ver . " AND staff_id=" . $staff_id); if (count($temp) == 0) { if ($DB == "") { $pdo->commit(); } return true; } $return = PdoDataAccess::runquery("update writs set state=" . $new_state . " where writ_id=" . $writ_id . " AND writ_ver=" . $writ_ver . " AND staff_id=" . $staff_id); //.................................................. if ($new_state == 2) { $qry = " UPDATE writs\n SET writ_transfer_date = now()\n WHERE writ_id=" . $writ_id . " AND\n\t\t\t\t\t\t\t writ_ver=" . $writ_ver . " AND\n\t\t\t\t\t\t\t staff_id=" . $staff_id; PdoDataAccess::runquery($qry, array()); } if ($new_state == 3) { $qry = " UPDATE writs\n SET writ_recieve_date = now()\n WHERE writ_id=" . $writ_id . " AND\n\t\t\t\t\t\t\t writ_ver=" . $writ_ver . " AND\n\t\t\t\t\t\t\t staff_id=" . $staff_id; PdoDataAccess::runquery($qry, array()); //......................بررسی جهت خالی کردن مرکز هزینه .............. $obj = new manage_writ($writ_id, $writ_ver, $staff_id); $PrevItm = $obj->get_prior_writ("", true); if ($PrevItm == 0 && manage_writ_item::compute_writ_items_sum($writ_id, $writ_ver, $staff_id) > 0) { $qry = " UPDATE writs\n SET cost_center_id = null\n WHERE writ_id=" . $writ_id . " AND\n\t\t\t\t\t\t\t writ_ver=" . $writ_ver . " AND\n\t\t\t\t\t\t\t staff_id=" . $staff_id; PdoDataAccess::runquery($qry, array()); } //...................... } //.................................................. if (ExceptionHandler::GetExceptionCount() != 0) { if ($DB == "") { $pdo->rollBack(); } return false; } $return = PdoDataAccess::runquery("UPDATE writs\n\t\t\t\tSET history_only=1\n\t\t\t\tWHERE staff_id = " . $temp[0]["staff_id"] . " AND\n\t\t\t\t\t\texecute_date = '" . $temp[0]["execute_date"] . "' AND\n\t\t\t\t\t\t((writ_id = " . $temp[0]["writ_id"] . " AND " . $temp[0]["writ_ver"] . ">writ_ver) OR\n\t\t\t\t\t\t\t" . $temp[0]["writ_id"] . ">writ_id) AND\n\t\t\t\t\t\t(history_only=0 OR history_only IS NULL) AND state =" . $new_state); if (ExceptionHandler::GetExceptionCount() != 0) { if ($DB == "") { $pdo->rollBack(); } return false; } if ($DB == "") { $pdo->commit(); } return true; } return true; }
private function compute_salary_item2_17($writ_rec) { //param1 : ضريب (7%) //param2 : فوق العاده جذب //param3 : not used //در صورتي که ضريب به صورت دستي تنظيم نشده است از حکم قبلي بردارد if (!$this->param1) { $prior_writ_obj = manage_writ::get_prior_writ($writ_rec); if (!empty($prior_writ_obj->writ_id)) { $prior_obj = new manage_writ_item($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"], (in_array($writ_rec['person_type'], array(1, 2, 3))) ? SIT_EMPLOYEE_SEVEN_PERCENT_ABSORB_EXTRA : SIT5_EMPLOYEE_SEVEN_PERCENT_ABSORB_EXTRA); } if (empty($prior_writ_obj->writ_id) || $prior_obj->value <= 0) $this->param1 = 0; else $this->param1 = $prior_obj->param1; } // $param1 = 0.07; // $param2 = get_salary_param( SIT_STAFF_ABSOPPTION_EXTRA, $writ_rec['execute_date']); //حقوق مبنا + افزايش سنواتي + حداقل دريافتي + //فوق العاده شغل + فوق العاده شغل برجسته if (in_array($writ_rec['person_type'], array(1, 2, 3))) { $this->param2 = 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_ANNUAL_INC . ' , ' . SIT_STAFF_JOB_EXTRA . ' , ' . SIT_STAFF_DOMINANT_JOB_EXTRA . ' , ' . SIT_STAFF_MIN_PAY . ' )'); } if (in_array($writ_rec['person_type'], array(5, 6))) { $this->param2 = manage_writ_item::compute_writ_items_sum($writ_rec["writ_id"], $writ_rec["writ_ver"], $writ_rec["staff_id"], '( ' . SIT5_STAFF_BASE_SALARY . ' , ' . SIT5_STAFF_ANNUAL_INC . ' , ' . SIT5_STAFF_JOB_EXTRA . ' , ' . SIT5_STAFF_DOMINANT_JOB_EXTRA . ' , ' . SIT5_STAFF_MIN_PAY . ' )'); } //چون به کساني که تفاوت تطبيق مي گيرند حداقل دريافتي تعلق نمي گيرد //بنابراين جمع چهار قلم //حقوق مبنا + افزايش سنواتي + فوق العاده شغل + فوق العاده شغل برجسته //ممکن است از حداقل حقوق کمترشود که در اين موارد بايد از حداقل حقوق استفاده شود. $min_salary = manage_salary_params::get_salaryParam_value("", $writ_rec["person_type"].",101", SPT_MIN_SALARY, $writ_rec['execute_date']); if ($this->param2 < $min_salary) $this->param2 = $min_salary; $value = $this->param1 * $this->param2; if (!($value > 0)) { parent::PushException(SEVEN_PERCENT_ABSORB_ITEM_CALC_ERR); return false; } return $value; }
$drp_emp_state = manage_domains::DRP_EMP_STATE_WST("emp_state", $objWrt->emp_state); $drp_emp_mode = manage_domains::DRP_EMP_MODE_WST("emp_mode", $objWrt->emp_mode); $drp_science_level = manage_domains::DRP_Science_Level("science_level", $objWrt->science_level); //............................................ if (!empty($writ_id)) { $drp_not_assigned_items = manage_writ_item::DRP_get_not_assigned_items("salary_item_type_id", $writ_id, $writver, $staff_id); } if (!$is_new_corrective) { /*unset($writ_rec); $writ_rec['writ_id'] = $_REQUEST["WID"] ; $writ_rec['writ_ver'] = $writver ; $writ_rec['staff_id'] = $objWrt->staff_id ; $writ_rec['execute_date'] = $exedate ; $writ_rec['corrective_writ_id'] = $objWrt->corrective_writ_id ; $writ_rec['corrective_writ_ver'] = $objWrt->corrective_writ_ver ;*/ $prior_writ_object = $objWrt->get_prior_writ(); if ($prior_writ_object) { $dg = new sadaf_datagrid("PreW", $js_prefix_address . "../data/writ.data.php?task=selectItemWrit&WID=" . $prior_writ_object->writ_id . "&WVER=" . $prior_writ_object->writ_ver . "&STID=" . $prior_writ_object->staff_id . "&Base=" . $prior_writ_object->base, "PreWGRID"); $col = $dg->addColumn("عنوان", "full_title", "string"); $col->summaryRenderer = "function(){return 'جمع';}"; $col->width = 35; $col = $dg->addColumn("مبلغ", "value", "int"); $col->summaryType = GridColumn::SummeryType_sum; $col->summaryRenderer = "function(v,p,r){return WritForm.currencyRender(v,p,r);}"; $col->width = 15; $dg->EnableSummaryRow = true; $dg->EnableSearch = false; $dg->EnablePaging = false; $dg->title = "اقلام حقوقی حکم قبلی"; $dg->AddCurrencyStringRow(1); $dg->width = 340;