update HR dan Payroll
This commit is contained in:
@@ -7,10 +7,6 @@ class Employees extends MY_Controller {
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Data karyawan memuat rekening, BPJS, pajak, dan gaji sehingga
|
||||
// sementara dibatasi ke Admin sampai role HR khusus dikonfigurasi.
|
||||
$this->requireAdmin();
|
||||
|
||||
$this->load->database();
|
||||
$this->load->helper(['url', 'file']);
|
||||
|
||||
@@ -27,7 +23,13 @@ class Employees extends MY_Controller {
|
||||
public function index()
|
||||
{
|
||||
$data = [
|
||||
"active_menu" => "employees"
|
||||
"active_menu" => "employees",
|
||||
"can_manage_all_salary" => $this->canManageAllSalary(),
|
||||
"employee_permissions" => array(
|
||||
'create'=>$this->canEmployee('can_create'),
|
||||
'update'=>$this->canEmployee('can_update'),
|
||||
'delete'=>$this->canEmployee('can_delete')
|
||||
)
|
||||
];
|
||||
|
||||
$data['departments'] = $this->db
|
||||
@@ -59,7 +61,7 @@ class Employees extends MY_Controller {
|
||||
{
|
||||
try {
|
||||
|
||||
$data = $this->db
|
||||
$query = $this->db
|
||||
->select("
|
||||
e.*,
|
||||
|
||||
@@ -87,9 +89,10 @@ class Employees extends MY_Controller {
|
||||
'left'
|
||||
)
|
||||
|
||||
->order_by('e.department_id','ASC')
|
||||
->get()
|
||||
->result();
|
||||
->order_by('e.department_id','ASC');
|
||||
if ($this->db->field_exists('company_id','k_employees')) $query->where('e.company_id',(int)$this->session->userdata('company_id'));
|
||||
$data = $query->get()->result();
|
||||
foreach ($data as $employee) $this->maskRestrictedSalary($employee);
|
||||
|
||||
return $this->json([
|
||||
'status' => true,
|
||||
@@ -141,7 +144,9 @@ class Employees extends MY_Controller {
|
||||
'left'
|
||||
)
|
||||
|
||||
->where('e.id',$id)
|
||||
->where('e.id',$id);
|
||||
if ($this->db->field_exists('company_id','k_employees')) $this->db->where('e.company_id',(int)$this->session->userdata('company_id'));
|
||||
$data = $this->db
|
||||
->get()
|
||||
->row();
|
||||
|
||||
@@ -153,6 +158,7 @@ class Employees extends MY_Controller {
|
||||
]);
|
||||
}
|
||||
|
||||
$this->maskRestrictedSalary($data);
|
||||
return $this->json([
|
||||
'status' => true,
|
||||
'data' => $data
|
||||
@@ -198,6 +204,7 @@ class Employees extends MY_Controller {
|
||||
|
||||
$data['employee_code'] = $employee_code;
|
||||
$data['photo'] = $photo;
|
||||
if ($this->db->field_exists('company_id','k_employees')) $data['company_id']=(int)$this->session->userdata('company_id');
|
||||
|
||||
$this->db->insert('k_employees',$data);
|
||||
$employee_id = $this->db->insert_id();
|
||||
@@ -242,6 +249,10 @@ class Employees extends MY_Controller {
|
||||
]);
|
||||
}
|
||||
|
||||
if (!empty($employee->salary_restricted) && !$this->canManageAllSalary()) {
|
||||
return $this->json(['status'=>false,'message'=>'Gaji karyawan ini bersifat terbatas. Anda memerlukan permission Manage All Gaji untuk mengubah datanya.']);
|
||||
}
|
||||
|
||||
$data = $this->prepareData();
|
||||
|
||||
if (!empty($_FILES['photo_file']['name'])) {
|
||||
@@ -303,6 +314,10 @@ class Employees extends MY_Controller {
|
||||
]);
|
||||
}
|
||||
|
||||
if (!empty($employee->salary_restricted) && !$this->canManageAllSalary()) {
|
||||
return $this->json(['status'=>false,'message'=>'Karyawan dengan gaji terbatas hanya dapat dihapus oleh pengguna dengan permission Manage All Gaji.']);
|
||||
}
|
||||
|
||||
if (
|
||||
!empty($employee->photo)
|
||||
&&
|
||||
@@ -392,7 +407,7 @@ class Employees extends MY_Controller {
|
||||
// =========================================================
|
||||
private function prepareData()
|
||||
{
|
||||
return [
|
||||
$data = [
|
||||
|
||||
'nik' => trim($this->input->post('nik')),
|
||||
|
||||
@@ -438,8 +453,6 @@ class Employees extends MY_Controller {
|
||||
|
||||
'branch_id' => $this->input->post('branch_id'),
|
||||
|
||||
'basic_salary' => $this->input->post('basic_salary') ?: 0,
|
||||
|
||||
'bank_name' => trim(
|
||||
$this->input->post('bank_name')
|
||||
),
|
||||
@@ -464,8 +477,32 @@ class Employees extends MY_Controller {
|
||||
$this->input->post('fingerprint_user_id')
|
||||
),
|
||||
|
||||
'is_active' => $this->input->post('is_active') ?: 1
|
||||
'is_active' => $this->input->post('is_active') === '0' ? 0 : 1
|
||||
];
|
||||
if ($this->db->field_exists('salary_restricted','k_employees') && $this->canManageAllSalary()) {
|
||||
$data['salary_restricted'] = $this->input->post('salary_restricted') ? 1 : 0;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function canManageAllSalary()
|
||||
{
|
||||
return is_master_admin_user() || check_permission('payroll','can_manage_all_salary');
|
||||
}
|
||||
|
||||
private function canEmployee($action)
|
||||
{
|
||||
return is_master_admin_user() || check_permission('hr_employees',$action) || check_permission('employees',$action);
|
||||
}
|
||||
|
||||
private function maskRestrictedSalary($employee)
|
||||
{
|
||||
if (!$employee || empty($employee->salary_restricted) || $this->canManageAllSalary()) return;
|
||||
$employee->basic_salary = null;
|
||||
$employee->bank_name = null;
|
||||
$employee->bank_account_number = null;
|
||||
$employee->bank_account_name = null;
|
||||
$employee->salary_hidden = true;
|
||||
}
|
||||
|
||||
// =========================================================
|
||||
|
||||
Reference in New Issue
Block a user