สมอง SML

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

#screens#master

กำหนดคลังสินค้า (WarehouseScreen) และจอคลังที่เก็บสินค้า

สามเมนูที่เกี่ยวกับคลัง: 1024 จอเขียนเอง (WarehouseScreen) ดูแลตาราง ic_warehouse ส่วน 2021 และ 2022 เป็นจอมาตรฐาน createMasterScreen ที่สร้างจากสคีมา ดูกลไกที่ หน้าจอข้อมูลหลัก + ตารางย่อย (MasterDetailScreen) และ รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS)

วิธีเปิด

รหัส เมนู จอ ตาราง
1024 กำหนดคลังสินค้า (menu_setup_ic_wh, หมวดตั้งค่าระบบสินค้าคงคลัง) WarehouseScreen (screenRegistry.tsx:303) คลังสินค้า (ic_warehouse)
2021 คลังที่เก็บสินค้า (menu_ic_warehouse_locaton) createMasterScreen โหมด "สินค้า" (masterDetailSchemas.ts:1375) ic_inventory + กริด สินค้ากับคลังและที่เก็บ (ic_wh_shelf)
2022 กำหนดกลุ่มที่เก็บ (ic_warehouse_and_location_group) createMasterScreen โหมด "หัวเอกสาร" (masterDetailSchemas.ts:783) ic_warehouse_location_group + กริดรายละเอียด
กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu)

1024 กำหนดคลังสินค้า

เปิดมาแล้วเลือกคลังแรกในรายการให้ทันที (shouldAutoSelect, ตามจอเดิม _manageMasterCodeFull, :131-160)

โครงจอ: แบ่งซ้าย/ขวา (ลากปรับขนาดได้ จำความกว้างใน sml_split_warehouse) ซ้ายคือรายการคลัง (รหัส ชื่อ ชื่ออังกฤษ) ค้นจากรหัส/ชื่อ/ชื่อ 2 จำกัด 500 แถว เรียงรหัส (:143-148) กลไกรายการดู รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog) ขวาคือฟอร์ม

ช่องกรอก (icWarehouse.ts:21-95)

ช่อง ข้อกำหนด
รหัส ไม่เกิน 25 ตัว บังคับ แก้ได้เฉพาะตอนเพิ่มใหม่ (หลังบันทึกแก้ไม่ได้, :812) บันทึกเป็นตัวพิมพ์ใหญ่
ชื่อ ไม่เกิน 100 ตัว บังคับ
ชื่อ (ภาษาอังกฤษ) ไม่เกิน 100
ที่อยู่ ไม่เกิน 255
หมายเลขโทรศัพท์ / โทรสาร ไม่เกิน 50
กลุ่มผู้ใช้งาน ไม่เกิน 10 (ช่องข้อความธรรมดา)
ผู้จัดการคลัง ค้นหาจากตารางผู้ใช้ erp_user — ผู้ใช้/พนักงานในฐานบริษัท แสดง รหัส~ชื่อ (หน้าต่างค้นหา "กำหนดพนักงาน (ผู้จัดการคลัง)")
สาขา ค้นหาจาก erp_branch_list — ทะเบียนสาขา (หน้าต่างค้นหา "กำหนดสาขา")
สาขาที่ใช้งาน ข้อความไม่เกิน 500 ตัว
ตำแหน่งคลังสินค้า เลือกบนแผนที่ (ละติจูด/ลองจิจูด ทศนิยม 6 ตำแหน่ง, ประเภท WAREHOUSE) ตัวช่องตัวเลขซ่อนไว้ (:1121)
กด Enter ในช่องข้อความ = ไปช่องถัดไป (handleKeyDownNext, :611)

ปุ่มและโหมด

  • โหมดดู: แก้ไข (ต้องเลือกรายการ + สิทธิ์แก้ไข), เพิ่มใหม่ (สิทธิ์เพิ่ม), ลบ (เลือกรายการ + สิทธิ์ลบ), ปิดหน้าจอ ปุ่มปิดอยู่เฉพาะเมื่อจอถูกเปิดโดยมี onClose ดู การตรวจสิทธิ์เมนูของ route process (Process route rights)
  • โหมดแก้: บันทึก (ปิดจนกว่าจะมีการแก้ไขจริง isDirty), ปิดหน้าจอ = ยกเลิกการแก้
  • คัดลอก อยู่ที่แถบเครื่องมือของรายการซ้าย (onCopy={startCopy}, :652, ปุ่มถูกปิดถ้าไม่มีสิทธิ์เพิ่ม): ตัดรหัสออก ชื่อต่อท้าย "(คัดลอก)" เข้าโหมดเพิ่มใหม่ (:450-464)
  • คีย์ลัด Ctrl+S บันทึก (เมื่ออยู่ในโหมดแก้ มีการแก้ไข และมีสิทธิ์) Esc ยกเลิกการแก้ (:587-607) ผูกด้วยตัวฟังเอง ไม่ใช่ useShortcuts ผลเหมือนกัน คอมเมนต์เรียก F12 แต่ไม่ได้ผูก
  • ดับเบิลคลิกแถวซ้าย = ขอแก้ไข: ถ้าเปิดคำเตือนไว้จะขึ้นกล่อง "เตือน" แบบล็อกเพื่อแก้ไข (lock_for_edit) มีช่องติ๊ก "ต้องการแสดงหน้าจอนี้อีก" เก็บค่าไว้ในเครื่องที่ sml_lock_for_edit_show_again (:98-125, :252-277)
  • เปลี่ยนรายการ/เพิ่มใหม่/ยกเลิกขณะมีข้อมูลค้าง: ถาม "มีการแก้ไขข้อมูลบางส่วน ต้องการยกเลิกการแก้ไขหรือไม่" (:227-250)

