48 lines
1.9 KiB
PHP
48 lines
1.9 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
class Migration_Backfill_purchase_payable_company extends CI_Migration
|
|
{
|
|
public function up()
|
|
{
|
|
if (!$this->db->table_exists('companies')) return;
|
|
$company = $this->db->order_by('id')->get('companies')->row();
|
|
if (!$company) return;
|
|
$fallback = (int)$company->id;
|
|
|
|
if ($this->db->table_exists('purchase_orders') && $this->db->field_exists('company_id', 'purchase_orders')) {
|
|
$this->db->query(
|
|
'UPDATE purchase_orders po LEFT JOIN suppliers s ON s.id=po.supplier_id '.
|
|
'SET po.company_id=COALESCE(s.company_id,?) WHERE po.company_id IS NULL',
|
|
array($fallback)
|
|
);
|
|
}
|
|
|
|
if ($this->db->table_exists('supplier_invoices') && $this->db->field_exists('company_id', 'supplier_invoices')) {
|
|
$this->db->query(
|
|
'UPDATE supplier_invoices si '.
|
|
'LEFT JOIN supplier_invoice_lines sil ON sil.supplier_invoice_id=si.id '.
|
|
'LEFT JOIN purchase_order_lines pol ON pol.id=sil.po_line_id '.
|
|
'LEFT JOIN purchase_orders po ON po.id=pol.purchase_order_id '.
|
|
'LEFT JOIN suppliers s ON s.id=si.supplier_id '.
|
|
'SET si.company_id=COALESCE(po.company_id,s.company_id,?) '.
|
|
'WHERE si.company_id IS NULL',
|
|
array($fallback)
|
|
);
|
|
}
|
|
|
|
if ($this->db->table_exists('supplier_payments') && $this->db->field_exists('company_id', 'supplier_payments')) {
|
|
$this->db->query(
|
|
'UPDATE supplier_payments sp LEFT JOIN suppliers s ON s.id=sp.supplier_id '.
|
|
'SET sp.company_id=COALESCE(s.company_id,?) WHERE sp.company_id IS NULL',
|
|
array($fallback)
|
|
);
|
|
}
|
|
}
|
|
|
|
public function down()
|
|
{
|
|
// Backfill tenant tidak dibalik agar transaksi tidak kembali tanpa perusahaan.
|
|
}
|
|
}
|