1. Trang chủ
  2. » Giáo án - Bài giảng

(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

Đ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

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 1,51 MB

Nội dung

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

Trang 1

LAB_1 GIỚI THIỆU & TẠO ĐỐI TƯỢNG TRONG

ODOO

MÃ NGUỒN MỞ

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH

KHOA CÔNG NGHỆ THÔNG TIN

Hướng dẫn: Nguyễn Yên Bảo

Trang 3

1 GIỚI THIỆU

1.1 Odoo là gì?

 Odoo (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épAGPL, 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 phát triển dựa trên framework OpenObject, một

framework hướng mô đun, có khả năng mở rộng

Được viết bằng ngôn ngữ Python

Trang 4

1 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ữ

 Toàn diện: Có đầy đủ các mô đun cần thiết của một

doanh nghiệp (hiện tại có hơn 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ế các báo cáo

 Linh hoạt

o Thay đổi mà không cần phải lập trình

Trang 5

Odoo sử dụng mô hình client-server

2 KIẾN TRÚC TỔNG QUÁT

Trang 6

Odoo sử dụng mô hình MVC(Model-View-Control)

 Model : database PostgreSQL để lưu trữ dữ liệu

 View : dùng XML để tạo ra giao diện

 Control : dùng ngôn ngữ Python để tạo các object, truyxuất cơ sở dữ liệu, chuyển cho view để đưa ra giao diện

2 KIẾN TRÚC TỔNG QUÁT

Trang 7

3.1 Module là gì?

Module là một thành phần giữ một nhiệm vụ cụ thể nào đó trong 1 phần mềm, một máy tính hay 1 hệ thống

VD: phần mềm quản lý nhân sự có các chức năng tính

lương, quản lý thông tin nhân viên…

Thì chúng ta có thể chia phần mềm đó ra thành các

module khác nhau Mỗi module đảm nhận 1 nhiệm vụ

Sau đó chúng ta kết hợp các module lại với nhau để trở thành 1 phần mềm hoàn chỉnh

3 XÂY DỰNG MODULE

Trang 8

3.1 Module là gì?

Giá trị của Odoo chính là từ hệ thống các module khác

nhau của nó Các module có thể thực hiện bất kỳ nhu cầu kinh doanh nào

Odoo Server chỉ là nền tảng cần thiết để chạy các module

Rất nhiều module đã được phát triển trong đó Odoo chính thức phát hành bao gồm khoảng hơn 200 module, và hàng trăm các module được phát triển bởi cộng đồng

3 XÂY DỰNG MODULE

Trang 9

Mỗi module cũng được xây dựng theo cấu trúc MVC

Một module có thể bao gồm

Business object (đối tượng): khai báo như class trong

Python

Data (dữ liệu): các tập tin XML/CSVsẽ chứa các khai

báo, định nghĩa cho các views, workflow…

 Wizards: những hộp thoại tương tác để hỗ trợ người

dùng thực hiện một tác vụ, hành động nào đó;

 Report (báo cáo): tạo báo cáo kinh doanh dạng HTML,

ODT, PDF

3 XÂY DỰNG MODULE

Trang 10

Các module được chứa tại thư mục server/bin/addons trong chỗ cài đặt Odoo server.

addons/

| - module_x/ # tên thư mục mô đun

| - demo/ # chứa các dữ liệu demo và test

| - i18n/ # chứa các file dịch thuật

| - report/ # các báo cáo

| - security/ # phân quyền truy cập cho các nhóm người dùng

| - view/ # khai báo các views để hiển thị thông tin

| - wizard/ # định nghĩa các hộp thoại wizard

| - workflow/ # định nghĩa workflow

| - init .py # 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ó)

3 XÂY DỰNG MODULE

Trang 11

3.1 Cấu trúc của file init

 Các tập tin init .py rất cần thiết để cho Python biết các thư mục

và các tập tin Python (*.py) trong module; việc này được đặt ra để tránh các thư mục với trùng tên với các thư mục chứa các thư viện

có sẳng của Python

 Trong trường hợp đơn giản nhất, init .py có thể chỉ là một tập tin rỗng

 Cấu trúc trong file init

import <tên thư mục/file py>

VD: nội dung file init ở module_x như sau:

import l18n

import report

import security

3 XÂY DỰNG MODULE

Trang 12

3.2 Cấu trúc của file openerp

Là file mô tả module Odoo và chứa một dictionary (một kiểu dữ liệu trong Python) với khai báo các thông tin của module như tên, các module phụ thuộc, mô tả, và thành phần khác của module (view, security…)

VD: nội dung file openerp như sau:

Trang 13

3.3 Tạo đối tượng

Là thành phần chính của OpenObject, Odoo sẽ ánh xạ

toàn bộ giữa đối tượng trong framework và bảng dữ liệu quan hệ dưới PostgreSQL**, giúp các nhà phát triển

không cần phải viết các câu lệnh SQL dài dòng

Các đối tượng được khai báo giống như các lớp trong

Python, được kế thừa từ lớp osv.osv

3 XÂY DỰNG MODULE

class name_of_the_object(osv.osv):

_name = 'name.of.the.object' _columns = { }

Kế thừa lớp osv.osv

Trang 14

3.3 Tạo đối tượng

VD chúng ta tạo ra 1 đối tượng giảng viên như sau:

Trang 15

3.3 Tạo đối tượng

Một số khai báo thường dùng của class

Trang 16

3.3 Tạo đối tượng

Một số khai báo thường dùng của class

_log_access

Nếu True (mặc định), 4 trường dữ liệu (create_uid, create_date, write_uid, write_date) sẽ được tạo ra để ghi log lại các thao tác trên các bản ghi của bảng dữ liệu, bạn có thể dùng hàm perm_read() của osv để truy xuất các trường này.

_order

Một list các tên trường; hệ thống sẽ sắp xếp thứ tự của các bản ghi theo thứ

tự của các tên trường này

Ví dụ: _order = 'default_code,name_template'; sẽ sắp xếp thứ tự các bản ghi theo default_code và name_template

_table

3 XÂY DỰNG MODULE

Trang 17

3.4 Các thuộc tính trong đối tượng

Đối tượng có thể chứa các trường dữ liệu thuộc 3 loại sau: đơn giản, quan hệ, và chức năng

 Kiểu dữ liệu đơn giản là các kiểu dữ liệu như: số

nguyên, chấm động, boolean, chuỗi

 Kiểu dữ liệu quan hệ biểu thị cho các mối quan hệ

giữa các đối tượng (one2many, many2one, many2many) T

 Theo mặc định, các trường có kiểu dữ liệu là chức

năng sẽ không được lưu trữ trong cơ sở dữ liệu mà

3 XÂY DỰNG MODULE

Trang 18

3.4 Các thuộc tính trong đối tượng

3.4.1 Loại đơn giản

Trang 19

3.4 Các thuộc tính trong đối tượng

3.4.1 Loại đơn giản

Trang 20

3.4 Các thuộc tính trong đối tượng

3.4.1 Loại đơn giản

Trang 21

3.4 Các thuộc tính trong đối tượng

3.4.2 Loại quan hệ

many2one:

fields.many2one( 'other.object.name', 'Field Name', optional parameters)

VD: trong đố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: trong đối tượng res.users

‘ds_sinhvien': fields.one2many( ‘x_sinhvien', ‘nganh', ‘Danh sách sinh viên'),

3 XÂY DỰNG MODULE

Trang 22

3.4 Các thuộc tính trong đố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: trong đối tượng x_lophoc

‘ds_sinhvien': fields.many2many( ‘x_sinhvien',

‘lophoc_sinhvien', ‘lophoc_id', ‘sinhvien_id', ‘Danh sách sinh viên'),

3 XÂY DỰNG MODULE

Trang 23

3.4 Các thuộc tính trong đối tượng

3.4.3 Loại chức năng

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),

3 XÂY DỰNG MODULE

Trang 24

3.4 Các thuộc tính trong đối tượng

3.4.4 Một số optional parameters thường dùng

required: nếu là True thì bắt buộc người dùng phải nhập dữ liệu vào

trường này

readonly: nếu là True thì người dùng không thể thay đổi dữ liệu trường này.

help: giải thích, hướng dẫn cho trường dữ liệu này

select: 1 để đưa trường này vào màn hình tìm kiếm và để giúp tối ưu cho việc lọc danh sách (được đánh dấu index trong csdl)

context: là một dictionaries chứa các tham số về ngữ cảnh như: ngôn ngữ sử dụng là gì, múi giờ là gì, model nào đang đang được sử dụng, id

là bao nhiêu…hoặc chúng ta có thể tự tạo ra các ngữ cảnh riêng

3 XÂY DỰNG MODULE

Trang 25

4 Q/A

Trang 26

1 Xây dựng module “quản lý sinh viên”:

2 Mô tả:

 Có bao nhiêu đối tượng (sinh viên, khoa, ngành…)

 Thuộc tính của từng đối tượng

5 BÀI TẬP

Trang 27

The End.

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

w