Ejemplo n.º 1
0
 /**
  * Add log when udpate policy
  *
  * @since 0.1
  *
  * @param  integer $policy_id
  * @param  array $fields
  *
  * @return void
  */
 public function update_policy($policy_id, $fields)
 {
     if (!$policy_id) {
         return;
     }
     $old_policy = \WeDevs\ERP\HRM\Models\Leave_Policies::find($policy_id)->toArray();
     unset($old_policy['created_at'], $old_policy['updated_at'], $fields['instant_apply']);
     $old_policy['effective_date'] = erp_format_date($old_policy['effective_date'], 'Y-m-d');
     $fields['effective_date'] = erp_format_date($fields['effective_date'], 'Y-m-d');
     if (isset($fields['activate']) && $fields['activate'] == 1) {
         unset($fields['execute_day'], $old_policy['execute_day']);
     }
     $changes = $this->get_array_diff($fields, $old_policy, true);
     if (empty($changes['old_val']) && empty($changes['new_val'])) {
         $message = false;
     } else {
         array_walk($changes, function (&$key) {
             if (isset($key['color'])) {
                 $key['calender_color'] = sprintf('<div style="width:60px; height:20px; background-color:%s"></div>', $key['color']);
                 unset($key['color']);
             }
             if (isset($key['department'])) {
                 if ($key['department'] == '-1') {
                     $key['department'] = __('All Department', 'wp-erp');
                 } else {
                     $department = new \WeDevs\ERP\HRM\Department(intval($key['department']));
                     $key['department'] = $department->title;
                 }
             }
             if (isset($key['designation'])) {
                 if ($key['designation'] == '-1') {
                     $key['designation'] = __('All Designation', 'wp-erp');
                 } else {
                     $designation = new \WeDevs\ERP\HRM\Designation(intval($key['designation']));
                     $key['designation'] = $designation->title;
                 }
             }
             if (isset($key['location'])) {
                 if ($key['location'] == '-1') {
                     $key['location'] = __('All Location', 'wp-erp');
                 } else {
                     $location = erp_company_get_location_dropdown_raw();
                     $key['location'] = $location[$key['location']];
                 }
             }
             if (isset($key['gender'])) {
                 $gender = erp_hr_get_genders(__('All', 'wp-erp'));
                 $key['gender'] = $gender[$key['gender']];
             }
             if (isset($key['marital'])) {
                 $marital = erp_hr_get_marital_statuses(__('All', 'wp-erp'));
                 $key['marital'] = $marital[$key['marital']];
             }
             if (isset($key['activate'])) {
                 $activate = array('1' => __('Immediately', 'wp-erp'), '2' => __('After X Days', 'wp-erp'), '3' => __('Manually', 'wp-erp'));
                 if ($key['activate'] == 2) {
                     $key['activation'] = str_replace('X', $key['execute_day'], $activate[$key['activate']]);
                 } else {
                     $key['activation'] = $activate[$key['activate']];
                 }
                 unset($key['activate']);
                 unset($key['execute_day']);
             }
             if (isset($key['effective_date'])) {
                 $key['policy_effective_date'] = erp_format_date($key['effective_date']);
                 unset($key['effective_date']);
             }
         });
         $message = sprintf('<strong>%s</strong> policy has been edited', $old_policy['name']);
     }
     if ($message) {
         erp_log()->add(['sub_component' => 'leave', 'message' => $message, 'created_by' => get_current_user_id(), 'changetype' => 'edit', 'old_value' => $changes['old_val'] ? base64_encode(maybe_serialize($changes['old_val'])) : '', 'new_value' => $changes['new_val'] ? base64_encode(maybe_serialize($changes['new_val'])) : '']);
     }
 }
Ejemplo n.º 2
0
/**
 * Assign for schedule leave policy
 *
 * @since 0.1
 *
 * @return void
 */