การบันทึก (:330-448): ตรวจสิทธิ์ → รหัสว่าง "ข้อมูลไม่สมบูรณ์ : รหัสคลังสินค้า" → ชื่อว่าง "ข้อมูลไม่สมบูรณ์ : ชื่อคลังสินค้า (ไทย)" → ถ้าเป็นรายการใหม่ตรวจรหัสซ้ำ (ไม่สนตัวพิมพ์) ถ้าซ้ำ รหัสคลังสินค้า [รหัส] มีอยู่ในระบบแล้ว ไม่สามารถเพิ่มซ้ำได้ แล้ว INSERT/UPDATE ic_warehouse ผ่าน queryExec โดยตรง (ไม่มี endpoint process) สำเร็จขึ้น "บันทึกข้อมูลเสร็จเรียบร้อย" แล้วโหลดรายการกลับมาดู

การลบ (:471-579): ก่อนลบรันตรวจว่ารหัสถูกใช้ใน ic_trans_detail (คลัง/คลังปลายทาง), ic_shelf หรือ ic_wh_shelf ถ้าพบขึ้น "มีการใช้งานรหัสดังกล่าวไปแล้ว กรุณาตรวจสอบ" ลบไม่ได้ ถ้าไม่พบถามยืนยัน ต้องการลบ [รหัส] จริงหรือไม่ ดูตารางที่ใช้อ้างที่ รายการสินค้าในเอกสาร (ic_trans_detail), พื้นที่เก็บสินค้า (ic_shelf)

สิทธิ์ใช้คลัง: จอนี้ไม่ได้กำหนดว่าผู้ใช้เห็นคลังไหน ตั้งที่ สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf) (ตาราง erp_user_group_wh_shelf)

2021 คลังที่เก็บสินค้า (ผูกสินค้ากับคลัง/ที่เก็บ)

รายการซ้ายคือสินค้า (รหัส ชื่อ หน่วยนับ ค้นจากรหัส/ชื่อ/หน่วย) เลือกสินค้าแล้วกริด "คลังและพื้นที่เก็บสินค้า" แสดงคู่คลัง/ที่เก็บของสินค้านั้นจาก ic_wh_shelf:

  • คอลัมน์: รหัสคลัง (ค้นหาจาก ic_warehouse) · ชื่อคลัง (แสดงอย่างเดียว) · รหัสที่เก็บ (ค้นหาจาก ic_shelf เฉพาะคลังที่เลือก ถ้ายังไม่ได้เลือกคลังจะค้นได้ทุกที่เก็บ) · ชื่อที่เก็บ · ชั้นวาง (ข้อความ) · จำนวนน้อยสุด · จำนวนสูงสุด · ใช้งาน
  • ปุ่มชื่อ "All WareHouse and Shelf" (fillAllLabel) เติมคู่คลัง/ที่เก็บทุกคู่ใน ic_shelf ให้ทีเดียว (จำนวนน้อยสุด/สูงสุด = 0, ใช้งาน)
  • ปุ่มลบมีป้าย "ล้างคลังและที่เก็บของสินค้านี้" (deleteLabel)
  • "จำนวนน้อยสุด/สูงสุด" คือ min_point/max_point ของคู่คลัง/ที่เก็บ ดู สินค้ากับคลังและที่เก็บ (ic_wh_shelf)

2022 กำหนดกลุ่มที่เก็บ

ฟอร์มหัว: คลัง (ค้นหาจาก ic_warehouse) · กลุ่มที่เก็บ (ตัวพิมพ์ใหญ่ ไม่เกิน 25) · ชื่อกลุ่มที่เก็บ (ไม่เกิน 255) คีย์คือคู่คลัง + กลุ่มที่เก็บ แท็บ "ที่เก็บในกลุ่ม" เลือกที่เก็บจาก ic_shelf ของคลังที่เลือก เก็บที่ ic_warehouse_location_group_detail ลบได้ ตารางหัวเป็นตารางรหัส/ชื่อธรรมดา ดู กลุ่มตาราง ic_ (สินค้า คลัง สต๊อก เอกสารซื้อ-ขาย)

ข้อควรระวัง

  • รหัสเมนูในสคีมา 2021/2022 ยังเป็นรหัสเก่า (2.1.23, 2.1.24) แต่เมนูจริงใช้ 4 หลัก เทียบผ่าน legacyCode
  • จอ 1024 เขียนตารางตรงผ่าน queryExec (ตาม คลังสินค้า (ic_warehouse) ใช้ /query/exec เพราะตารางอยู่ใน allow-list) ไม่ผ่าน /api/process

ที่มาในโค้ด