requirePermission('jurnal');
$this->load->model('DynamicModel', 'dm');
$this->load->library('ChartOfAccountsService');
if (!$this->session->userdata('logged_in')) {
redirect('auth');
}
}
public function index()
{
if($this->session->userdata('role') != 'Admin'){
show_error('Akses ditolak', 403);
}
$data = [
"active_menu" => "accounts",
"parent_accounts" => $this->db->get('accounts')->result()
];
$this->load->view('partials/header', $data);
$this->load->view('accounts/layout', $data);
$this->load->view('partials/footer');
}
public function get_data()
{
$this->dm->setTable('accounts')
->setColumn(
[null,'kode_akun','priority','nama_akun','tipe','posisi','kategori','is_header','is_hidden','is_active',null],
['kode_akun','nama_akun','tipe'],
['kode_akun'=>'ASC']
);
$list = $this->dm->get_datatables();
$data = [];
$no = $_POST['start'];
foreach ($list as $row) {
$no++;
$data[] = [
$no,
$row->kode_akun,
$row->priority,
$row->nama_akun,
ucfirst($row->tipe),
ucfirst($row->posisi),
ucfirst($row->kategori),
$row->is_header ? 'Header' : 'Transaksi',
$row->is_hidden ? 'Disembunyikan' : 'Ditampilkan',
$row->is_active ? 'Aktif' : 'Nonaktif',
'
'
];
}
echo json_encode([
"draw" => $_POST['draw'],
"recordsTotal" => $this->dm->count_all(),
"recordsFiltered" => $this->dm->count_filtered(),
"data" => $data
]);
}
// ================= SAVE
public function save()
{
try {
$id = $this->chartofaccountsservice->save($this->input->post(), null, $this->session->userdata('user_id'));
log_activity('Accounts', 'create', 'Menambah akun ID '.$id);
return json_response(true, 'Akun berhasil disimpan.', array('id' => $id));
} catch (Throwable $exception) { return business_exception_response($exception); }
}
// ================= UPDATE
public function update()
{
try {
$id = $this->chartofaccountsservice->save($this->input->post(), $this->input->post('id'), $this->session->userdata('user_id'));
log_activity('Accounts', 'update', 'Memperbarui akun ID '.$id);
return json_response(true, 'Akun berhasil diperbarui.', array('id' => $id));
} catch (Throwable $exception) { return business_exception_response($exception); }
}
public function detail($id)
{
$data = $this->dm->setTable('accounts')->find($id);
echo json_encode($data);
}
public function delete($id)
{
if (strtoupper($this->input->method()) !== 'POST') {
return json_response(false, 'Metode request tidak diizinkan.', array(), 405);
}
try {
$this->chartofaccountsservice->delete($id, $this->session->userdata('user_id'));
log_activity('Accounts', 'delete', 'Menghapus akun ID '.$id, 'success');
return json_response(true, 'Akun berhasil dihapus.');
} catch (Throwable $exception) { return business_exception_response($exception); }
}
}