สมอง SML

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

#screens#master

ข้อมูลสินค้าเพิ่มเติม (ItemDetail2Screen)

จอแก้ข้อมูลสินค้า "ส่วนที่เหลือ" ที่ไม่อยู่ในจอ ข้อมูลสินค้า (ItemScreen): ยี่ห้อ/กลุ่ม/มิติ 45 ช่อง, ชื่อการตลาด/ชื่อ POS/ชื่อพิมพ์บิล, คลังประจำ, สถานะควบคุม, สินค้าทดแทน/พ่วง/แนะนำ ฯลฯ รวม 15 แท็บ แก้ได้อย่างเดียว (เพิ่มสินค้าใหม่หรือลบไม่ได้ ต้องไปที่ข้อมูลสินค้า) โหลดและบันทึกทั้งหมดผ่านชุดเดียวที่ฝั่ง Go (/api/process/itemdetail/get|save) หน้าจอทำหน้าที่แสดงผล รับค่า และเรียก API (หัวไฟล์ :3-7) ตรรกะฝั่งเซิร์ฟเวอร์ดู ข้อมูลสินค้าและข้อมูลสินค้าเพิ่มเติม (Item master & item detail)

วิธีเปิด

รหัส เมนู หมายเหตุ
2002 ข้อมูลสินค้าเพิ่มเติม (menu_ic_item_detail_2) รายการซ้ายเรียงตามรหัสสินค้า
(ไม่อยู่ในเมนู) menu_ic_item_detail_2_barcode จอเดียวกันแต่รายการซ้ายเรียงตามบาร์โค้ด (byBarcode) ลงทะเบียนใน screenRegistry.tsx:623-639
กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu)

โครงจอ

  • ซ้าย: รายการสินค้า (อ่านอย่างเดียว) ดึง 500 แถวแรกจากการค้นหา (queryLimit(..., 500), :358) คอลัมน์ตามรหัส: รหัส, ชื่อ, หน่วย, ยอดคงเหลือ, ต้นทุนเฉลี่ย; แบบบาร์โค้ด: บาร์โค้ด, รหัส, ชื่อ, หน่วย, ราคา กดสองครั้งที่แถว = เปิดแล้วเข้าโหมดแก้ไขทันที (:706) เปิดจอแล้วโหลดแถวแรกให้อัตโนมัติ ดูกลไก DataList ที่ รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog)
  • ขวา: แถบสถานะ "บันทึกล่าสุด <เวลา>", "แก้ไขแล้ว N ช่อง", ป้าย "โหมดดูข้อมูล"/"โหมดแก้ไข" ใต้ลงมาเป็นช่อง ค้นหาบาร์โค้ด (พิมพ์แล้ว Enter หรือกดปุ่ม ค้นหา) และปุ่ม รูปภาพสินค้า (N) (ปิดไว้ถ้าสินค้าไม่มีรูป) ตัวจัดการรูปเต็มดู กำหนดรูปภาพสินค้า/พนักงาน/สินทรัพย์ และบันทึกรูปภาพเอกสาร (ItemPictureScreen, DocumentPictureScreen)
  • ปุ่ม: โหมดดู = แก้ไข (ต้องมีสิทธิ์แก้) และ ปิดหน้าจอ; โหมดแก้ = บันทึก (กดได้เมื่อมีการเปลี่ยนแปลงเท่านั้น disabled={!dirty}) และ ปิดหน้าจอ (จริงๆ คือ ยกเลิกการแก้ไข คืนค่าเดิม cancel, :428)
  • คีย์ลัด: Ctrl+S บันทึก, Esc ยกเลิกการแก้ไข (ทำงานเฉพาะขณะอยู่โหมดแก้ไข และเมื่อแท็บนี้แสดงอยู่ ScreenFrame.tsx:37-58), Ctrl+B ไปช่องค้นหาบาร์โค้ด (:839-852) คอมเมนต์ในโค้ดเรียก F12 แต่ที่ผูกจริงคือ Ctrl+S

15 แท็บ (TABS, :64-69) และฟิลด์

