#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)
ออกแบบให้ยิงบาร์โค้ดเครื่องสแกนซ้ำๆ เพื่อเพิ่มบาร์โค้ดให้สินค้าทีละตัว
- ช่อง บาร์โค้ด/รหัสสินค้า ("ยิงบาร์โค้ดแล้วกด Enter") ค้นด้วย Enter หรือปุ่มค้นหา เรียก
POST /api/process/barcode/itemได้ผล 3 แบบ: พบ (found) แสดงชื่อ/หน่วยมาตรฐาน/Shelf List และตารางบาร์โค้ดของสินค้า, ไม่พบ ขึ้น "ไม่พบสินค้า/บาร์โค้ดนี้" พร้อมปุ่ม เพิ่มสินค้าใหม่ (2.1.1) เปิดจอข้อมูลสินค้า (openScreen("menu_ic_item_detail")), บันทึกแล้ว ขึ้น "บันทึกเรียบร้อย ยิงบาร์โค้ดตัวต่อไป..." และล้างจอ (พื้นเขียว) - ตั้ง คลัง/ที่เก็บ เริ่มต้น: เลือกคลัง (กรองตามสิทธิ์คลัง/ที่เก็บของผู้ใช้ผ่าน
getWhPermFilterดู สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf)) แล้วเลือกที่เก็บ ค่าที่เลือกถูกส่งไปพร้อมการบันทึก (whCode,locationCode,shelf) - ติ๊ก "หลังค้นหาให้ไปที่ตารางบาร์โค้ด (Barcode Auto Focus)" เพื่อให้เคอร์เซอร์ลงตารางหลังค้นหา มิฉะนั้นกลับไปที่ช่องสแกน
- กล่องแสดงผลล่าสุด: บาร์โค้ดที่ยิง, รหัสสินค้า, ชื่อสินค้า, หน่วยนับมาตรฐาน, Shelf List และตารางสรุป "หน่วยนับที่ใช้" (หน่วยนับ, ชื่อ, ตัวตั้ง, ตัวหาร) กับ "คลังและที่เก็บ" (คลัง, ชื่อคลัง, ที่เก็บ, Shelf List)
- บันทึก (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)
ที่มาในโค้ด
frontend/account/master/BarcodeScreens.tsx:3-9ผังเมนู;:27-78ชนิดข้อมูล;:112-134คีย์ลัด;:140-334ตารางบาร์โค้ด;:354-362เรียก API;:371-561กำหนดบาร์โค้ด;:563-784เพิ่มแบบเร็ว (:622-655ค้นและบันทึก);:805-960EAN13- ดูเพิ่ม: กำหนดส่วนลดตามบาร์โค้ด รายตัวและแบบเร็ว (BarcodeDiscountScreen, MultiBarcodeDiscountScreen) · ปรับราคาสินค้า นำเข้าไฟล์ราคาทั้งชุด (ModifyPriceScreen) · รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)