ค่าเครื่อง POS ที่ซิงก์มา และการตั้งค่าในเครื่อง
ค่าทั้งหมดของแอปอยู่ในอ็อบเจ็กต์ AppConfig เก็บเป็น JSON ใน SharedPreferences คีย์ bc_pos_config (ที่เก็บข้อมูลในเครื่อง POS ออฟไลน์ ObjectBox และ SharedPreferences (sys-pos-offline-storage)) แบ่งเป็น 2 กลุ่ม: ค่าที่ซิงก์มาจาก BC Ai Account (เปลี่ยนที่หน้าจอกำหนดค่า POS ของผู้ดูแล, ดู ตั้งค่าและควบคุมระบบขายหน้าร้าน POS (PosSetupAndControlScreen)) และ ค่าที่แก้ในเครื่อง ภาพรวม: ระบบ POS ขายหน้าร้าน ภาพรวม การเปิดใช้ และแผนที่บันทึก (sys-pos-overview)
ค่าที่ซิงก์มา (applySync)
ซิงก์ขาลง entity config ส่งกลับก้อนข้อมูลย่อย shop, machine, qr, point และ last_doc_no แอปนำมาทับค่าเดิมทีละฟิลด์ ฟิลด์ที่ไม่ได้ส่งมาคงค่าเดิม ฟิลด์ข้อความที่ว่างไม่ทับ (app_config.dart:135-185, pos_provider.dart:301-307, การซิงก์ฝั่งแอป POS ส่งบิลขึ้น ดึงข้อมูลลง และลองใหม่ (sys-pos-sync-client))
| ก้อน | ฟิลด์จากเซิร์ฟเวอร์ → ใช้ทำอะไรในแอป |
|---|---|
machine |
machinecode → รหัสเครื่อง; machine_name; branch_code → รหัสสาขา; pos_ic_wht / pos_ic_shelf → คลัง/ที่เก็บ (แสดงในหน้าตั้งค่า); price_number → ระดับราคา (2 = ราคาส่ง); doc_format → รูปแบบเลขที่บิล (ขั้นตอนขายสินค้าที่จอแคชเชียร์ ตั้งแต่ยิงบาร์โค้ดถึงปิดบิล (sys-pos-sale-flow)); slip_number, printer_name (เก็บไว้ ยังไม่มีโค้ดพิมพ์ ดู ใบเสร็จ POS การพิมพ์ซ้ำ และการอัปโหลดรูปสลิป (sys-pos-receipt-printing)) |
shop |
shop_name, branch_name (ที่อยู่หัวใบเสร็จ), tax_id, pos_terminal_no, pos_config_number, pos_header, pos_footer, vat_type, vat_rate, pos_change_price_config, pos_change_discount_config, pos_cancel_bill |
qr |
promp_pay_telephone_number หรือ promp_pay_wallet_id → เลขพร้อมเพย์ของร้านสำหรับ QR (การชำระเงินที่จอ POS: เงินสด พร้อมเพย์ QR โอน บัตร (sys-pos-payment-types)) |
point |
baht_per_point, points_per_baht_redeem (แสดงในหน้าตั้งค่า) |
| ระดับบน | last_doc_no → เลขที่บิลล่าสุดที่เซิร์ฟเวอร์รู้ ใช้ต่อเลขรัน (ค่าว่างถ้าไม่ส่ง) |
เมื่อรับค่าแล้ว แอปบันทึกลงเครื่อง ปรับภาษีของบิลปัจจุบัน และคำนวณเลขที่บิลถัดไปใหม่ถ้าตะกร้ายังว่าง
ค่าที่แอปนำไปใช้ตัดสินใจจริง
| ค่า | ผลในแอป |
|---|---|
ประเภทภาษี vat_type (1 รวมใน, 2 แยกนอก, 0 ไม่มี) และอัตรา vat_rate |
ใช้คำนวณยอดภาษีในบิล และพิมพ์บนใบเสร็จ (ป้าย "7%" บนใบเสร็จเป็นข้อความตายตัว) |
price_number = 2 |
ใช้ราคาส่งของสินค้าที่มี ไม่เช่นนั้นราคาปกติ หรือราคาสมาชิกเมื่อต่ำกว่า (pos_provider.dart:685-689) |
pos_change_price_config = 0 |
ห้ามแก้ราคาที่จอ (ปุ่มโหมดราคาและแก้ผ่านปุ่มตัวเลข) (pos_provider.dart:889,1031,1087) |
pos_change_discount_config = 0 |
ห้ามใส่หรือแก้ส่วนลดรายการ/ท้ายบิล (pos_provider.dart:972,991,1036,1072,1089) |
pos_cancel_bill = 0 |
ห้ามยกเลิกบิลจากแท็บประวัติ (กะแคชเชียร์ รับ-ส่งเงิน ยกเลิกบิล และกู้คืนข้อมูลเครื่อง POS (sys-pos-shift-cash)) |
doc_format, last_doc_no |
ใช้ออกเลขที่บิล ถ้า doc_format ว่างหรือไม่ถูกรูปแบบ ออกบิลไม่ได้ |
pos_terminal_no |
ส่งเป็น pos_id ในรายการรับ-ส่งเงิน |
shop_name, branch_name, tax_id, เบอร์โทร |
หัวใบเสร็จ (ใบเสร็จ POS การพิมพ์ซ้ำ และการอัปโหลดรูปสลิป (sys-pos-receipt-printing)) |
| เลขพร้อมเพย์ | สร้าง QR |
ค่าที่ซิงก์มาแต่ ไม่มีโค้ดอื่นนำไปใช้ นอกจากเก็บ/แสดง: pos_header, pos_footer (หัวและท้ายใบเสร็จข้อความเขียนตายตัวในแอป), machine_name, pos_config_number, slip_number, printer_name, pos_ic_wht / pos_ic_shelf (แสดงในหน้าตั้งค่าเท่านั้น), อัตราสะสม/แลกแต้ม (แสดงเท่านั้น ใบเสร็จคำนวณแต้มด้วยค่าคงที่ 25), ส่วนลดสมาชิก memberDiscountPct (ไม่มีที่ซิงก์ลงและไม่มีโค้ดใช้) (ค้นการใช้ฟิลด์ทั้งโฟลเดอร์ lib/) ดู ข้อจำกัดของแอป POS ที่ควรรู้ก่อนใช้งานหน้าร้าน (sys-pos-known-limits)
ค่าที่แก้ในเครื่อง
หน้าตั้งค่าแท็บที่ 3 "เครื่อง POS & ค่าจาก BC Ai Account" (settings_dialog.dart:435-640):
- ค่าที่ซิงก์มา (อ่านอย่างเดียว): ชื่อกิจการ, เลขประจำตัวผู้เสียภาษี (สาขา), คลัง/ที่เก็บ, ประเภทและอัตราภาษี, บัญชีพร้อมเพย์, อัตราสะสมแต้ม
- เชื่อมเครื่อง: ช่องวางรหัสเชื่อมเครื่อง (ซ่อนตัวอักษร) และปุ่ม "เชื่อมเครื่อง" (การเชื่อมเครื่อง POS ด้วยรหัสเชื่อมเครื่อง ไม่มีหน้าล็อกอิน (sys-pos-device-pairing))
- ที่อยู่เซิร์ฟเวอร์ BC Ai Account: เว้นว่างใช้ค่าเริ่มต้น — ถ้ารันบนเว็บใช้ต้นทางเดียวกับหน้าที่เปิดอยู่ ถ้ารันแอปเนทีฟใช้ที่อยู่ภายในเครื่องพอร์ต 3001 ค่าตั้งต้นรุ่นเก่า (loopback พอร์ต 8888) ถือว่าว่าง (
api_service.dart:41-50) เครื่อง Windows ที่ต่อเซิร์ฟเวอร์จริงต้องกรอกช่องนี้ - ชื่อพนักงานแคชเชียร์ประจำกะ: แก้ได้ เป็นข้อความที่พิมพ์บนใบเสร็จ
- ปุ่ม "บันทึก" เก็บเฉพาะที่อยู่เซิร์ฟเวอร์และชื่อแคชเชียร์ แล้วซิงก์ใหม่ทันที (
settings_dialog.dart:680-688,pos_provider.dart:620-627) - ปุ่ม "กู้คืนข้อมูลเครื่องจาก BC Ai Account" (กะแคชเชียร์ รับ-ส่งเงิน ยกเลิกบิล และกู้คืนข้อมูลเครื่อง POS (sys-pos-shift-cash)) และการ์ดวินิจฉัยฐานข้อมูล (ที่เก็บข้อมูลในเครื่อง POS ออฟไลน์ ObjectBox และ SharedPreferences (sys-pos-offline-storage)) พร้อมรายการ "ต้องตรวจสอบ" ของคิวส่ง (การซิงก์ฝั่งแอป POS ส่งบิลขึ้น ดึงข้อมูลลง และลองใหม่ (sys-pos-sync-client))
รหัสแคชเชียร์ (cashier_code) แก้ไม่ได้จากหน้าจอ: มีเพียงชื่อที่แก้ได้ รหัสใช้ค่าตั้งต้น EMP-001 และไม่มีฟิลด์ในการซิงก์มาทับ ค่านี้ถูกส่งในบิลและรายการรับ-ส่งเงินทุกครั้ง (app_config.dart:38,104, ค้นการกำหนดค่าฟิลด์ใน lib/) ดังนั้นรายงานที่ต้องแยกแคชเชียร์รายคนจะไม่ได้จากแอปนี้ในปัจจุบัน (ข้อจำกัดของแอป POS ที่ควรรู้ก่อนใช้งานหน้าร้าน (sys-pos-known-limits))
ค่าตั้งต้นก่อนซิงก์ครั้งแรก
ก่อนได้รับค่าจากเซิร์ฟเวอร์ แอปใช้ค่าตั้งต้นในโค้ด (ชื่อกิจการตัวอย่าง ภาษีรวมใน 7% ระดับราคา 1 อนุญาตแก้ราคา/ส่วนลด/ยกเลิกบิล ไม่มีเลขพร้อมเพย์ ไม่มีรูปแบบเลขที่บิล) (app_config.dart:35-66) เมื่อยังไม่มีรูปแบบเลขที่บิล แอปไม่ออกบิล (ขั้นตอนขายสินค้าที่จอแคชเชียร์ ตั้งแต่ยิงบาร์โค้ดถึงปิดบิล (sys-pos-sale-flow))
ที่มาในโค้ด
frontend/pos/lib/models/app_config.dart:3-185โครงสร้างค่าและการแมปจากซิงก์frontend/pos/lib/providers/pos_provider.dart:301-307,620-627บันทึกค่า และรับค่าจากซิงก์frontend/pos/lib/services/storage_service.dart:60-73เก็บ/โหลดค่าfrontend/pos/lib/services/api_service.dart:41-50เลือกที่อยู่เซิร์ฟเวอร์frontend/pos/lib/ui/widgets/settings_dialog.dart:435-640,680-688หน้าตั้งค่า- ดูเพิ่ม: ระบบ POS ขายหน้าร้าน ภาพรวม การเปิดใช้ และแผนที่บันทึก (sys-pos-overview) · การเชื่อมเครื่อง POS ด้วยรหัสเชื่อมเครื่อง ไม่มีหน้าล็อกอิน (sys-pos-device-pairing) · การซิงก์ฝั่งแอป POS ส่งบิลขึ้น ดึงข้อมูลลง และลองใหม่ (sys-pos-sync-client) · ข้อจำกัดของแอป POS ที่ควรรู้ก่อนใช้งานหน้าร้าน (sys-pos-known-limits) · ตั้งค่าและควบคุมระบบขายหน้าร้าน POS (PosSetupAndControlScreen) · POS ตั้งค่าร้าน/เครื่อง/โปรโมชัน และกะขาย รับ-ส่งเงิน (POS Config and Shift) · API จุดขาย POS (POS endpoints /api/v1/pos)