Update besar apk finance
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
class Migration_Create_professional_roles_permissions extends CI_Migration
|
||||
{
|
||||
private function rights($map){$out=array();foreach($map as$key=>$level){$actions=array('can_view');if($level==='write')$actions=array('can_view','can_create','can_update','can_export','can_import');if($level==='approve')$actions=array('can_view','can_create','can_update','can_approve','can_post','can_export','can_import');$out[$key]=$actions;}return json_encode($out);}
|
||||
public function up(){
|
||||
if(!$this->db->field_exists('permissions','roles'))$this->db->query("ALTER TABLE roles ADD permissions LONGTEXT NULL AFTER nama_role");
|
||||
if(!$this->db->field_exists('description','roles'))$this->db->query("ALTER TABLE roles ADD description VARCHAR(255) NULL AFTER permissions");
|
||||
if(!$this->db->field_exists('is_active','roles'))$this->db->query("ALTER TABLE roles ADD is_active TINYINT(1) NOT NULL DEFAULT 1 AFTER description");
|
||||
$roles=array(
|
||||
'Admin'=>array('Semua konfigurasi, transaksi dan administrasi pengguna.',array()),
|
||||
'Accounting Manager'=>array('Kontrol accounting, approval, closing, laporan, budget dan pajak.',array('dashboard'=>'write','approvals'=>'approve','invoices'=>'approve','purchases'=>'approve','items'=>'view','asset'=>'approve','cash_bank'=>'approve','jurnal'=>'approve','reports'=>'write','budgets'=>'approve','taxes'=>'approve')),
|
||||
'Finance & Treasury'=>array('Kas, bank, pembayaran, penerimaan dan posisi kas.',array('dashboard'=>'view','approvals'=>'approve','invoices'=>'write','purchases'=>'write','cash_bank'=>'approve','jurnal'=>'write','reports'=>'view')),
|
||||
'AR / Sales Billing'=>array('Customer, penjualan, invoice, piutang dan penerimaan.',array('dashboard'=>'view','invoices'=>'approve','cash_bank'=>'view','jurnal'=>'view','reports'=>'view')),
|
||||
'AP / Purchasing'=>array('Supplier, purchase workflow, hutang dan pembayaran supplier.',array('dashboard'=>'view','purchases'=>'approve','items'=>'view','cash_bank'=>'view','jurnal'=>'view','reports'=>'view')),
|
||||
'Inventory & Warehouse'=>array('Persediaan, gudang, barcode, mutasi dan stock opname.',array('dashboard'=>'view','items'=>'approve','purchases'=>'view','asset'=>'view','reports'=>'view')),
|
||||
'Asset Officer'=>array('Register aset, penyusutan, maintenance dan asset opname.',array('dashboard'=>'view','asset'=>'approve','items'=>'view','purchases'=>'view','jurnal'=>'view','reports'=>'view')),
|
||||
'HR & Payroll'=>array('Data karyawan, absensi dan payroll.',array('dashboard'=>'view','employees'=>'approve','cash_bank'=>'view','jurnal'=>'view','reports'=>'view')),
|
||||
'Tax Officer'=>array('Master pajak, transaksi pajak dan pelaporan pajak.',array('dashboard'=>'view','taxes'=>'approve','invoices'=>'view','purchases'=>'view','jurnal'=>'view','reports'=>'view')),
|
||||
'Auditor / Read Only'=>array('Akses baca dan export tanpa mengubah transaksi.',array('dashboard'=>'view','approvals'=>'view','invoices'=>'view','purchases'=>'view','items'=>'view','asset'=>'view','cash_bank'=>'view','jurnal'=>'view','reports'=>'view','budgets'=>'view','taxes'=>'view','employees'=>'view')),
|
||||
'Management Viewer'=>array('Dashboard, approval dan laporan manajemen.',array('dashboard'=>'view','approvals'=>'approve','reports'=>'view','budgets'=>'view')),
|
||||
'Keuangan'=>array('Role legacy keuangan; gunakan Finance & Treasury untuk user baru.',array('dashboard'=>'view','invoices'=>'write','purchases'=>'write','cash_bank'=>'approve','jurnal'=>'write','reports'=>'view')),
|
||||
'Gudang'=>array('Role legacy gudang; gunakan Inventory & Warehouse untuk user baru.',array('dashboard'=>'view','items'=>'approve','purchases'=>'view','asset'=>'view','reports'=>'view'))
|
||||
);
|
||||
foreach($roles as$name=>$definition){$data=array('permissions'=>$this->rights($definition[1]),'description'=>$definition[0],'is_active'=>1);$row=$this->db->get_where('roles',array('nama_role'=>$name))->row();if($row)$this->db->where('id',$row->id)->update('roles',$data);else{$data['nama_role']=$name;$this->db->insert('roles',$data);}}
|
||||
$this->db->query("CREATE OR REPLACE SQL SECURITY INVOKER VIEW v_users AS SELECT u.id,u.username,u.password,u.role_id,u.created_at,u.nama,r.nama_role,COALESCE(r.permissions,'{}') permissions,r.is_active role_is_active FROM users u LEFT JOIN roles r ON r.id=u.role_id");
|
||||
}
|
||||
public function down(){throw new RuntimeException('Gunakan backup untuk rollback role dan permission.');}
|
||||
}
|
||||
Reference in New Issue
Block a user