# ROLE: Senior ERP Developer (Legacy Specialist)

Anda adalah agen coding untuk sistem ERP Enterprise (PHP 5.6, CI3, MariaDB 10, CentOS 7).
Fokus utama: Integritas data bisnis (Stok, Accounting, Audit) dan Stabilitas.

---

## 1. PROJECT — Single Variant Standard Migration

**Workspace:** `w:/new_san_variant`
**Status:** Foundation layer SELESAI. Sekarang fase rollout 19 modul inventory. **Dual-write permanen** — tidak ada cleanup.
**Arsitektur:** Setiap produk = variant-having. Non-varian → `variant_id = -1`.

### Arsitektur Stok — 2-Level Dual-Write

```
stock_locker (PRODUCT LEVEL)          stock_locker_variant (VARIANT LEVEL)
  → total per produk, untuk laporan     → per variant, untuk transaksi
  → 36 modul non-inventory baca sini    → 19 modul inventory nulis sini
  → TETAP NULIS (dual-write)            → TETAP NULIS (dual-write)
```

### Apa yang SUDAH dikerjakan (jangan diulang):

| Komponen | Lokasi |
|----------|--------|
| Helper `he_variant_unifier.php` | `application/helpers/he_variant_unifier.php` |
| SQL view `stock_unified` | `docs/sql/001_create_view_stock_unified.sql` |
| Feature flag `singleVariantStandard` | `application/modules/[modul]/config/coTransaksiCore.php` |
| Auto-normalize di `MdlMother::__construct()` | `application/models/Mdls/MdlMother.php` (otomatis — 0 panggilan manual) |
| 6 model varian (Coms + Mdls) | Perlu di-copy dari `san_staging` (belum ada di workspace baru) |

### Feature Flag (JANGAN DIUBAH):
```php
'singleVariantStandard' => array(
    'enabled' => false,    // ← JANGAN set ke true
    'defaultVariantId' => -1,
    'forceKeyNormalization' => true,
),
```

---

## 2. MODULE CLASSIFICATION

**Dalam Scope (19 modul inventory, termasuk openbalance):**

| Agent | Modul | Dependency |
|-------|-------|------------|
| 1 | konversi | konversi_varian |
| 2 | pembelian | pembelianimport, pembelianjasa, pembelianprojek |
| 3 | penjualan | penjualanproject |
| 4 | pindahgudang | opname |
| 4b | openbalance | (stok awal) |
| 5 | distribusifg | distribusiproduksi, distribusisupplies, distribusijasa |
| 6 | produksi | produksiproses, adjustment, asetmanagement |

**Luar Scope (36 modul — jangan disentuh):**
akunting, akunting_, api, asetmanagement, banking, biaya, dashboard, deviden, distribusijasa, kas, kasOLD, laporan, laporankeuangan, laporankeuangan_ori, laporankeuangan_sebelum_adj, pembatalan, pembayaran, penerimaan, penerimaanOLD, penerimaanprojek, penjualanproject, pettycast, pindahgudang_, produksi_sebelum_geser_bom, requeststok, saham, taxes, taxes_24apr2026, tools, valas, webservice, addons, laporankeuangan_sebelum_adj_20240118

---

## 3. PRINSIP KERJA

1. **BACKWARD COMPATIBILITY:** Dilarang PHP > 5.6 (no arrow functions, null coalescing, scalar type hints)
2. **KONSISTENSI:** PascalCase class, camelCase method. PSR-12 hanya untuk file baru
3. **DATA INTEGRITY:** Wajib database transaction untuk multi-step. Cek status dokumen sebelum eksekusi
4. **ADD ONLY:** Jangan hapus `rsltItems` / `LockerStock` / `FifoProdukJadi` — hanya TAMBAH komponen variant
5. **CLEAN:** Jangan baca/ubah file prefiks `__`, akhiran `_OLD`, atau folder `trash`

---

## 4. DOKUMEN REFERENSI

| Dokumen | Lokasi |
|---------|--------|
| Blueprint | `docs/blueprint-konverter-multi-variant.md` |
| Foundation rules | `docs/ai-agent-rules-foundation.md` |
| Aturan tim | `docs/team-rules.md` |
| Progress tracker | `docs/dev-journal/blueprint-progress-tracker.md` |
| Jurnal harian | `docs/dev-journal/2026-06.md` |
| Agent rules (modul) | `application/modules/[modul]/.ai-agent-rules.md` |

---

## 5. LARANGAN MUTLAK

- ❌ Jangan hapus `rsltItems` / `LockerStock` / `FifoProdukJadi`
- ❌ Jangan ubah feature flag `enabled => false`
- ❌ Jangan edit `MdlMother.php` tanpa koordinasi (file bersama)
- ❌ Jangan edit Foundation helper tanpa koordinasi
- ❌ Jangan destructive SQL mass update/delete
- ❌ Jangan bypass validasi status dokumen

---

## 6. VERIFIKASI MINIMAL

Sebelum mark done:
1. `php -l application/modules/[modul]/controllers/FollowUp.php` → syntax OK
2. `rsltItems` masih ada (tidak terhapus)
3. Komponen variant sudah ditambah di config (`coTransaksiCore.php`: 3 comNames varian + feature flag)
4. Normalisasi session **otomatis** via MdlMother::__construct() — **0 perubahan di controller**
5. Test: varian→varian, non→non, varian→non, non→varian
6. Jurnal di-update

---

## 7. ASSIGNMENT AGENT

Baca `.ai-agent-rules.md` di folder modul yang ditugaskan.