วิธีสร้าง Module ของ Odoo เพื่อแก้ไข View Form

การแก้ไข Form ของ Odoo นั้น จริงๆแล้วสามารถแก้ไขผ่านหน้าเว็บได้เลยโดยไม่ต้องเขียนโด้ดแม้แต่บรรทัดเดียว แต่ในกรณีที่เราไม่อยากให้ไปกระทบกับโครงสร้างเดิม(กลัวแก้แล้วเจ๊ง พัง เอากลับคืนไม่ได้ ฯลฯ) เราควรสร้าง Module ขึ้นมาใหม่แล้ว Extend ของเดิมเพื่อแก้ไขเฉพาะจุดที่เราต้องการจะดีกว่า

 

ถ้าต้องการเพิ่ม Field ที่หน้า Form ต้องทำยังไง?

เรากำลังจะเพิ่ม Field ที่หน้า Sales > Orders > Customer > Create ชื่อว่า “Short Name” เป็นตัวแปรประเภท “ข้อความ” จากแบบนี้

เพิ่มขึ้นมาแบบนี้

 

ขั้นตอนที่ 1 : สร้าง Module ชื่อ custom_sales

สร้าง custom_sales โดยใช้คำสั่งนี้
python odoo-bin scaffold custom_sales addons

จะเห็นว่า custom_sales ถูกสร้างขึ้นมาในโฟลเดอร์ addons ดังรูป

 

ขั้นตอนที่ 2 : หาแหล่งข้อมูลของ Form ที่ต้องการแก้ไข

– ก่อนอื่นเลย ต้องเปิด Developer mode ก่อน โดยไปที่หน้า Settings คลิก “Activate the developer mode”

 
– ไปยังหน้าที่เราจะแก้ Sales > Orders > Customer > Create
– คลิกที่ไอคอน Debug(รูปแมลง) > Edit View: Form

 
– จะเห็นข้อมูลของ Form ดังนี้ ซึ่งหน้าจอนี้ล่ะจะเป็นตัวชี้เป้าให้เราใช้ในการแก้ไข

 

ขั้นตอนที่ 3 : Extend Model

– เปิดไปที่ไฟล์ custom_sales > models > models.py
– เพิ่มคำสั่ง _inherit = 'res.partner' โดย res.partner คือ Model ที่เราต้องการ extend อ้างอิงจากขั้นตอนที่ 2
– สร้าง field ชื่อ Short Name ที่เราต้องการเพิ่ม ดังนี้
x_short_name = fields.Char(string="Short Name");

 
จะได้หน้าตาของ models.py แบบนี้

 

ขั้นตอนที่ 4 : เอา Field ไปแสดงที่หน้า Form

– สร้างไฟล์ custom_sales/views/custom_sales.xml (เขียนโค้ดเองนะ ลงเป็นรูปให้ ก๊อบไปเดี๋ยวไม่จำ 55+)

 

คำอธิบาย

1. Model ที่ต้องการแก้ไข
2. Form ที่ต้องการแก้ไข
3. Field ที่ต้องการแก้ไข

 

ขั้นตอนที่ 5 : Install Module

– Start server ด้วยคำสั่งนี้ (ใส่ database ของตัวเองนะ)
python odoo-bin -r <user> -w <password> --db-filter=<dbname>$ --addons-path addons

– เปิด Developter Mode แล้วไปที่หน้า App
– ที่ช่อง Search (เคาะ backspace ลบ app ออกก่อน) ให้พิมพ์ชื่อ Module ที่เราสร้าง ตามตัวอย่างก็คือ “custom_sales” จะเห็น Module ที่เราสร้าง กด Install

 

เสร็จแล้ว!

หลังจาก Install Module ของเรียบร้อยแล้ว กดไปที่หน้า Sales > Orders > Customer > Create ก็จะเห็น Short Name ของเราเพิ่มขึ้นมาแล้ว!

   

Leave a Reply

Your email address will not be published. Required fields are marked *

Advertisment ad adsense adlogger