# BE/FE Handoff: Delete Rule for Return-Locked Items

Date: 2026-04-27
Endpoint: `POST /api/v1/pos/sales/:sale_id/edit`

## Kenapa item tidak bisa dihapus

Pada transaksi yang sudah punya histori return, BE menerapkan proteksi integritas data:

- Item yang pernah direturn akan dikunci (return-locked).
- Item return-locked tidak bisa dihapus dari transaksi.
- Item return-locked tidak boleh diturunkan qty-nya di bawah qty yang sudah direturn.

Tujuannya agar referensi `return_sale_items -> sales_order_items` tidak putus.

## Konsekuensi di UI

Kalau user klik hapus pada item return-locked:

- FE boleh kirim payload hasil edit normal.
- BE akan auto-preserve item tersebut saat commit.
- Setelah refresh, item tetap muncul (ini expected behavior, bukan bug save).

## Update FE yang disarankan

1. Gunakan hasil commit (`data.items` / `data.updated_items`) sebagai source of truth final.
2. Jika line punya indikator lock (mis. note `auto_preserved_due_to_return_history` / label return lock), disable tombol `Hapus`.
3. Tampilkan helper text:
   - "Item ini tidak bisa dihapus karena sudah memiliki histori return."
4. Saat user tetap mencoba hapus, tampilkan warning non-blocking sebelum save.

## Ringkas

- Bukan error FE.
- Ini business rule BE untuk menjaga data return tetap konsisten.
- Item lain yang tidak return-locked tetap boleh dihapus.
