เชื่อม ERPNext กับ Odoo ด้วย Webhooks
ถ้าเลือกได้เราคงอยากให้ ERP เป็นระบบที่ครบจบในตัวเองและไม่ต้องมีระบบอื่นใดอีก แต่ความจริงเป็นสิ่งที่เป็นได้ยากมาก ใน ERPNext จึงมีฟังก์ชั่น Webhooks ช่วยจัดการเรื่องการเชื่อมต่อให้ง่ายและเป็นระเบียบ
สมมุติว่าเรามีระบบอยู่สองระบบ คือ Odoo และ ERPNext โดยระบบ Odoo ระบบดั้งเดิม และ ERPNext เป็นระบบที่ขึ้นใหม่ และเรามีโจทย์ว่าเมื่อมีการสร้าง Employee ใหม่ใน ERPNext เราต้องการส่งข้อมูลนี้ให้กับ Odoo ด้วย
ERPNext มีหน้าต่างหนึ่งคือ Webhooks ทำหน้าที่เรียก API End Point เมื่อมี action ใดๆเกิดขึ้นที่เอกสารของ ERPNext ในตัวอย่างนี้ เมื่อมีการสร้าง Employee ที่ ERPNext เราต้องการให้ trigger API End Point ที่ Odoo เพื่อสร้าง Employee ด้วย
1) สร้าง Webhooks สำหรับ Employee ที่ ERPNext
ในที่นี้เมื่อ Employee ถูกสร้าง (Doc Event = after_insert), ระบบจะเรียก REST API End Point http://<server>/api/create_update_data กรณีนี้เลือกในแบบ JSON
การส่งข้อมูลผ่าน API ขึ้นอยู่กับออกแบบ API End Point ปลายทาง ว่าต้องการรับข้อมูลโดยฝากข้อมูลไปได้สองส่วนคือส่วน Header กับส่วน Data ในกรณีนี้สมมุติว่าเราฝากข้อมูลการ login (2) ไว้ที่ Header และข้อมูล Employee ไว้ที่ Data (3) สังเกตุว่าเราสามารถใช้ variable {{ doc.name }} ในการสร้าง payload ได้ด้วย
2) สร้าง API End Point ที่ Odoo
ในที่นี้เราได้สร้างฟังก์ชั่น Create/Update Data ไว้แบบกลางๆที่โมดูล erpnext_webhook จะไม่ขอลงรายละเอียดแต่ไปดูโค้ดได้ที่ https://github.com/kittiu/ecosoft/tree/master/erpnext_webhooks
เราสามารถทดสอบเฉพาะ API ได้ด้วย tools อย่าง Postman โดยจะมีการใส่ข้อมูล Header กับ raw JSON Data เช่นเดียวกัน
Note:
- ให้แน่ใจว่า API End Point ทำงานได้ก่อนที่จะเริ่มทดสอบ
- URL ของ Odoo ที่ ปลายาทางต้องชี้ไปที่ database เดียว มิฉะนั้นจะขึ้น Error, URL Not Found ได้
หลังจากนี้จึงลองสร้าง Employee ที่ ERPNext ซึ่งจะเรียก Webhooks เพื่อไปสร้าง Employee ที่ Odoo หากระบบทำงานถูกต้องจะต้องมี Webhook Request Log เกิดขึ้นที่ ERPNext และ Employee ถูกสร้างที่ Odoo
End.
No comments yet. Login to start a new discussion Start a new discussion