ข้อมูลสินค้า (ItemScreen)
จอหลักของข้อมูลสินค้า/วัตถุดิบ (4,383 บรรทัด) ใช้โครงจอข้อมูลหลักแบบ "รายการซ้าย / ฟอร์มขวา" ที่ลากแบ่งได้ (ResizableSplit, เก็บความกว้างใน sml_item_split, :1898-1905) บันทึกลงหลายตารางพร้อมกันในครั้งเดียว กลไกจอข้อมูลหลักทั่วไปดู หน้าจอข้อมูลหลักมาตรฐาน (StandardMasterScreen), รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS) ส่วนกติกาฝั่งเซิร์ฟเวอร์ดู ข้อมูลสินค้าและข้อมูลสินค้าเพิ่มเติม (Item master & item detail)
วิธีเปิด
| รหัส | เมนู | โหมดที่จอทำงาน |
|---|---|---|
| 2001 | ข้อมูลสินค้า (menu_ic_item_detail, ชื่อสำรอง menu_ic_inventory) |
เต็ม: เพิ่ม/แก้/ลบ (ไม่ลบจริง ดูข้อควรระวัง) |
| 2008 | กำหนดสินค้า (menu_ic_item_for_sync) |
isSyncMode ไม่มีตารางบาร์โค้ดและตารางคลังที่เก็บ (:227) |
| (ไม่อยู่ในเมนู) | menu_ic_item_detail_barcode (ข้อมูลสินค้า แสดงตามบาร์โค๊ด) |
ItemBarcodeScreen ลงทะเบียนใน registry (screenRegistry.tsx:614-621) แต่ไม่มีรหัสในเมนู 4 หลัก |
เมนู 2002 "ข้อมูลสินค้าเพิ่มเติม" ไม่ได้ใช้ ItemScreen registry ผูกกับ ItemDetail2Screen (screenRegistry.tsx:605-613) ดู ข้อมูลสินค้าเพิ่มเติม 15 แท็บ (ItemDetail2Screen) ส่วนโค้ดโหมด isDetailOnly ใน ItemScreen (:229) เป็นทางเก่าที่ registry ปัจจุบันไม่ส่งเมนูนั้นมา |
||
ItemBarcodeScreen (ItemBarcodeScreen.tsx:5) เป็นเพียงตัวห่อที่เรียก ItemScreen ด้วย displayMode="barcode" ดู "ส่วนซ้าย" ด้านล่าง ผู้ใช้ยังจัดการเมนูผ่านกลไก ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu) |
ส่วนซ้าย: รายการสินค้า
- สวิตช์ "มุมมองรายการ:" 2 แบบ ตามรหัสสินค้า กับ ตามบาร์โค้ด (ทุกหน่วย) (
:1901-1940) แบบบาร์โค้ดคือลิสต์ที่หนึ่งแถวต่อหนึ่งบาร์โค้ดของทุกหน่วยนับ ใช้ค้นสินค้าจากบาร์โค้ด รายการเป็นแบบ DataList ปรับคอลัมน์/กรองได้ ดู รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog) - เปลี่ยนสินค้าขณะแก้ไขค้างอยู่: ถาม "มีการเปลี่ยนแปลงข้อมูลที่ยังไม่ได้บันทึก" ตัวเลือก "สลับรายการ (ไม่บันทึก)" / "ทำงานต่อ" (
:1964-1967)
แถบหัวและปุ่ม (:2015-2135)
- แถวหัว: "หน้าจอบันทึก/แก้ไขข้อมูล", ข้อความ "บันทึกล่าสุด <เวลา>", ตัวนับ "แก้ไขแล้ว N ช่อง", ป้าย "เพิ่มรายการใหม่" หรือ "โหมดแก้ไข"
- ปุ่ม: บันทึก, ปิดหน้าจอ / ยกเลิกการแก้ไข (Esc), แก้ไข (ต้องมีสิทธิ์แก้), ค้นหาบาร์โค้ด, เพิ่มใหม่ (ต้องมีสิทธิ์เพิ่ม), ลบ (ต้องมีสิทธิ์ลบ), ปิดหน้าจอ สิทธิ์ผ่าน
useScreenRightsดู การตรวจสิทธิ์เมนูของ route process (Process route rights) - คีย์ลัด (
:1852-1882) เฉพาะเมื่อแท็บนี้กำลังแสดงอยู่: Ctrl+S บันทึก (ต้องกำลังแก้และมีสิทธิ์), Ctrl+B เปิดช่องค้นด้วยบาร์โค้ด ("ยิง/พิมพ์บาร์โค้ด แล้วกด Enter"), Ctrl+Home ไปช่องแรกของฟอร์ม, Esc ยกเลิกการแก้ไข (เมื่อไม่มี popup เปิดอยู่) และ F6 ในช่องบาร์โค้ดเพื่อสร้างบาร์โค้ดใหม่ ดูด้านล่าง
ช่องส่วนหัว (ฟอร์ม 2 คอลัมน์, :2148-2770)
รหัสสินค้า (ปุ่มค้นหา SEARCH_ITEM; รหัสใหม่เรียก itemNextCode ให้เลขถัดไปได้ :1347), ช่อง "สินค้ามี Serial", ประเภทภาษี (1.ภาษีมูลค่าเพิ่ม / 2.ยกเว้นภาษี), ประเภทสินค้า (1.สินค้าทั่วไป / 2.บริการ / 3.สินค้าให้เช่า / 4.สินค้าชุด / 5.สินค้าฝากขาย / 6.สูตรสี / 7.ผสมสี), ชื่อสินค้า 1-2, ชื่ออังกฤษ 1-2, ประเภทหน่วยนับ, หน่วยต้นทุน, หน่วยยอดคงเหลือ, ประเภทต้นทุน, ประเภทรายได้, รูปแบบสินค้า, ผู้จัดจำหน่ายหลัก, เครื่องหมาย, รหัสผังบัญชีสินค้า / ต้นทุน / รายได้ / รับคืน (เลือกจากผังบัญชี ดู ผังบัญชี (Chart of Accounts: MasterDetailScreen 9001 / 9002)), กว้างxยาวxสูง, น้ำหนัก(กก), ผู้ผลิต และ checkbox "สะสมแต้ม", "ประเภทเครื่องดื่ม", "ใช้ระบบหมดอายุ"
- ช่องที่เก็บแบบ "รหัส~ชื่อ" (ช่องค้นหา) จะส่งไปเซิร์ฟเวอร์เฉพาะส่วนรหัส (
ITEM_CODE_FIELDS,:141-146และ:1066-1069) - ฟิลด์ที่แสดงเพิ่มตามประเภทธุรกิจที่เลือกใน กำหนดข้อเลือกพิเศษต่างๆ (OptionsForm) (
getActiveItemFieldsForBusinessTypes,:244) ส่วน "ข้อมูลสินค้าเฉพาะประเภทธุรกิจ" อยู่ใต้ฟอร์ม (:2768) - ตัวเลขใช้ช่อง
ItemNumericInputทศนิยมตามตั้งค่าระบบ ดู ตัวเลข เงิน ภาษี และปี พ.ศ. ฝั่ง frontend (numeric.ts)
4 ส่วนด้านล่าง (ปุ่ม "ไปที่ส่วน:" เลื่อนหน้า, :2782-2858)
แสดงต่อกันเป็น 4 ส่วน (ป้ายแท็บเลื่อนไปยังส่วนนั้น defaultTab คือ unit)
- หน่วยนับ & บาร์โค้ด (
:2860-3880)- 1.1 ตารางหน่วยนับ (
ic_unit_use): รหัส, ชื่อ, ตัวตั้ง, ตัวหาร, อัตราส่วน, ลำดับที่, กว้างxยาวxสูง, น้ำหนัก(กก), ขนาดสินค้า, สถานะ ปุ่ม "เพิ่มหน่วยนับ" ต้องกรอกขนาดเป็นรูปกว้างxยาวxสูงxหน่วย(เช่น 10x15x20xซม.) ไม่ถูกจะล้างช่องแล้วเตือน (:1363-1372) ตาราง "หน่วยนับเทียบ / หน่วยนับคู่ขนาน" (ic_opposite_unit) ใช้เมื่อประเภทหน่วยนับเป็นแบบขนาน - 1.2 ตารางบาร์โค้ดและราคา (
ic_inventory_barcode): บาร์โค้ด, หน่วยนับ, ราคากลุ่มที่ 1-4 (แยกทั่วไป/สมาชิก), ช่วงวันที่ใช้ราคา กดปุ่มสร้างหรือ F6 เปิดหน้าต่าง "First Digit" สร้างบาร์โค้ด EAN13 นำหน้า 2 (ใช้ภายในร้าน) ผ่านPOST /api/process/barcode/ean13-generateและไม่ให้ซ้ำ (:1475-1495) บาร์โค้ดซ้ำแถวอื่นเตือน "บาร์โค๊ดซ้ำ" แล้วล้างช่อง (:1497-1520) ปุ่ม "เพิ่มบาร์โค้ด" - 1.3 ตารางคลังและที่เก็บ (
ic_wh_shelf): รหัสคลัง, ชื่อคลัง, รหัสพื้นที่เก็บ, ชื่อพื้นที่เก็บ, ชั้นวาง, จำนวนน้อยสุด, จำนวนสูงสุด ปุ่ม "เพิ่มคลัง/ที่เก็บ" และปุ่ม All WareHouse and Shelf ดึงทุกคลังอัตโนมัติ (ถามก่อน "ต้องการดึงข้อมูลใหม่มาแทนของเดิมหรือไม่") (คู่ (คลัง+ที่เก็บ) ซ้ำหรือไม่มีในic_shelfจะเตือน:1578-1660)
- 1.1 ตารางหน่วยนับ (
- อื่นๆ (
:3883-3975): ระยะเวลาในการผลิต(นาที) และ checkbox พิมพ์บาร์โค้ดตรวจสอบ, พิมพ์ใบจัดรายการแบบแยก, แสดงในระบบ e-Order, พูดรายการอาหาร, ไม่รวมรายการในระบบ POS - ต้นทุนมาตรฐาน (
:3977-4110, เฉพาะรุ่น Pro): วันที่, หน่วยนับ, ชื่อหน่วย, ต้นทุน ปุ่ม "เพิ่มแถวต้นทุน" ตารางic_standard_cost - รูปภาพสินค้า (
:4113-4300): คลังรูป 5 มุมมอง เก็บไฟล์ใน MinIO ผ่านPOST /api/crm/uploadปุ่มลบรูป (ส่งเฉพาะรูปที่เปลี่ยน ไม่ลบรูปเดิมที่โหลดไม่สำเร็จ:1056-1060) ตัวจัดการรูปทั้งหมดอยู่ที่ กำหนดรูปภาพสินค้า/พนักงาน/สินทรัพย์ และบันทึกรูปภาพเอกสาร (ItemPictureScreen, DocumentPictureScreen)
การบันทึก (handleSave, :1027-1130)
- ตรวจสิทธิ์ (รายการใหม่ = สิทธิ์เพิ่ม, เดิม = สิทธิ์แก้ไข) ไม่ผ่านขึ้น "ไม่มีสิทธิ์บันทึกข้อมูล"
- ประเภทหน่วยนับ 2 หรือ 3 (ขนาน) ต้องมีอย่างน้อย 1 แถวใน "ตารางหน่วยนับเทียบ" ไม่งั้นขึ้น "ข้อมูลไม่ครบถ้วน" แล้วกระโดดไปส่วนหน่วยนับ
- เรียก
itemMasterSave->POST /api/process/itemmaster/saveส่งทุกก้อนพร้อมกัน (item, units, oppositeUnits, barcodes, whShelves, standardCosts, images) ฝั่งเซิร์ฟเวอร์ตรวจกฎตาม_icMain._saveDataของโปรแกรมเดิม แล้วเขียนทุกตารางในธุรกรรมเดียว - สำเร็จ: ขึ้น "บันทึกสำเร็จ ... บันทึกข้อมูลสินค้า "<รหัส>" เรียบร้อยแล้ว" แล้วรีโหลดรายการ ฟอร์มกลับเป็นโหมดดู
ลบ
ปุ่ม ลบ เรียก itemMasterDelete ในมุมมองปกติ แต่ในโหมดบาร์โค้ดหรือจอแก้ไขเพิ่มเติม (isBarcodeMode || isDetailOnly) ขึ้น "ห้ามลบข้อมูล ... หากต้องการลบสินค้า กรุณาลบที่หน้าจอข้อมูล..." (:1136-1144) ฝั่งเซิร์ฟเวอร์ปฏิเสธการลบสินค้าที่มีรายการเคลื่อนไหว (ตรวจ txCheckSql ตอนโหลด :802)
เตือนเมื่อเปิดจอ
เปิดจอแล้วค้นบาร์โค้ดซ้ำในระบบ (select barcode ... group by barcode having count(*) > 1) ถ้ามีขึ้นเตือน "Barcode ซ้ำ : ..." (:311-316) ตามพฤติกรรม _utility._barcodeDuplicate ของโปรแกรมเดิม
ตารางที่เกี่ยวข้อง
ทะเบียนสินค้า (ic_inventory), รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail), หน่วยนับที่ใช้ของสินค้า (ic_unit_use), หน่วยนับตรงข้าม/หน่วยขนาน (ic_opposite_unit), บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode), สินค้ากับคลังและที่เก็บ (ic_wh_shelf), พื้นที่เก็บสินค้า (ic_shelf), ต้นทุนมาตรฐานสินค้า (ic_standard_cost), คลังสินค้า (ic_warehouse), ข้อมูลหน่วยนับ (ic_unit)
ข้อควรระวัง
- ปุ่มปิดหน้าจอเมื่ออยู่ในโหมดแก้ไขถามก่อนทิ้งการแก้ (
:1811,1842) - รูปเก็บเป็น URL ใน MinIO ไม่ใช่ไฟล์ในฐานข้อมูล ถ้าโหลดรูปไม่สำเร็จจะไม่ส่งรูปไปบันทึกเพื่อไม่ทับของเดิม
- ตัวเลือกสินค้าแต่ละประเภท (บริการ, ชุด, สูตรสี) เปลี่ยนฟิลด์ที่ใช้ได้ ผ่านชุดฟิลด์ตามประเภทธุรกิจ
- ราคาเป็นสตริงทศนิยมตลอดทาง ไม่แปลงเป็นตัวเลขฝั่งจอ ดู ตัวเลข เงิน ภาษี และปี พ.ศ. ฝั่ง frontend (numeric.ts)
ที่มาในโค้ด
frontend/account/master/ItemScreen.tsx:215-246โหมดจอ;:311-316เตือนบาร์โค้ดซ้ำ;:1027-1130บันทึก;:1136-1144ห้ามลบ;:1347รหัสถัดไป;:1363-1372รูปแบบขนาด;:1475-1520F6/บาร์โค้ดซ้ำ;:1600-1680ดึงคลังทั้งหมด;:1852-1882คีย์ลัด;:2015-2135ปุ่ม;:2148-2770ฟิลด์;:2860-43004 ส่วนfrontend/account/master/ItemBarcodeScreen.tsx— ตัวห่อมุมมองบาร์โค้ดfrontend/account/tabs/screenRegistry.tsx:593-612,353-366— ผูกเมนู- ดูเพิ่ม: ข้อมูลสินค้าเพิ่มเติม 15 แท็บ (ItemDetail2Screen) · กำหนดบาร์โค้ด เพิ่มบาร์โค้ดแบบเร็ว และตรวจบาร์โค้ด EAN13 (BarcodeSetupScreen, BarcodeFastAddScreen, Ean13CheckerScreen) · กำหนดหน่วยนับสินค้า (UnitScreen) · กำหนดคลังสินค้า และจอคลังที่เก็บสินค้า (WarehouseScreen) · ปรับราคาสินค้า นำเข้าไฟล์ราคาทั้งชุด (ModifyPriceScreen) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)