function GroupIssueWrit() { ini_set('max_execution_time', 1000); //300 seconds = 5 minutes ini_set("memory_limit", '500M'); $where = "s.person_type=" . $_POST["person_type"]; $whereParams = array(); //------------------------ Make Where Clause ---------------------- if (!empty($_REQUEST["ouid"])) { $where .= " AND ( o.ouid = :ouid OR o.parent_path LIKE :ouid2 OR o.parent_path LIKE :ouid3 OR o.parent_path LIKE :ouid4 ) "; $whereParams[":ouid"] = $_REQUEST["ouid"]; $whereParams[":ouid2"] = "%," . $_REQUEST["ouid"] . ",%"; $whereParams[":ouid3"] = "%" . $_REQUEST["ouid"] . ",%"; $whereParams[":ouid4"] = "%," . $_REQUEST["ouid"] . "%"; } if (!empty($_POST["from_PersonID"])) { $where .= " AND s.staff_id >= :f_personid"; $whereParams[":f_personid"] = $_POST["from_PersonID"]; } if (!empty($_POST["to_PersonID"])) { $where .= " AND s.staff_id <= :t_personid"; $whereParams[":t_personid"] = $_POST["to_PersonID"]; } $where .= " AND " . QueryHelper::makeWhereOfCheckboxList("emp_state", "emp_state"); //----------------------------------------------------------------- //$execute_date = DateModules::Shamsi_to_Miladi($_POST["execute_date"]); //----------------------------------------------------------------- /*$sql = 'SELECT s.staff_id, s.last_writ_id, s.last_writ_ver, p.pfname , p.plname FROM staff s JOIN writs w ON (s.staff_id=w.staff_id AND s.last_writ_id = w.writ_id AND s.last_writ_ver = w.writ_ver) JOIN persons p ON(s.PersonID = p.PersonID and s.person_type=p.person_type)'; $sql .= (!empty($_REQUEST["ouid"])) ? "LEFT OUTER JOIN org_new_units o ON (s.ouid=o.ouid)" : ""; //JOIN Basic_Info bi ON bi.typeid = 6 and w.education_level = bi.InfoID and bi.MasterID = 1 $sql .= ' WHERE s.last_writ_id > 0 AND s.last_writ_ver > 0 AND w.cost_center_id != 46 AND w.emp_mode in('.EMP_MODE_PRACTITIONER.', '.EMP_MODE_EDUCATIONAL_MISSION.', '.EMP_MODE_INTERNAL_STUDY_OPPORTUNITY.', '.EMP_MODE_RUSTICATION_EXTERNAL_STUDY_OPPORTUNITY.', '.EMP_MODE_INTERNAL_STUDY_MISSION.', '.EMP_MODE_EXTERNAL_STUDY_MISSION.', '.EMP_MODE_ENGAGEMENT.') AND ' . $where; */ $whereParams = array(); $sql = " select s.staff_id,\n s.last_writ_id,\n s.last_writ_ver,\n p.pfname ,\n p.plname , writ_type_id, writ_subtype_id ,\n g2j(wr.execute_date) execute_date \n\n from writs w inner join staff s\n on s.staff_id=w.staff_id AND s.last_writ_id = w.writ_id AND\n s.last_writ_ver = w.writ_ver\n inner join writs wr on s.staff_id = wr.staff_id\ninner join persons p on s.personid = p.personid\n\n where w.emp_state =4 and\n wr.writ_type_id = 5 and\n wr.writ_subtype_id = 145 and\n wr.execute_date > '2014-08-22' and\n wr.execute_date < '2014-11-22' and\n wr.history_only = 0 "; $staff_dt = PdoDataAccess::runquery_fetchMode($sql, $whereParams); unset($sql); unset($where); unset($whereParams); if ($staff_dt->rowCount() == 0) { echo "موارد انتخابی شما هیج فردی را برای صدور حکم شامل نمی شود."; die; } $log_obj = new manage_writ_group_issue_log(); $send_letter_no = $_POST["send_letter_no"]; $unsuccess_count = 0; if (empty($_POST["step"])) { $_POST["step"] = 1; } $staff_count = $staff_dt->rowCount(); $writ_obj = ""; for ($index = 0; $index < $staff_count; $index++) { $staff_row = $staff_dt->fetch(); /*if(isset($_POST["prevent_two_writ_at_one_day"])) { if(count(PdoDataAccess::runquery(" select * from writs where staff_id=" . $staff_dt[$index]["staff_id"] . " and execute_date = '" . $execute_date . "'")) != 0) continue; }*/ //............................. if (!empty($_POST["to_send_letter_no"])) { if ($send_letter_no > $_POST["to_send_letter_no"]) { ExceptionHandler::PushException(EXCEED_OF_END_SEND_LETTER_NO_ERR); break; } } //............................. /*$writ_obj = manage_writ::IssueWrit($staff_row["staff_id"], $_POST["writ_type_id"], $_POST["writ_subtype_id"], $_POST["execute_date"], $_POST["person_type"], DateModules::Shamsi_to_Miladi($_POST["issue_date"]), false, false, $send_letter_no); */ $_POST["issue_date"] = DateModules::shNow(); $execute_date = $staff_row["execute_date"]; $arr = preg_split('/\\//', $execute_date); $execute_date = '1394/' . $arr[1] . "/" . $arr[2]; $writ_obj = manage_writ::IssueWrit($staff_row["staff_id"], $staff_row["writ_type_id"], $staff_row["writ_subtype_id"], $execute_date, $_POST["person_type"], DateModules::Shamsi_to_Miladi($_POST["issue_date"]), false, false, $send_letter_no); if (!$writ_obj) { $log_obj->make_unsuccess_rows($staff_row); continue; } manage_writ_item::compute_writ_items($writ_obj->writ_id, $writ_obj->writ_ver, $writ_obj->staff_id); /*@var $writ_obj manage_writ*/ if ($writ_obj !== false && $writ_obj->writ_id > 0) { $staff_row['writ_id'] = $writ_obj->writ_id; $log_obj->make_success_row($staff_row); $send_letter_no = !empty($_POST["step"]) && !empty($_POST["send_letter_no"]) ? $send_letter_no + $_POST["step"] : ""; } else { $log_obj->make_unsuccess_rows($staff_row); if (!empty($_POST["stop_error_count"]) && $unsuccess_count >= $_POST["stop_error_count"]) { ExceptionHandler::PushException(TOO_MANY_ERR); break; } } unset($writ_obj); } $log_obj->finalize(); $log_obj->make_result(); die; }
/** * از تاريخ شروع اصلاح ، صدور حکم اصلاحي را شروع مي کند. * * @param unknown_type $staff_id * @param unknown_type $corrective_date * @param unknown_type $writ_rec * @param unknown_type $writ_type_id * @param unknown_type $writ_subtype_id * @param unknown_type $base * @param unknown_type $send_letter_no * @param unknown_type $issue_date * @param unknown_type $base_writ_issue * @return unknown */ public function CorrectiveIssueAction($base_writ_issue) { $stobj = new manage_staff("", "", $this->staff_id); if ($stobj->staff_id == null || $stobj->staff_id == "") { parent::PushException(ERROR_STAFF_ID_NOT_FOUND); return false; } $staff_rec = $stobj; $PersonID = $staff_rec->PersonID; $this->person_type = $staff_rec->person_type; //ابتدا چک مي شود که در تاريخ شروع اصلاح حکمي وجود دارد يا خير ؟ $exist_writ_rec = manage_writ::Is_Writ_For_Correct($this->staff_id, $this->corrective_date); // چنانچه حکمي نباشد و صدور حکم پايه نيز تيک نخورده باشد خطا مي دهد. if ($exist_writ_rec == NULL && !$base_writ_issue) { parent::PushException("در تاريخ شروع اصلاح حکم وجود ندارد ."); return false; } else { if ($base_writ_issue) { $exist_writ_rec = manage_writ::IssueWrit($this->staff_id, $this->writ_type_id, $this->writ_subtype_id, $this->corrective_date, $this->person_type, $this->issue_date, false, false, $this->send_letter_no, $this->writ_id, $this->writ_ver, $this->base); if ($exist_writ_rec != false) { manage_writ_item::compute_writ_items($exist_writ_rec->writ_id, $exist_writ_rec->writ_ver, $exist_writ_rec->staff_id); return $exist_writ_rec; /*header("location: ../ui/view_writ.php?WID=" . $exist_writ_rec->writ_id . "&WVER=" . $exist_writ_rec->writ_ver . "&STID=" . $exist_writ_rec->staff_id); die();*/ } return $exist_writ_rec; } elseif ($exist_writ_rec != NULL) { //در اين قسمت حکمي را که روي ان ورژن مي خورد فقط ثبت سابقه مي کند. $exist_writ_rec->history_only = "1"; PdoDataAccess::update("writs", $exist_writ_rec, "writ_id=:wid AND writ_ver=:wver AND staff_id=:stid\n\t\t\t\tAND state=" . WRIT_PERSONAL, array(":wid" => $exist_writ_rec->writ_id, ":wver" => $exist_writ_rec->writ_ver, ":stid" => $exist_writ_rec->staff_id)); //$exist_writ_rec->send_letter_no = null ; $exist_writ_rec->history_only = 0; //وضعيت حكم به نسخه جديد حكم منتقل نمي شود $exist_writ_rec->state = null; $exist_writ_rec->correct_completed = null; $exist_writ_rec->writ_ver = $exist_writ_rec->writ_ver + 1; $exist_writ_rec->corrective_date = DateModules::Shamsi_to_Miladi($this->corrective_date); $exist_writ_rec->corrective_writ_id = $this->writ_id; $exist_writ_rec->corrective_writ_ver = $this->writ_ver; $exist_writ_rec->correct_completed = WRIT_CORRECTING; //آخرين مدرک تحصيلي فرد را بر مي دارد. $education_level_rec = manage_person_education::GetEducationLevelByDate($PersonID, $exist_writ_rec->execute_date); $exist_writ_rec->education_level = $education_level_rec['max_education_level']; $exist_writ_rec->sfid = $education_level_rec['sfid']; $exist_writ_rec->sbid = $education_level_rec['sbid']; //تعداد فرزندان محاسبه مي گردد. $where = "PersonID=" . $PersonID . "\n\t\t\t\t\t AND (dependency = 5 or dependency = 6)\n\t\t\t\t\t AND birth_date <='" . $exist_writ_rec->execute_date . "'"; $no = manage_person_dependency::CountDependency($where); $exist_writ_rec->children_count = $no; //تعداد افراد تحت کفالت $exist_writ_rec->included_children_count = manage_person_dependency::bail_count($PersonID, $exist_writ_rec->person_type, $exist_writ_rec->execute_date, $exist_writ_rec->execute_date); if ($exist_writ_rec->person_type == HR_EMPLOYEE || $exist_writ_rec->person_type == HR_CONTRACT) { /*if($lastWritObj->execute_date > '2014-03-20') $this->base = $lastWritObj->base ; else {*/ $Pqry = " select sex , military_duration_day ,military_duration \n\t\t\t\t\t\tfrom persons p inner join staff s on p.personid = s.personid \n\t\t\t\t\t\t\t\twhere s.staff_id=" . $exist_writ_rec->staff_id; $Pres = parent::runquery($Pqry); if ($Pres[0]["sex"] == 1 && $exist_writ_rec->person_type == 2 && ($Pres[0]["military_duration_day"] > 0 || $Pres[0]["military_duration"] > 0)) { $totalDayWrt = DateModules::ymd_to_days($exist_writ_rec->onduty_year, $exist_writ_rec->onduty_month, $exist_writ_rec->onduty_day); $totalDaySar = DateModules::ymd_to_days(0, $Pres[0]["military_duration"], $Pres[0]["military_duration_day"]); $resDay = $totalDayWrt - $totalDaySar; $Vyear = 0; $Vmonth = $Vday = 0; DateModules::day_to_ymd($resDay, $Vyear, $Vmonth, $Vday); $Vyear = $Vyear; } else { /*$totalDayWrt = DateModules::ymd_to_days($this->onduty_year, $this->onduty_month , $this->onduty_day ) ; $diffYear = DateModules::getDateDiff(DateModules::Now(),'2014-03-21'); $remainDay = $totalDayWrt - $diffYear ; DateModules::day_to_ymd($remainDay, $Ryear, $Rmonth, $Rday) ; $Vyear = $Ryear ;*/ $Vyear = $exist_writ_rec->onduty_year; } $exist_writ_rec->base = $Vyear + 1; /*}*/ } //$this->set_writ_sign_info(); /* if($exist_writ_rec->person_type == HR_PROFESSOR ) { $this->writ_signature_post_owner = 'محمد کافی' ; $this->writ_signature_post_title = ' رئیس دانشگاه '; } else { $exist_writ_rec->writ_signature_post_owner = ($this->issue_date > '2014-02-01') ? 'ابوالقاسم ساقی' : WRIT_SIGNATURE_POST_OWNER ; }*/ //.......... if ($exist_writ_rec->person_type == HR_PROFESSOR && $exist_writ_rec->staff_id != '111551') { $exist_writ_rec->writ_signature_post_owner = 'محمد کافی'; $exist_writ_rec->writ_signature_post_title = ' رئیس دانشگاه'; //$this->writ_signature_post_title = ' رئیس دانشگاه '; } else { if ($exist_writ_rec->person_type == HR_PROFESSOR && $exist_writ_rec->staff_id == '111551') { //$this->writ_signature_post_owner = 'محمدجواد وریدی' ; $exist_writ_rec->writ_signature_post_owner = 'ابوالفضل باباخانی'; $exist_writ_rec->writ_signature_post_title = 'معاون اداری ومالی دانشگاه'; } else { $exist_writ_rec->writ_signature_post_owner = $exist_writ_rec->issue_date > '2014-02-01' ? 'ابوالقاسم ساقی' : WRIT_SIGNATURE_POST_OWNER; } } //............. $return = parent::insert("writs", $exist_writ_rec); if ($return == 0) { parent::PushException("ايجاد با شکست مواجه شد"); return false; } manage_writ_item::compute_writ_items($exist_writ_rec->writ_id, $exist_writ_rec->writ_ver, $exist_writ_rec->staff_id); return $exist_writ_rec; /* header("location: ../ui/view_writ.php?WID=" . $exist_writ_rec->writ_id . "&WVER=" . $exist_writ_rec->writ_ver . "&STID=" . $exist_writ_rec->staff_id); die();*/ } } }