38 lines
1.4 KiB
PHP
38 lines
1.4 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
class Migration_Expand_item_barcode_status extends CI_Migration
|
|
{
|
|
public function up()
|
|
{
|
|
if (!$this->db->table_exists('item_barcodes')) {
|
|
return;
|
|
}
|
|
|
|
// Database produksi lama hanya mengenal status barcode siap pakai.
|
|
// `pending` diperlukan untuk barang yang sudah diterima secara fisik,
|
|
// tetapi belum boleh dipakai/dijual sebelum serial number dilengkapi.
|
|
$this->db->query("ALTER TABLE item_barcodes
|
|
MODIFY status ENUM('pending','available','reserved','installed','sold_out')
|
|
NOT NULL DEFAULT 'available'");
|
|
|
|
if ($this->db->table_exists('goods_receipt_lines') &&
|
|
$this->db->table_exists('purchase_order_lines') &&
|
|
$this->db->field_exists('source_receipt_line_id', 'item_barcodes')) {
|
|
$this->db->query("UPDATE item_barcodes ib
|
|
JOIN goods_receipt_lines grl ON grl.id=ib.source_receipt_line_id
|
|
JOIN purchase_order_lines pol ON pol.id=grl.po_line_id
|
|
SET ib.status='pending'
|
|
WHERE pol.need_serial_number=1
|
|
AND (ib.serial_number IS NULL OR ib.serial_number='')
|
|
AND ib.qty_sisa>0");
|
|
}
|
|
}
|
|
|
|
public function down()
|
|
{
|
|
// Tidak dipersempit kembali karena dapat merusak barcode pending yang
|
|
// telah menjadi bagian audit trail penerimaan.
|
|
}
|
|
}
|