Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
 /**
  * از تاريخ شروع اصلاح ، صدور حکم اصلاحي را شروع مي کند.
  *
  * @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();*/
         }
     }
 }