[Python 3] Xây dựng Odoo Module kế thừa từ 1 Module có sẵn


Ở bài viết trước: Hướng dẫn tạo Odoo Addon Module, mình đã hướng dẫn các bạn tạo 1 module mới cho Odoo – Phần mềm thương mại ERP, CRM. Ở bài viết này, mình sẽ hướng dẫn các bạn tạo 1 Odoo Module kế thừa từ 1 Module có sẵn.

Xây dựng Odoo Module: My_Contacts

1. Cài đặt module Contacts mà ta sẽ kế thừa

Module mình sẽ kế thừa là module Contacts, để cài module này chúng ta vào phần cài đặt Apps của Odoo => Sau đó tìm kiếm và cài đặt Contacts Module

2. Tạo Module My_Contacts thừa kế Module Contacts

Tạo module MyContact, sử dụng command sau:

./odoo-bin scaffold my_contact ./myaddons/

Kết quả của câu lệnh trên, odoo sẽ generate ra 1 module có cấu trúc thư mục như sau:

Chỉnh sửa thông tin của của file __mainifest__.py như sau:

# -*- coding: utf-8 -*-
{
    'name': "My Contacts",

    'summary': """My Contacts Developer by Vinasupport.com""",

    'description': """My Contacts Developer by Vinasupport.com""",

    'author': "vinasupport.com",
    'website': "http://vinasupport.com",

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/12.0/odoo/addons/base/data/ir_module_category_data.xml
    # for the full list
    'category': 'Uncategorized',
    'version': '0.1',

    # any module necessary for this one to work correctly
    'depends': ['base', 'contacts'],

    # always loaded
    'data': [
        # 'security/ir.model.access.csv',
        'views/my_contact_views.xml',
    ],
    # only loaded in demonstration mode
    'demo': [
        'demo/demo.xml',
    ],
}

3. Lấy thông tin form cần extend thêm field

Kích hoạt debug của Odoo: [ Settings ] => Bấm vào “Activate the developer mode

Truy cập tới màn hình cần mà bạn muốn thêm 1 field:

VD: Mình muốn thêm 1 field là “Wage” (Tiền lương) vào dưới mục Tags

Ở icon debug góc phải màn hình: Chọn “Edit View: Form

Chúng ta cần quan tâm đến 1 số thông tin quan trọng sau:

  • Model cần kế thừa là: res.partner
  • View cần kế thừa là: base.view_partner_form

4. Tạo model MyContact

Tạo 1 file có tên là my_contact.py chứa model MyContact ở thư mục models/ của module:

File: models/my_contact.py có nội dung như sau:

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class MyContact(models.Model):
    # Ingerit from Res Partner
    _inherit = 'res.partner'

    # Add wage field
    wage = fields.Integer(string='Wage')

Để load model này vào chúng ta sửa file: models/__init__.py

# -*- coding: utf-8 -*-

from . import models
from . import my_contact

5. Tạo view để thêm thông tin field

Tạo file: views/my_contact_views.xml có nội dung như sau:

<odoo>
  <data>
    <!-- explicit list view definition -->
    <record model="ir.ui.view" id="my_contacts.form_view">
      <field name="name">my_contacts Form View</field>
      <field name="model">res.partner</field>
      <field name="inherit_id" ref="base.view_partner_form"></field>
      <field name="arch" type="xml">
        <field name="category_id" position="after">
            <field name="wage"></field>
        </field>
      </field>
    </record>
  </data>
</odoo>

6. Cài đặt Module My_Contacts

Vui lòng tham khảo bài viết: https://vinasupport.com/python-3-huong-dan-tao-odoo-addon-module/

Kết quả:

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web