ออกแบบระบบสำหรับเขียนปลั๊กอินจัดการค่าคอมมิชชั่น ให้คนกลาง (เป็นเจ้าของสินค้า) ที่มาเสนอสินค้าให้ขายในเว็บ ( sale commission system )

พอร์ตนี้จะเป็นการออกแบบระบบ ทั้งแบบที่ต้องเขียนปลั๊กอินเพิ่มเติม หรือ แบบที่หาจุดที่ต้องโม ให้กับทางลูกค้า

เว็บของลูกค้าเป็นเว็บ e-commerce ที่สร้างด้วย Woocommerce โดยมีสินค้าบางตัวที่ถูกส่งมาขายโดยคนกลาง ( ซึ่งไม่มีสิทธิ์เป็น admin หรือ shop manager และไม่สามารถโพสสินค้า, ตั้งราคา, ดูคำสั่งซื้อ หรือเข้าถึงหลังบ้านได้เลย ) แต่คนกลางนั้นจะได้รับค่าคอมมิชชั่นหากสินค้าชิ้นนั้นๆ ขายได้ ลูกค้าจึงต้องการระบบที่แสดงยอดสินค้าที่คนกลางนั้นส่งมาขาย พร้อมทั้งระบบสรุปยอดเงินที่เว็บไซต์ต้องชำระให้กับคนกลางด้วย

พอร์ตนี้เป็นส่วนหนึ่งของโปรเจค “สร้างปลั๊กอินระบบจัดการค่าคอมมิชชั่น ให้ user ชนิดคนกลางที่เป็นเจ้าของสินค้าและค่าคอม ( sale commission system )”

ผลการดำเนินงาน

 

จาก requirement ข้างต้นทางทีมงาน cowmein ได้ออกแบบระบบ ดังนี้

Flow การคิดค่าคอมมิชชั่น

  1. admin ผูก user ที่เป็นคนกลางกับสินค้า
  2. เมื่อออเดอร์ถูกเปลี่ยนสถานะเป็น "completed" หรือ "จัดส่งแล้ว" สินค้าที่ผูกกับคนกลาง จะถูกบันทึกเข้าระบบ log ที่เก็บค่าคอมมิชชั่นของคนกลาง คนนั้นๆ
  3. ทุกวันที่ 15 ของเดือน ระบบจะสรุปยอดค่าคอมมิชชั่นของคนกลาง เพื่อรอการชำระเงิน ( ออเดอร์ที่ผ่านการสรุปยอดค่าคอมเพื่อรอการชำระเงินแล้วนั้น แม้ว่าจะมีการเปลี่ยนแปลงสถานะหรือข้อมูลใดๆ ของออเดอร์นั้นๆ จะไม่ส่งผลต่อยอดคอมมิชชั่นอีก เนื่องจากเผื่อเวลา 15 วันสำหรับการปรับแก้ไขออเดอร์ของเดือนก่อนหน้าแล้ว )
  4. หากออเดอร์ที่มีสถานะเป็น "completed" หรือ "จัดส่งแล้ว" ถูกเปลี่ยนสถานะเป็น "cancel" หรือ "ยกเลิก" และสถานะค่าคอมมิชชั่นเป็น "รอการคำนวณ" ระบบจะไม่แสดงค่าคอมมิชชั่นของออเดอร์นั้นๆ

ส่วนเขียนปลั๊กอินจัดการค่าคอมมิชชั่น

  • เพิ่ม User role ชนิด salesman
  • เพิ่มเมนูจัดการในส่วน Admin ชื่อ Sales Commission และเมนูย่อย
    • Sales commissions
    • payment
    • setting
  • เพิ่มเมนูระบบค่าคอมมิชชั่นสำหรับ salesman ในส่วนหน้าบ้าน และเมนูย่อย คือ
    • dashboard
    • commissions
    • payments
    • products

ระบบหลังบ้านสำหรับ Admin

1. ระบบดูรายงานค่าคอมมิชชั่น เมนู Sales Commission

  1. ส่วนตารางแสดงผล มีคอลัมน์ต่างๆ ดังนี้
    1. Commission ID
    2. เลขออเดอร์ ( คลิกที่เลขออเดอร์ได้เพื่อ filter เฉพาะคอมมิชชั่นที่เกิดจากออเดอร์นี้ )
    3. ชื่อคนกลาง ( คลิกที่ชื่อได้เพื่อ filter เฉพาะคอมมิชชั่นที่เกิดจากคนกลางคนนี้ ) และอีเมล์
    4. ภาพสินค้า
    5. ชื่อสินค้า ( คลิกที่ชื่อสินค้าเพื่อเปิดไปหน้ารายละเอียดสินค้า ) และ sku
    6. จำนวนสินค้าที่ขายได้
    7. ค่าคอมมิชชั่น
    8. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
      1. รอการคำนวณ คือ คอมมิชชั่นจากสินค้าที่มาจากออเดอร์ที่มีสถานะ completed แต่ยังไม่ได้ถึงวันตัดยอด คือวันที่ 15
      2. รอชำระเงิน คือ คอมมิชชั่นที่ผ่านการตัดยอดในวันที่ 15 แล้ว
      3. ชำระเงินแล้ว คือ คอมมิชชั่นที่ได้รับการคลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง
    9. วันเวลาที่สั่งซื้อ
  2. ส่วนฟิลเตอร์
    1. ค้นหาด้วยคีย์เวิร์ด เช่น ชื่อสินค้า, sku สินค้า, เลขออเดอร์, ชื่อคนกลาง, อีเมล์คนกลาง หรือ User ID ของคนกลาง
    2. ช่วงวันที่สั่งซื้อ From - To
    3. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
  3. ส่วน Pagination

