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