Exemplo n.º 1
0
 /**
  * اين تابع وضعيت حکم را تغيير مي دهد
  * اگر در تاريخ اجراي حکم، احکام ديگري با وضعيت جديد وجود داشته باشند ثبت سابقه می شوند
  * اگر در تاريخ اجراي حکم، احکام ديگري با وضعيت قبلي وجود داشته باشند که ثبت سابقه هستند فعال می شوند
  */
 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;
 }
Exemplo n.º 2
0
	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;
	}
Exemplo n.º 3
0
$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;