2. ระบบจัดการ การชำระเงินค่าคอมมิชชั่น เมนู "Payment"

  1. ส่วนตารางแสดงผล มีคอลัมน์ต่างๆ ดังนี้
    1. Payment ID ( คลิกที่ Payment ID ได้ เพื่อแสดงรายการคอมมิชชั่นทั้งหมดจาก Payment ID นี้ โดยแสดงตารางที่มีข้อมูลเหมือนกับตาราง Sales Commission)
    2. ชื่อคนกลาง ( คลิกที่ชื่อได้ เพื่อ filter เฉพาะ Payment ค่าคอมมิชชั่นที่เกิดจากคนกลางคนนี้ ) และอีเมล์
    3. ข้อมูลการชำระเงินของคนกลาง
    4. เดือนที่สรุปยอด
    5. จำนวนสินค้าที่ขายได้
    6. ค่าคอมมิชชั่น
    7. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
      1. รอชำระเงิน คือ คอมมิชชั่นที่ผ่านการตัดยอดในวันที่ 15 แล้ว
      2. ชำระเงินแล้ว คือ คอมมิชชั่นที่ได้รับการคลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง
    8. วันเวลาที่สรุปยอด
    9. Action ( คลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง )
  2. ส่วนฟิลเตอร์
    1. ค้นหาด้วยคีย์เวิร์ด เช่น Payment ID, ชื่อคนกลาง, อีเมล์คนกลาง หรือ User ID ของคนกลาง
    2. เดือนที่ต้องการ
    3. ปีที่ต้องการ
  3. ส่วน Pagination

3. ระบบตั้งค่าคอมมิชชั่น เมนู "Setting"

  • แสดงแบบฟอร์มสำหรับบันทึกค่า % คอมมิชชั่น
  • ตั้งค่าจำจำนวนแสดงผลรายการ commission ต่อหน้า ( rows per page )

4. ระบบผูกคนกลางกับสินค้า

  1. ในหน้า add / edit product สามารถเลือกชื่อคนกลางได้จาก meta box ที่เป็น dropdown list ซึ่งแสดงชื่อคนกลางทั้งหมด
  2. ในส่วน quick edit product สามารถเลือกชื่อคนกลางได้จาก  dropdown list ซึ่งแสดงชื่อคนกลางทั้งหมด
  3. ในส่วน bulk edit product สามารถเลือกชื่อคนกลางได้จาก  dropdown list ซึ่งแสดงชื่อคนกลางทั้งหมด

ระบบหน้าบ้านระบบดูรายงานค่าคอมมิชชั่นของคนกลาง

1. ระบบ Dashboard เมนู "Dashboard"

  1. ส่วนตารางแสดงผล Payments 12 เดือนล่าสุด โดยมีคอลัมน์ต่างๆ ดังนี้
    1. เดือนที่สรุปยอด
    2. จำนวนสินค้าที่ขายได้
    3. ค่าคอมมิชชั่น
    4. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
      1. รอชำระเงิน คือ คอมมิชชั่นที่ผ่านการตัดยอดในวันที่ 15 แล้ว
      2. ชำระเงินแล้ว คือ คอมมิชชั่นที่ได้รับการคลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง
    5. วันที่สรุปยอด
  2. ส่วนตารางแสดงผลคอมมิชชั่น 1 สัปดาห์ล่าสุด โดยมีคอลัมน์ต่างๆ ดังนี้
    1. เลขออเดอร์ ( คลิกที่เลขออเดอร์จะพาไปเมนู "Commissions" เพื่อ filter เฉพาะคอมมิชชั่นที่เกิดจากออเดอร์นี้ )
    2. ภาพสินค้า
    3. ชื่อสินค้า ( คลิกที่ชื่อสินค้าเพื่อเปิดไปหน้ารายละเอียดสินค้า ) และ sku
    4. จำนวนสินค้าที่ขายได้
    5. ค่าคอมมิชชั่น
    6. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
      1. รอการคำนวณ คือ คอมมิชชั่นจากสินค้าที่มาจากออเดอร์ที่มีสถานะ completed แต่ยังไม่ได้ถึงวันตัดยอด คือวันที่ 15
      2. รอชำระเงิน คือ คอมมิชชั่นที่ผ่านการตัดยอดในวันที่ 15 แล้ว
      3. ชำระเงินแล้ว คือ คอมมิชชั่นที่ได้รับการคลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง
    7. วันที่สั่งซื้อ

