Update besar apk finance

This commit is contained in:
Wian Drs
2026-09-11 16:03:00 +07:00
parent d42483b350
commit 4ef15c22ae
897 changed files with 98056 additions and 15979 deletions
@@ -0,0 +1,37 @@
<?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.
}
}