Flow: สร้างสินค้า/รุ่น (Device Product) · AD12.1

สร้างรุ่นสินค้า + ราคาต่อความจุ + เงินดาวน์ — ต่อกิจการ อ้างอิงตาราง: 04-device.md · ฟอร์ม node 1095:158862 · ตารางรายการ node 2324:276605 วันที่: 16 มิ.ย. 2026


Prerequisite (ต้องมีก่อนสร้างสินค้า)

  • ยี่ห้อ device.brands (custom/กิจการ) · เรทชำระ device.payment_rates (+items) · ความจุ device.capacities (ระดับระบบ)
  • ประเภท = enum device.device_type (SMARTPHONE/TABLET/LAPTOP) ไม่ต้องสร้าง

Flow สร้างสินค้า

flowchart TD
  A([แอดมิน: เพิ่มรายการสินค้า]) --> B[เลือกยี่ห้อ brand_id]
  B --> C[เลือกประเภท device_type]
  C --> D[ตั้งชื่อรุ่น name - unique/กิจการ]
  D --> E[เลือกความจุ - ได้หลายอัน]
  E --> F[กำหนดสี - text array ใส่ชื่ออะไรก็ได้]
  F --> G[เลือกเรทชำระ 1 ตัว - ใช้ทุกความจุ]
  G --> H[ต่อความจุ: ตั้งราคา + เงินดาวน์]
  H --> I{กรอกราคา}
  I --> J[ราคามือหนึ่ง / มือสอง / เครื่องนอก<br/>บังคับมือหนึ่งหรือมือสอง อย่างน้อย 1]
  I --> K[เงินดาวน์ % หลายอัตรา - integer array]
  J --> L[[ยืนยัน]]
  K --> L
  L --> M[สร้าง device.products<br/>+ device.product_capacities ต่อความจุ]
  M --> N([สินค้าพร้อมใช้คำนวณราคา SH4])

Map → ตาราง

Stepตาราง/คอลัมน์
ยี่ห้อ/ประเภท/ชื่อ/สี/เรทdevice.products (brand_id, device_type, name, colors text[], payment_rate_id)
ราคาต่อความจุdevice.product_capacities (capacity_id, price_new/used/foreign)
เงินดาวน์ (% หลายอัตรา)device.product_capacities.down_payment_percents integer[]
ความจุที่เลือก (หลายอัน)1 product → หลาย product_capacities (M:N กับ capacities)

กฎ/Constraint

  • ชื่อรุ่น unique ต่อกิจการ
  • สี = text[] (ไม่มี config กลาง · cardinality ≥ 1)
  • เรทชำระ 1 ตัว/รุ่น → ใช้กับทุกความจุ
  • แต่ละความจุ: บังคับกรอก price_new หรือ price_used อย่างน้อย 1 · ราคาเป็นสตางค์ (ฟอร์มกรอกบาท)
  • เงินดาวน์ integer[] เป็น % เช่น {10,20,30} · cardinality ≥ 1
  • ลบ brand/เรท/ความจุ ไม่ได้ถ้าถูกใช้ในสินค้า (FK restrict)

⚠️ Snapshot ตอนทำสัญญา (Domain 5)

ราคา/เรท/ตัวคูณ/ค่าคอม/เงินดาวน์ ที่เลือกตอนสร้างสัญญา จะถูก snapshot เก็บในสัญญา — ราคาสินค้าที่แก้ภายหลังจะไม่กระทบสัญญาเดิม