ข้อมูลอ้างอิงชนิดเอกสาร
ชนิดเอกสารขายและเอกสารซื้อทั้งหมด สถานะของแต่ละชนิด และการเปลี่ยนสถานะที่อนุญาต
PATCH …/status รับเฉพาะสถานะที่เปลี่ยนได้จากสถานะปัจจุบันของเอกสารนั้น ค่าอื่นจะได้ 400 พร้อม errorCode: "InvalidStatusTransition" และไม่มีอะไรเปลี่ยน หน้านี้คือแผนที่ทั้งหมด
ชนิดเอกสารขาย
| รหัส | เอกสาร | หมายเหตุ |
|---|---|---|
QT | ใบเสนอราคา | จุดเริ่มต้นของสายงานขาย |
SO | ใบสั่งขาย | คำสั่งขายที่ยืนยันแล้ว ยังไม่ออกใบแจ้งหนี้ |
IV | ใบแจ้งหนี้ / ใบกำกับภาษี | เอกสารที่สร้างลูกหนี้ |
RE | ใบเสร็จรับเงิน | รับ bankId ได้ |
CS | ขายสด | รวมใบกำกับภาษีและใบเสร็จในฉบับเดียว รับ bankId ได้ |
CN | ใบลดหนี้ | ลดยอดที่ลูกค้าต้องชำระ |
DN | ใบเพิ่มหนี้ | เพิ่มยอดที่ลูกค้าต้องชำระ |
DP | เอกสารมัดจำ | มีอยู่ใน ABSERP แต่สร้างผ่านขั้นตอนเงินมัดจำเท่านั้น ไม่ใช่ผ่าน POST /sales/documents หรือ POST /sales/convert |
สถานะของเอกสารขาย
draft, sent, approved, rejected, confirmed, processing, completed, partial_paid, paid, overdue, converted, cancelled, voided
ไม่ใช่ทุกสถานะที่ใช้ได้กับทุกชนิด ให้ยึดตารางด้านล่างเป็นข้อสรุป
การเปลี่ยนสถานะที่อนุญาต (ฝั่งขาย)
| ชนิด | จาก | เป็น |
|---|---|---|
QT | draft | sent, cancelled |
QT | sent | approved, rejected, cancelled |
QT | approved | converted, cancelled |
SO | draft | confirmed, cancelled |
SO | confirmed | processing, converted, cancelled |
SO | processing | completed, cancelled |
IV | draft | sent, cancelled |
IV | sent | paid, partial_paid, overdue, cancelled |
IV | partial_paid | paid, overdue |
IV | overdue | paid, partial_paid, cancelled |
IV | converted | partial_paid, paid |
RE | draft | completed, voided |
RE | completed | voided |
CS | draft | paid, cancelled |
CS | paid | voided |
CN | draft | completed, voided |
CN | completed | voided |
DN | draft | completed, voided |
DN | completed | voided |
วิธีอ่านตาราง: ใบแจ้งหนี้ไปจาก sent เป็น paid ได้โดยตรง แต่ย้อนกลับเป็น draft ไม่ได้ ส่วนใบเสร็จรับเงินมีเพียง completed หรือ voided ไม่มีสถานะ "ชำระแล้ว" เพราะใบเสร็จ คือ การชำระเงิน
สถานะ converted ถูกตั้งโดย POST /sales/convert ไม่ใช่โดยคุณ
ชนิดเอกสารซื้อ
| รหัส | เอกสาร |
|---|---|
PR | ใบขอซื้อ |
PO | ใบสั่งซื้อ |
GR | ใบรับสินค้า |
PI | ใบแจ้งหนี้ซื้อ |
PV | ใบสำคัญจ่าย — รับ bankId ได้ |
สถานะของเอกสารซื้อ
draft, pending, approved, rejected, sent, acknowledged, partial_received, fully_received, posted, matched, paid, cancelled
การเปลี่ยนสถานะที่อนุญาต (ฝั่งซื้อ)
| ชนิด | จาก | เป็น |
|---|---|---|
PR | draft | pending, cancelled |
PR | pending | approved, rejected |
PR | approved | cancelled |
PO | draft | sent, cancelled |
PO | sent | acknowledged, cancelled |
PO | acknowledged | partial_received, fully_received, cancelled |
PO | partial_received | fully_received |
GR | draft | posted, cancelled |
GR | posted | cancelled |
PI | draft | matched, cancelled |
PI | matched | approved |
PI | approved | cancelled |
PV | draft | approved, cancelled |
PV | approved | paid |
PV | paid | cancelled |
GR → posted คือจังหวะที่สต็อกและต้นทุนเฉลี่ยเคลื่อนไหวจริง ก่อนหน้านั้นใบรับสินค้าเป็นเพียงเอกสารร่างที่ไม่มีผลต่อสินค้าคงคลัง
สถานะของเรื่องเบิกค่าใช้จ่าย
draft, submitted, needs_revision, approved, rejected, paid, cancelled — เปลี่ยนผ่าน endpoint เฉพาะที่ระบุไว้ในเรื่องเบิกค่าใช้จ่าย ไม่ใช่ผ่านฟิลด์สถานะ
จัดการเมื่อการเปลี่ยนสถานะถูกปฏิเสธ
ให้อ่านสถานะปัจจุบันก่อนตัดสินใจว่าจะส่งค่าใด
status=$(curl -sS "$ABSERP_API_URL/openapi/v1/sales/documents/41" \
-H "Authorization: Bearer $ABSERP_API_KEY" | jq -r '.status')
if [ "$status" = "draft" ]; then
curl -X PATCH "$ABSERP_API_URL/openapi/v1/sales/documents/41/status" \
-H "Authorization: Bearer $ABSERP_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "sent" }'
fiให้ถือว่า InvalidStatusTransition หมายถึง "มีคนเปลี่ยนสถานะเอกสารนี้ไปแล้ว" ไม่ใช่ข้อบกพร่องของระบบ ควรอ่านเอกสารใหม่แล้วปรับการทำงานตาม ไม่ควร retry คำสั่งเดิมซ้ำ
ขั้นตอนถัดไป
อ่านต่อที่ ข้อมูลอ้างอิงชนิดข้อมูล