กำหนดลูกหนี้ (CustomerScreen) และรายละเอียดสมาชิก (DealerScreen)
หน้าทะเบียนลูกหนี้ฝั่งขาย สองเมนูในกลุ่ม 6001-6011 "ทะเบียนลูกหนี้ สมาชิก และแต้มสะสม": 6001 ข้อมูลหลักของลูกหนี้ (จอเขียนเอง) และ 6003 ข้อมูลสมาชิกที่ผูกกับลูกหนี้ ข้อมูลรายละเอียดเชิงลึก (สินเชื่อ ผู้ติดต่อ รูป) อยู่ที่ รายละเอียดลูกหนี้ สินเชื่อ ผู้ติดต่อ รูปภาพ (CustomerDetailScreen) (6002) กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu) ตารางดู ทะเบียนลูกหนี้/ลูกค้า (ar_customer), รายละเอียดเงื่อนไขลูกหนี้ (ar_customer_detail), ข้อมูลตัวแทนจำหน่าย/จุดขายของลูกหนี้ (ar_dealer)
วิธีเปิด
| รหัส | เมนู | จอ | ผูกที่ |
|---|---|---|---|
| 6001 | กำหนดลูกหนี้ (menu_ar_detail, รหัสเก่า 6.1.1) |
CustomerScreen |
screenRegistry.tsx:563-568 |
| 6003 | รายละเอียดสมาชิก (menu_ar_dealer, รหัสเก่า 6.1.3) |
DealerScreen |
screenRegistry.tsx:575-580 |
6001 กำหนดลูกหนี้
โครงจอ แบ่งซ้าย/ขวา ซ้ายคือรายการลูกหนี้ ค้นจากรหัส/ชื่อ จำกัด 500 แถว ดับเบิลคลิกแถว = แก้ไข (ต้องมีสิทธิ์แก้ไข) กลไกรายการดู รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog) ขวาเป็นฟอร์มการ์ดเดียว "ข้อมูลลูกหนี้" ตามลำดับแถวต่อไปนี้ และการ์ดที่สอง "รายละเอียดสมาชิก" (ดูท้ายหัวข้อ) ป้ายหัวจอแสดงรหัสเมนู 6001 กับคำว่า "กำหนดลูกหนี้"
ช่องกรอก (สคีมา arCustomer.ts, อ่านจาก ar_customer เชื่อม ar_customer_detail)
| ช่อง | ข้อกำหนด |
|---|---|
| รหัส | ไม่เกิน 25 ตัว บังคับ; เพิ่มใหม่ระบบใส่รหัสถัดไปให้ ออกจากช่องแล้วรันรหัสตามรูปแบบ มีปุ่ม "ใส่รหัสถัดไปอัตโนมัติ" |
| ชื่อ 1 / ชื่อ (อังกฤษ) 1 | ไม่เกิน 255 ชื่อ 1 บังคับ |
| ที่อยู่ | ไม่เกิน 255 |
| จังหวัด · อำเภอ/เขต · ตำบล/แขวง | ค้นหาจาก erp_province / erp_amper / erp_tambon แสดง รหัส~ชื่อ ไม่เกิน 25 ตัว |
| รหัสไปรษณีย์ · ประเทศ | 10 · 255 (ประเทศเริ่มต้น "ไทย") |
| โทรศัพท์ · โทรสาร · SMS | 150 · 50 · 10 |
| อีเมล์ · เว็บไซต์ | 150 · 150 |
| ประเภทลูกหนี้ | ค้นหาจาก ar_type |
| สถานะลูกหนี้ | บุคคลธรรมดา (0) / นิติบุคคล (1) |
| สถานะ | ใช้งาน (0) / ไม่ใช้งาน (1) |
| คำนำหน้า (ค้นหาได้) · ชื่อ · นามสกุล | 15 · 50 · 70 (จอนี้ไม่ประกอบชื่อ 1 จากชื่อ+นามสกุลให้ ต่างจาก รายละเอียดลูกหนี้ สินเชื่อ ผู้ติดต่อ รูปภาพ (CustomerDetailScreen)) |
| ระดับราคาสินค้า | 0 ไม่เลือก, 1 ราคาขายตารางราคา, 2 ราคาขายตามกลุ่ม, 3-8 ราคาขาย 1-6 (ดูที่มาของราคาที่ เครื่องมือหาราคาและแก้ราคา (Price engine / price center / modify price)) |
| วันเกิด/วันจดทะเบียน · วันลงทะเบียน | วันที่ |
| เลขประจำตัวผู้เสียภาษี · เลขที่บัตรประชาชน | 50 · 100 |
| สถานประกอบการ · เลขที่สาขา | 1 สำนักงานใหญ่ / 2 สาขา; เลขที่สาขาแก้ได้เฉพาะเมื่อเลือกสาขา |
| หมายเหตุ | 255 |
| ตำแหน่งลูกค้า (ลูกหนี้) | เลือกบนแผนที่ ประเภท CUSTOMER เก็บละติจูด/ลองจิจูดที่ ar_customer_detail |
| ข้อมูลเฉพาะธุรกิจ | การ์ด BusinessExtFieldsCard (kind customer) ตามประเภทธุรกิจที่เปิดใน กำหนดข้อเลือกพิเศษต่างๆ (OptionsForm) ปุ่มในการ์ดเปิดหน้าตัวเลือก |
ค่าเริ่มต้นตอนเพิ่มใหม่ (:316-341): ประเทศ "ไทย", สถานะลูกหนี้ 0, สถานะ 0, ระดับราคา 0, สถานประกอบการ 0, เลขที่สาขา 00000
ปุ่มและคีย์ลัด
- โหมดดู: แก้ไข, เพิ่มใหม่, ลบ, ปิดหน้าจอ; โหมดแก้: บันทึก, อ่านข้อมูลจากบัตรประชาชน, ปิดหน้าจอ (ยกเลิกการแก้) ปุ่มอ่านบัตรแค่เด้งข้อความ "กรุณาเชื่อมต่อเครื่องอ่านบัตรประชาชนสมาร์ทการ์ด (Smart Card Reader) ก่อนดึงข้อมูล" ไม่มีการอ่านบัตรจริงในหน้าจอ (
:878-893) - Ctrl+S บันทึก (เมื่ออยู่ในโหมดแก้ มีการแก้ไข และมีสิทธิ์), Esc ยกเลิกการแก้ผ่านกล่องยืนยัน (
:761-790) ผูกในจอเอง ไม่ใช่useShortcuts - กดแก้ไขขึ้นกล่อง "เตือน (SML Account)" ว่าโปรแกรมจะตรวจว่ามีผู้อื่นเปิดแก้อยู่หรือไม่ มีช่องติ๊ก "ต้องการแสดงหน้าจอนี้อีกในครั้งต่อไป" (
:343-392) หน้าจอไม่ได้ล็อกเรคคอร์ดจริง เป็นเพียงกล่องเตือนตามจอเดิม - สิทธิ์ เพิ่ม/แก้ไข/ลบ ตัดปุ่มตามผู้ใช้ ดู การตรวจสิทธิ์เมนูของ route process (Process route rights)
การบันทึก (handleSave, :394-640) ตรวจตามลำดับ: สิทธิ์ → รหัสว่าง "กรุณาระบุ 'รหัสลูกหนี้'" → ชื่อ 1 ว่าง "กรุณาระบุ 'ชื่อ 1'" → เลขผู้เสียภาษีที่กรอกต้องเป็นตัวเลข 13 หลัก ("เลขประจำตัวผู้เสียภาษีอากร ไม่ครบ 13 หลัก") และไม่ซ้ำกับลูกหนี้รายอื่น (เลขประจำตัวผู้เสียภาษี '...' ซ้ำกับลูกหนี้รหัส '...') → ถ้าเลือก "สาขา" ต้องใส่เลขที่สาขาตัวเลข 5 หลักและไม่ใช่ 00000 → รายการใหม่ตรวจรหัสซ้ำ ถ้าซ้ำระบบเสนอรหัสถัดไปให้ลองใหม่ (duplicateCodeDialog) เมื่อเลือกสำนักงานใหญ่ เก็บเลขที่สาขาเป็น 00000 เสมอ จากนั้นส่งคำสั่งชุดเดียว (queryExecBatch): INSERT/UPDATE ar_customer พร้อมผู้สร้าง/ผู้แก้ล่าสุด, UPDATE แล้ว INSERT-ถ้ายังไม่มี ar_customer_detail (เปลี่ยนเฉพาะ 6 คอลัมน์ ไม่ลบคอลัมน์อื่นของแถว), และบันทึกประวัติ masterLogSql ของเมนู menu_ar สำเร็จขึ้น "บันทึกข้อมูลลูกหนี้เสร็จเรียบร้อย" ตรรกะรันรหัสอัตโนมัติดู useMasterCodeLeave และ ข้อมูลหลักแบบหัว-รายการ รหัสอัตโนมัติ และเลย์เอาต์รายการ (Master-detail, code auto-run, DataList) (/api/process/master/nextcode, codeleave)
การลบ (:644-760): ไม่ให้ลบถ้ารหัสถูกใช้ใน ic_trans, ic_trans_detail, ap_ar_trans, ap_ar_trans_detail ("มีการใช้งานรหัสดังกล่าวในเอกสารหรือรายการขายแล้ว ไม่สามารถลบได้") ผ่านแล้วถามยืนยัน แล้วลบตามลำดับ ar_item_by_customer, ar_customer_cashier_list, ar_contactor, ar_dealer, ar_customer_detail, ar_customer รวมรูปสัญญา images (รหัสภาพ CONTRACT<รหัส>) และบันทึกประวัติการลบ ดู หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans)
การ์ดรายละเอียดสมาชิก (:1666-1726): แสดงเฉพาะรุ่น Pro (hasAdvancedProFeatures) เป็นตารางอ่านอย่างเดียว เลขที่สมาชิก · วันที่เริ่มส่งสมาชิก · วันหมดอายุสมาชิก ของลูกหนี้นี้จาก ar_dealer เรียงตาม roworder แก้ไขที่จอ 6003
6003 รายละเอียดสมาชิก (DealerScreen)
ทะเบียนสมาชิก/ตัวแทนจำหน่าย 1 แถวต่อรหัสสมาชิก ผูกกับลูกหนี้ 1 ราย (ar_dealer.ar_code) ซ้ายคือรายการสมาชิก (เลขที่สมาชิก · วันหมดอายุ · รหัสลูกหนี้ · ชื่อ · ที่อยู่ · โทรศัพท์ · เบอร์โทรมือถือ) ขวาคือฟอร์ม
| ช่อง | ข้อกำหนด |
|---|---|
| รหัสสมาชิก | บังคับ แก้ได้เฉพาะตอนเพิ่มใหม่ ซ้ำไม่ได้ (รหัสสมาชิก "..." มีอยู่ในระบบแล้ว) |
| วันที่สมัคร | วันนี้ตอนเพิ่มใหม่ |
| วันที่หมดอายุ | ว่างได้ |
| เป็นพนักงาน | ติ๊ก (1/0) |
| รหัสผู้แนะนำ · วันที่ผู้แนะนำสมัคร · วันที่ผู้แนะนำหมดอายุ | ข้อความ/วันที่ |
| รหัสลูกหนี้ | บังคับ ค้นหาลูกหนี้ได้ ไม่พบ = "ไม่พบรหัสลูกหนี้ : ..." ไม่บันทึก; ใต้ช่องแสดงข้อมูลลูกหนี้ (ชื่อ ที่อยู่ จังหวัด/อำเภอ/ตำบล ไปรษณีย์ โทรศัพท์ โทรสาร อีเมล เว็บ เลขผู้เสียภาษี เลขบัตร) อ่านอย่างเดียวจาก ar_customer เชื่อม ar_customer_detail |
| ตำแหน่งตัวแทนจำหน่าย / สมาชิก | เลือกบนแผนที่ (ละติจูด/ลองจิจูด) |
- บันทึก = INSERT/UPDATE
ar_dealer+masterLogSqlของmenu_ar_dealerในชุดเดียว (:376-420); ลบถามยืนยันต้องการลบข้อมูลสมาชิกรหัส "..." ใช่หรือไม่?แล้วลบแถวar_dealer+ บันทึกประวัติ (:436-460) - Ctrl+S บันทึก Esc ยกเลิกการแก้ (Esc ไม่ทำงานขณะมีกล่องโต้ตอบหรือหน้าต่างค้นหาเปิดอยู่; ทั้งคู่ทำงานเฉพาะเมื่อแท็บนี้เป็นแท็บที่ใช้งาน,
:460-470)
ข้อควรระวัง
- รหัสเมนูในสคีมาเป็นแบบเก่า (6.1.1, 6.1.3) ส่วนรหัสจริงที่ผู้ใช้เห็นคือ 4 หลัก
- จอทั้งสองเขียนตารางตรงผ่าน
queryExecBatch - การลบลูกหนี้ลบแถวสมาชิก
ar_dealerของลูกหนี้นั้นตามไปด้วย (อยู่ในชุดคำสั่งลบ) - ไม่ได้ตรวจในหน้าจอว่าเลขผู้เสียภาษี 13 หลักผ่านหลักตรวจสอบ (check digit) หรือไม่ ตรวจแค่จำนวนหลักและความซ้ำ
ที่มาในโค้ด
frontend/account/master/CustomerScreen.tsx:57ตัวจอ;:195-262โหลดรายละเอียด;:283-312เลือก/ดับเบิลคลิก/รหัสอัตโนมัติ;:316-392เพิ่ม/แก้ไข;:394-640บันทึก;:644-760ลบ;:761-790คีย์ลัด;:837-ฟอร์ม;:1666-1726การ์ดสมาชิกfrontend/account/master/DealerScreen.tsx:45ตัวจอ;:310-420บันทึก;:436-460ลบ;:463-470คีย์ลัด;:491-497คอลัมน์รายการfrontend/src/config/schemas/arCustomer.ts:29-215;frontend/account/master/masterAutoCode.ts:1-60frontend/account/tabs/screenRegistry.tsx:563-580- ดูเพิ่ม: กำหนดเจ้าหนี้ และรายละเอียดเจ้าหนี้ (SupplierScreen, SupplierDetailScreen) · รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)