สมอง SML

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

#screens#master

รายละเอียดสินค้า, แก้ด่วนแบบกลุ่ม, กำหนดระดับสินค้า

สามจอเล็กที่อยู่ในไฟล์เดียวกัน (IcExtraScreens.tsx) แก้ข้อมูลสินค้าเฉพาะด้าน ทั้งสามเขียนฐานข้อมูลด้วยชุดคำสั่ง SQL ผ่าน queryExecBatch โดยตรงจากหน้าจอ

รหัส เมนู คอมโพเนนต์ โหมดผูก
2003 รายละเอียดสินค้า (menu_ic_description) ItemDescriptionScreen screenRegistry.tsx:641-
2004 แก้ไขรายละเอียด(เร็ว) (menu_ic_description_fast) ItemDescriptionFastScreen :653-
2023 กำหนดลำดับการค้นหา (menu_ic_item_level) ItemLevelScreen :690-701
2024 กำหนดลำดับการค้นหา (เร็ว) (menu_ic_multi_item_level) ItemLevelScreen multi :703-715
ชื่อบนจอของ 2023/2024 ดึงจากชื่อเมนูจริง (getMenuTextByName) ค่าเริ่มต้นในโค้ดคือ "กำหนดระดับสินค้า" กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu)

2003 รายละเอียดสินค้า (ItemDescriptionScreen)

เขียนบรรยายสินค้าเป็นข้อความจัดรูปแบบ (HTML) เก็บต่อสินค้า

  • ซ้าย: รายการสินค้า (รหัส, ชื่อ, หน่วยนับ) ค้นหา/เลือกได้ (useItemLoader, :190-292) เปิดจอแล้วเลือกแถวแรกให้เอง ดูกลไกที่ รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog)
  • ขวา: การ์ด "ข้อมูลอ้างอิงสินค้า" อ่านอย่างเดียว (รหัส, หน่วยนับ, ชื่อ 1-2, ประเภท, ชนิด, รูปแบบสินค้า, วิธีคำนวณต้นทุน, ประเภทภาษี, กลุ่มสินค้า :117-187) แล้วตัวแก้ข้อความ: ตัวเลือกรูปแบบบล็อก/ฟอนต์/ขนาด, ตัวหนา, ตัวเอียง, ขีดเส้นใต้, รายการสัญลักษณ์, รายการลำดับเลข, ปุ่ม Preview สลับดูตัวอย่าง (:462) ช่องว่างแสดง "กรอกรายละเอียดสินค้าเพิ่มเติม (รองรับข้อความและ HTML)..." ไม่มีรายละเอียดแสดง "ไม่มีรายละเอียด"
  • ปุ่ม: โหมดดู = แก้ไข (ต้องมีสิทธิ์), ปิดหน้าจอ; โหมดแก้ = บันทึก, ปิดหน้าจอ (คือยกเลิกการแก้)
  • บันทึก (:345-366) ลบแถวเดิมของสินค้านั้นใน ic_description แล้วเพิ่มใหม่ และ เขียน HTML เดียวกันทับคอลัมน์ ic_inventory.remark ด้วย ในธุรกรรมเดียวกัน; ตอนโหลดถ้ายังไม่มีแถวใน ic_description จะใช้ค่า remark เดิมมาแสดงแทน (:318-340) สำเร็จขึ้น บันทึกรายละเอียดสินค้า <รหัส> เรียบร้อยแล้ว
  • ข้อควรระวัง: หมายเหตุในแท็บ "9.หมายเหตุ" ของ ข้อมูลสินค้าเพิ่มเติม 15 แท็บ (ItemDetail2Screen) ใช้คอลัมน์ remark ตัวเดียวกัน (ไม่เกิน 255 ตัวอักษร) การบันทึกรายละเอียด HTML จากจอนี้จะทับหมายเหตุนั้น

2004 แก้ไขรายละเอียด(เร็ว) (ItemDescriptionFastScreen)

