STINV V2.10.241 — VALUASI STOK PERIODIC V2 BARU
=========================================================
Versi tetap 2.10.241. File changelog lama TIDAK diubah.
Basis: STINV_2.10.241_FULL_PERIODIC_INTEGRASI_PRODUKSI.zip

RUANG LINGKUP
- Engine resmi Periodic Weighted Average menggunakan tabel baru pv2_*:
  pv2_config, pv2_opening, pv2_periods, pv2_product_periods,
  pv2_movement_values, pv2_audit.
- Sebelumnya tabel pve_* digunakan untuk snapshot; setelah cutover,
  tabel PVE lama dapat dihapus dari DB melalui aksi terpisah.
- Semua tabel bisnis (master barang, mutasi, invoice, pembayaran, retur,
  piutang/hutang, period closing, arsip dan relasi Faktur Pajak) TETAP ADA.
- Stok awal 31-08-2026 menggunakan HANYA mutasi bertipe opening
  tanggal 31-08-2026. Sumber awal lain akan diblokir.
- Rebuild Periodic untuk SEP dan OKT 2026, masing-masing OPEN.
- Penjualan dan adjustment keluar memakai HPP bulanan dari pv2,
  BUKAN kolom value_out atau avg_cost legacy Moving Average.
- Laporan sebelum September 2026 belum otomatis dibangun ulang:
  bukan diisi paksa dengan Moving Average.
- Fallback laporan Moving Average lama telah dinonaktifkan.
- Kolom Moving Average operasional tetap ada sebagai SHADOW untuk
  kompatibilitas approval dan stok minus, bukan sumber valuasi resmi.

PERSIAPAN WAJIB
1. Buat backup sumber dan database SQL produksi SEBELUM mengganti kode.
2. Simpan copy full source sebelumnya, konfigurasi database, dan semua
   dokumen arsip Faktur Pajak, terpisah dari source dan SQL.
3. Uji instalasi pada klon aplikasi dan klon MariaDB terlebih dahulu.
4. Saat pemasangan produksi: hentikan semua akses pengguna (maintenance).
5. Tool PHP hanya menerima database persis bernama 'stinv'.
6. Blokir cutover bila terdapat transaksi stok SETELAH 31-10-2026,
   closing aktif pada Agustus atau setelahnya, atau PVE lama FINAL.
7. Pastikan permissions file/folder sesuai XAMPP atau cPanel.

PROSEDUR
A. Upload isi PATCH ke folder aplikasi STINV lama. Jangan mengganti
   config/app.php dan storage/private milik server.
B. Masuk sebagai Administrator dan akses:
   http://localhost/stinv/tool_pv2_cutover.php
C. Pilih Preview. Tool membuat backup PVE sebelum schema PV2 baru
   dibangun, menghitung September–Oktober, lalu ROLLBACK hasil Preview.
   Tabel pv2_* kosong dapat tersisa dari pemasangan schema (DDL).
D. Bila Preview BERHASIL, tinjau opening, pembelian netto, HPP,
   persediaan akhir serta selisih stok seluruh produk.
E. Pilih Apply: password admin + konfirmasi nama database + kata kunci.
   Tool membuat BACKUP PVE lama serta salinan privat ber-SHA256 sebelum
   menyimpan data PV2 baru. Data sumber tidak di-UPDATE atau di-DELETE.
F. Lakukan uji Kartu Stok, Valuasi, Rekonsiliasi, Laba Rugi,
   transaksi approval dan Tutup Buku pada DB clone lalu produksi.
G. Salin arsip SQL privasi ke luar server dan verifikasi SHA256.
H. HANYA SETELAH PV2 valid, gunakan tombol Hapus 6 Tabel PVE Lama.
   Aksi ini DDL permanen dan tidak dapat rollback lewat transaksi.
   Tidak ada DROP otomatis saat Apply awal.

SAFEGUARD
- Operasional terkunci (503) bila source V2 dipasang tetapi PVE V1
  masih aktif dan PV2 belum diaktifkan. Halaman cutover tetap dapat
  diakses oleh Administrator.
- Restore backup PVE V1 langsung ke PV2 aktif diblokir. Restore V1
  harus ke database staging atau pengembalian source V1 terlebih dahulu.
- Source laporan tidak lagi fallback ke harga Moving Average.
- Sumber qty, nilai pembelian netto, dan tanggal tetap diverifikasi.
- Rebuild tidak boleh mengubah faktur, pembayaran, nomor dokumen,
  mutasi sumber, stok fisik, dan data Faktur Pajak.
- Repair Moving Average langsung svir_apply diblokir jika PV2 aktif.

ROLLBACK
- Jangan menghapus backup source lama atau SQL asli.
- Bila Preview gagal: tidak ada hasil valuasi V2 yang disimpan; schema
  pv2_* kosong bisa tetap ada. Perbaiki blocker pada database KLON dulu.
- Bila Apply gagal: transaksi apply ROLLBACK; arsip SQL tetap tersedia.
- Bila sudah Apply dan perlu kembali ke versi lama: pulihkan SOURCE
  lama serta backup SQL/arsip PVE lama melalui prosedur restore resmi.
  Jangan me-restore PVE lama langsung ke engine PV2 aktif.
- Bila PURGE telah dilakukan: pulihkan arsip PVE V1 ke database staging,
  lalu tentukan prosedur restore yang sesuai. Jangan CREATE data lama
  dari nilai Moving secara diam-diam.

STATUS UJI PAKET
- PHP -l: lulus (seluruh file, dilaporkan pada QA file).
- Uji rumus Periodic, fingerprint & parser backup: lulus.
- SQL PVE asli dapat dibaca lengkap dari backup user.
- TIDAK ADA MYSQL/MARIADB SERVER di lingkungan pengemasan,
  jadi Preview/Apply MariaDB dan pengujian transaksi nyata belum diuji.
- JANGAN tekan Apply di database produksi tanpa lulus uji clone.
- Tidak ada perubahan data produksi yang dilakukan dari chat ini.
