STINV V2.10.241 — PAKET GABUNGAN ZIP 18 + PERIODIC V2
===================================================
BASIS UTAMA (user):
  18 STINV_2.10.241_FULL_CANCEL_MODE2_PERIODIC_NEGATIVE.zip
DIGABUNGKAN SECARA SELEKTIF DENGAN:
  STINV_2.10.241_FULL_PERIODIC_V2_AUTO_LAPORAN.zip
  yang memuat fitur bertahap dari Periodic Rebuild, Production Integration,
  Isolasi Moving, Valuasi PV2 baru, Fix Audit, dan Auto Calculation.

VERSI DAN CHANGELOG: TIDAK DIUBAH (tetap 2.10.241).
SOURCE CODE HANYA: Tidak menyertakan DB produksi pengguna. Tidak melakukan SQL atau
mengubah transaksi secara otomatis hanya karena file diunggah.

PILIHAN PENGGABUNGAN / RESOLUSI KONFLIK:
- Seluruh source ZIP 18 dipertahankan sebagai basis, kecuali file yang
  diperlukan untuk migrasi ke Periodic PV2 atau auto-report.
- include/historical_migration.php tetap berasal dari ZIP 18,
  sehingga preflight, audit, cancel batch Mode2, Safety Backup,
  negative-stock guards, dan histori pajak tetap ikut.
- include/historical_migration_periodic.php dan
  include/historical_migration_operational.php tetap memakai perubahan ZIP 18
  (rekonsiliasi shadow residu maksimal Rp0,05, peringatan inversi, stok minus).
- includes/historical_migration_cancel_periodic.php berasal dari ZIP 18,
  disesuaikan SQL-nya menggunakan pv2_* agar cocok dengan engine PV2;
  tidak mem-bypass validasi settlement dan periode FINAL.
- Nama fungsi PHP pve_* tetap menjadi API internal lama untuk engine PV2,
  sedangkan nama tabel nilai resmi adalah pv2_*.
- Mode2 mengutamakan PV2 bila telah diaktifkan; jika belum ada konfigurasi
  PV2, tindakan cancel/operasional yang mensyaratkannya dapat diblokir.
- HPP Moving Average legacy disimpan sebagai shadow untuk kompatibilitas,
  tidak menjadi input HPP resmi Periodic.
- Laporan OPEN otomatis memanggil kalkulasi PV2 jika snapshot belum ada/stale.
- Mode audit tool cutover menggunakan pv2_audit(), bukan pve_audit().

FILE RAHASIA YANG SENGAJA TIDAK TERMASUK:
- config/app.php dan file cadangan konfigurasi server;
- storage/private/app.key dan database_password.enc;
- semua arsip backup SQL serta file metadata backup lokal.
Semua tetap ada di server asli; JANGAN menimpa/menghapus berkas tersebut.

INSTALASI YANG AMAN:
1. Lakukan backup FULL database, aplikasi, private storage, dan folder arsip
   ekspor Faktur Pajak. Verifikasi hasil backup dapat direstore.
2. Restore database pada klon terpisah, termasuk snapshot PVE/PV2.
3. Uji FULL SOURCE pada klon, lalu jalankan tests/periodic_engine_math_test.php,
   tests/periodic_moving_isolation_test.php,
   tests/pv2_backup_parser_test.php, tests/pv2_structure_test.php,
   dan tests/pv2_mode2_cancel_merge_test.php.
4. Pindahkan PATCH ke root aplikasi setelah menonaktifkan input transaksi.
   Patch berisi file pengganti saja (bukan file config/database).
5. Bila PV2 belum diaktifkan, jalankan tool_pv2_cutover.php sesuai prosedur
   PREVIEW -> backup -> APPLY -> verifikasi; Jangan PURGE PVE lama sampai
   semua modul, termasuk Cancel Mode2 dan stok minus, lulus pengujian.
6. Uji approval PO/pembelian, surat jalan, penjualan, retur,
   histori Mode2 preview + cancel (batch uji), nomor dokumen,
   Faktur Pajak/export, tutup buku, laporan November, dan backup/restore.
7. Bandingkan stok fisik, stok akhir PV2, HPP per barang dan laba rugi
   untuk September/Oktober. Audit perbedaan sebelum produksi.

BATASAN DAN BLOKER YANG DISENGAJA:
- Tool cutover masih menolak transaksi stok setelah 31 Oktober 2026,
  periode FINAL / Tutup Buku, atau baseline yang tidak konsisten. Jika
  sudah ada mutasi November, hentikan cutover dan lakukan prosedur
  migrasi yang memperhitungkan transaksi itu terlebih dahulu.
- Cancel Mode2 tidak membalik negative_stock_settlements yang sudah
  terjadi. Ini tetap wajib diaudit secara terpisah.
- PVE lama TIDAK dihapus otomatis saat pemasangan source/patch.
- Tidak ada server MariaDB produksi dalam lingkungan penggabungan ini;
  seluruh uji saat ini adalah lint dan tes offline, BUKAN E2E produksi.
- Jangan memasang langsung pada database produksi tanpa uji salinan dan
  verifikasi keamanan, terutama bila histori Mode2 masih memiliki settlement.

PENGEMBALIAN:
Gunakan pasangan backup SOURCE + SQL + arsip PVE/PV2 dari sebelum
pemasangan. Jangan hanya mengembalikan satu tabel atau mengganti engine
sementara transaksi baru masih masuk. Restore resmi ke database staging dulu.
