Ở bài trước, vinasupport đã hướng dẫn các bạn cài đặt Odoo – Phần mềm thương mại ERP, CRM, … Mặc định Odoo đã hỗ trợ rất nhiều Addon Modules như: Blog, Website Builder (Tạo Website), Quản lý Timesheet (Thời gian làm việc), Quản lý Payroll (Tiền lương)… Nhưng nếu bạn muốn làm 1 Addon Module riêng cho mình thì hãy tham khảo hướng dẫn dưới đây nhé! Show Các thành phần của Odoo Addon Module
Tạo Odoo Addon ModuleOdoo cho phép ta tạo 1 module cơ bản sử dụng subcommad là scaffold, cú pháp tạo module như bên dưới: odoo-bin scaffold <module_name> <duong_dan_module> VD: Tạo module books ở trong thư mục myaddons của project ./odoo-bin scaffold books ./myaddons/ Sau khi chạy command trên, nó sẽ tạo ra 1 module mới với cấu trúc thư mục như sau: Để chính sửa thông tin của addon module, sửa file __mainifest__.py # -*- coding: utf-8 -*- { 'name': "books", 'summary': """ Short (1 phrase/line) summary of the module's purpose, used as subtitle on modules listing or apps.openerp.com""", 'description': """ Long description of module's purpose """, 'author': "My Company", 'website': "http://www.yourcompany.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'], # always loaded 'data': [ # 'security/ir.model.access.csv', 'views/views.xml', 'views/templates.xml', ], # only loaded in demonstration mode 'demo': [ 'demo/demo.xml', ], } Vì thư mục myaddons là thư mục mình tạo ra, nên chúng tao cần cấu hình để odoo nhận thư mục này. Các bạn sửa file odoo.conf và thêm thư mục này vào. Sau đó khởi động lại odoo-bin Cài đặt Odoo Addon ModuleSau khi đã tạo ra Odoo Addon Module và đưa nó vào odoo, chúng ta tiến hành cài đặt module trên Odoo như sau: Đầu tiên cần bật chế độ Developer Mode, các bạn truy cập tới mục [ Settings ] -> Chọn “Activate the developer mode” Sau đó truy cập tới mục [ Apps ] -> Bấm vào “Update App List” Giờ tìm kiếm xem module books chúng ta vừa tạo -> Chọn “Install” Vậy là chúng ta đã cài đặt thành công 1 addon module mới cho odoo. Nguồn: vinasupport.com Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng Ố đù tự mô tả về mình trên GitHub:
Nó là một bộ các web app phục vụ các công việc trong kinh doanh như quản lý quan hệ khách hàng, quản lý dự án, tính tiền/kế toán, tuyển dụng… đầy đủ đến mức nó là một giải pháp “ERP” cho doanh nghiệp. Odoo là tên mới từ bản 8.0 (giờ đang là 10.0) của phần mềm OpenERP. Đó là nhìn từ phía người dùng. Còn về phía lập trình viên, Odoo là gì?
Kiến trúcOdoo sử dụng kiến trúc server – client.
Mỗi chương trình (webapp), được đóng thành
1 python module (thư mục với file Vài phút làm lập trình viên OdooLấy code về $ git clone https://github.com/odoo/odoo.git Cloning into 'odoo'... remote: Counting objects: 1999445, done. remote: Compressing objects: 100% (546/546), done. Receiving objects: 84% (1679534/1999445), 1.47 GiB | 1.33 MiB/s Receiving objects: 84% (1691261/1999445), 1.47 GiB | 1.27 MiB/s remote: Total 1999445 (delta 208), reused 258 (delta 105), pack-reused 1998777 Receiving objects: 100% (1999445/1999445), 1.67 GiB | 2.29 MiB/s, done. Resolving deltas: 100% (1660073/1660073), done. Checking connectivity... done. Checking out files: 100% (21097/21097), done. Yeah, 1.67 GB Nếu tải sourcecode bằng file zip (không có git) $ du -h 10.0.zip 121M 10.0.zip Giải nén file zip rồi cài. Code Odoo không tuân theo chuẩn PEP8 nhưng khá sạch sẽ và dễ đọc. Tài liệu cho developer đầy đủ, dễ xem. http://www.odoo.com/documentation/10.0/index.html Đứng ở góc độ của lập trình viên, việc phát triển một “module/addon” cho Odoo không có gì quá khác biệt hay cao siêu so với viết một web app bằng bất cứ framework nào (Django, Flask…), ngoài chuyện clone 1.6GB git repo. Cài đặt và chạy thửCode Python cài từ source có một số thư viện yêu cầu lập trình viên phải cài thêm các thư viện C (bằng apt trên Ubuntu):
Phải cài Tạo virtualenv Python2 (Odoo hỗ trợ Python 2.7+, ko hỗ trợ 3), cài các requirements: $ pip install -r requirements.txt ... Successfully installed Babel-2.3.4 Jinja2-2.8 Mako-1.0.4 MarkupSafe-0.23 Pillow-3.4.1 PyYAML-3.12 Python-Chart-1.39 Werkzeug-0.11.11 XlsxWriter-0.9.3 beautifulsoup4-4.6.0 decorator-4.0.10 docutils-0.12 ebaysdk-2.1.4 feedparser-5.2.1 funcsigs-1.0.2 gevent-1.1.2 greenlet-0.4.10 jcconv-0.2.3 lxml-3.5.0 mock-2.0.0 ofxparse-0.16 passlib-1.6.5 pbr-3.1.1 psutil-4.3.1 psycogreen-1.0 psycopg2-2.7.1 pyPdf-1.13 pydot-1.2.3 pyparsing-2.1.10 pyserial-3.1.1 python-dateutil-2.5.3 python-ldap-2.4.27 python-openid-2.2.5 python-stdnum-1.6 pytz-2016.7 pyusb-1.0.0 qrcode-5.3 reportlab-3.3.0 requests-2.11.1 six-1.10.0 suds-jurko-0.6 vatnumber-1.2 vobject-0.9.3 xlrd-1.0.0 xlwt-1.1.2 Mặc dù dùng qweb template engine, Odoo vẫn có vài chỗ dùng jinja2 hay Mako template engine:
Sau khi cài Giao diện quản lý dự án Cảm nhận chung là Odoo vẫn chậm như thời OpenERP, khá ngốn RAM, 180MB cho process Python chạy Odoo, chưa làm gì cả + một đống process chạy postgres. # ps xau | grep odo[o] root 26287 0.0 0.0 54104 3640 pts/1 S 11:27 0:00 su odoo odoo 26288 0.0 0.0 24468 5524 pts/1 S 11:27 0:00 bash odoo 26766 2.3 2.2 2387728 180068 pts/1 Sl+ 11:32 2:16 python ./odoo-bin postgres 26779 0.0 0.1 303684 12532 ? Ss 11:33 0:00 postgres: odoo postgres [local] idle postgres 26796 0.2 0.6 316460 56828 ? Ss 11:33 0:15 postgres: odoo db1 [local] idle postgres 26813 0.0 0.5 306484 41576 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26823 0.0 0.5 307428 45272 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26836 0.6 0.9 323972 73628 ? Ss 11:34 0:37 postgres: odoo db1 [local] idle postgres 26841 0.0 0.5 306992 42800 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26847 0.0 0.5 307052 41240 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26848 0.0 0.5 306232 41784 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26849 0.0 0.5 306536 41104 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26850 0.0 0.5 306976 43236 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26851 0.0 0.5 306528 44344 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26852 0.0 0.5 306272 41192 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle postgres 26853 0.0 0.4 306608 39024 ? Ss 11:34 0:00 postgres: odoo db1 [local] idle Làm lập trình viên OdooKhi vận hành trang tổng hợp việc Python của PyMi, những tin tuyển lập trình viên Odoo hiện lên hàng ngày, lặp đi lặp lại, với mức lương phổ biến trong khoảng 6-10 triệu. Các nhà tuyển dụng thì lại bắt buộc lập trình viên phải có sẵn kinh nghiệm với Odoo… NOOOOOO! Chẳng có lập trình viên web Python nào đầu tư vào 1 framework không dùng ở đâu ngoài để phát triển chính Odoo module/addon, họ học Django, Flask. Một lập trình viên Django hay Flask có thể viết Odoo webapp chỉ sau vài tiếng chuyển đổi những kiến thức tương tự sang những thư viện của Odoo framework. Tại sao anh đòi hỏi thứ không ai có, mà lại trả lương thấp? Bài viết gốc được đăng tải tại pymi.vn Có thể bạn quan tâm:
Xem thêm Việc làm Developer hấp dẫn trên TopDev |