Odoo cung cấp cho chúng ta phương thức tạo và quản lý dữ liệu master và demo data thông qua file xml và csv trong 1 odoo module. Trong đó:
- Dữ liệu master là loại dữ liệu quan trọng, ít thay đổi và cần load ngay từ đầu.
- Dữ liệu demo là loại dữ liệu được sử dụng để demo hiển thị hay hoạt động của chức năng.
Trong bài viết này, mình sẽ hướng dẫn dữ liệu tạo dữ liệu master trong và cách để odoo module load dữ liệu master đó vào database.
Tiền đề bài viết
- Odoo version 12
- Odoo module: MyContacts
- Model: hr.department
Hướng dẫn tạo và quản lý dữ liệu master
Giả sử chức năng quản lý department (quản lý phòng/ban) của Odoo không có dữ liệu như bên dưới.
Chúng ta sẽ tạo dữ liệu master cho quản lý department như sau:
– – | Văn phòng
– – – – | Phòng giám đốc
– – – – | Phòng Sale & Marketing
– – – – | Phòng kỹ thật
– – | Xưởng sản xuất
– – – – | Xưởng in
– – – – | Xưởng cơ khí
– – – – | Xưởng may
Trong model hr.department để hiển thị ta quan tâm đến 2 trường là:
- name: Tên của department, ví dụ: Phòng giám đốc
- parent_id: department có cha là ai? ví dụ: Xưởng may có cha là Xưởng sản xuất
Tạo 1 file xml trong thư mục có đường dẫn như sau: data/department_data.xml trong odoo module
Với nội dung như sau:
<odoo> <data> <record id="department_office" model="hr.department"> <field name="name">Văn phòng</field> </record> <record id="department_office_manager" model="hr.department"> <field name="name">Phòng giám đốc</field> <field name="parent_id" ref="department_office" /> </record> <record id="department_office_sale_marketing" model="hr.department"> <field name="name">Phòng Sale và Marketing</field> <field name="parent_id" ref="department_office" /> </record> <record id="department_office_sale_tech" model="hr.department"> <field name="name">Phòng kỹ thuật</field> <field name="parent_id" ref="department_office" /> </record> <record id="department_factory" model="hr.department"> <field name="name">Xưởng sản xuất</field> </record> <record id="department_factory_print" model="hr.department"> <field name="name">Xưởng in</field> <field name="parent_id" ref="department_factory" /> </record> <record id="department_factory_mechanic" model="hr.department"> <field name="name">Xưởng cơ khí</field> <field name="parent_id" ref="department_factory" /> </record> <record id="department_factory_garment" model="hr.department"> <field name="name">Xưởng may</field> <field name="parent_id" ref="department_factory" /> </record> </data> </odoo>
Sau đó đặt đường dẫn file data/department_data.xml và file __manifest__.py
# -*- 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', 'views/tree_view_asset.xml', 'data/department_data.xml', ], 'qweb': ['static/src/xml/*.xml'], # only loaded in demonstration mode 'demo': [ 'demo/demo.xml', ], }
Và reload lại module MyContacts để odoo import dữ liệu master vào.
Kết quả: Dữ liệu master đã được import vào CSDL và chức năng quản lý Department đã hiển thị dữ liệu master.
Với dữ liệu demo làm tương tự, chỉ khác là để trong thư mục demo để phần biệt với dữ liệu master
Nguồn: vinasupport.com