สมอง SML

คลังความรู้ / หน้าจอทีละจอ

#screens#master

ข้อมูลสินค้า (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 "สะสมแต้ม", "ประเภทเครื่องดื่ม", "ใช้ระบบหมดอายุ"

4 ส่วนด้านล่าง (ปุ่ม "ไปที่ส่วน:" เลื่อนหน้า, :2782-2858)

แสดงต่อกันเป็น 4 ส่วน (ป้ายแท็บเลื่อนไปยังส่วนนั้น defaultTab คือ unit)

  1. หน่วยนับ & บาร์โค้ด (: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)
  2. อื่นๆ (:3883-3975): ระยะเวลาในการผลิต(นาที) และ checkbox พิมพ์บาร์โค้ดตรวจสอบ, พิมพ์ใบจัดรายการแบบแยก, แสดงในระบบ e-Order, พูดรายการอาหาร, ไม่รวมรายการในระบบ POS
  3. ต้นทุนมาตรฐาน (:3977-4110, เฉพาะรุ่น Pro): วันที่, หน่วยนับ, ชื่อหน่วย, ต้นทุน ปุ่ม "เพิ่มแถวต้นทุน" ตาราง ic_standard_cost
  4. รูปภาพสินค้า (:4113-4300): คลังรูป 5 มุมมอง เก็บไฟล์ใน MinIO ผ่าน POST /api/crm/upload ปุ่มลบรูป (ส่งเฉพาะรูปที่เปลี่ยน ไม่ลบรูปเดิมที่โหลดไม่สำเร็จ :1056-1060) ตัวจัดการรูปทั้งหมดอยู่ที่ กำหนดรูปภาพสินค้า/พนักงาน/สินทรัพย์ และบันทึกรูปภาพเอกสาร (ItemPictureScreen, DocumentPictureScreen)

การบันทึก (handleSave, :1027-1130)

  1. ตรวจสิทธิ์ (รายการใหม่ = สิทธิ์เพิ่ม, เดิม = สิทธิ์แก้ไข) ไม่ผ่านขึ้น "ไม่มีสิทธิ์บันทึกข้อมูล"
  2. ประเภทหน่วยนับ 2 หรือ 3 (ขนาน) ต้องมีอย่างน้อย 1 แถวใน "ตารางหน่วยนับเทียบ" ไม่งั้นขึ้น "ข้อมูลไม่ครบถ้วน" แล้วกระโดดไปส่วนหน่วยนับ
  3. เรียก itemMasterSave -> POST /api/process/itemmaster/save ส่งทุกก้อนพร้อมกัน (item, units, oppositeUnits, barcodes, whShelves, standardCosts, images) ฝั่งเซิร์ฟเวอร์ตรวจกฎตาม _icMain._saveData ของโปรแกรมเดิม แล้วเขียนทุกตารางในธุรกรรมเดียว
  4. สำเร็จ: ขึ้น "บันทึกสำเร็จ ... บันทึกข้อมูลสินค้า "<รหัส>" เรียบร้อยแล้ว" แล้วรีโหลดรายการ ฟอร์มกลับเป็นโหมดดู

ลบ

ปุ่ม ลบ เรียก 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)

ที่มาในโค้ด