Files
accounting_dev_v2/application/migrations/20260907000600_finalize_sales_payment_permissions.php
2026-09-11 16:03:00 +07:00

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.');}
}