(yenbao1340@gmail.com) Lập trình Odoo (OpenERP) Phần 1: Giới thiệu và xây dựng đối tượng (model) trong Odoo

27 8.5K 38
(yenbao1340@gmail.com) Lập trình Odoo (OpenERP) Phần 1: Giới thiệu và xây dựng đối tượng (model) trong Odoo

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lập trình Odoo (OpenERP) Phần 1: Giới thiệu và xây dựng đối tượng (model) trong OdooOdoo (tên gọi cũ là OpenERP) là một phần mềm quản lý doanh nghiệp hiện đại, phát hành theo giấy phép AGPL, và có đầy đủ các tính năng CRM, Nhân Sự, Bán Hàng, Kế Toán, Sản Xuất, Quản Lý Kho, Quản Lý Dự ÁnĐược viết bằng ngôn ngữ Python và XML

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH KHOA CÔNG NGHỆ THÔNG TIN MÃ NGUỒN MỞ LAB_1 GIỚI THIỆU & TẠO ĐỐI TƯỢNG TRONG ODOO Hướng dẫn: Nguyễn Yên Bảo Điện thoại: Email: nybao@ntt.edu.vn NỘI DUNG Giới thiệu Kiến trúc tổng quát Xây dựng module Q/A Bài tập 2 GIỚI THIỆU 1.1 Odoo gì?  Odoo (tên gọi cũ OpenERP) phần mềm quản lý doanh nghiệp đại, phát hành theo giấy phép AGPL, có đầy đủ tính CRM, Nhân Sự, Bán Hàng, Kế Toán, Sản Xuất, Quản Lý Kho, Quản Lý Dự Án…  Được phát triển dựa framework OpenObject, framework hướng mô đun, có khả mở rộng  Được viết ngơn ngữ Python 3 GIỚI THIỆU 1.2 Ưu điểm  Dễ cài đặt, sử dụng o Đầy đủ tài liệu hướng dẫn, hỗ trợ nhiều ngơn ngữ  Tồn diện: Có đầy đủ mơ đun cần thiết doanh nghiệp (hiện có 700 mơ đun)  Mạnh mẽ o Tự động thu thập thông tin doanh nghiệp o Có thể tự thiết kế báo cáo  Linh hoạt o Thay đổi mà không cần phải lập trình o Quản lý module cách linh hoạt o Dễ dàng nâng cấp di chuyển hệ thống 4 KIẾN TRÚC TỔNG QUÁT Odoo sử dụng mơ hình client-server 5 KIẾN TRÚC TỔNG QT Odoo sử dụng mơ hình MVC(Model-View-Control)  Model : database PostgreSQL để lưu trữ liệu  View : dùng XML để tạo giao diện  Control : dùng ngôn ngữ Python để tạo object, truy xuất sở liệu, chuyển cho view để đưa giao diện 6 XÂY DỰNG MODULE 3.1 Module gì? Module thành phần giữ nhiệm vụ cụ thể phần mềm, máy tính hay hệ thống VD: phần mềm quản lý nhân có chức tính lương, quản lý thơng tin nhân viên… Thì chia phần mềm thành module khác Mỗi module đảm nhận nhiệm vụ Sau kết hợp module lại với để trở thành phần mềm hoàn chỉnh 7 XÂY DỰNG MODULE 3.1 Module gì? Giá trị Odoo từ hệ thống module khác Các module thực nhu cầu kinh doanh Odoo Server tảng cần thiết để chạy module Rất nhiều module phát triển Odoo thức phát hành bao gồm khoảng 200 module, hàng trăm module phát triển cộng đồng 8 XÂY DỰNG MODULE Mỗi module xây dựng theo cấu trúc MVC Một module bao gồm  Business object (đối tượng): khai báo class Python  Data (dữ liệu): tập tin XML/CSVsẽ chứa khai báo, định nghĩa cho views, workflow…  Wizards: hộp thoại tương tác để hỗ trợ người dùng thực tác vụ, hành động đó;  Report (báo cáo): tạo báo cáo kinh doanh dạng HTML, ODT, PDF 9 XÂY DỰNG MODULE Các module chứa thư mục server/bin/addons chỗ cài đặt Odoo server addons/ | - module_x/ | - demo/ | - i18n/ | - report/ | - security/ | - view/ | - wizard/ | - workflow/ | - init .py | - openerp .py | - object.py # tên thư mục mô đun # chứa liệu demo test # chứa file dịch thuật # báo cáo # phân quyền truy cập cho nhóm người dùng # khai báo views để hiển thị thông tin # định nghĩa hộp thoại wizard # định nghĩa workflow # file khởi tạo package Python (bắt buộc phải có) # khai báo mơ đun (bắt buộc phải có) # lớp python, đối tượng mô đun 10 10 XÂY DỰNG MODULE 3.3 Tạo đối tượng Là thành phần OpenObject, Odoo ánh xạ toàn đối tượng framework bảng liệu quan hệ PostgreSQL**, giúp nhà phát triển không cần phải viết câu lệnh SQL dài dòng Các đối tượng khai báo giống lớp Python, kế thừa từ lớp osv.osv Kế thừa lớp osv.osv class name_of_the_object(osv.osv): _name = 'name.of.the.object' _columns = { } name_of_the_object() Khởi tạo class 13 13 XÂY DỰNG MODULE 3.3 Tạo đối tượng VD tạo đối tượng giảng viên sau: Tên đối tượng class x_giangvien(osv.osv): Mô tả obj _name = 'x_giangvien' _description = 'Giang vien' _columns = { 'name': fields.char('Tên giảng viên',size=64,required="True"), 'ma_giangvien': fields.char('Mã giảng viên', size=64, required="True"), 'phai': fields.selection([('nam','Nam'),('nu','Nữ')], 'Phái', required="True"), 'ngaysinh': fields.date('Ngày sinh',required="True"), Giá trị mặc 'hinh': fields.binary('Hình'), định } Distionary mơ tả thuộc tính _defaults = {} đối tượng _sql_constraints = [] _constraints = [] Ràng buộc liệu viết 14 SQL Python x_giangvien() 14 XÂY DỰNG MODULE 3.3 Tạo đối tượng Một số khai báo thường dùng class _inherit: Kế thừa đối tượng tồn VD: _inherit = 'sale.order' _inherits: Đa kế thừa,là dictionaries có khóa đối tượng cha muốn thừa kế, giá trị tên trường khóa ngoại tương ứng mà bạn muốn dùng VD: _inherits = {'product.template': 'product_tmpl_id'} _constraints: Là list tuple định nghĩa ràng buộc liệu viết Python VD: _constraints = [(_check_name,'Please avoid spam in ideas !', ['name'])] _sql_constraints: Là list tuple định nghĩa ràng buộc liệu viết SQL, VD: _sql_constraints = [('name_uniq','unique(name)', 'Idea must be 15 unique!')] 15 XÂY DỰNG MODULE 3.3 Tạo đối tượng Một số khai báo thường dùng class _log_access Nếu True (mặc định), trường liệu (create_uid, create_date, write_uid, write_date) tạo để ghi log lại thao tác ghi bảng liệu, bạn dùng hàm perm_read() osv để truy xuất trường _order Một list tên trường; hệ thống xếp thứ tự ghi theo thứ tự tên trường Ví dụ: _order = 'default_code,name_template'; xếp thứ tự ghi theo default_code name_template _table Tên bảng liệu (mặc định: từ _name phân cách dấu chấm '.' thay dấu gạch '_'); ví dụ: _name = 'idea.idea' hệ thống tự động tạo bảng liệu có tên 16 'idea_idea' 16 XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng Đối tượng chứa trường liệu thuộc loại sau: đơn giản, quan hệ, chức  Kiểu liệu đơn giản kiểu liệu như: số nguyên, chấm động, boolean, chuỗi  Kiểu liệu quan hệ biểu thị cho mối quan hệ đối tượng (one2many, many2one, many2many) T  Theo mặc định, trường có kiểu liệu chức không lưu trữ sở liệu mà tính tốn lại lần chạy 17 17 XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng 3.4.1 Loại đơn giản 18 boolean: fields.boolean('Field Name' [, Optional Parameters]), VD: ‘quantrong’:fields.boolean(‘Có quan trọng khơng’), integer: fields.integer('Field Name' [, Optional Parameters]), VD: ‘soluong’:fields.integer(‘Số lượng’) float: fields.float('Field Name' [, Optional Parameters]), 18 VD: ‘diem': fields.float( ‘Điểm') XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng 3.4.1 Loại đơn giản char: fields.char( 'Field Name', size=n [, Optional Parameters]), VD: ‘noisinh': fields.char(‘Nơi sinh', size=30, required=True), text: fields.text('Field Name' [, Optional Parameters]), date: fields.date('Field Name' [, Optional Parameters]), 19 19 XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng 3.4.1 Loại đơn giản datetime: fields.datetime('Field Name' [, Optional Parameters]), binary: VD:trong đối tượng x_giangvien ‘hinh’:fields.binary(‘Hinh’), selection: VD:trong đối tượng x_giangvien ‘gioitinh’:fields.selection([(‘na’,’Nam’), (‘nu’,’Nữ’)],’Giới tính’), 20 20 XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng 3.4.2 Loại quan hệ many2one: fields.many2one( 'other.object.name', 'Field Name', optional parameters) VD: đối tượng x_sinhvien ‘nganh': fields.many2one( ‘x_nganh', ‘Ngành học', ondelete='cascade'), one2many: fields.one2many( 'other.object.name', 'Field relation id', 'Fieldname', optional parameter) VD: đối tượng res.users ‘ds_sinhvien': fields.one2many( ‘x_sinhvien', ‘nganh', ‘Danh sách sinh viên'), 21 21 XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng 3.4.2 Loại quan hệ many2many: fields.many2many('other.object.name', 'relation object', 'actual.object.id', 'other.object.id', 'Field Name') VD: đối tượng x_lophoc ‘ds_sinhvien': fields.many2many( ‘x_sinhvien', ‘lophoc_sinhvien', ‘lophoc_id', ‘sinhvien_id', ‘Danh sách sinh viên'), 22 22 XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng 3.4.3 Loại chức def _get_diemtb_monhoc (self,cr,uid,ids,fields_name,arg,context): res={} kq=0.0 for obj in self.browse(cr, uid, ids, context=context): kq=(obj.KT15)+2*(obj.KT1tiet)+3*(obj.ThiHKI))/7 res[obj.id] = kq return res 'diemtb_monhoc':fields.function(_get_diemtb_monhoc,method=True ,string=u"Điểm TB môn học kỳ I",type='float',store=True), 23 23 XÂY DỰNG MODULE 3.4 Các thuộc tính đối tượng 3.4.4 Một số optional parameters thường dùng required: True bắt buộc người dùng phải nhập liệu vào trường readonly: True người dùng khơng thể thay đổi liệu trường help: giải thích, hướng dẫn cho trường liệu select: để đưa trường vào hình tìm kiếm để giúp tối ưu cho việc lọc danh sách (được đánh dấu index csdl) context: dictionaries chứa tham số ngữ cảnh như: ngơn ngữ sử dụng gì, múi gì, model đang sử dụng, id bao nhiêu…hoặc tự tạo ngữ cảnh riêng Ví dụ: {‘lang’: ‘en_us’, ‘tz’: ‘UTC’, …} ondelete: sử dụng trường kiểu quan hệ Khi dịng liệu bị xóa liệu liên quan xóa theo (khi ondelete='cascade’) 24 states: thay đổi thuộc tính trường dựa vào trường state 24 Q/A 25 25 BÀI TẬP Xây dựng module “quản lý sinh viên”: Mơ tả:  Có đối tượng (sinh viên, khoa, ngành…)  Thuộc tính đối tượng 26 26 The End 27 ... hoàn chỉnh 7 XÂY DỰNG MODULE 3.1 Module gì? Giá trị Odoo từ hệ thống module khác Các module thực nhu cầu kinh doanh Odoo Server tảng cần thiết để chạy module Rất nhiều module phát triển Odoo thức...NỘI DUNG Giới thiệu Kiến trúc tổng quát Xây dựng module Q/A Bài tập 2 GIỚI THIỆU 1.1 Odoo gì?  Odoo (tên gọi cũ OpenERP) phần mềm quản lý doanh nghiệp đại, phát hành... linh hoạt o Dễ dàng nâng cấp di chuyển hệ thống 4 KIẾN TRÚC TỔNG QUÁT Odoo sử dụng mơ hình client-server 5 KIẾN TRÚC TỔNG QT Odoo sử dụng mơ hình MVC(Model-View-Control)  Model : database PostgreSQL

Ngày đăng: 12/07/2015, 15:58

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan