สมอง SML

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

#screens#master

พิมพ์บาร์โค้ดด้วยเครื่องพิมพ์ทั่วไป (BarcodePrintScreen)

จอจัดวางสติกเกอร์บาร์โค้ด EAN-13 ลงกระดาษ A4 (หรือขนาดที่กำหนดเอง) เป็นตารางดวง แล้วสั่งพิมพ์ผ่านหน้าต่างพิมพ์ของเบราว์เซอร์ หัวไฟล์อ้างโปรแกรมเดิม SMLInventoryControl/_itemBarcodePrint (รหัสเก่า 2.1.17) ข้อมูลรายการ/ราคา และการเก็บ "รูปแบบสติกเกอร์" อยู่ที่ Go (/api/process/barcode/print-items และ /format, BarcodePrintScreen.tsx:3-6) หน้านี้แค่จัดวางและพิมพ์ ดูตรรกะฝั่งเซิร์ฟเวอร์ที่ บาร์โค้ดสินค้า ส่วนลดบาร์โค้ด EAN13 และพิมพ์ป้าย (Barcode menus 2.1.7-2.1.17)

วิธีเปิด

เมนู 2020 "พิมพ์บาร์โค๊ดด้วยเครื่องพิมพ์ทั่วไป" (menu_ic_item_barcode_laser_print) ผูกที่ screenRegistry.tsx:340-347 (เปิดเป็นแท็บ) กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu) การกำหนดบาร์โค้ดก่อนพิมพ์ทำที่ กำหนดบาร์โค้ด เพิ่มบาร์โค้ดแบบเร็ว และตรวจบาร์โค้ด EAN13 (BarcodeSetupScreen, BarcodeFastAddScreen, Ean13CheckerScreen)

โครงจอ

  • ซ้าย: รายการบาร์โค้ด (บาร์โค้ด, รหัส, ชื่อสินค้า, หน่วย) จาก ic_inventory_barcode เชื่อม ic_inventory ค้นจากบาร์โค้ด/รหัส/ชื่อ จำกัด 500 แถว (:189-201) คลิกแถวเดียวเพิ่มบาร์โค้ดนั้นลงรายการพิมพ์ทันที (onSelect, ไม่ต้องกดปุ่ม) ถ้าบาร์โค้ดซ้ำกับที่อยู่ในรายการแล้วจะไม่เพิ่ม (:221-230) กลไกรายการดู รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog)
  • ขวา หัวสรุป: N รายการ · M ดวง · P หน้า
  • แถบปุ่ม: พิมพ์ (ปิดเมื่อจำนวนดวงรวมเป็น 0), เริ่มใหม่ทั้งหมด (ล้างรายการพิมพ์ ไม่แตะรูปแบบ), ปิดหน้าจอ
  • กล่อง "รูปแบบสติกเกอร์", กล่อง "รายการที่จะพิมพ์" และพื้นที่ "ตัวอย่างก่อนพิมพ์" (ย่อ 60%)

รูปแบบสติกเกอร์ (Format, :57-63)

เลือกรูปแบบที่บันทึกไว้จากรายการ หรือใช้ค่าเริ่มต้น "A4 14x5" (14 แถว x 5 คอลัมน์ ดวงละ 4 x 2 ซม. ขอบซ้าย 0.2 ขอบบน 0.5 แสดงราคา/รหัสสินค้า/ชื่อหน่วยนับ ไม่พิมพ์เส้นขอบ)

ช่อง ความหมาย
รหัสรูปแบบ / ชื่อรูปแบบ รหัสไม่เกิน 25 ตัว ตัวพิมพ์ใหญ่เสมอ; ต้องกรอกทั้งสองช่องจึงกดบันทึกรูปแบบได้
เริ่มคอลัมน์ที่ / เริ่มแถวที่ เว้นช่องบนหน้าแรกไว้ (ใช้กระดาษสติกเกอร์ที่ลอกใช้ไปบางดวงแล้ว)
หน่วยวัด เซนติเมตร หรือ นิ้ว
จำนวนคอลัมน์ / จำนวนแถว ดวงต่อหน้า = แถว x คอลัมน์
ความกว้างดวง / ความสูงดวง / ขอบซ้าย / ขอบบน ตามหน่วยวัดที่เลือก
ราคาที่แสดง ราคาที่ 1-4 หรือ "ราคากลาง (สูตรราคา)" (ปิดเมื่อไม่ติ๊กแสดงราคา)
ชื่อบริษัท เติมให้เองจาก erp_company_profile.company_name_1 ถ้ายังว่าง (:204-210) แก้ได้
ติ๊ก แสดงราคา · แสดงรหัสสินค้า · แสดงชื่อหน่วยนับ · พิมพ์เส้นขอบ · กำหนดขนาดกระดาษเอง (กว้าง x สูง, ค่าเริ่มต้น 21 x 29.7)
  • บันทึกรูปแบบ (ต้องมีสิทธิ์เพิ่ม) และ ลบรูปแบบ (ต้องมีสิทธิ์ลบ ถามยืนยัน ลบรูปแบบ <รหัส> ? ปุ่มเปิดเมื่อรหัสนั้นมีอยู่จริง) เรียก POST /api/process/barcode/format ด้วย action = list | save | delete (:211-219) สำเร็จขึ้น บันทึกรูปแบบ <รหัส> แล้ว; ลบแล้วกลับไปค่าเริ่มต้นโดยคงชื่อบริษัทไว้

