38 lines
2.2 KiB
PHP
38 lines
2.2 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
class Migration_Fixed_asset_decimal_values extends CI_Migration
|
|
{
|
|
public function up()
|
|
{
|
|
if (!$this->db->table_exists('assets')) return;
|
|
if ($this->db->table_exists('legacy_migration_adjustments')) {
|
|
$this->db->query("INSERT IGNORE INTO legacy_migration_adjustments(entity_type,entity_id,field_name,old_value,new_value,reason,adjusted_at)
|
|
SELECT 'asset',id,'qty',IF(qty IS NULL,'NULL',CAST(qty AS CHAR)),'1','Qty aset legacy kosong dinormalisasi menjadi satu unit',NOW()
|
|
FROM assets WHERE qty IS NULL OR qty<=0");
|
|
}
|
|
// Aset lama tanpa kolom qty berasal dari satu baris per aset, sehingga satu
|
|
// baris tersebut secara aman diperlakukan sebagai satu unit.
|
|
$this->db->query('UPDATE assets SET qty=1 WHERE qty IS NULL OR qty<=0');
|
|
$this->db->query('UPDATE assets SET harga_per_unit=COALESCE(nilai_perolehan,0) WHERE harga_per_unit IS NULL');
|
|
$this->db->query('UPDATE assets SET nilai_perolehan=COALESCE(harga_per_unit*qty,0) WHERE nilai_perolehan IS NULL');
|
|
$this->db->query('UPDATE assets SET nilai_residu=0 WHERE nilai_residu IS NULL');
|
|
$this->db->query('UPDATE assets SET penyusutan_per_bulan=0 WHERE penyusutan_per_bulan IS NULL');
|
|
$this->db->query('UPDATE assets SET akumulasi_penyusutan=0 WHERE akumulasi_penyusutan IS NULL');
|
|
$this->db->query('UPDATE assets SET nilai_buku=GREATEST(COALESCE(nilai_perolehan,0)-COALESCE(akumulasi_penyusutan,0),0) WHERE nilai_buku IS NULL');
|
|
$this->db->query("ALTER TABLE assets
|
|
MODIFY qty DECIMAL(18,4) NOT NULL DEFAULT 1,
|
|
MODIFY harga_per_unit DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
MODIFY nilai_perolehan DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
MODIFY nilai_residu DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
MODIFY penyusutan_per_bulan DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
MODIFY akumulasi_penyusutan DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
MODIFY nilai_buku DECIMAL(18,2) NOT NULL DEFAULT 0");
|
|
}
|
|
|
|
public function down()
|
|
{
|
|
// Presisi desimal tidak diturunkan kembali agar nilai accounting tidak rusak.
|
|
}
|
|
}
|