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

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.
}
}