สมอง SML

คลังความรู้ / ตารางข้อมูล

#tables#ic

กลุ่มตาราง 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)

ก. เอกสารและการเคลื่อนไหวสต๊อก

ข. สินค้า (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_type 1-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)

ค. หน่วยนับ คลัง ที่เก็บ

ง. 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:657
  • backend/internal/application/process/item_master.go:812
  • backend/internal/application/process/item_detail.go:174
  • backend/internal/application/process/workflow.go:134
  • backend/internal/application/process/master_detail_specs.go:144
  • backend/internal/application/process/stock_rebuild.go:18