รายการที่จะพิมพ์

  • ตาราง #, บาร์โค้ด, รหัสสินค้า, ชื่อสินค้า, หน่วยนับ, ราคา (ตามราคาที่เลือกในรูปแบบ), จำนวนดวง (ตัวเลขเต็ม ค่าเริ่มต้น 1), ปุ่มย้ายแถวขึ้น/ลง และถังขยะลบบรรทัด ตารางว่างขึ้น "ยังไม่มีรายการ"
  • นำเข้าจากเอกสารกำหนดราคา: กรอกเลขที่เอกสาร (ตัวพิมพ์ใหญ่, Enter หรือปุ่ม นำเข้า) เรียก print-items ด้วย {docNo} เพิ่มทุกรายการของเอกสารนั้น (ต่างจากการคลิกซ้ายที่กันซ้ำ นำเข้าจากเอกสารไม่กันซ้ำ :221-230) ไม่พบขึ้น "ไม่พบบาร์โค้ด"
  • จำนวนดวง <= 0 หรือว่าง ถือเป็น 1 ดวงเสมอ (stamps, :103, ตามพฤติกรรมโปรแกรมเดิม)
  • ราคาที่ผู้ใช้เลือกเป็น 0 จะใช้ราคาที่ 1 แทน (labelPrice, :97-101) ดูที่มาของราคาที่ เครื่องมือหาราคาและแก้ราคา (Price engine / price center / modify price)

การจัดวางและการพิมพ์

  • วางดวงเรียงตามคอลัมน์ในแถว ไปแถวถัดไป ไปหน้าถัดไป; หน้าแรกข้ามช่องตาม "เริ่มแถว/เริ่มคอลัมน์" (layoutPages, :106-121) แต่ละดวงมีบรรทัดบน (ชื่อบริษัท : รหัสสินค้า), แถบบาร์โค้ด EAN-13 วาดเป็น SVG ในหน้าจอเอง (:73-95), ราคา (ราคา x/หน่วย) และชื่อสินค้า 2 บรรทัด (Sheet, :123-170)
  • เลขที่ไม่ใช่ EAN-13 (ไม่ครบ 13 หลักหรือมีตัวอักษร) ไม่ถูกวาดเป็นแถบ แสดงเลขตามด้วย "(ไม่ใช่ EAN-13)" ในดวงแทน ตามพฤติกรรมโปรแกรมเดิมที่พิมพ์ได้เฉพาะ EAN13 ใช้ กำหนดบาร์โค้ด เพิ่มบาร์โค้ดแบบเร็ว และตรวจบาร์โค้ด EAN13 (BarcodeSetupScreen, BarcodeFastAddScreen, Ean13CheckerScreen) (จอ 2019) ตรวจและแก้บาร์โค้ดผิดมาตรฐานก่อน
  • ปุ่ม พิมพ์ เปิดหน้าต่างใหม่ 900 x 700 เขียน HTML ของตัวอย่างลงไป กำหนด @page เป็น A4 หรือขนาดกระดาษที่กำหนดเอง แล้วสั่ง window.print() ถ้าเบราว์เซอร์บล็อก pop-up ขึ้น "เบราว์เซอร์บล็อกหน้าต่างพิมพ์ กรุณาอนุญาต Pop-up" (:235-250)
  • ไม่มีคีย์ลัด (Ctrl+S / Esc) ในจอนี้ ไม่ได้เรียก useShortcuts

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

อ่าน บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode), ทะเบียนสินค้า (ic_inventory), erp_company_profile — ข้อมูลบริษัท (แถวเดียว); ราคาที่พิมพ์มาจาก ส่วนลดตามบาร์โค้ด (ic_inventory_barcode_price) / ราคาขายสินค้าตามเงื่อนไข (ic_inventory_price) ตามที่เซิร์ฟเวอร์ส่งใน print-items รูปแบบสติกเกอร์เก็บที่ Go (ชื่อตารางไม่ปรากฏในโค้ดหน้าจอ)

ข้อควรระวัง

  • พิมพ์ผ่านหน้าต่างเบราว์เซอร์เท่านั้น ไม่มีโหมดเครื่องพิมพ์สติกเกอร์ TSC/ZPL (คอมเมนต์ // ponytail ที่ :234)
  • ปรับตำแหน่งดวงได้ด้วยช่องขอบซ้าย/ขอบบนเท่านั้น (ไม่มีช่องปรับชดเชยแยกต่างหาก) ควรทดสอบพิมพ์บนกระดาษธรรมดาก่อนใช้กระดาษสติกเกอร์
  • ชื่อหน้าจอและรหัสเมนูที่แสดงหัวจอมาจากข้อมูลเมนู ไม่ได้ฝังตายในจอ (getMenuTextByName)

ที่มาในโค้ด