# Flowchart Garis Besar Alur Proses POS Lama, PyPOS, dan ERP

Dokumen ini sengaja dibuat level high-level (tanpa detail kode).

## A. Urutan Proses Garis Besar (Linear)

1. POS lama (WEB_POS) membuat dan upload file transaksi ke endpoint ERP.
2. ERP menerima file upload, lalu job/CLI compile ERP membaca file tersebut dan memprosesnya menjadi data database.
3. Setelah file berhasil diproses, ERP memindahkan file yang sudah selesai ke storage CDN/archive.
4. ERP menjalankan CLI POIN (sales point processor) untuk membaca antrian `transaksi_point` dan membentuk proses penjualan.
5. Proses CLI POIN menjalankan komponen transaksi sampai data penjualan dianggap selesai diproses.
6. ERP membaca data rekening pembantu dari `__raw_rek_pembantu__4`.
7. ERP merangkum data tersebut menjadi bridge realtime POS pada tabel `transaksi_data_sum_realtimepos_bridge` (dan tabel return bila ada).
8. ERP menjalankan validasi konsistensi settlement vs bridge (untuk memastikan hasil ringkasan valid).
9. Jika ada ketidaksesuaian, ERP menjalankan flow perbaikan bridge (rebuild/fix per tanggal).
10. ERP mengarsipkan data lama (bridge dan tabel konsolidasi transaksi) ke tabel archive.
11. ERP menyediakan data sinkronisasi ke POS lama (WEB_POS) melalui endpoint sinkron.
12. ERP menyediakan data sinkronisasi ke PyPOS melalui endpoint sinkron.
13. PyPOS upload batch transaksi baru, lalu polling status compile sampai status selesai.
14. Siklus berjalan berulang melalui scheduler/cron dan trigger proses operasional.

## B. Flowchart Garis Besar

```mermaid
flowchart LR
    subgraph IN1[POS Lama]
        A1[WEB_POS upload file]
    end

    subgraph IN2[POS Baru]
        A2[PyPOS upload batch]
        A3[PyPOS polling status compile]
        A2 --> A3
    end

    subgraph CORE[ERP Backbone Utama]
        B1[Terima upload]
        B2[Compile file ke DB]
        B3[Queue transaksi_point]
        B4[CLI POIN proses penjualan]
        B5[Baca __raw_rek_pembantu__4]
        B6[Bangun bridge realtime POS]
        B7[Validasi settlement vs bridge]
        B8[Archive]
        B9[Endpoint sinkronisasi ERP]
        B1 --> B2 --> B3 --> B4 --> B5 --> B6 --> B7 --> B8 --> B9
    end

    subgraph OUT[Distribusi Kembali]
        C1[Sync ke WEB_POS]
        C2[Sync ke PyPOS]
    end

    A1 --> B1
    A2 --> B1
    B2 -. status compile .-> A3
    B9 --> C1
    B9 --> C2
```

## C. Referensi Jalur (Tetap High-Level)

- Upload legacy POS: `eusvc/NonRest/setUploadStream`
- Compile upload file: `eusvc/NonRest/compileFilesV2`, `compileFilesDataV2`, `compileFilesDataRegistryV2`
- CLI POIN utama: `CliTransaksi/run_cliSalesPointCustomer` (membaca `transaksi_point`)
- Bridge realtime: `DataSync/createBridgeV2_get` (sumber dari `__raw_rek_pembantu__4`)
- Validasi bridge: `NonRest/validatorSettlementVsNotaV2`
- Sinkronisasi data: `DataSync/doSync_autoV2` dan `DataSync/serverSync`

## D. Kandidat CLI Tambahan (Hasil Scan Source)

Selain jalur utama, source `CliTransaksi.php` juga memiliki varian CLI berikut:
- `run_cliTransaksi`
- `run_cliTransaksi_core`
- `run_cliPointCustomerPatcher`
- `run_cliSalesPointCustomer_ori`
- `run_cliSalesPointCustomer_denganstokditunda`
- `run_cliSalesPointCustomer_non_ditunda`
- `run_cliSalesPointCustomer__`
- `run_cliPenjualan_versihitungitems_masih_salah`
- `run_cliPenjualan`
- `run_cliSalesPointCustomerCustom`

Catatan:
- Daftar ini adalah "terdeteksi di source", bukan berarti semuanya aktif.
- Untuk memastikan CLI mana yang benar-benar jalan periodik, perlu verifikasi crontab di server ERP.
