# ๐Ÿ“˜ PROFILE VS PANEL - QUICK REFERENCE GUIDE ## ๐ŸŽฏ KONSEP DASAR ### Profile (PR) **Definisi:** Paket yang harga finalnya selalu sama dengan total harga item (summary/penjumlahan). **Karakteristik:** - โœ… Harga Paket = Total Harga Item (otomatis) - โŒ Tidak bisa edit Harga Paket manual - โŒ Tidak bisa edit diskon detail item - โœ… Cocok untuk paket standar yang harganya adalah penjumlahan pemeriksaan **Use Case:** - Paket MCU Standard - Paket Pemeriksaan Rutin - Paket yang tidak perlu diskon khusus --- ### Panel (PN) **Definisi:** Paket yang harga finalnya bisa diatur custom dengan diskon/markup tertentu. **Karakteristik:** - โœ… Harga Paket bisa diatur manual (dengan lock mechanism) - โœ… Bisa edit diskon detail per item - โœ… Support 2 mode: Unlocked (auto-calculate) dan Locked (fixed price) - โœ… Cocok untuk paket dengan harga paket spesial **Use Case:** - Paket MCU dengan harga korporat - Paket promo dengan diskon khusus - Paket custom per perusahaan --- ## ๐Ÿ“Š COMPARISON TABLE | Feature | Profile (PR) | Panel (PN) | |---------|-------------|-----------| | **Harga Paket** | Selalu = Total Harga | Bisa diatur manual | | **Edit Harga Paket** | โŒ Tidak bisa | โœ… Bisa (dengan lock) | | **Edit Diskon Detail** | โŒ Tidak bisa | โœ… Bisa | | **Disc % per Item** | โŒ Tidak tersedia | โœ… Tersedia | | **Disc Rp per Item** | โŒ Tidak tersedia | โœ… Tersedia | | **Auto-calculate** | โœ… Selalu | โœ…/โŒ Tergantung state | | **Lock Mechanism** | โŒ Tidak ada | โœ… Ada | | **Pro-rata Distribution** | โŒ Tidak perlu | โœ… Saat edit harga | | **UI Indicator** | Chip biru "Profile" | Chip orange "Dikunci" (jika locked) | | **Complexity** | Simple | Advanced | --- ## ๐Ÿ”„ STATE DIAGRAM ### Profile Packet Flow ``` [Create Profile] โ†“ [Add Items] โ†’ [Total Harga ter-update] โ†“ [Harga Paket = Total Harga (auto)] โ†“ [Save] โ†“ [DONE] โœ… Note: - Tidak ada state "locked/unlocked" - Harga selalu sama dengan total - Tidak bisa edit harga atau diskon ``` --- ### Panel Packet Flow - Unlocked Mode ``` [Create Panel] โ†“ [Add Items] โ†’ [Total Harga ter-update] โ†“ [Harga Paket = Total Harga (auto)] โ† UNLOCKED โ†“ [Add/Remove Items] โ†’ [Harga Paket auto-update] โ†“ [Save] โ†“ [LOCKED] ๐Ÿ”’ โ†“ [Edit lagi] โ†’ [Harga tetap fixed] ``` --- ### Panel Packet Flow - Locked Mode ``` [Paket tersimpan di DB dengan harga custom] โ†“ [Edit Paket] โ†“ [LOCKED] ๐Ÿ”’ โ†“ [Add Items] โ†’ [Harga Paket TETAP] [Remove Items] โ†’ [Harga Paket TETAP] โ†“ [Untuk ubah harga:] [Click icon Edit] โ†’ [Edit Harga] โ†’ [Click Save] โ†’ [Tetap LOCKED] ``` --- ### Panel Packet Flow - Edit Harga Manual ``` [Panel in Edit Mode] โ†“ [Click icon "Edit" di field Harga Paket] โ†“ [Field jadi editable] โ†“ [Ubah harga: Rp 500k โ†’ Rp 400k] โ†“ [Pro-rata distribution executed] โ†“ [Disc % โ†’ 0, Disc Rp โ†’ distributed] โ†“ [Click icon "Save"] โ†“ [Harga LOCKED ๐Ÿ”’] โ†“ [Add/remove items โ†’ Harga tetap Rp 400k] ``` --- ## ๐Ÿ’ก EXAMPLES ### Example 1: Profile Packet ``` Paket MCU Executive (Profile) Items: 1. Hemoglobin : Rp 25.000 2. Leukosit : Rp 25.000 3. Gula Darah : Rp 30.000 4. Kolesterol : Rp 40.000 5. SGOT : Rp 35.000 Total Harga : Rp 155.000 Harga Paket : Rp 155.000 โ† (sama dengan total, auto) Action: - โŒ Tidak bisa ubah Harga Paket - โŒ Tidak bisa edit Disc % atau Disc Rp - โœ… Bisa add/remove items - โœ… Harga Paket otomatis = Total ``` --- ### Example 2: Panel Packet - Unlocked (New) ``` Paket Diabetes Panel (Panel) - Baru dibuat Items: 1. Gula Darah Puasa : Rp 30.000 2. Gula Darah 2j PP : Rp 30.000 3. HbA1c : Rp 120.000 4. Kolesterol : Rp 40.000 Total Harga : Rp 220.000 Harga Paket : Rp 220.000 โ† (auto, karena UNLOCKED) State: UNLOCKED (belum disimpan) Action: - โœ… Add item โ†’ Harga Paket otomatis update - โœ… Remove item โ†’ Harga Paket otomatis update - โœ… Bisa edit Harga Paket โ†’ Jadi LOCKED setelah save - โœ… Bisa edit Disc % dan Disc Rp per item ``` --- ### Example 3: Panel Packet - Locked (Saved in DB) ``` Paket Diabetes Panel (Panel) - Sudah tersimpan dengan harga custom Items: 1. Gula Darah Puasa : Rp 30.000 (Disc Rp: 5k) = Rp 25.000 2. Gula Darah 2j PP : Rp 30.000 (Disc Rp: 5k) = Rp 25.000 3. HbA1c : Rp 120.000 (Disc Rp: 20k) = Rp 100.000 4. Kolesterol : Rp 40.000 (Disc Rp: 10k) = Rp 30.000 Total Harga : Rp 180.000 Harga Paket : Rp 180.000 โ† (fixed, LOCKED ๐Ÿ”’) State: LOCKED (sudah tersimpan di database) Action: - โœ… Add item โ†’ Total update, tapi Harga Paket TETAP Rp 180k - โœ… Remove item โ†’ Total update, tapi Harga Paket TETAP Rp 180k - โœ… Untuk ubah harga โ†’ Klik icon Edit, ubah, klik Save - โœ… Bisa edit Disc % dan Disc Rp per item ``` --- ### Example 4: Panel Packet - Edit Harga Manual ``` Paket Hepatitis Panel (Panel) Initial: 1. HBsAg : Rp 80.000 2. Anti HBs : Rp 80.000 3. Anti HCV : Rp 120.000 4. SGOT : Rp 35.000 5. SGPT : Rp 35.000 Total Harga : Rp 350.000 Harga Paket (default) : Rp 350.000 User Action: Edit Harga Paket โ†’ Rp 300.000 System Action: Pro-rata distribution Total Disc = 350k - 300k = Rp 50.000 Distribution: 1. HBsAg : Disc Rp = (80k/350k) ร— 50k = Rp 11.429 โ†’ Rp 68.571 2. Anti HBs : Disc Rp = (80k/350k) ร— 50k = Rp 11.429 โ†’ Rp 68.571 3. Anti HCV : Disc Rp = (120k/350k) ร— 50k = Rp 17.143 โ†’ Rp 102.857 4. SGOT : Disc Rp = (35k/350k) ร— 50k = Rp 5.000 โ†’ Rp 30.000 5. SGPT : Disc Rp = Remaining = Rp 4.999 โ†’ Rp 30.001 Total Harga Paket: Rp 300.000 โœ… State: LOCKED ๐Ÿ”’ Note: - Semua Disc % di-set ke 0 - Disc Rp terdistribusi pro-rata - Item terakhir dapat sisa untuk menghindari rounding error ``` --- ## ๐Ÿงช TESTING SCENARIOS ### Scenario A: Profile Basic Flow ``` โœ… Test Steps: 1. Create paket "MCU Standard" tipe Profile 2. Add 5 items 3. Verify: Harga Paket = Total Harga 4. Try to edit Harga Paket โ†’ Should be disabled 5. Try to edit Disc % โ†’ Should not have edit button 6. Save paket 7. Verify: Data saved correctly โœ… Expected: - Field Harga Paket disabled (Profile type) - No edit buttons for discounts - Chip "Profile" visible dengan info icon - Alert info: "Profile: Harga paket adalah summary..." ``` --- ### Scenario B: Panel Unlocked Flow ``` โœ… Test Steps: 1. Create paket "Diabetes Panel" tipe Panel 2. Add 3 items (total Rp 200k) 3. Verify: Harga Paket = Rp 200k (auto) 4. Add 1 more item (Rp 50k) 5. Verify: Harga Paket = Rp 250k (auto-update) 6. Remove 1 item 7. Verify: Harga Paket updates accordingly 8. Save paket 9. Re-edit paket 10. Verify: Now LOCKED โœ… Expected: - Harga Paket auto-updates on add/remove (before save) - No "Dikunci" chip before save - After save and re-edit: "Dikunci" chip appears - Console log: "Panel UNLOCKED - updating..." ``` --- ### Scenario C: Panel Locked Flow ``` โœ… Test Steps: 1. Open existing Panel paket (saved in DB) 2. Verify: "Dikunci" chip visible 3. Add 1 item (Rp 50k) 4. Verify: Total Harga increases, Harga Paket STAYS SAME 5. Remove 1 item 6. Verify: Total Harga decreases, Harga Paket STAYS SAME 7. Console should log: "Panel LOCKED - NOT updating" โœ… Expected: - "Dikunci" chip with lock icon visible - Tooltip explains locked behavior - Total Harga changes with add/remove - Harga Paket remains fixed - Console log: "Panel LOCKED - NOT updating packet price" ``` --- ### Scenario D: Panel Edit Harga Manual ``` โœ… Test Steps: 1. Open Panel paket in edit mode (3 items, total Rp 300k) 2. Click icon "Edit" next to Harga Paket field 3. Verify: Field becomes editable, icon changes to "Save" 4. Change Harga Paket to Rp 250k 5. Verify: Pro-rata distribution happens automatically 6. Verify: All Disc % = 0 7. Verify: All Disc Rp updated proportionally 8. Verify: Sum of all item prices = Rp 250k 9. Click icon "Save" 10. Verify: Alert shows, chip "Dikunci" appears 11. Add new item 12. Verify: Harga Paket stays Rp 250k โœ… Expected: - Edit/Save icon toggle works - Pro-rata calculation correct - All Disc % cleared to 0 - Disc Rp distributed proportionally - After save: locked state - Alert: "Harga paket dikonfirmasi dan dikunci..." ``` --- ### Scenario E: Panel Edit Diskon Detail ``` โœ… Test Steps: 1. Open Panel paket in edit mode 2. Click "Edit Diskon Detail Paket" 3. Verify: Disc % and Disc Rp columns become input fields 4. Edit Item 1: Disc % = 10 5. Verify: Item 1 price updates (Bruto - 10% - Disc Rp) 6. Edit Item 2: Disc Rp = Rp 5.000 7. Verify: Item 2 price updates (Bruto - Disc% - 5k) 8. Verify: Total Harga updates 9. Verify: Harga Paket updates (if unlocked) 10. Click "Simpan Diskon Detail" 11. Verify: Edit mode closes, values preserved โœ… Expected: - Input fields appear in table cells - Real-time calculation on each change - Formula: Price = Bruto - (Bruto ร— Disc%/100) - Disc Rp - Total updates automatically - Alert after save: "Diskon detail dikonfirmasi..." ``` --- ## ๐ŸŽจ UI/UX DIFFERENCES ### Profile UI ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ MCU Standard Profile (Profile) โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ HARGA PAKET: Rp 500.000 [โ„น๏ธ Profile] โ”‚ โ”‚ (Field disabled, read-only) โ”‚ โ”‚ โ”‚ โ”‚ TOTAL HARGA: Rp 500.000 โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ„น๏ธ Profile: Harga paket adalah โ”‚ โ”‚ โ”‚ โ”‚ summary dari total detail. Tidak โ”‚ โ”‚ โ”‚ โ”‚ dapat mengubah harga paket atau โ”‚ โ”‚ โ”‚ โ”‚ diskon detail. โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ [Kembali] [Simpan Paket] [Batal & Kembali] โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ Table: (No edit disc buttons) | Kode | Nama | Bruto | Disc % | Disc Rp | Harga | Act | |------|------|-------|--------|---------|-------|-----| | HB | Hemo | 25k | 0% | 0 | 25k | ยซ | (Disc columns are read-only, cannot edit) ``` --- ### Panel UI - Unlocked ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Diabetes Panel (Panel) โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ HARGA PAKET: Rp 400.000 [โœ๏ธ] โ”‚ โ”‚ (Can click edit icon) โ”‚ โ”‚ โ”‚ โ”‚ TOTAL HARGA: Rp 500.000 โ”‚ โ”‚ โ”‚ โ”‚ [Kembali] [Simpan Paket] [Batal & Kembali] โ”‚ โ”‚ โ”‚ โ”‚ [Edit Diskon Detail Paket] โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ Table: | Kode | Nama | Bruto | Disc % | Disc Rp | Harga | Act | |------|------|-------|--------|---------|-------|-----| | GDP | GDP | 30k | 0% | 0 | 30k | ยซ | (Normal display, can edit via button) ``` --- ### Panel UI - Locked ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Diabetes Panel (Panel) โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ HARGA PAKET: Rp 400.000 [โœ๏ธ] [๐Ÿ”’ Dikunci] โ”‚ โ”‚ Hint: Harga dikunci, tidak berubah otomatis โ”‚ โ”‚ โ”‚ โ”‚ TOTAL HARGA: Rp 500.000 โ”‚ โ”‚ โ”‚ โ”‚ [Kembali] [Simpan Paket] [Batal & Kembali] โ”‚ โ”‚ โ”‚ โ”‚ [Edit Diskon Detail Paket] โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ Tooltip on ๐Ÿ”’ Dikunci: "Harga paket dikunci. Tidak akan berubah otomatis saat add/remove item. Klik icon Edit Harga untuk mengubah." ``` --- ### Panel UI - Edit Diskon Mode ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ [Batal Edit Diskon] โ”‚ โ”‚ โ„น๏ธ Edit diskon persen (%) dan/atau diskon โ”‚ โ”‚ rupiah (Rp) untuk setiap item โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ Table: | Kode | Nama | Bruto | Disc % | Disc Rp | Harga | Act | |------|------|-------|-----------|-----------|-------|-----| | GDP | GDP | 30k | [ 10 ] | [ 5000 ] | 22k | ยซ | | โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ | Input fields (editable) ``` --- ## ๐Ÿ” DEBUGGING TIPS ### Console Logs to Watch #### Profile Packet ```javascript // Should NOT see these logs for Profile โŒ "Panel UNLOCKED - updating packet price" โŒ "Panel LOCKED - NOT updating" โŒ "PRO-RATA DISTRIBUTION" ``` #### Panel Unlocked ```javascript // Should see these logs โœ… "Panel UNLOCKED - updating packet price to X" โœ… "Calculated total: X" โœ… "Current packet price: X" ``` #### Panel Locked ```javascript // Should see these logs โœ… "Panel LOCKED - NOT updating packet price (stays fixed)" โœ… "Remove: Panel LOCKED - NOT updating packet price" โœ… "Data from DB: true Locked: true" ``` #### Panel Edit Harga ```javascript // Should see these logs โœ… "=== PRO-RATA DISTRIBUTION ===" โœ… "Packet Price: 400000" โœ… "Total Price: 500000" โœ… "Difference to distribute: 100000" โœ… "Item 1: ..." โœ… " - Bruto: 200000" โœ… " - Disc %: 0 (CLEARED)" โœ… " - Disc Rp: 40000" โœ… " - Final Price: 160000" โœ… "=== PRO-RATA COMPLETED ===" ``` --- ## ๐Ÿ“š KEY FORMULAS ### 1. Detail Item Price Calculation ``` Price = Bruto - (Bruto ร— Disc% / 100) - DiscRp Example: Bruto = 100,000 Disc% = 10 DiscRp = 5,000 Price = 100,000 - (100,000 ร— 10/100) - 5,000 = 100,000 - 10,000 - 5,000 = 85,000 ``` --- ### 2. Pro-rata Distribution ``` TotalDisc = TotalPrice - PacketPrice For each item: ItemDisc = (ItemBruto / TotalBruto) ร— TotalDisc ItemPrice = ItemBruto - ItemDisc Last item: ItemDisc = TotalDisc - SumOfOtherDiscs (to avoid rounding error) Example: Item A: 200k, Item B: 200k, Item C: 100k Total: 500k โ†’ Packet: 400k TotalDisc = 100k Item A: (200/500) ร— 100k = 40k โ†’ Price: 160k Item B: (200/500) ร— 100k = 40k โ†’ Price: 160k Item C: 100k - (40k+40k) = 20k โ†’ Price: 80k Verify: 160k + 160k + 80k = 400k โœ… ``` --- ### 3. Total Price Calculation ``` TotalPrice = ฮฃ(Item.Price) Where Item.Price calculated per formula #1 ``` --- ### 4. Profile Packet Price ``` PacketPrice = TotalPrice (always, cannot be different) ``` --- ### 5. Panel Packet Price ``` If Unlocked: PacketPrice = TotalPrice (auto-update) If Locked: PacketPrice = Fixed value (doesn't change on add/remove) ``` --- ## โœ… QUICK DECISION TREE ### "Should I use Profile or Panel?" ``` START โ”‚ โ”œโ”€ Harga paket = penjumlahan items? โ”‚ โ”‚ โ”‚ โ”œโ”€ YES โ†’ Use PROFILE โ”‚ โ”‚ โ”‚ โ””โ”€ NO โ†’ Harga paket ada diskon/markup khusus? โ”‚ โ”‚ โ”‚ โ”œโ”€ YES โ†’ Use PANEL โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€ Need custom price โ†’ PANEL (edit harga manual) โ”‚ โ”‚ โ””โ”€ Need item discounts โ†’ PANEL (edit diskon detail) โ”‚ โ”‚ โ”‚ โ””โ”€ NO โ†’ Use PROFILE (keep it simple) ``` **Examples:** - **Profile:** "Paket MCU Dasar" = Hemo + Leuko + GDP โ†’ Harga = sum - **Panel:** "Paket MCU Korporat" = Paket diskon 20% untuk perusahaan - **Panel:** "Paket Promo" = Harga spesial Rp 500k (dari total Rp 600k) --- ## ๐ŸŽฏ TESTING PRIORITY ### Must Test (P0) 1. โœ… Profile: Harga = Total (always) 2. โœ… Panel Unlocked: Auto-update price 3. โœ… Panel Locked: Fixed price 4. โœ… Panel Edit Harga: Pro-rata distribution 5. โœ… Save and reload: State persists ### Should Test (P1) 1. โœ… Profile: Cannot edit price/disc 2. โœ… Panel: Can edit disc detail 3. โœ… Lock state after save 4. โœ… Unlock โ†’ Lock transition ### Nice to Test (P2) 1. โœ… UI indicators (chips, icons) 2. โœ… Tooltips and hints 3. โœ… Console logs 4. โœ… Edge cases (0 items, large numbers) --- **Quick Reference Version:** 1.0 **Last Updated:** 2026-01-22 **For Full Testing Guide:** See [TESTING_GUIDE.md](./TESTING_GUIDE.md)