ตรวจสอบใบสั่งขาย
เมนูตรวจสอบใบสั่งขายเป็นหน้าเกริ่น/ทางลัดสำหรับ order เดิมที่ต้องกลับมาดูเรื่องการชำระเงิน ผู้ใช้บางทีมองเป็น “ตรวจสอบใบแจ้งหนี้” เพราะปลายทางจริงคือขั้นตอนชำระเงินของใบสั่งขายที่มี invoice แล้ว หรือกำลังจะสร้าง invoice ก่อนจ่าย
เมนูนี้ไม่ใช่ flow สร้างใบสั่งขายใหม่ และไม่ควรมี payment model แยกของตัวเอง ให้ reuse payment และ invoice creation จากเมนู ใบสั่งขาย
ดูขั้นตอนชำระเงินในใบสั่งขายดู flow สร้างใบแจ้งหนี้
อยู่ตรงไหนใน Flow
ทางเข้าในแอป
| แอป | ทางเข้า | ปลายทางจริง |
|---|---|---|
| Mobile | OrderList mode shipping-review | route OrderPayment |
| POS Terminal | salesOrderReview | payment section ใน panel รายละเอียดใบสั่งขาย |
พฤติกรรมหลัก
| เรื่อง | รายละเอียด |
|---|---|
| Filter รายการ | โหลดใบสั่งขายที่ orderStatus = WAITING_PAYMENT |
| การสร้างเอกสาร | ไม่สร้าง draft จากลูกค้า เลือก order เดิมเท่านั้น |
| Invoice dependency | ถ้ามี invoice แล้วเปิด payment ได้เลย ถ้ายังไม่มีให้ใช้ flow สร้าง invoice ของใบสั่งขายก่อน |
| Payment model | เงินสด โอน แบ่งจ่าย QR ค่าขนส่ง ส่วนลด credit note และยอดรวม ใช้ logic เดียวกับใบสั่งขาย |
| QR | ใช้ payment QR utilities จาก qr.ts ชุดเดียวกัน |
| หลังจ่าย | ไปจัดส่ง/จัดสินค้า หรือ closeout ตามสถานะ order/invoice จริง |
สิทธิ์และ guard
| เรื่อง | รายละเอียด |
|---|---|
| Terminal menu key | salesOrderReview |
| deptCode ที่เห็นเมนู | -2, 1, 2, 3, 4, 7, 29, 21, 8, 9, 13, 16, 20, 22, 23, 27 |
| เงื่อนไขสาขา | ไม่มี requiresMainBranch ใน Terminal menu config |
| Owner filter | review mode ใช้ filter แบบรายการรอตรวจ จึงต่างจาก list draft ที่อาจ owner-only |
| Status guard | order ที่ไม่อยู่กลุ่ม payment-review ไม่ควรโผล่ในเมนูนี้ |
Service / API ที่เกี่ยวข้อง
| Area | Mobile | POS Terminal |
|---|---|---|
| Review list | getOrders({ mode/orderStatus: WAITING_PAYMENT }) ผ่าน order list screen | splitMenuData.ts case salesOrderReview |
| Order detail | detail helpers ใน orders.ts | OrderDetailForm.tsx โหลด detail |
| Invoice | invoices.ts#createInvoice, invoice detail/retry helpers | service invoice ชุดเดียวกัน |
| Payment | payOrder(payload) / order payment utilities | payment handlers ใน OrderDetailForm.tsx |
| QR | services/qr.ts | services/qr.ts |
Mobile vs POS Terminal
| เรื่อง | Mobile | POS Terminal |
|---|---|---|
| List | OrderList ใน review mode | split list ใต้ salesOrderReview |
| Payment UI | OrderPaymentScreen | payment section ใน OrderDetailForm |
| Navigation | navigation.navigate('OrderPayment', { orderId, orderNo }) | สลับ section/state ใน detail panel |
| Payload | utils/orderPayment.ts สร้าง form/summary/payload | terminal payment handlers สร้าง payload เทียบเท่า |
Checklist สำหรับ Developer
- อย่าสร้าง payment state หรือ payload shape แยกสำหรับเมนูนี้
- ถ้าแก้ payment ให้เริ่มจาก ใบสั่งขาย: ขั้นตอนชำระเงิน
- ถ้าแก้ flow invoice ก่อนจ่าย ให้เริ่มจาก สร้างใบแจ้งหนี้และไปหน้าชำระเงิน
- รักษา filter list ให้อยู่ที่
WAITING_PAYMENT - ต้องทดสอบทั้งกรณี order มี invoice แล้ว และกรณีต้องสร้าง invoice ก่อนจ่าย
- ถ้าเปลี่ยนยอดชำระ ให้ทดสอบ QR amount และ credit-note discount ซ้ำ