/** * تنها با استفاده از اين تابع مي توان حکم جديد صادر کرد * * @param int $staff_id * @param int $writ_type_id * @param int $writ_subtype_id * @param ShamsiDate $execute_date * @param boolean $history_only * @param boolean $corrective * @param string $send_letter_no * @param ShamsiDate $issue_date * @param int $corrective_writ_id * @param int $corrective_writ_ver * * @return boolean : قرار مي دهد ExceptionHandler اگر صدور حکم با موفقيت انجام نشود توضيح خطا را در */ public static function IssueWrit($staff_id, $writ_type_id, $writ_subtype_id, $execute_date, $person_type, $issue_date = Null, $history_only = false, $corrective = false, $send_letter_no = NULL, $corrective_writ_id = NULL, $corrective_writ_ver = NULL, $contract_start_date = NULL, $contract_end_date = NULL, $indiv = NULL) { //-------------------------------------------new-------------------------- if ($issue_date != NULL) { if (DateModules::CompareDate(DateModules::Shamsi_to_Miladi($issue_date), date('Y-m-d')) == 1) { parent::PushException(ER_ISSUE_DATE_IS_NOT_VALID); return false; } } $obj = new manage_writ(); if ($corrective !== true) { $corrective = false; } if ($history_only !== true) { $history_only = false; } if (!is_bool($corrective) || !is_bool($history_only)) { parent::PushException("ورودي هاي تابع نا معتبر مي باشد"); return false; } require_once '../../persons/class/person.class.php'; require_once '../../persons/class/education.class.php'; require_once '../../persons/class/dependent.class.php'; //--------------------------------------- $obj->staff_id = $staff_id; $obj->person_type = $person_type; $obj->writ_type_id = $writ_type_id; $obj->writ_subtype_id = $writ_subtype_id; $issue_date = !empty($issue_date) ? str_replace("/", "-", DateModules::Shamsi_to_Miladi($issue_date)) : "0000-00-00"; $obj->issue_date = $issue_date == "0000-00-00" ? date("Y-m-d") : $issue_date; $obj->execute_date = str_replace("/", "-", DateModules::Shamsi_to_Miladi($execute_date)); $obj->history_only = $history_only == true ? "1" : "0"; $obj->corrective = $corrective == true ? "1" : "0"; if ($corrective_writ_id != null) { $obj->corrective_writ_id = $corrective_writ_id; } else { $obj->corrective_writ_id = PDONULL; } if ($corrective_writ_ver != null) { $obj->corrective_writ_ver = $corrective_writ_ver; } else { $obj->corrective_writ_ver = PDONULL; } /*if($send_letter_no != null) $obj->send_letter_no = $send_letter_no; else $obj->send_letter_no = PDONULL ; */ if (!empty($corrective_writ_id) && !empty($corrective_writ_ver)) { $obj->corrective_writ_id = $corrective_writ_id; $obj->corrective_writ_ver = $corrective_writ_ver; $obj->correct_completed = WRIT_CORRECTING; } else { $obj->correct_completed = WRIT_NOT_CORRECTED; } //....................................... if (!empty($contract_start_date)) { if ($obj->execute_date < DateModules::Shamsi_to_Miladi($contract_start_date)) { list($year, $month, $day) = explode('/', DateModules::miladi_to_shamsi($obj->execute_date)); $Sdate = $year . "/01/01"; $Edate = $year . "/12/29"; $obj->contract_start_date = DateModules::Shamsi_to_Miladi($Sdate); } else { $obj->contract_start_date = DateModules::Shamsi_to_Miladi($contract_start_date); } } else { list($year, $month, $day) = explode('/', DateModules::miladi_to_shamsi($obj->execute_date)); $Sdate = $year . "/01/01"; $Edate = $year . "/12/29"; $obj->contract_start_date = DateModules::Shamsi_to_Miladi($Sdate); $obj->contract_end_date = DateModules::Shamsi_to_Miladi($Edate); } if (!empty($contract_end_date)) { if ($obj->execute_date < DateModules::Shamsi_to_Miladi($contract_start_date)) { $obj->contract_end_date = DateModules::Shamsi_to_Miladi($Edate); } else { $obj->contract_end_date = DateModules::Shamsi_to_Miladi($contract_end_date); } } //___________________________________________________________________________________________________ //عدم امکان صدور یک حکم زمانی که حکمی با آن تاریخ اجرا وجود دارد که هنوز باز است $query = "select *\n\t\t\t\t\t\t\tfrom HRM_writs where execute_date=? AND staff_id=? AND history_only <> 1 AND\n\t\t\t\t\t\t\t\t writ_type_id = " . $obj->writ_type_id . " AND writ_subtype_id = " . $obj->writ_subtype_id . " AND state=" . WRIT_PERSONAL; $DT = parent::runquery($query, array($obj->execute_date, $obj->staff_id)); if (count($DT) != 0 && $obj->execute_date >= '2005-03-20') { parent::PushException(EXIST_OPEN_WRIT); return false; } //....................................... $return = $obj->IssueWritAction($indiv); $daObj = new DataAudit(); $daObj->ActionType = DataAudit::Action_add; $daObj->MainObjectID = $obj->staff_id; $daObj->TableName = "HRM_writs"; $daObj->execute(); if (!$return) { return false; } return $obj; }