function erp_hr_apply_policy_schedule()
{
    $active_employes = \WeDevs\ERP\HRM\Models\Employee::select('user_id')->where('status', 'active')->get()->toArray();
    $policies = \WeDevs\ERP\HRM\Models\Leave_Policies::get()->toArray();
    $selected_policy = [];
    $today = date('Y-m-d', strtotime(current_time('mysql')));
    foreach ($active_employes as $key => $employee) {
        $employee_obj = new \WeDevs\ERP\HRM\Employee(intval($employee['user_id']));
        $employee_data = $employee_obj->to_array();
        $department = isset($employee_data['work']['department']) ? $employee_data['work']['department'] : '';
        $designation = isset($employee_data['work']['designation']) ? $employee_data['work']['designation'] : '';
        $gender = isset($employee_data['personal']['gender']) ? $employee_data['personal']['gender'] : '';
        $location = isset($employee_data['work']['location']) ? $employee_data['work']['location'] : '';
        $marital = isset($employee_data['personal']['marital_status']) ? $employee_data['personal']['marital_status'] : '';
        $hire_date = isset($employee_data['work']['hiring_date']) ? $employee_data['work']['hiring_date'] : '';
        $current_time = current_time('mysql');
        $daydiff = count(erp_extract_dates($hire_date, $current_time)) - 1;
        foreach ($policies as $key => $policy) {
            if ($policy['activate'] == 1) {
                erp_hr_apply_new_employee_policy($employee_data, $policy);
                continue;
            }
            $effective_date = date('Y-m-d', strtotime($policy['effective_date']));
            if (strtotime($effective_date) < 0 && $today < $effective_date) {
                continue;
            }
            if ($daydiff <= $policy['execute_day']) {
                continue;
            }
            if ($policy['department'] != '-1' && $policy['department'] != $department) {
                continue;
            }
            if ($policy['designation'] != '-1' && $policy['designation'] != $designation) {
                continue;
            }
            if ($policy['gender'] != '-1' && $policy['gender'] != $gender) {
                continue;
            }
            if ($policy['location'] != '-1' && $policy['location'] != $location) {
                continue;
            }
            if ($policy['marital'] != '-1' && $policy['marital'] != $marital) {
                continue;
            }
            erp_hr_apply_leave_policy(intval($employee['user_id']), $policy);
        }
    }
}
Ejemplo n.º 3
0
 /**
  * Get available day for users leave policy
  *
  * @since 0.1
  *
  * @return json
  */
 public function leave_available_days()
 {
     $this->verify_nonce('wp-erp-hr-nonce');
     $employee_id = isset($_POST['employee_id']) && $_POST['employee_id'] ? intval($_POST['employee_id']) : false;
     $policy_id = isset($_POST['policy_id']) && $_POST['policy_id'] ? intval($_POST['policy_id']) : false;
     $available = 0;
     if (!$employee_id) {
         $this->send_error('Please select an employee', 'wp-erp');
     }
     if (!$policy_id) {
         $this->send_error('Please select a policy', 'wp-erp');
     }
     $balance = erp_hr_leave_get_balance($employee_id);
     if (array_key_exists($policy_id, $balance)) {
         $available = $balance[$policy_id]['entitlement'] - $balance[$policy_id]['total'];
     }
     if ($available < 0) {
         $content = sprintf('<span class="description red">%d %s</span>', number_format_i18n($available), __('days are available', 'wp-erp'));
     } elseif ($available > 0) {
         $content = sprintf('<span class="description green">%d %s</span>', number_format_i18n($available), __('days are available', 'wp-erp'));
     } else {
         $leave_policy_day = \WeDevs\ERP\HRM\Models\Leave_Policies::select('value')->where('id', $policy_id)->pluck('value');
         $content = sprintf('<span class="description">%d %s</span>', number_format_i18n($leave_policy_day), __('days are available', 'wp-erp'));
     }
     $this->send_success($content);
 }