แก้ฟิลด์ที่ติ๊กเลือกกับหลายสินค้าพร้อมกัน (รวบรวมเป็น UPDATE ครั้งเดียว)

  1. กล่อง "รายชื่อสินค้าที่ต้องการแก้ไขพร้อมกัน": ตารางสินค้า ลากสลับลำดับได้ ลบทีละแถวด้วยไอคอนถังขยะ ปุ่ม เพิ่มสินค้า (เปิดหน้าต่าง "เลือกสินค้าเข้าตารางแก้ไขด่วน") และ ล้างตารางสินค้า
    • เปิดจอครั้งแรกตารางไม่ว่าง: ระบบใส่ 10 สินค้าแรกเรียงตามรหัส ให้เอง (SELECT ... ORDER BY code ASC LIMIT 10, :1054-1056) ต้องล้างหรือลบเองถ้าไม่ต้องการแก้สินค้าเหล่านั้น
  2. 7 ส่วน (ปุ่ม "ข้ามไปยังส่วน:" เลื่อนหน้า) FAST_EDIT_TABS, :803-1000: 1.ทั่วไป (กลุ่มหลัก, ยี่ห้อ, รูปแบบ, ดีไซน์, หมวด, ระดับ, เกรด, รุ่น, สี, ขนาด) 2.หน่วยนับ/สต็อก (รูปแบบต้นทุน, การควบคุมยอดคงเหลือ, การรับ-จ่าย Serial, การคำนวณจุดสั่งซื้อ, ปริมาณสั่งซื้อที่เหมาะสม) 3.บัญชี (ผังบัญชีซื้อ, ขายสด, ขายเชื่อ, ต้นทุนขาย) 4.ขาย (ประเภทภาษี, ประเภทการขาย, ห้ามแก้ไขราคาขาย, ห้ามแก้ไขส่วนลด, กำหนดราคากลาง, สถานะป้ายราคา) 5.ซื้อ (เจ้าหนี้หลัก, สินค้าเครื่องดื่ม) 6.การผลิต (ระยะเวลาการผลิต(วัน), ใช้วันหมดอายุ, ควบคุมยอดค้างรับ/ค้างส่ง) 7.POS (คีย์ลัด POS, อนุญาตป้อนราคาขณะขาย, พิมพ์ใบสั่งอาหารแยกต่อหน่วย)
    • ทุกฟิลด์มี checkbox หน้าช่อง: ฟิลด์ที่ไม่ติ๊กจะไม่ถูกแก้
  3. บันทึก (handleSave, :1069-1118): ต้องมีสิทธิ์แก้; ไม่มีสินค้าในตารางขึ้น "กรุณาเลือกสินค้าอย่างน้อย 1 รายการ"; ไม่ติ๊กฟิลด์ใดขึ้น "กรุณาติ๊กเลือกฟิลด์ที่ต้องการแก้ไขอย่างน้อย 1 ช่อง" ตัวเลข/ตัวเลือกใช้ decimalSql(..., "0") ข้อความใช้ escapeSql; ฟิลด์ของ ic_inventory -> UPDATE ... WHERE code IN (...); ฟิลด์ของ ic_inventory_detail -> สร้างแถวว่างให้สินค้าที่ยังไม่มีก่อน แล้วค่อย UPDATE ... WHERE ic_code IN (...) สำเร็จขึ้น บันทึกการแก้ไขแบบกลุ่ม (N สินค้า, M ฟิลด์) เรียบร้อยแล้ว
  • ฟิลด์ที่ติ๊กแต่ปล่อยค่าว่างจะเขียนค่าว่างทับ (ข้อความ) หรือ 0 (ตัวเลข/ตัวเลือก) ทุกสินค้าในตาราง

2023/2024 กำหนดระดับสินค้า (ItemLevelScreen, เทียบ SMLERPIC._icItemLevel)

กำหนดระดับ 1-4, ราคาแนะนำ, คำแนะนำ และเงื่อนไข 1-4 ต่อบาร์โค้ด

  • 2023 (โหมดปกติ): รายการสินค้าซ้าย เลือกสินค้าแล้วตารางด้านขวาแสดงทุกบาร์โค้ดของสินค้านั้น
  • 2024 (multi): ไม่มีรายการซ้าย มีช่อง จากรหัสสินค้า / ถึงรหัสสินค้า กดปุ่ม ประมวลผล เพื่อโหลดตามช่วงรหัส
  • ตาราง (บาร์โค้ด, รหัสสินค้า, หน่วย, ระดับ 1-4, ราคาแนะนำ, คำแนะนำ, เงื่อนไข 1-4) ดึงจาก ic_inventory_barcode เชื่อม ic_inventory_level และ ic_inventory_barcode_condition เฉพาะบาร์โค้ดที่ไม่ว่าง และ จำกัด 150 แถว (LIMIT 150, :1389-1417) ราคาแนะนำถ้ายังไม่มีระดับจะเติมราคาจากบาร์โค้ด
  • บันทึก (:1445-1475): ทุกแถวที่แสดงถูกลบแล้วเพิ่มใหม่ทั้งหมดใน ic_inventory_level และ ic_inventory_barcode_condition (ไม่เฉพาะแถวที่แก้) สำเร็จขึ้น บันทึกระดับสินค้า N รายการเรียบร้อยแล้ว
  • ข้อควรระวัง: ช่วงรหัสที่มีบาร์โค้ดเกิน 150 แถวจะเห็นแค่ 150 แถวแรกเรียงตามรหัส/บาร์โค้ด ต้องแบ่งช่วงรหัสทำทีละช่วง

ตารางที่เกี่ยวข้อง

ทะเบียนสินค้า (ic_inventory), รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail), บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode) ส่วน ic_description, ic_inventory_level, ic_inventory_barcode_condition ยังไม่มีบันทึกตารางในฐานความรู้

ที่มาในโค้ด