ทะเบียนสินค้า (ic_inventory)
หน้าที่: ตารางหลักของสินค้า 1 แถว = 1 รหัสสินค้า (code) ทุกบรรทัดเอกสารใน รายการสินค้าในเอกสาร (ic_trans_detail) อ้างถึงด้วย item_code = ic_inventory.code ส่วนที่เป็นรายละเอียดเพิ่มอยู่ใน รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail), หน่วยนับใน หน่วยนับที่ใช้ของสินค้า (ic_unit_use), บาร์โค้ดใน บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode), คลัง/ที่เก็บใน สินค้ากับคลังและที่เก็บ (ic_wh_shelf)
ไม่มี DDL ของตารางนี้ใน repo (ตารางเดิมของ C#) คอลัมน์ด้านล่างอนุมานจาก itemMasterSpecs/itemMasterUnitSpecs (item_master.go:35-76), itemSpecs (item_detail.go:43-58) และ SQL ที่อ่าน/เขียนจริง
คอลัมน์สำคัญ
| column | ความหมาย | ใช้ที่ไหน |
|---|---|---|
code |
รหัสสินค้า (key; โค้ดเทียบด้วย upper(code)) |
item_master.go:629,695 |
name_1, name_2, name_eng_1, name_eng_2 |
ชื่อสินค้า ไทย/อังกฤษ | item_master.go:43 |
item_type |
ประเภทสินค้า 0 ทั่วไป, 1 บริการ (ไม่ทำสต๊อก), 2 ให้เช่า, 3 ชุด (ไม่ทำสต๊อก), 4 ฝากขาย, 5 สูตรการผลิต, 6 สีผสม | ป้ายชื่อใน report_menu_ic.go:884 |
cost_type |
วิธีคิดต้นทุน 0 เฉลี่ย, 1 LOT FIFO, 2 LOT กำหนดเอง, 3 FEFO (วันหมดอายุ), 4 มาตรฐาน, 5 พิเศษ 1 | report_menu_ic.go:885 |
unit_type |
0 หน่วยเดี่ยว, 1 หลายหน่วย, 2 ขนาน, 3 หลายหน่วย+ขนาน | item_master.go:36, stock_tools.go:499 |
unit_cost, unit_standard |
หน่วยต้นทุน / หน่วยมาตรฐาน (รหัสอ้าง ข้อมูลหน่วยนับ (ic_unit)) | item_master.go:37-38,645 |
unit_standard_name, unit_standard_stand_value, unit_standard_divide_value |
ค่าที่ derive จากหน่วยมาตรฐาน หลังบันทึกสินค้า | stock_tools.go:495-510 |
tax_type |
ประเภทภาษีของสินค้า (ค่าตัวเลข; ความหมายแต่ละค่าไม่ชัดจากโค้ดที่อ่าน) | item_master.go:44 |
balance_qty, balance_qty_2 |
ยอดคงเหลือ cache ที่ระบบคำนวณใหม่จาก รายการสินค้าในเอกสาร (ic_trans_detail) | service.go:1066-1119, service.go:810 (ALTER เพิ่ม balance_qty_2) |
average_cost |
ต้นทุนเฉลี่ยเคลื่อนที่ล่าสุดของสินค้า เขียนกลับจากการคำนวณต้นทุนหลังบันทึกเอกสารสต๊อก | service.go:546, :1264, trans_set_item.go:36 |
ic_serial_no |
1 = สินค้ามี Serial Number | item_master.go:50 |
use_expire |
ใช้วันหมดอายุ (ไม่ชัดจากโค้ดว่าใช้ที่ใดต่อ) | item_master.go:50 |
account_code_1..4 |
รหัสผังบัญชีผูกกับสินค้า (ผังบัญชี (gl_chart_of_account)) | item_master.go:47-48 |
supplier_code, manufacturer_code |
ผู้ขายหลัก / ผู้ผลิต | item_master.go:45,49 |
item_brand, item_pattern, item_design, item_grade, item_model, item_category, group_main, item_class, group_sub, group_sub2 |
รหัสกลุ่ม/ยี่ห้อ/รุ่น อ้าง lookup ic_brand, ic_pattern, ic_design, ic_grade, ic_model, ic_category, ic_group, ic_class, ic_group_sub, ic_group_sub2 |
item_detail.go:43-52 |
update_detail, update_price |
สวิตช์ให้ซิงก์รายละเอียด/ราคา (default 1) | item_master.go:46,129 |
commission_rate, serial_no_format, description, remark |
อัตราคอมมิชชั่น, รูปแบบ Serial, คำอธิบาย, หมายเหตุ | item_detail.go:53-56 |
create_code, create_datetime, last_update_code, last_update_date_time |
ผู้สร้าง/แก้ไข และเวลา | item_master.go:695-702 |
คอลัมน์อื่นอีกมาก (เช่น short_name, name_market, item_size, item_color, qc_product, tpu_code) ดูรายการเต็มใน item_master.go:42-58; ความหมายเชิงธุรกิจของบางตัวไม่ชัดจากโค้ด
คีย์และความสัมพันธ์
- 1 สินค้า : n บรรทัดเอกสาร รายการสินค้าในเอกสาร (ic_trans_detail) (
item_code) - 1 สินค้า : 1 รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail) (
ic_code) — สร้างอัตโนมัติถ้าไม่มี (item_master.go:708,stock_tools.go:511) - 1 สินค้า : n หน่วยนับที่ใช้ของสินค้า (ic_unit_use) / หน่วยนับตรงข้าม/หน่วยขนาน (ic_opposite_unit) / บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode) / สินค้ากับคลังและที่เก็บ (ic_wh_shelf) / ต้นทุนมาตรฐานสินค้า (ic_standard_cost) / ราคาขายสินค้าตามเงื่อนไข (ic_inventory_price)
- สินค้าชุด (
item_type3) 1 : n รายการย่อยสินค้าชุด (ic_inventory_set_detail) (ic_set_code) - 1 สินค้า : n ทะเบียน Serial Number สินค้า (ic_serial) (
ic_code) เมื่อic_serial_no = 1
ใครเขียน / ใครอ่าน
- เขียน (บันทึกสินค้า):
writeItemMasterใช้ INSERT/UPDATE ไม่ delete+insert เพื่อไม่ให้ยอดคงเหลือและต้นทุนหาย (item_master.go:676-706) แล้วเขียนตารางลูกในwriteItemMasterGrids(item_master.go:719-777) - เขียน (คำนวณสต๊อก):
RebuildStock/rebuildStockTxคำนวณbalance_qtyใหม่หลังบันทึกเอกสารสต๊อก ดู ต้นทุนสินค้าแบบถัวเฉลี่ยเคลื่อนที่ (Moving Average Cost), การคำนวณยอดสต็อกคงเหลือใหม่ (Stock Balance Rebuild) - เขียน (หลังแก้สินค้า):
itemSavedSQLปรับunit_standard_name/stand/divideและic_inventory_barcode.description(stock_tools.go:493-510) - ลบ:
ItemMasterDeleteลบได้เฉพาะสินค้าที่ยังไม่เคยอยู่ในic_trans_detailถ้ามีการใช้แล้วข้ามพร้อมข้อความ "สินค้ามีการใช้ไปแล้ว ห้ามลบ" และลบตารางลูกตามitemChildTables(item_master.go:812-870) - อ่าน: กริดรายการสินค้าในเอกสาร
loadGridItemjoin กับ รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail) และ สินค้ากับคลังและที่เก็บ (ic_wh_shelf)/พื้นที่เก็บสินค้า (ic_shelf) (trans_grid.go:268-300); เปลี่ยนรหัสสินค้าchangeCodeSpecs["item"]แก้ทุกตารางที่อ้างรหัสนี้ (workflow.go:133-148)
ข้อควรระวัง
- สินค้าที่ ขยับสต๊อกจริง คือ
item_type IN (0, 4, 6)เท่านั้น (stock_rebuild.go:18); 1, 2, 3, 5 ไม่ทำสต๊อก item_type = 5ป้ายชื่อไม่ตรงกัน: รายงานเรียก "สูตรการผลิต" (report_menu_ic.go:884) แต่trans_set_item.go:8-10เรียก "สูตรสี" และจัดเป็นสินค้าชุดที่แตกลูก — ยืนยันความหมายจริงกับลุงจืดก่อนใช้unit_type,unit_cost,unit_standard,cost_typeถูกล็อกไม่ให้แก้เมื่อสินค้ามีic_trans_detailแล้ว (item_master.go:34,629-649)balance_qtyเป็นค่า cache; ความจริงอยู่ที่ผลรวมจาก รายการสินค้าในเอกสาร (ic_trans_detail) ด้วยตัวกรองstockBalancePredicate(stock_rebuild.go:29)- ที่มาอื่น: logic ต้นทุนเฉลี่ยเคลื่อนที่ ดู ต้นทุนสินค้าแบบถัวเฉลี่ยเคลื่อนที่ (Moving Average Cost); ข้อมูลหลักทั่วไป ดู ข้อมูลหลักแบบหัว-รายการ รหัสอัตโนมัติ และเลย์เอาต์รายการ (Master-detail, code auto-run, DataList), ข้อมูลสินค้าและข้อมูลสินค้าเพิ่มเติม (Item master & item detail)
ที่มาในโค้ด
backend/internal/application/process/item_master.go:35-76(specs),:629-649(ตรวจใช้แล้ว),:674-706(writeItemMaster),:717-775(grids),:812-870(delete)backend/internal/application/process/item_detail.go:43-58(itemSpecs)backend/internal/application/process/service.go:545,:810,:1066-1119(balance_qty)backend/internal/application/process/stock_rebuild.go:18-29backend/internal/application/process/stock_tools.go:493-511backend/internal/application/process/report_menu_ic.go:884-885backend/internal/application/process/trans_grid.go:268-300backend/internal/application/process/workflow.go:133-148