บิลน้ำมัน
เมนูบิลน้ำมันใช้บันทึกบิลน้ำมันรถและค่าใช้จ่าย operation โดยเก็บข้อมูลรถ คู่ค้า บัญชี จำนวน วันที่บิล หลักฐาน branch/company context ความเชื่อมโยงกับ transport และ retry behavior เมื่อ integration fail
ทางเข้าในแอป
| App | Target |
|---|---|
| Mobile | ExpenseBillList -> ExpenseBillDetail |
| POS Terminal | expenseBill -> ExpenseBillDetailForm |
Workflow
Data และ API Rules
| กฎ | รายละเอียด |
|---|---|
| แหล่ง list | Terminal split list เรียก /bills ด้วย selected branchId, pageLimit: 200, ignoreDraft: true |
| Dedupe | expense bill list dedupe ด้วย billId แล้ว fallback เป็น billNo |
| Create/update | detail form สร้างหรือ update expense bill payload |
| Company code | ก่อนบันทึก ระบบรับเฉพาะ BFPDB, BFP, NFFDB หรือ NFF เท่านั้น (ไม่สนตัวพิมพ์เล็ก/ใหญ่); ค่าอื่น เช่น code คลัง SSK จะไม่ส่ง API |
| Transport company context | ขนส่งใหม่เริ่มด้วย BFPDB; เมื่อเลือกทะเบียนรถ ระบบใช้ company code ของรถเป็นค่า company ของขนส่งก่อนเปิดฟอร์มบิลน้ำมัน |
| Transport link | ถ้าเปิดจาก transport การ save อาจ update gas/fuel flag ของ transport |
| Retry | retry ใช้ bill id เดิมเพื่อไม่ให้เกิด expense record ซ้ำ |
| Evidence | slip/photo/evidence เป็นข้อมูลของ bill และต้อง refresh จาก server หลัง save |
Validation ของฟอร์มและ Action ในรายการ
| Action | เงื่อนไข/พฤติกรรม |
|---|---|
| สร้าง | ต้องมีสิทธิ์ และ Terminal จำกัดสาขาหลักเว้นแต่เข้า override |
| รถ/บัญชี/บริษัท | เก็บทั้ง code และชื่อเพื่อสร้าง payload และส่ง integration |
| Company code | ต้องเป็น BFPDB, BFP, NFFDB หรือ NFF; ถ้าไม่อยู่ในรายการ ระบบแจ้ง validation และหยุดก่อน submit |
| หลักฐาน | ลบหรือเปลี่ยนแล้วต้องโหลดข้อมูลจาก Server ใหม่ |
| ลบ/Retry | ตรวจสิทธิ์และยืนยัน; Retry ใช้ bill id เดิม ห้ามสร้างเอกสารซ้ำ |
| จากขนส่ง | บันทึกสำเร็จแล้วทำเครื่องหมายว่างานเติมน้ำมันถูกจัดการ |
สิทธิ์และ guard
| เรื่อง | รายละเอียด |
|---|---|
| Terminal menu key | expenseBill |
| deptCode ที่เห็นเมนู | -2, 1, 2, 3, 4, 7, 29, 21, 8, 9, 13, 16, 14, 27, 30 |
| เงื่อนไขสาขา | Terminal config กำหนด main branch only (requiresMainBranch = true) |
| Create guard | ปุ่มสร้างใช้ canCreateExpenseBill(...) |
Mobile vs POS Terminal
| เรื่อง | Mobile | POS Terminal |
|---|---|---|
| Navigation | expense bill stack list/detail | HomeScreen split-pane menu key expenseBill |
| Detail | expense bill form เต็มจอ | ExpenseBillDetailForm |
| รถ/บัญชี | selectors ใน mobile form | selectors/panels ใน terminal detail |
| Retry | action ใน detail/list | action ใน split list/detail |
Developer Handoff Map
| Area | Code |
|---|---|
| Mobile list/detail | apps/mobile/src/screens/expenseBillStack/expenseBillListScreen, expenseBillDetailScreen |
| Terminal detail | apps/pos-terminal/src/screens/HomeScreen/ExpenseBillDetailForm.tsx, ExpenseBillPanels.tsx |
| Service | apps/*/src/services/expenseBill.ts / expense bill service module |
| Transport dependency | TransportDetailForm.tsx, transport update service |