สมอง SML

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

#screens#master

กำหนดบาร์โค้ด / เพิ่มบาร์โค้ดแบบเร็ว / ตรวจ EAN13

สามจอในไฟล์ BarcodeScreens.tsx สำหรับบาร์โค้ดของสินค้าในหมวดสินค้า/คลัง กฎ การบันทึก และการสร้างเลขอยู่ที่ Go (/api/process/barcode/*, หัวไฟล์ :3-9) ดูตรรกะฝั่งเซิร์ฟเวอร์ที่ บาร์โค้ดสินค้า ส่วนลดบาร์โค้ด EAN13 และพิมพ์ป้าย (Barcode menus 2.1.7-2.1.17) จอตั้งบาร์โค้ดหลักของสินค้าเต็มรูปแบบอยู่ใน ข้อมูลสินค้า (ItemScreen) (ส่วนหน่วยนับ & บาร์โค้ด)

รหัส เมนู จอ
2009 กำหนดบาร์โค้ดสินค้า (menu_ic_item_barcode) BarcodeSetupScreen
2010 เพิ่มบาร์โค๊ดสินค้าแบบเร็ว (menu_ic_item_add_barcode_fast) BarcodeFastAddScreen
2019 ตรวจสอบบาร์โค๊ดตามมาตรฐาน EAN13 (menu_ic_item_barcode_checker_ean13) Ean13CheckerScreen
กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu) ส่วน 2018/2020 (ตรวจจากไฟล์ข้อความ / พิมพ์บาร์โค้ด) อยู่ที่ เครื่องมือตรวจสอบสินค้า ราคา บาร์โค้ด และ Serial (CheckPriceScreen, BarcodeCheckerScreen, SerialStockCountScreen, SerialAnalyzeScreen) และ พิมพ์บาร์โค้ดด้วยเครื่องพิมพ์ทั่วไป (BarcodePrintScreen)

ตารางบาร์โค้ดที่ใช้ร่วม (BarcodeGrid, :140-334)

  • คอลัมน์: บาร์โค้ด (ไม่เกิน 25 ตัวอักษร), หน่วยนับ (เลือกจากหน่วยนับของสินค้านั้น), ราคากลุ่มที่ 1-4 แต่ละกลุ่มแยก "ทั่วไป" กับ "สมาชิก" (ค่าเริ่มต้นแถวใหม่ "0")
  • แถวใต้แต่ละบาร์โค้ด (ตัวเลือกของ #n): ปุ่ม สร้างบาร์โค้ด, checkbox ไม่แสดง (hiddenText), ไม่สะสมแต้ม (noPoint), ลดล้างสต๊อก (isClearance), ช่วง จากวันที่ / ถึงวันที่ (ช่วงใช้ราคา) และปุ่ม ลบ บรรทัด
  • แถวว่างต่อท้ายตาราง = แถวเพิ่มใหม่ (ปรากฏเฉพาะตอนแก้ไข); ตารางว่างขึ้น "ยังไม่มีบาร์โค้ด"
  • แถบล่าง: ปุ่มสร้างบาร์โค้ดสำหรับแถวสุดท้าย และช่อง เลขนำหน้า (First Digit, เฉพาะตัวเลข ไม่เกิน 11 หลัก ค่าเริ่มต้น 2) พร้อมคำอธิบาย "(ว่าง = สุ่มทั้งหมด, 2 = บาร์โค้ดใช้ภายในร้าน)"
  • สร้างบาร์โค้ด: POST /api/process/barcode/ean13-generate ด้วย {prefix, barcodes} ได้เลข EAN13 (เติมให้ครบ 12 หลักแล้วต่อหลักตรวจสอบ, ไม่ซ้ำในฐานข้อมูล ตามคอมเมนต์ :20) ถ้าเลขที่ได้ซ้ำกับแถวอื่นในตารางเดียวกันจะไม่ใส่ให้ ผิดพลาดแสดงข้อความใต้ปุ่ม คอมเมนต์เรียก F6 แต่ในจอนี้ไม่มีตัวจับคีย์ F6 ใช้ปุ่มเท่านั้น (ต่างจากจอ ข้อมูลสินค้า (ItemScreen) ที่ผูก F6 ในช่องบาร์โค้ด)

2009 กำหนดบาร์โค้ดสินค้า (BarcodeSetupScreen, :371-561)

  • ซ้าย: รายการสินค้า (รหัส, ชื่อ, หน่วย) ค้นได้ทั้งจากรหัส/ชื่อ และ จากบาร์โค้ด (ค้นด้วย exists (select 1 from ic_inventory_barcode ...) แบบไม่สนตัวพิมพ์) ดูกลไกที่ รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog)
  • ขวา: "ข้อมูลสินค้า" อ่านอย่างเดียว (รหัส, ชื่อ, หน่วยนับมาตรฐาน, ประเภทหน่วยนับ "หน่วยนับเดียว"/"หลายหน่วยนับ") แล้วตารางบาร์โค้ด ไม่เลือกสินค้าแสดง "เลือกสินค้าจากรายการด้านซ้าย"
  • ปุ่ม: โหมดดู = แก้ไข, ลบ (ลบบาร์โค้ด ทั้งหมด ของสินค้า ถามยืนยัน สำเร็จ ลบบาร์โค้ดทั้งหมดของ <รหัส> แล้ว, ปิดเมื่อไม่มีบาร์โค้ดหรือไม่มีสิทธิ์ลบ), ปิดหน้าจอ; โหมดแก้ = บันทึก (กดได้เมื่อมีการเปลี่ยนแปลง), ปิดหน้าจอ (ยกเลิกการแก้ คืนค่าเดิม) คีย์ลัด Ctrl+S / Esc ผ่าน useShortcuts (:112-134)
  • บันทึก: ต้องมีสิทธิ์แก้ไข ส่ง POST /api/process/barcode/save ด้วย {itemCode, barcodes} แล้วโหลดสินค้านั้นใหม่; ลบส่ง barcodes: []
  • กฎตรวจบาร์โค้ดซ้ำ/ชนิดหน่วยอยู่ที่ Go ข้อความผิดพลาดแสดงตามที่เซิร์ฟเวอร์ส่ง

2010 เพิ่มบาร์โค๊ดสินค้าแบบเร็ว (BarcodeFastAddScreen, :563-784)

ออกแบบให้ยิงบาร์โค้ดเครื่องสแกนซ้ำๆ เพื่อเพิ่มบาร์โค้ดให้สินค้าทีละตัว

  1. ช่อง บาร์โค้ด/รหัสสินค้า ("ยิงบาร์โค้ดแล้วกด Enter") ค้นด้วย Enter หรือปุ่มค้นหา เรียก POST /api/process/barcode/item ได้ผล 3 แบบ: พบ (found) แสดงชื่อ/หน่วยมาตรฐาน/Shelf List และตารางบาร์โค้ดของสินค้า, ไม่พบ ขึ้น "ไม่พบสินค้า/บาร์โค้ดนี้" พร้อมปุ่ม เพิ่มสินค้าใหม่ (2.1.1) เปิดจอข้อมูลสินค้า (openScreen("menu_ic_item_detail")), บันทึกแล้ว ขึ้น "บันทึกเรียบร้อย ยิงบาร์โค้ดตัวต่อไป..." และล้างจอ (พื้นเขียว)
  2. ตั้ง คลัง/ที่เก็บ เริ่มต้น: เลือกคลัง (กรองตามสิทธิ์คลัง/ที่เก็บของผู้ใช้ผ่าน getWhPermFilter ดู สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf)) แล้วเลือกที่เก็บ ค่าที่เลือกถูกส่งไปพร้อมการบันทึก (whCode, locationCode, shelf)
  3. ติ๊ก "หลังค้นหาให้ไปที่ตารางบาร์โค้ด (Barcode Auto Focus)" เพื่อให้เคอร์เซอร์ลงตารางหลังค้นหา มิฉะนั้นกลับไปที่ช่องสแกน
  4. กล่องแสดงผลล่าสุด: บาร์โค้ดที่ยิง, รหัสสินค้า, ชื่อสินค้า, หน่วยนับมาตรฐาน, Shelf List และตารางสรุป "หน่วยนับที่ใช้" (หน่วยนับ, ชื่อ, ตัวตั้ง, ตัวหาร) กับ "คลังและที่เก็บ" (คลัง, ชื่อคลัง, ที่เก็บ, Shelf List)
  5. บันทึก (Ctrl+S ผูกไว้ ไม่มี Esc, :652) ต้องมีสิทธิ์เพิ่ม/แก้ไข ส่ง barcode/save พร้อมข้อมูลคลัง/ที่เก็บ
  • ข้อควรระวัง: หน้าจอนี้เปิดมาอยู่ในโหมดพร้อมแก้ตลอด ไม่มีปุ่ม แก้ไข / ลบ

2019 ตรวจสอบบาร์โค้ดตามมาตรฐาน EAN13 (Ean13CheckerScreen, :805-960)

หาบาร์โค้ดยาว 13 ตัวที่ไม่ผ่านมาตรฐาน (ตัวเลขไม่ครบ หรือหลักตรวจสอบผิด) แล้วออกเลขใหม่แทน

  • เปิดจอแล้วตรวจให้ทันทีเงียบๆ (check(true), :834) ปุ่ม เริ่มตรวจสอบ ตรวจซ้ำ ผลขึ้น พบบาร์โค้ดผิดมาตรฐาน EAN13 N รายการ หรือข้อความว่าไม่พบ ผ่าน POST /api/process/barcode/ean13-check
  • ตารางผล: #, บาร์โค้ด, รหัสสินค้า, รายละเอียด, หน่วยนับ, บาร์โค้ดใหม่ (แถบสถานะ "ผิดมาตรฐาน N รายการ")
  • ช่อง "ตัวเลขนำหน้าบาร์โค้ดใหม่" + ปุ่ม สร้างบาร์โค้ดทดแทนทั้งหมด (ean13-generate) เติมคอลัมน์บาร์โค้ดใหม่
  • ปุ่ม นำบาร์โค้ดใหม่ไปใช้แทน ถามยืนยัน เปลี่ยนบาร์โค้ด N รายการเป็นบาร์โค้ดใหม่ ? แล้วส่ง POST /api/process/barcode/ean13-apply สำเร็จขึ้น เปลี่ยนบาร์โค้ดแล้ว N รายการ
  • หมายเหตุท้ายตาราง: ตรวจเฉพาะบาร์โค้ดยาว 13 ตัวอักษร เลขนำหน้า 2 = บาร์โค้ดใช้ภายในร้าน
  • การเปลี่ยนบาร์โค้ดจริงกระทบเอกสารที่อ้างบาร์โค้ดเดิมหรือป้ายราคาที่พิมพ์ไปแล้ว (การปรับค่าตามบาร์โค้ดทำที่ Go ไม่ปรากฏในหน้าจอ)

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

บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode), ทะเบียนสินค้า (ic_inventory), หน่วยนับที่ใช้ของสินค้า (ic_unit_use), สินค้ากับคลังและที่เก็บ (ic_wh_shelf), พื้นที่เก็บสินค้า (ic_shelf), คลังสินค้า (ic_warehouse)

ที่มาในโค้ด