#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)
- คลิกบาร์โค้ดซ้าย: เรียก
discount-loadด้วย{barcode}ได้หัว (บาร์โค้ด, รหัสสินค้า, รายละเอียด, หน่วยนับ, ราคาทั่วไป อ่านอย่างเดียว) และกริดทั้ง 5 ชุด ไม่พบขึ้นไม่พบบาร์โค้ด <รหัส>ยังไม่เลือกขึ้น "เลือกบาร์โค้ดจากรายการด้านซ้าย" - ปุ่ม แก้ไข (ต้องมีสิทธิ์แก้ไข) หรือดับเบิลคลิกแถวซ้าย เข้าโหมดแก้ไข ขึ้นป้าย "โหมดแก้ไข"
- บันทึก ส่ง
discount-saveด้วย{barcodes:[บาร์โค้ด], replace:true, grids}ชุดส่วนลดเดิมของบาร์โค้ดนั้นถูกแทนทั้งหมดด้วยสิ่งที่เห็นบนจอ สำเร็จขึ้นบันทึกส่วนลดบาร์โค้ด <รหัส> เรียบร้อยแล้ว (N แถว)แล้วโหลดใหม่; ไม่มีสิทธิ์ขึ้นคุณไม่มีสิทธิ์ "แก้ไขข้อมูล" ในหน้าจอนี้ ... - ปิดหน้าจอ ขณะแก้ไข = ยกเลิกการแก้และโหลดค่าเดิม
- คีย์ลัด Ctrl+S บันทึก, Esc ยกเลิก (ผ่าน
useShortcutsทำงานเฉพาะเมื่อแท็บแสดงอยู่ScreenFrame.tsx:37-58) คอมเมนต์ในโค้ดเรียก F12 แต่ที่ผูกจริงมีแค่ Ctrl+S ดู รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS)
- เลือกบาร์โค้ดอื่นระหว่างรอโหลด ผลที่ล่าช้าจะถูกทิ้ง (
loadSeq,:597-603)
2013 แบบเร็ว (MultiBarcodeDiscountScreen, :740-903)
ใส่กริดส่วนลดชุดเดียวแล้วใช้กับหลายบาร์โค้ด
- คลิกบาร์โค้ดซ้ายเพื่อ เพิ่ม ลงตาราง "บาร์โค้ดที่เลือก (N)" (บาร์โค้ด, รหัสสินค้า, รายละเอียด, หน่วยนับ, ราคาทั่วไป/2/3/4) บาร์โค้ดซ้ำ (ไม่สนตัวพิมพ์) ไม่เพิ่ม ย้ายแถวหรือ "เอาออก" ได้; ตารางว่างขึ้น "ยังไม่ได้เลือกบาร์โค้ด"
- จอเปิดอยู่ในโหมดแก้ไขตลอด กรอกกริด 5 ชุด (
editableเสมอ) รายการซ้ายปิดคีย์ลัดค้นหา (hotkeysActive={false}) - บันทึก (หรือ Ctrl+S ไม่มีคีย์ยกเลิก) ตรวจตามลำดับ: อ่านอย่างเดียวขึ้น
คุณไม่มีสิทธิ์ "เพิ่ม/แก้ไขข้อมูล" ..., ไม่ได้เลือกบาร์โค้ดขึ้น "กรุณาเลือกบาร์โค้ดจากรายการด้านซ้าย", ไม่มีแถวใดกรอกช่องส่วนลดขึ้น "กรุณากรอกส่วนลดอย่างน้อย 1 แถว" แล้วส่งdiscount-saveด้วยreplace:falseสำเร็จขึ้นบันทึกส่วนลดให้ N บาร์โค้ด (M แถว) เรียบร้อยแล้วและ ล้างหน้าจอ ตามพฤติกรรมโปรแกรมเดิม (:781-797) - เริ่มใหม่ทั้งหมด: ถ้ามีข้อมูลค้างถามด้วยกล่องเบราว์เซอร์
window.confirm"ล้างบาร์โค้ดที่เลือกและส่วนลดที่กรอกทั้งหมด ใช่หรือไม่" (:761)
ตารางที่เกี่ยวข้อง
ส่วนลดตามบาร์โค้ด (ic_inventory_barcode_price) (ส่วนลดที่บันทึก, ผ่าน Go), บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode) และ ทะเบียนสินค้า (ic_inventory) (รายการซ้าย)
ข้อควรระวัง
- 2013 ไม่ลบ ส่วนลดเดิมของบาร์โค้ด (เพิ่มอย่างเดียว) ถ้าเลือกซ้ำหรือบันทึกซ้ำ อาจได้ส่วนลดซ้อนกัน การตรวจชนกันของช่วงวันที่/จำนวนทำที่ Go ไม่ปรากฏในหน้าจอ ใช้ 2012 เพื่อดูและล้างของเดิมเป็นรายตัว
- 2012 บันทึกแล้วแทนทั้ง 5 ชุดของบาร์โค้ดนั้น ลบแถวบนจอ = ลบส่วนลดนั้นจริงเมื่อกดบันทึก
- หน้าจอไม่ตรวจเองว่า "ส่วนลด" เป็นเปอร์เซ็นต์หรือจำนวนเงินที่ถูกต้อง (มีแค่ช่องข้อความ 25 ตัว) และไม่ตรวจว่า จากวันที่ <= ถึงวันที่ หรือ จากจำนวน <= ถึงจำนวน
ที่มาในโค้ด
frontend/account/master/BarcodeDiscountScreens.tsx:27ชื่อกริด;:84-139แถวเริ่มต้น/แปลง API;:145-214เลือกวัน;:216-440กริดเดียว;:466-499รายการบาร์โค้ด;:581-738จอรายตัว;:740-903จอแบบเร็วfrontend/account/tabs/screenRegistry.tsx:663-690- ดูเพิ่ม: กำหนดบาร์โค้ด เพิ่มบาร์โค้ดแบบเร็ว และตรวจบาร์โค้ด EAN13 (BarcodeSetupScreen, BarcodeFastAddScreen, Ean13CheckerScreen) · ปรับราคาสินค้า นำเข้าไฟล์ราคาทั้งชุด (ModifyPriceScreen) · พิมพ์บาร์โค้ดด้วยเครื่องพิมพ์ทั่วไป (BarcodePrintScreen) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)