แท็บ เนื้อหา
1.รายละเอียด ยี่ห้อ, รูปแบบ, ลวดลาย/ดีไซน์, เกรด, รุ่น, หมวด, กลุ่มหลัก, ชั้นสินค้า, กลุ่มย่อย, กลุ่มย่อย 2 (ช่องค้นหาแบบ lookup; กลุ่มย่อยกรองตามกลุ่มหลักที่เลือก), รายละเอียด (ไม่เกิน 5000 ตัวอักษร), อัตราค่าคอมมิชชั่น, รูปแบบเลข Serial (:514-533)
2.กลุ่ม,มิติ 45 ช่อง dimension_1..45 ชื่อช่องดึงจากชื่อมิติที่ตั้งไว้ (dimNames, ไม่มีชื่อแสดง "มิติที่ N") ช่อง 1-20 เป็น lookup ตาราง ic_dimension ตามเลขมิติ ช่อง 21-45 พิมพ์ข้อความ แบ่งกล่อง "กลุ่ม (1-10, 21-30, 41-45)" และ "มิติ (11-20, 31-40)"
3-6 ตารางชื่อการตลาด / ชื่อย่อ-ชื่อเทียบเคียง / ชื่อสำหรับ POS / ชื่อสำหรับพิมพ์บิล (ใช้โครง NAME_GRID เดียวกัน)
7.คลัง,พื้นที่เก็บประจำ กล่อง คลังรับซื้อ / คลังขาย / คลังเบิก: คลัง + พื้นที่เก็บ + หน่วยนับ (พื้นที่เก็บกรองตามคลังที่เลือก, หน่วยนับกรองจาก ic_unit_use ของสินค้า :507-509)
8.สถานะ กลุ่มผู้ใช้ฝ่ายจัดซื้อ/ขาย/บริหาร/คลัง (erp_user_group), จุดสั่งซื้อ, ส่วนลด, จำนวนต่ำสุด, จำนวนสูงสุด และ checkbox 10 ตัว: สะสมแต้ม, ควบคุมยอดคงเหลือ, ควบคุมสินค้าค้างรับ/ค้างส่ง, ล็อคต้นทุน, เลิกผลิต/หมดอายุการขาย, ล็อคราคา, ล็อคส่วนลด, ระงับการซื้อ, ระงับการขาย, สินค้าของแถม (FLAGS, :58-60)
9.หมายเหตุ ข้อความ ไม่เกิน 255 ตัวอักษร
A.สินค้าทดแทน รหัสสินค้า (lookup ic_inventory), ชื่อ, หมายเหตุ, ใช้งาน
B.รูปแบบสินค้า รหัสรูปแบบ (ic_pattern), ชื่อ 1-2, ใช้งาน
C.สี รหัสสี (ic_color), ชื่อสี, ใช้งาน
D.ขนาดสินค้า รหัสขนาด (ic_size), ชื่อ, กว้างxยาวxสูง, น้ำหนัก, ใช้งาน
E.สินค้าพ่วง บาร์โค้ด (ค้นจาก ic_inventory_barcode), รหัสสินค้า, ชื่อ, หน่วยนับ, จำนวน (ค่าเริ่มต้น 1)
F.สินค้าแนะนำ รหัสสินค้า (ic_inventory), ชื่อ, ใช้งาน
G.รายชื่อผู้ผลิต รหัสผู้ผลิต (lookup ap_supplier), ชื่อ, ใช้งาน
ตารางทุกแท็บ: ปุ่มเพิ่มแถว, ลบแถว (ไอคอนถังขยะ :287), ย้ายลำดับ, พิมพ์รหัสแล้วออกจากช่องระบบ lookup ทันที (resolveRow, :120-140) ไม่พบรหัสขึ้น ไม่พบ : <รหัส> แล้วล้างแถว (commitCode, :465-470)

การโหลดและบันทึก

  • เปลี่ยนสินค้าระหว่างแก้ไขค้าง: ขึ้นเตือน "มีข้อมูลที่ยังไม่บันทึก กรุณาบันทึกหรือยกเลิกก่อนเปลี่ยนรายการ" (:411)
  • ปุ่ม แก้ไข: ต้องมีสิทธิ์แก้; ถ้าเซิร์ฟเวอร์ตอบ editable = false (ตาม ic_inventory.update_detail = 1, หัวไฟล์ :7) ขึ้น "สินค้านี้ยังไม่พร้อมแก้ไข จึงแก้ข้อมูลเพิ่มเติมไม่ได้" (:423)
  • บันทึก (save, :430-455): ไม่มีสิทธิ์ขึ้น คุณไม่มีสิทธิ์ "แก้ไขข้อมูล" ในหน้าจอนี้ ...; ส่ง POST /api/process/itemdetail/save ก้อนเดียวพร้อม item, detail และตาราง 11 ชุด (market, short, pos, billing, colors, sizes, patterns, replace, bundle, suggest, manufacturers) สำเร็จขึ้น "บันทึกข้อมูลสินค้าเพิ่มเติมแล้ว" และรีโหลดค่าจากเซิร์ฟเวอร์
  • รูปภาพโหลดตามต้องการผ่าน POST /api/process/itempicture/get (kind: "item")

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

ทะเบียนสินค้า (ic_inventory), รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail), บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode), หน่วยนับที่ใช้ของสินค้า (ic_unit_use), พื้นที่เก็บสินค้า (ic_shelf), คลังสินค้า (ic_warehouse), ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier) ส่วนตารางจอ lookup (ic_brand, ic_pattern, ic_design, ic_grade, ic_model, ic_category, ic_group, ic_class, ic_group_sub, ic_group_sub2, ic_color, ic_size, ic_dimension, erp_user_group) เป็นตารางรหัสที่อ่านผ่านหน้าต่างค้นหา

ข้อควรระวัง

  • ฟอร์มเดียวแต่เก็บ 2 ก้อน (item กับ detail) ตัวนับ "แก้ไขแล้ว N ช่อง" นับทีละฟิลด์ของสองก้อนนี้ และนับ 1 ต่อหนึ่งตารางย่อย (grid) ที่มีการเปลี่ยน (:339-343)
  • ช่องมิติ 21-45 ไม่มี lookup เป็นข้อความอิสระ
  • การเปลี่ยนรายการที่ยังไม่บันทึกถูกบล็อก ไม่ได้ถามแบบ "ทิ้ง/ทำต่อ" เหมือนจอ ข้อมูลสินค้า (ItemScreen)

ที่มาในโค้ด