db->field_exists('code',$t))$this->db->query("ALTER TABLE `$t` ADD code VARCHAR(30) NULL AFTER id");if(!$this->db->field_exists('description',$t))$this->db->query("ALTER TABLE `$t` ADD description VARCHAR(255) NULL");if(!$this->db->field_exists('is_active',$t))$this->db->query("ALTER TABLE `$t` ADD is_active TINYINT(1) NOT NULL DEFAULT 1");}if(!$this->db->field_exists('department_id','k_positions'))$this->db->query('ALTER TABLE k_positions ADD department_id INT NULL AFTER position_name');if(!$this->db->field_exists('department_id','purchase_requests'))$this->db->query('ALTER TABLE purchase_requests ADD department_id INT NULL AFTER department');$this->db->query("UPDATE k_departments SET code=CONCAT('DEP-',LPAD(id,3,'0')) WHERE code IS NULL OR code=''");$this->db->query("UPDATE k_positions SET code=CONCAT('POS-',LPAD(id,3,'0')) WHERE code IS NULL OR code=''");$this->db->query("UPDATE purchase_requests pr JOIN k_departments d ON CONVERT(LOWER(TRIM(d.department_name)) USING utf8mb4) COLLATE utf8mb4_general_ci=CONVERT(LOWER(TRIM(pr.department)) USING utf8mb4) COLLATE utf8mb4_general_ci SET pr.department_id=d.id WHERE pr.department_id IS NULL");} public function down(){throw new RuntimeException('Gunakan backup untuk rollback master organisasi.');} }