#faq#cancel#edit#delete#stock#gl
ยกเลิก แก้ไข ลบเอกสาร ต่างกันอย่างไร ผลต่อสต็อกและ GL
ตอบสั้น: แก้ไข = ลบแถวเดิมแล้วเขียนใหม่ด้วยเลขที่เดิม, ลบ = ลบแถวทิ้งจริงแล้วคำนวณสต็อก/GL ใหม่ (ไม่เหลือร่องรอย), ยกเลิก = สร้างเอกสารยกเลิกอีกใบอ้างใบเดิม และตั้งใบเดิม last_status = 1 (เก็บไว้ดูได้) ทั้งสามทางตรวจงวดบัญชีและการถูกอ้างอิงก่อนเสมอ
รายละเอียด
| แก้ไข | ลบ | ยกเลิก | |
|---|---|---|---|
| แถวเดิม | ลบหัว/รายการเดิม แล้ว INSERT ใหม่ เลขที่เดิม | ลบทิ้งจริง (ic_trans, ic_trans_detail, cb_trans* ฯลฯ) |
ไม่ลบ ตั้ง last_status = 1 |
| เอกสารใหม่ | ไม่มี | ไม่มี | มี เช่น 45 ยกเลิก 44 โดย doc_ref ชี้ใบเดิม |
| สต็อก | คำนวณจากรายการใหม่ | คำนวณหลังลบ เหมือนไม่เคยมีใบนี้ | ใบเดิมหลุดจากชุดที่นับ (last_status = 0) สต็อกคืนเอง |
| GL | สร้างทับของเดิม | สร้างใหม่โดยไม่มีใบนี้ | ใบเดิมคง GL ไว้ ใบยกเลิกลง GL กลับด้าน (Dr/Cr สลับ ชื่อบัญชีนำหน้า *) ตามวันที่ยกเลิก |
- แก้ไขและลบทำในธุรกรรมเดียวแล้วเรียก
rebuildTransDerived(สต็อก GL สถานะเช็ค) แก้ไขคือ DELETE แล้ว INSERT ใหม่ (trans.go:538-541) - ลบบนหน้าจอคือปุ่ม "ลบ" บนแถบเครื่องมือ ยืนยันแล้วเรียก
/process/trans/deleteหรือ/process/doc/delete(UniversalTransScreen.tsx:2894-2926) - ยกเลิกเป็นเมนูแยกของแต่ละประเภท เช่น
menu_so_invoice_cancel(flag 45 ยกเลิก 44) ตามตารางcancelOrigFlags(doc_cancel.go:49) ยกเลิกซ้ำจะตอบ "ถูกยกเลิกแล้ว" (doc_cancel.go:160) - ยกเลิกรายบรรทัด (
CancelType = 2) ได้แค่ยอดคงเหลือของรายการ (checkItemCancel) ส่วนยกเลิกทั้งใบต้องไม่มีใบถัดไปอ้างอิง (refuseIfReferenced) - มี
Undoคืนสถานะ: ลบเอกสารยกเลิกแล้วคำนวณสถานะใบเดิมใหม่ แต่ใบที่ถูกยกเลิกแบบเดิม (ตั้งสถานะตรง) คืนจากหน้านี้ไม่ได้ (doc_cancel.go:185)
เลือกอย่างไร: ใบที่ยังไม่มีใครอ้างอิงและอยู่ในงวดเปิด จะลบหรือแก้ก็ได้ ใบที่ออกให้ลูกค้าแล้ว (ใบกำกับภาษี) ควรยกเลิกเพื่อให้ตรวจย้อนหลังได้
ข้อควรระวัง
- ใบที่ยกเลิกแล้วแก้/ลบไม่ได้อีก ขึ้น "ห้ามแก้ไข หรือลบข้อมูล" (
trans_validate.go:132-156) - การยกเลิกตรวจงวดสองจุด คืองวดของใบเดิมและงวดของวันที่ยกเลิก ต้องเปิดทั้งคู่ (
period.go:95-105) - หน้าจอรวมยังลบ
cb_transไม่ได้ ขึ้น "ยังไม่รองรับการลบเอกสาร cb_trans" (UniversalTransScreen.tsx:2897)
ดูเพิ่ม
- ทำไมลบหรือแก้เอกสารไม่ได้ ขึ้น ห้ามแก้ไข หรือลบข้อมูล
- แก้ไข ลบ ยกเลิกเอกสาร และผลย้อนกลับ (Edit, Delete, Cancel & Reversal)
- การลบ แก้ไข และล็อกเอกสาร (Transaction Delete / Edit Guards)
- ยกเลิกและอนุมัติเอกสาร (Document cancel / approve)
- สถานะยกเลิก/อนุมัติเอกสาร (last_status / approve_status / cancel flag)
ที่มาในโค้ด
backend/internal/application/process/trans.go:382DeleteTransและ:395deleteTransTxbackend/internal/application/process/trans.go:538แก้ไข = ลบรายการ/หัวเดิมแล้ว INSERT ใหม่backend/internal/application/process/doc_cancel.go:49cancelOrigFlagsbackend/internal/application/process/doc_cancel.go:135cancelDocTxสร้างเอกสารยกเลิกและ rebuildbackend/internal/application/process/doc_cancel.go:585reverseCancelledGLGL กลับด้านbackend/internal/application/process/stock_rebuild.go:18stockRowsSQLนับเฉพาะlast_status = 0frontend/account/transaction/UniversalTransScreen.tsx:2894ปุ่มลบและเส้นทาง API