สมอง SML

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

#screens#master

กำหนดส่วนลดตามบาร์โค้ด (รายตัว / แบบเร็ว)

สองจอในไฟล์เดียว ตั้ง "ส่วนลดที่ผูกกับบาร์โค้ด" เก็บใน ic_inventory_barcode_price แบบโปรแกรมเดิม (discount_type 1-5, หัวไฟล์ :3-8) หน้าจอเป็นแค่ตัวกรอกกริด 5 ชุด กฎและการบันทึกอยู่ที่ Go /api/process/barcode/discount-load และ discount-save ดูตรรกะราคา/ส่วนลดรวมที่ เครื่องมือหาราคาและแก้ราคา (Price engine / price center / modify price) และ บาร์โค้ดสินค้า ส่วนลดบาร์โค้ด EAN13 และพิมพ์ป้าย (Barcode menus 2.1.7-2.1.17)

รหัส เมนู จอ การบันทึก
2012 กำหนดส่วนลดตามบาร์โค๊ด (menu_ic_item_barcode_discount) BarcodeDiscountScreen (เดิม 2.1.8, _icBarcodeDiscount) ทีละ 1 บาร์โค้ด ลบของเดิมแล้วใส่ใหม่ (replace: true)
2013 กำหนดส่วนลดตามบาร์โค๊ด (เร็ว) (menu_ic_item_multibarcode_discount) MultiBarcodeDiscountScreen (เดิม 2.1.9, _icMultiBarcodeDiscount) หลายบาร์โค้ดพร้อมกัน เพิ่มอย่างเดียว (replace: false)
ผูกที่ screenRegistry.tsx:663-690 กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu)

ส่วนที่ใช้ร่วมกัน

  • ซ้าย: รายการบาร์โค้ด (บาร์โค้ด, รหัสสินค้า, รายละเอียด, หน่วยนับ, ราคาทั่วไป) ค้นจากบาร์โค้ด/รหัส/รายละเอียด โหลด 500 แถว เรียงตามบาร์โค้ด (useBarcodeList, :466-499) ดูกลไกที่ รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog)
  • ขวา: กริดส่วนลด 5 ชุด ซ้อนกันเป็นการ์ด ชื่อชุดตามประเภทส่วนลด 1-5: ลดพิเศษทั่วไป · ลดพิเศษสมาชิก · ลดโปรโมชั่น · ลดสมาชิก · ลดพนักงาน (GRID_TITLES, :27) คอลัมน์ต่อแถว (:216-440):
    คอลัมน์ ความหมาย
    ความสำคัญ ตัวเลขเต็ม เริ่มเป็นลำดับแถว
    ส่วนลด ข้อความไม่เกิน 25 ตัว ตัวอย่างบนจอ "5%" หรือ "10" (ตีความที่ Go)
    เงื่อนไขจำนวน: จากจำนวน / ถึงจำนวน ค่าเริ่มต้น 1 ถึง 9999999
    เงื่อนไขวันที่: จากวันที่ / ถึงวันที่ ค่าเริ่มต้น 1 ม.ค. ปีนี้ ถึง 31 ธ.ค. อีก 5 ปี (newRow, :84-98)
    เฉพาะวัน ปุ่มเปิดกล่อง "เลือกวัน"; ว่าง = "ทุกวัน"
    แบบเฉพาะ ทุกเครื่องในระบบ / เฉพาะรหัสเครื่อง POS
    รหัสเครื่อง POS ข้อความไม่เกิน 1000 ตัว (ใช้เมื่อเลือก "เฉพาะรหัสเครื่อง POS")
    สถานะ checkbox ใช้งาน (1) / ไม่ใช้ (0)
    ปุ่มท้ายกริด เพิ่มแถว, ปุ่มย้ายแถว และถังขยะลบแถว (เฉพาะตอนแก้ไขได้) ปุ่มลบค้างชิดขวาไม่หลุดจอเมื่อกริดกว้าง กริดว่างขึ้น "ยังไม่มีรายการ"
  • กล่อง "เลือกวัน" (DaySelectDialog, :145-214): ติ๊ก "ทุกวัน" หรือเลือกบางวัน อาทิตย์ = 0 ... เสาร์ = 6 เก็บเป็นรายการวันคั่นจุลภาค (เช่น 1,3); ไม่ติ๊กวันใดเลยถือเป็นทุกวัน ปุ่ม ตกลง / ยกเลิก
  • ตัวเลขทุกช่องเก็บเป็นสตริงจนส่งเข้า API (toPayload, :122-139) ชื่อกริดและราคาแสดงด้วย formatMoneyDisplay ดู ตัวเลข เงิน ภาษี และปี พ.ศ. ฝั่ง frontend (numeric.ts)

