Exemplo n.º 1
0
 /**
  * تنها با استفاده از اين تابع مي توان حکم جديد صادر کرد
  *
  * @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;
 }