23 lines
1.7 KiB
PHP
23 lines
1.7 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
class Migration_Finalize_sales_payment_permissions extends CI_Migration
|
|
{
|
|
private function index($table,$name,$columns)
|
|
{
|
|
if(!$this->db->table_exists($table))return;foreach($this->db->query("SHOW INDEX FROM `{$table}`")->result()as$i)if($i->Key_name===$name)return;$this->db->query("ALTER TABLE `{$table}` ADD KEY `{$name}` ({$columns})");
|
|
}
|
|
|
|
public function up()
|
|
{
|
|
if($this->db->table_exists('roles'))foreach($this->db->select('id,permissions,is_super_admin')->get('roles')->result()as$role){
|
|
if((int)$role->is_super_admin===1)continue;$permissions=json_decode((string)$role->permissions,true);if(!is_array($permissions))continue;$invoice=$permissions['invoices']??array();$cash=$permissions['cash_bank']??array();if(!is_array($invoice)||!is_array($cash))continue;
|
|
if(in_array('can_view',$invoice,true)&&in_array('can_post',$cash,true)&&!in_array('can_post',$invoice,true)){$permissions['invoices'][]='can_post';$this->db->where('id',$role->id)->update('roles',array('permissions'=>json_encode($permissions),'updated_at'=>date('Y-m-d H:i:s')));}
|
|
}
|
|
$this->index('payments','idx_customer_payment_list','`company_id`,`customer_id`,`status`,`tanggal`,`id`');
|
|
if($this->db->table_exists('payment_allocations')){$fields=$this->db->list_fields('payment_allocations');$columns=in_array('company_id',$fields,true)?'`company_id`,`invoice_id`,`payment_id`':'`invoice_id`,`payment_id`';$this->index('payment_allocations','idx_payment_allocation_invoice',$columns);}
|
|
}
|
|
|
|
public function down(){throw new RuntimeException('Gunakan backup database untuk rollback permission pembayaran Penjualan.');}
|
|
}
|