การแมปข้อมูลสินค้า Smaregi กับข้อมูลสินค้าของ Receipt Roller
ข้อมูลหลักสินค้าของ Smaregi จะถูกแปลงเป็น ข้อมูลสินค้าของ Receipt Roller (ProductDto) โดยอัตโนมัติหลังจากเชื่อมต่อกับเครื่อง POS แล้ว บทความนี้สรุปความสัมพันธ์ของแต่ละฟิลด์ และข้อควรระวังเฉพาะของ Smaregi
วิธีการซิงค์ข้อมูลด้วยตนเอง ให้คลิกปุ่ม "ซิงค์จาก Smaregi" ในหน้าจัดการสินค้า รายละเอียดเพิ่มเติมดูได้ที่ การตั้งค่าเชื่อมต่อ POS ของ Smaregi
ตารางเทียบฟิลด์
Smaregi /pos/products |
Receipt Roller (ProductDto) |
หมายเหตุ |
|---|---|---|
productId | SmaregiProductId | ID ภายในของ Smaregi ใช้เป็นคีย์อ้างอิงเมื่อซิงค์ซ้ำ |
productCode | SKU | รหัสสินค้าของ Smaregi(หมายเลขที่ผู้ประกอบการร้านค้าใช้งานทั่วไป) |
productName | ProductName | ชื่อสินค้า(สูงสุด 85 ตัวอักษร) |
description | Description | คำอธิบายสินค้า(หากเป็นค่าว่างจะไม่อัปเดต) |
categoryId | Category | ระบุค่า categoryName จาก /pos/categories แล้วบันทึก |
price | BasePrice | แปลงเป็นชนิด decimal เมื่อซิงค์ซ้ำจะเขียนทับเฉพาะกรณีที่มีค่ามากกว่า 0 |
cost | BaseCostPrice | แปลงเป็นชนิด decimal หากเป็นค่าว่างหรือ 0 ระบบจะคงค่าเดิมที่มีอยู่ในฝั่ง RR ไว้ |
displayFlag | —(ตัวกรอง) | สินค้าที่มีค่า "0"(ไม่แสดงที่เครื่อง)จะไม่ถูกซิงค์ |
รายการที่ไม่ถูกนำเข้า
ฟิลด์ต่อไปนี้ของ Smaregi ในเวอร์ชันปัจจุบันยังไม่ถูกนำเข้าในฝั่ง RR
- อัตราภาษี(
taxRate)—/pos/productsของ Smaregi ไม่ส่งคืนอัตราภาษี สิ่งที่ส่งคืนมามีเพียงค่าหมวดหมู่ของประเภทภาษีtaxDivision(0=รวมภาษี, 1=ไม่รวมภาษี, 2=ไม่ต้องเสียภาษี)เท่านั้น เนื่องจากอัตราภาษีจริงถูกกำหนดในการตั้งค่าผู้เช่าของ Smaregi ฝั่ง RR จึงตั้งค่าเริ่มต้นเป็น 10% เมื่อลงทะเบียนใหม่ และคงอัตราภาษีเดิมไว้เมื่ออัปเดต - รหัส JAN — endpoint
/pos/productsของ Smaregi ไม่มีฟิลด์รหัส JAN กรุณาลงทะเบียนแยกต่างหากในฝั่ง RR - แบรนด์ / ผู้จัดจำหน่าย / หมายเลขรุ่น / ซีรีส์ ฯลฯ — เนื่องจากไม่มีแนวคิดที่ตรงกันในฟิลด์มาตรฐานของ Smaregi กรุณาลงทะเบียนแยกต่างหากในฝั่ง RR
- รูปภาพสินค้า — การซิงค์รูปภาพจากฝั่ง Smaregi ยังไม่รองรับในเวอร์ชันปัจจุบัน
- ตัวเลือกสินค้า(variation)(สินค้าแยกตามสี/ขนาด)— โครงสร้างสินค้าแบบแม่-ลูกของฝั่ง Smaregi ยังไม่ถูกขยายเป็นสินค้าแยกรายการในเวอร์ชันปัจจุบัน
- ราคาตามสาขา — หากตั้งค่าราคาต่างกันตามสาขาใน Smaregi เวอร์ชันปัจจุบันจะนำเข้าเฉพาะราคาพื้นฐานของทั้งสัญญาเท่านั้น สามารถเขียนทับได้ในฝั่ง RR โดยใช้
StorePricesJson - ฟิลด์เฉพาะของ RR(
Brand/Supplier/JanCode/ModelNumber/TaxRateฯลฯ)— ฟิลด์ที่ไม่มีแนวคิดตรงกันในฝั่ง Smaregi หรือไม่ได้ซิงค์ จะไม่ถูกเขียนทับเมื่อซิงค์ซ้ำ เนื้อหาที่ลงทะเบียนด้วยตนเองในฝั่ง RR จะยังคงอยู่
การจับคู่ข้อมูลและการลงทะเบียนใหม่
เมื่อนำเข้าสินค้าจาก Smaregi ระบบจะจับคู่กับสินค้าที่มีอยู่แล้วโดยใช้ SmaregiProductId ที่ตรงกันทั้งหมดเท่านั้น หากไม่ตรงกัน จะถูกเพิ่มเข้า PIM เป็นสินค้าใหม่ ระบบจะไม่จับคู่อัตโนมัติด้วยชื่อสินค้าหรือ SKU(เนื่องจากอาจมีสินค้าต่างกันที่ใช้ชื่อเดียวกันได้)
จังหวะเวลาในการซิงค์
- Smaregi → RR(การนำเข้าข้อมูลหลักสินค้า): ทำงานแบบแมนนวลผ่านปุ่ม "ซิงค์จาก Smaregi" ในหน้าจัดการสินค้า ระบบจะดึงรายการสินค้าและหมวดหมู่ทั้งหมดจาก Smaregi Platform API(
/pos/products+/pos/categories)และจับคู่ด้วยSmaregiProductIdเพื่อเพิ่มหรืออัปเดตข้อมูล - พฤติกรรมเมื่อซิงค์ซ้ำ: สินค้าที่มีอยู่แล้ว(ที่มี
SmaregiProductIdตรงกัน)จะถูกเขียนทับในฟิลด์ProductName/Description/SKU/Category/BasePrice/BaseCostPrice(เฉพาะกรณีที่มีค่า)ส่วนฟิลด์ที่เพิ่มในฝั่ง RR เช่นBrand/Supplier/JanCode/TaxRateจะยังคงอยู่ไม่ถูกเขียนทับ - RR → Smaregi: ยังไม่รองรับในเวอร์ชันปัจจุบัน สินค้าที่ลงทะเบียนในฝั่ง RR จะไม่ถูกส่งกลับไปยัง Smaregi โดยอัตโนมัติ
ข้อควรระวัง
- หากมีการลบสินค้าออกจริงในฝั่ง Smaregi การจับคู่ด้วย
SmaregiProductIdของสินค้านั้นจะใช้งานไม่ได้อีกต่อไป แนะนำให้ใช้การซ่อนด้วยdisplayFlagแทนการลบจริงในฝั่ง Smaregi(สินค้าที่ถูกซ่อนจะไม่อยู่ในขอบเขตการซิงค์ แต่การเชื่อมโยงกับรายการขายในอดีตจะยังคงอยู่) - ต้นทุน(
cost)เป็นรายการที่กรอกได้ตามต้องการแม้ในฝั่ง Smaregi หากยังไม่ได้กรอกต้นทุนในฝั่ง Smaregi จำเป็นต้องกรอกBaseCostPriceด้วยตนเองในฝั่ง RR เพื่อให้สามารถใช้การวิเคราะห์กำไรได้ กรุณาพิจารณาจัดเตรียมข้อมูลต้นทุนให้ครบถ้วน - หากมีสินค้าที่มีอัตราภาษีนอกเหนือจาก 10%(เช่น อัตราภาษีลดหย่อน 8%)ปะปนอยู่ กรุณาเปลี่ยน
TaxRateเป็น 0.08 ด้วยตนเองในฝั่ง RR หลังการซิงค์ เนื่องจากฝั่ง Smaregi ไม่ส่งอัตราภาษีมา จึงไม่มีการตั้งค่าอัตโนมัติ - การซิงค์ครั้งแรกของสินค้าจำนวนมากอาจใช้เวลานานเนื่องจากข้อจำกัดอัตราการเรียกใช้ (rate limit) ของ API สินค้าที่เกินจำนวนสูงสุดตามแพ็กเกจจะถูกข้าม
ข้อมูลสินค้าผ่านรายการขาย
แม้จะไม่ได้ทำการซิงค์ข้อมูลหลักสินค้า ทุกครั้งที่มีรายการขายเกิดขึ้น ฟิลด์ productCode / productName / categoryName ของ SmaregiTransactionDetail จะถูกนำเข้าเป็นรายละเอียดการขาย ข้อมูลเหล่านี้จะถูกบันทึกเป็นสแนปช็อต ณ เวลาที่เกิดรายการขาย และทำหน้าที่เป็นข้อมูลพื้นฐานสำหรับการแสดงผลใบเสร็จและการรวมยอดขายแยกตามสินค้า รายละเอียดเพิ่มเติมดูได้ที่ การแมปข้อมูลการขายของ Smaregi
คู่มือที่เกี่ยวข้อง
- ProductDto Reference(สำหรับนักพัฒนา)— ข้อกำหนดฟิลด์ทั้งหมดของโมเดลมาตรฐาน
- Smaregi Platform API: GET /pos/products(ภายนอก — เอกสารอ้างอิงอย่างเป็นทางการ)
- การแมปข้อมูลการขายของ Smaregi
- การแมปข้อมูลสมาชิกของ Smaregi
- การตั้งค่าเชื่อมต่อ POS ของ Smaregi
-
การแมปข้อมูลพนักงาน Smaregi กับข้อมูลพนักงานของ Receipt Rollerอธิบายทีละฟิลด์ว่าข้อมูลพนักงานหลักของ Smaregi ถูกแปลงเป็นข้อมูลพนักงานของ Receipt Roller (StaffDto) อย่างไร ครอบคลุมตรรกะการแยกชื่อ-นามสกุลจาก staffName, การแมป staffCode ไปยัง EmployeeNumber และการข้ามพนักงานที่ถูกซ่อนด้วย displayFlag
-
การแมปข้อมูลสมาชิก Smaregi กับข้อมูลลูกค้าของ Receipt Rollerอธิบายทีละฟิลด์ว่าข้อมูลหลักสมาชิกของ Smaregi ถูกแปลงเป็นข้อมูลลูกค้าของ Receipt Roller (CrmCustomerDto) อย่างไร ครอบคลุมความสัมพันธ์ของหมายเลขสมาชิก ชื่อ-นามสกุล ข้อมูลติดต่อ ลำดับความสำคัญของหมายเลขโทรศัพท์ และจังหวะเวลาการซิงค์ผ่าน Webhook
-
การแมปข้อมูลการขายของ Smaregi กับข้อมูลการขายของ Receipt Rollerคำอธิบายทางเทคนิคเกี่ยวกับกลไกการแมปข้อมูลการขายที่ดึงมาจาก Smaregi Platform API เข้าสู่โมเดลข้อมูลภายในของ Receipt Roller ครอบคลุมการเทียบโครงสร้างแบบลำดับชั้น ตารางเทียบฟิลด์ของส่วนหัวรายการขาย การแปลงรหัสสถานะ การปรับมาตรฐานวิธีการชำระเงิน การแมปข้อมูลรายละเอียด การจัดการโซนเวลา และความคงเส้นคงวา