#tables#ap-ar
รายการบรรทัด ap_ar_trans_detail
ตารางนี้ใช้ สามบทบาทที่ต่างกัน ต้องแยกให้ออกเวลาอ่านข้อมูล:
- บรรทัดบิลที่วางบิล/ชำระ ของเอกสาร 213 / 235 / 19 / 239 (หัวอยู่ใน หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans)) — บทบาทหลัก
- บรรทัดมัดจำ/เงินล่วงหน้า ของเอกสารซื้อ-ขายที่มีแท็บมัดจำ (หัวอยู่ใน หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans)) — เขียนรายละเอียด + จำนวนเงิน (
trans.go:219,933-945) - แถว marker ของเอกสารปรับยอดสต็อก trans_flag 66/68 ที่ผูกกับใบตรวจนับ (
stock_lot.go:157-160,774-780)
คอลัมน์สำคัญ
จาก INSERT ของบทบาท 1 (docs.go:565-568):
| column | ความหมาย | ใช้ที่ไหน |
|---|---|---|
doc_no, trans_flag, doc_date |
เอกสารชำระที่เป็นเจ้าของบรรทัด (key ร่วมกับหัว) | join กับ หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans) ที่ report_menu_ap_ar.go:309,354,780,855 |
trans_type |
1 = เจ้าหนี้, 2 = ลูกหนี้ (marker สต็อกใช้ 2 คงที่ stock_lot.go:778) |
docs.go:565-568 |
line_number |
ลำดับบรรทัด | docs.go:565-568, trans.go:940 |
cust_code |
ลูกหนี้/เจ้าหนี้ของบรรทัด | docs.go:565-568; อ้างใน workflow.go:116 (ตอนเปลี่ยนรหัส) |
billing_no |
เลขที่เอกสารหนี้ที่ถูกวางบิล/ชำระ (เลข ic_trans.doc_no ของใบขาย/ซื้อ/ลดหนี้) |
docs.go:565-568; billPaidSQL docs.go:621-625; doc_flow.go:69 |
billing_date |
วันที่ของเอกสารหนี้นั้น | docs.go:565-568; dashboard ใช้จับคู่ billing_date = t.doc_date (ai/context_sales_ar.go:35-48) |
bill_type |
trans_flag ของเอกสารหนี้นั้น (44, 46, 12, 14, ... ) |
docs.go:565-568 (BillLine.BillType docs.go:502) |
ref_doc_no, ref_doc_date, doc_ref |
เอกสารอ้างอิงของบรรทัด | docs.go:565-568 |
due_date |
วันครบกำหนดของหนี้ | docs.go:565-568 |
sum_debt_amount |
ยอดหนี้ของเอกสารนั้น (ในบทบาท 2 = จำนวนเงินของรายการมัดจำ) | docs.go:565-568; trans.go:940 |
balance_ref |
ยอดคงเหลืออ้างอิง ณ ตอนบันทึก | docs.go:565-568 |
sum_pay_money |
ยอดที่ชำระในบรรทัดนี้ | docs.go:565-568; ใช้เป็น "paid" ใน billPaidSQL และรายงาน |
lost_profit_exchange_amount |
กำไร/ขาดทุนอัตราแลกเปลี่ยนต่อบรรทัด (19/239 หลายสกุล) | docs.go:572-579,621-625; ดู หลายสกุลเงินและกำไรขาดทุนจากอัตราแลกเปลี่ยน (Multi-Currency & FX Gain/Loss) |
calc_flag |
ธงคำนวณของ marker 66/68 (ผลจาก adjustCalc) |
stock_lot.go:778 |
remark |
หมายเหตุ (บทบาท 2 ใช้ Remark หรือชื่อรายการ) |
trans.go:940 |
last_status |
0 = ใช้งาน, 1 = ยกเลิก; INSERT ด้วย 0 แล้วตามสถานะหัวผ่าน doc flow | docs.go:565-568; doc_flow.go:262 |
status |
ถูกอ้างใน doc_flow.go:96 (r.status = 0 กับ trans_flag 87, 260) — ความหมายนอกเหนือจากนี้ "ไม่ชัดจากโค้ด" |
doc_flow.go:96 |
คอลัมน์สกุลเงินที่สอง (เฉพาะ 19/239 เมื่อมี billFx): sum_debt_amount_2, balance_ref_2, sum_pay_money_2, currency_code, exchange_rate, exchange_rate_old, lost_profit_exchange_amount — เขียนด้วย UPDATE ต่อจาก INSERT ที่ docs.go:572-579 (field ใน BillLine docs.go:513-523).
หนี้คงค้าง (OutstandingBills)
ยอดค้างของเอกสารหนี้ = ยอดเอกสาร − Σ sum_pay_money (+ ผลต่างอัตราแลกเปลี่ยนเฉพาะเอกสารซื้อ/ขาย/ขายสินทรัพย์ flag 12, 44, 1802) ของบรรทัดที่ last_status = 0, trans_flag เป็นเอกสารชำระ (19 หรือ 239) และ billing_no/bill_type ตรงกับเอกสารหนี้ โดยไม่นับเอกสารที่กำลังแก้ (p.doc_no <> docNo) — billPaidSQL docs.go:621-625.
ชุด trans_flag ของหนี้:
- ลูกหนี้: debit
44 (inquiry_type 0,2), 46, 93, 95, 99, 101, 418, 250/254, 1802; credit48, 97, 103, 252(docs.go:600-603) - เจ้าหนี้: debit
12, 14, 316, 81, 83, 87, 89, 315, 260/264; credit16, 317, 85, 91, 262(docs.go:604-608)
ความสัมพันธ์
doc_no + trans_flag→ หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans) (หัว) ; ปิดบัญชี/ชำระ → หัวสรุปการรับ/จ่ายเงิน (cb_trans)billing_no + bill_type→ หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) (doc_no + trans_flag) หรือ หัวเอกสารสินทรัพย์ (as_trans) flag 1802 (docs.go:610-617)cust_code→ ทะเบียนลูกหนี้/ลูกค้า (ar_customer) / ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier)
ใครเขียน / ใครอ่าน
- เขียน:
billStmts(docs.go:532-582) สำหรับ 213/235/19/239;trans.go:933-945(มัดจำ/ล่วงหน้า — ลบแล้วสร้างใหม่ตามเอกสาร);stock_lot.go:774-780(marker 66/68). - ลบพร้อมหัว:
trans.go:428(ลบ deposit lines ตอนลบเอกสาร ic),apArPlandocs.go:488. - อ่าน/อัปเดตสถานะ:
doc_flow.go:69,71,96,219,262(ใช้ตัดสินว่าเอกสารถูกวางบิล/ชำระแล้ว → ยกเลิก/แก้ไม่ได้),doc_cancel.go:494-565,354,report_menu_ap_ar.go:538,780-855, CRM/AI (ai/context_sales_ar.go:35-48ใช้ flag 239 สำหรับลูกหนี้ค้างชำระ).
ข้อควรระวัง
- แถวของ บทบาท 3 (marker) มี
billing_no= เลขใบตรวจนับและ trans_flag = 66/68 ไม่ใช่บิลชำระหนี้ — รายงานหนี้ต้องกรองtrans_flag IN (19,239,213,235)เสมอ. billing_noอ้างด้วย เลขเอกสาร + bill_type ไม่ใช่ id; เลขซ้ำข้ามชนิดเอกสารได้ จึงต้อง join ทั้งสอง (docs.go:621-625).- ในบรรทัดมัดจำ
sum_debt_amountเก็บจำนวนเงินรายการ ไม่ใช่ยอดหนี้ — ห้ามรวมกับบทบาท 1. - ยกเลิกเอกสารชำระ → ต้องเปลี่ยน
last_statusของบรรทัดด้วย (ไม่งั้นบิลจะยังถูกนับว่าชำระ): ทำในdoc_flow.go:262.
ที่มาในโค้ด
backend/internal/application/process/docs.go:498-526(BillLine),:528,:565-568(INSERT),:600-626,:488backend/internal/application/process/trans.go:219,428,933-945backend/internal/application/process/stock_lot.go:157-160,774-780backend/internal/application/process/doc_flow.go:69,71,96,219,262backend/internal/application/process/doc_cancel.go:354,494-565backend/internal/application/process/report_menu_ap_ar.go:309,354,538,780-855backend/internal/adapter/inbound/http/ai/context_sales_ar.go:35-48backend/internal/application/process/workflow.go:116