2. ระบบดูรายงานค่าคอมมิชชั่นเมนู "Commissions"

  1. ส่วนตารางแสดงผล มีคอลัมน์ต่างๆ ดังนี้
    1. Commission ID
    2. เลขออเดอร์ ( คลิกที่เลขออเดอร์ได้เพื่อ filter เฉพาะคอมมิชชั่นที่เกิดจากออเดอร์นี้ )
    3. ภาพสินค้า
    4. ชื่อสินค้า ( คลิกที่ชื่อสินค้าเพื่อเปิดไปหน้ารายละเอียดสินค้า ) และ sku
    5. จำนวนสินค้าที่ขายได้
    6. ค่าคอมมิชชั่น
    7. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
      1. รอการคำนวณ คือ คอมมิชชั่นจากสินค้าที่มาจากออเดอร์ที่มีสถานะ completed แต่ยังไม่ได้ถึงวันตัดยอด คือวันที่ 15
      2. รอชำระเงิน คือ คอมมิชชั่นที่ผ่านการตัดยอดในวันที่ 15 แล้ว
      3. ชำระเงินแล้ว คือ คอมมิชชั่นที่ได้รับการคลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง
    8. วันที่สั่งซื้อ
  2. ส่วนฟิลเตอร์
    1. ค้นหาด้วยคีย์เวิร์ด เช่น ชื่อสินค้า, sku สินค้า , เลขออเดอร์
    2. ช่วงวันที่สั่งซื้อ From - To
    3. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
  3. ส่วน Pagination

3. ระบบดูรายงานการชำระเงินค่าคอมมิชชั่น เมนู "Payments"

  1. ส่วนตารางแสดงผล มีคอลัมน์ต่างๆ ดังนี้
    1. Payment ID ( คลิกที่ Payment ID ได้เพื่อ แสดงรายการคอมมิชชั้นทั้งหมดจาก Payment ID นี้ โดยแสดงตารางที่มีข้อมูลเหมือกับตาราง Sales Commission)
    2. ข้อมูลการชำระเงินของคนกลาง
    3. เดือนที่สรุปยอด
    4. จำนวนสินค้าที่ขายได้
    5. ค่าคอมมิชชั่น
    6. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
      1. รอชำระเงิน คือ คอมมิชชั่นที่ผ่านการตัดยอดในวันที่ 15 แล้ว
      2. ชำระเงินแล้ว คือ คอมมิชชั่นที่ได้รับการคลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง
    7. วันเวลาที่สรุปยอด
  2. ส่วนฟิลเตอร์
    1. เดือนที่ต้องการ
    2. ปีที่ต้องการ
  3. ส่วน Pagination

4. ระบบดูรายงานค่าคอมมิชชั่น แต่ละสินค้า เมนู "Products"

  1. ส่วนตารางแสดงผล มีคอลัมน์ต่างๆ ดังนี้
    1. ภาพสินค้า
    2. ชื่อสินค้า ( คลิกที่ชื่อสินค้าเพื่อเปิดไปหน้ารายละเอียดสินค้า ) และ sku
    3. จำนวนสินค้าที่ขายได้ ( จะแสดงเมื่ออยู่ในสถานะ “รอชำระเงิน” หรือ “ชำระเงินแล้ว” )
    4. ค่าคอมมิชชั่น ( จะแสดงเมื่ออยู่ในสถานะ “รอชำระเงิน” หรือ “ชำระเงินแล้ว” )
    5. สถานะค่าคอมมิชชั่น ( รอการคำนวณ, รอชำระเงิน หรือ ชำระเงินแล้ว )
      1. รอการคำนวณ คือ คอมมิชชั่นจากสินค้าที่มาจากออเดอร์ที่มีสถานะ completed แต่ยังไม่ได้ถึงวันตัดยอด คือวันที่ 15
      2. รอชำระเงิน คือ คอมมิชชั่นที่ผ่านการตัดยอดในวันที่ 15 แล้ว
      3. ชำระเงินแล้ว คือ คอมมิชชั่นที่ได้รับการคลิกเปลี่ยนสถานะเป็น "ชำระเงินแล้ว" หรือ "Paid" หลังจากที่เว็บไซต์ได้โอนเงินหรือชำระเงินให้กับคนกลาง
    6. วันที่สร้างสินค้าในเว็บ
  2. ส่วนฟิลเตอร์
    1. ค้นหาด้วยคีย์เวิร์ด เช่น ชื่อสินค้า หรือ sku
  3. ส่วน Pagination