2012 รายตัว (BarcodeDiscountScreen, :581-738)

  1. คลิกบาร์โค้ดซ้าย: เรียก discount-load ด้วย {barcode} ได้หัว (บาร์โค้ด, รหัสสินค้า, รายละเอียด, หน่วยนับ, ราคาทั่วไป อ่านอย่างเดียว) และกริดทั้ง 5 ชุด ไม่พบขึ้น ไม่พบบาร์โค้ด <รหัส> ยังไม่เลือกขึ้น "เลือกบาร์โค้ดจากรายการด้านซ้าย"
  2. ปุ่ม แก้ไข (ต้องมีสิทธิ์แก้ไข) หรือดับเบิลคลิกแถวซ้าย เข้าโหมดแก้ไข ขึ้นป้าย "โหมดแก้ไข"
  3. บันทึก ส่ง discount-save ด้วย {barcodes:[บาร์โค้ด], replace:true, grids} ชุดส่วนลดเดิมของบาร์โค้ดนั้นถูกแทนทั้งหมดด้วยสิ่งที่เห็นบนจอ สำเร็จขึ้น บันทึกส่วนลดบาร์โค้ด <รหัส> เรียบร้อยแล้ว (N แถว) แล้วโหลดใหม่; ไม่มีสิทธิ์ขึ้น คุณไม่มีสิทธิ์ "แก้ไขข้อมูล" ในหน้าจอนี้ ...
  4. ปิดหน้าจอ ขณะแก้ไข = ยกเลิกการแก้และโหลดค่าเดิม
  5. คีย์ลัด Ctrl+S บันทึก, Esc ยกเลิก (ผ่าน useShortcuts ทำงานเฉพาะเมื่อแท็บแสดงอยู่ ScreenFrame.tsx:37-58) คอมเมนต์ในโค้ดเรียก F12 แต่ที่ผูกจริงมีแค่ Ctrl+S ดู รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS)
  • เลือกบาร์โค้ดอื่นระหว่างรอโหลด ผลที่ล่าช้าจะถูกทิ้ง (loadSeq, :597-603)

2013 แบบเร็ว (MultiBarcodeDiscountScreen, :740-903)

ใส่กริดส่วนลดชุดเดียวแล้วใช้กับหลายบาร์โค้ด

  1. คลิกบาร์โค้ดซ้ายเพื่อ เพิ่ม ลงตาราง "บาร์โค้ดที่เลือก (N)" (บาร์โค้ด, รหัสสินค้า, รายละเอียด, หน่วยนับ, ราคาทั่วไป/2/3/4) บาร์โค้ดซ้ำ (ไม่สนตัวพิมพ์) ไม่เพิ่ม ย้ายแถวหรือ "เอาออก" ได้; ตารางว่างขึ้น "ยังไม่ได้เลือกบาร์โค้ด"
  2. จอเปิดอยู่ในโหมดแก้ไขตลอด กรอกกริด 5 ชุด (editable เสมอ) รายการซ้ายปิดคีย์ลัดค้นหา (hotkeysActive={false})
  3. บันทึก (หรือ Ctrl+S ไม่มีคีย์ยกเลิก) ตรวจตามลำดับ: อ่านอย่างเดียวขึ้น คุณไม่มีสิทธิ์ "เพิ่ม/แก้ไขข้อมูล" ..., ไม่ได้เลือกบาร์โค้ดขึ้น "กรุณาเลือกบาร์โค้ดจากรายการด้านซ้าย", ไม่มีแถวใดกรอกช่องส่วนลดขึ้น "กรุณากรอกส่วนลดอย่างน้อย 1 แถว" แล้วส่ง discount-save ด้วย replace:false สำเร็จขึ้น บันทึกส่วนลดให้ N บาร์โค้ด (M แถว) เรียบร้อยแล้ว และ ล้างหน้าจอ ตามพฤติกรรมโปรแกรมเดิม (:781-797)
  4. เริ่มใหม่ทั้งหมด: ถ้ามีข้อมูลค้างถามด้วยกล่องเบราว์เซอร์ window.confirm "ล้างบาร์โค้ดที่เลือกและส่วนลดที่กรอกทั้งหมด ใช่หรือไม่" (:761)

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

ส่วนลดตามบาร์โค้ด (ic_inventory_barcode_price) (ส่วนลดที่บันทึก, ผ่าน Go), บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode) และ ทะเบียนสินค้า (ic_inventory) (รายการซ้าย)

ข้อควรระวัง

  • 2013 ไม่ลบ ส่วนลดเดิมของบาร์โค้ด (เพิ่มอย่างเดียว) ถ้าเลือกซ้ำหรือบันทึกซ้ำ อาจได้ส่วนลดซ้อนกัน การตรวจชนกันของช่วงวันที่/จำนวนทำที่ Go ไม่ปรากฏในหน้าจอ ใช้ 2012 เพื่อดูและล้างของเดิมเป็นรายตัว
  • 2012 บันทึกแล้วแทนทั้ง 5 ชุดของบาร์โค้ดนั้น ลบแถวบนจอ = ลบส่วนลดนั้นจริงเมื่อกดบันทึก
  • หน้าจอไม่ตรวจเองว่า "ส่วนลด" เป็นเปอร์เซ็นต์หรือจำนวนเงินที่ถูกต้อง (มีแค่ช่องข้อความ 25 ตัว) และไม่ตรวจว่า จากวันที่ <= ถึงวันที่ หรือ จากจำนวน <= ถึงจำนวน

ที่มาในโค้ด