กลุ่มตาราง ic_ (สินค้า คลัง สต๊อก เอกสารซื้อ-ขาย)
ตารางตระกูล ic_ คือหัวใจของระบบ เก็บ master สินค้า/คลัง/หน่วยนับ และเอกสารที่ขยับสต๊อกทั้งหมด (ic_trans + ic_trans_detail) ไม่มี DDL ของตารางเหล่านี้ใน repo (พอร์ตจาก C# SMLERP) คอลัมน์ในแต่ละโน้ตอนุมานจาก INSERT/SELECT ในโค้ด กฎร่วม: เอกสารระบุด้วย (doc_no, trans_flag) ดู รหัสชนิดเอกสาร trans_flag และทิศทางสต็อก (Trans Flag Map); บันทึกเอกสาร = ลบแล้วสร้างใหม่ (ลำดับการบันทึกเอกสาร (Transaction Save Flow)); ยอดสต๊อก/ต้นทุนเป็นค่า derive จาก ic_trans_detail (การคำนวณยอดสต็อกคงเหลือใหม่ (Stock Balance Rebuild), ต้นทุนสินค้าแบบถัวเฉลี่ยเคลื่อนที่ (Moving Average Cost)) ภาพรวมทุกตระกูลอยู่ที่ ภาพรวมพจนานุกรมข้อมูล: ตารางฐานข้อมูล (tables overview)
ก. เอกสารและการเคลื่อนไหวสต๊อก
- หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) — หัวเอกสารซื้อ/ขาย/รับ-เบิก/โอน/ปรับ/ใบเสนอราคา ทุกชนิดอยู่ตารางเดียว แยกด้วย
trans_flag - รายการสินค้าในเอกสาร (ic_trans_detail) — บรรทัดสินค้าของเอกสาร และ แหล่งเดียวของยอดสต๊อกและต้นทุน
- เลขเครื่อง/Serial ตามรายการเอกสาร (ic_trans_serial_number) — Serial ทีละเลขต่อบรรทัดเอกสาร (log การเคลื่อนไหว)
- ทะเบียน Serial Number สินค้า (ic_serial) — ทะเบียน/สถานะปัจจุบันของแต่ละ Serial (derive จากตารางข้างบน)
- ยอดสินค้าตามล็อต (ic_trans_detail_lot) — ยอดตาม LOT (เขียนเฉพาะยอดยกมา/ใบปรับล็อต; เอกสารปกติเขียนแค่
lot_number_1) - ข้อมูลการจัดส่งของเอกสาร (ic_trans_shipment) — ที่อยู่/ผู้ขนส่ง/เลขพัสดุของเอกสาร
- ต้นทุนแฝง/ต้นทุนนำเข้า (ic_hidden_cost_process, _ref, _item) — ต้นทุนแฝง/ต้นทุนนำเข้า (หัว +
_refเอกสารอ้างอิง +_itemรายการ) เชื่อมกับใบปรับต้นทุน flag 66 ic_wms_trans_detail— เห็นแค่การตรวจว่ามีตารางหรือไม่ (service.go:630) ใช้โดยระบบ WMS ไม่ได้บันทึกรายละเอียดที่นี่
ข. สินค้า (master)
- ทะเบียนสินค้า (ic_inventory) — ทะเบียนสินค้า (
code, ชื่อ, ประเภท, วิธีคิดต้นทุน,balance_qty,average_cost) - รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail) — ตารางลูก 1:1 ของสินค้า เก็บมิติสินค้า คลัง/ที่เก็บ/หน่วยเริ่มต้นของการซื้อ-ขาย-เบิก จุดสั่งซื้อ และสวิตช์ต่างๆ
- บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode) — 1 แถว = 1 บาร์โค้ด ผูกหน่วยนับ และราคาขาย 4 ระดับที่ POS ใช้
- ส่วนลดตามบาร์โค้ด (ic_inventory_barcode_price) — เงื่อนไขส่วนลดของแต่ละบาร์โค้ด 5 ชนิด (
discount_type1-5) - ราคาขายสินค้าตามเงื่อนไข (ic_inventory_price) — ราคาขายตามหน่วย/ช่วงจำนวน/ช่วงวันที่/ชนิดการขาย แยกผู้ซื้อด้วย
price_type - รายการย่อยสินค้าชุด (ic_inventory_set_detail) — ส่วนประกอบสินค้าชุด (
ic_set_code→ic_code) - ต้นทุนมาตรฐานสินค้า (ic_standard_cost) — ต้นทุนมาตรฐานตามวันที่
ic_inventory_price_formula— ราคาตามสูตรprice_0..price_9ต่อ (ic_code,unit_code) ใช้เป็นราคากลางในกริดเอกสารและรายงานเปรียบเทียบ (price_engine.go:203-226,trans_grid.go:702-748,master_detail_specs.go:192)ic_inventory_discount— ส่วนลดตามลูกค้า/กลุ่ม/ทั่วไป ใช้ในเครื่องคิดราคา (price_engine.go:78-83,master_detail_specs.go:65)ic_inventory_purchase_price— ราคาซื้อ/ส่วนลดจากผู้ขาย (price_engine.go:244,report_menu_ic.go:922-927)ic_inventory_suggest/ic_inventory_replacement/ic_inventory_bundle— สินค้าแนะนำ / สินค้าทดแทน / สินค้าแพ็ก (คู่ic_codeกับรหัสปลายทาง) (item_detail.go:182-187)ic_inventory_level— ระดับสต๊อกของสินค้า (คอลัมน์ไม่ชัดจากโค้ดที่อ่าน; มีเครื่องมือลบแถวกำพร้าsysproc_ic_checks_data.go:47)ic_name_merket,ic_name_billing,ic_name_short,ic_name_pos— ชื่อสินค้าเสริม (การตลาด/ใบเสร็จ/ย่อ/POS) (item_detail.go:177-178,488)ic_color_use,ic_size_use,ic_pattern_use— สี/ขนาด/ลวดลายที่สินค้าใช้ (คู่code,ic_code; master คือic_color,ic_size,ic_pattern) (item_detail.go:179-181)ic_manufacturer_list— ผู้ผลิตของสินค้า (manufacturer_code→ap_supplier) (item_detail.go:189)ic_purchase_permium,ic_purchase_permium_condition,ic_purchase_permium_list— เงื่อนไขของแถมจากการซื้อ (ชื่อสะกดpermiumตามเดิม) (master_detail_specs.go:305-326)ic_report_sort_item— ลำดับสินค้าในรายงาน (สร้างตารางเองเมื่อยังไม่มี,master_detail.go:452-453)
ค. หน่วยนับ คลัง ที่เก็บ
- ข้อมูลหน่วยนับ (ic_unit) — master หน่วยนับ
- หน่วยนับที่ใช้ของสินค้า (ic_unit_use) — หน่วยนับที่สินค้าแต่ละตัวใช้ + อัตราแปลง (
stand_value/divide_value) - หน่วยนับตรงข้าม/หน่วยขนาน (ic_opposite_unit) — คู่หน่วยตรงข้ามของสินค้าหน่วยขนาน (
unit_type2, 3) (ตารางเดียวของกลุ่ม ic_ ที่มี CREATE TABLE ในservice.go:797-815) - คลังสินค้า (ic_warehouse) — master คลัง
- พื้นที่เก็บสินค้า (ic_shelf) — ที่เก็บในคลัง (คอลัมน์
whcodeไม่มี underscore) - สินค้ากับคลังและที่เก็บ (ic_wh_shelf) — คู่คลัง/ที่เก็บที่สินค้านั้นเก็บได้ + จุดต่ำสุด/สูงสุด
ง. master จัดกลุ่มสินค้า (เขียนผ่านหน้าจอตั้งค่า /query/exec)
รายชื่ออยู่ใน legacy write allow-list (ADR-0011): ic_account_group, ic_brand, ic_category, ic_class, ic_close_reason, ic_color, ic_design, ic_dimension, ic_dimension_name, ic_grade, ic_group, ic_group_sub, ic_group_sub2, ic_import_duty, ic_issue_type, ic_model, ic_pattern, ic_price_formula_template, ic_promotion_formula, ic_size, ic_stk_adjust_reason, ic_warehouse_location_group — สินค้าอ้างผ่านคอลัมน์ เช่น ic_inventory.group_main → ic_group (item_detail.go:50) เป็นตารางรหัส/ชื่อธรรมดา ไม่มีตรรกะ derive
จ. ตารางที่ถูกเก็บกวาดเมื่อลบ/เปลี่ยนรหัสสินค้า
itemChildTables (item_master.go:812-814) ลบตารางลูกทั้งหมดของสินค้า และรายการแก้ ic_code ตอนเปลี่ยนรหัสสินค้า (workflow.go:134-147) รวมถึง ic_stk_build(_detail), ic_promotion_detail, ic_relation_detail, ic_specific_search, ic_extra_detail — ตารางเหล่านี้ไม่ได้อธิบายรายตัวที่นี่ ดู ข้อมูลหลักแบบหัว-รายการ รหัสอัตโนมัติ และเลย์เอาต์รายการ (Master-detail, code auto-run, DataList), ข้อมูลสินค้าและข้อมูลสินค้าเพิ่มเติม (Item master & item detail), ตัวกระจายคำขอของ process (Process dispatcher)
ตารางที่เกี่ยวกับสิทธิ์คลัง/ที่เก็บ (erp_user_group_wh_shelf) ดู สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf) และ การตรวจสิทธิ์เมนูของ route process (Process route rights)
ที่มาในโค้ด
backend/internal/application/process/trans.go:657backend/internal/application/process/item_master.go:812backend/internal/application/process/item_detail.go:174backend/internal/application/process/workflow.go:134backend/internal/application/process/master_detail_specs.go:144backend/internal/application/process/stock_rebuild.go:18