Anh viết bài hướng dẫn cách thêm một module cụ thể được không anh. Hiện tại em đang mù tịt về vấn đề này, Em mới làm quen OpenERP nên còn mù mờ lắm ạ.
13 Trả lời
Cách của anh Leo Tran hay nè, giờ em mới biết. Anh cho em hỏi, sau khi tìm ra file xml lỗi rồi, anh có thủ thuật nào tìm ra đoạn code xml lỗi nhanh nhất không anh?
Thực ra cách làm cũng tuơng tự:
1.Chia code xml ra thành các cum code, cụ thể ở đây là từ thẻ mở view đến thẻ đóng view. Sau đó comment hết các cụm này lại, để lại cụm đầu tiên.
2. Vào OpenERP install module, nếu lỗi => cụm đó bị lỗi. Cứ như trên mà làm :p
Vâng. Thế còn sửa các file xml thì sao ạ? Mình phải sửa hết tất cả các file .xml có rong module ạ? Để sửa được thì mình phải so sánh giữa các file .xml của module sale_commission với module Sale của bản 7.0 ạ?Về mặt lý thuyết thì file nào lỗi sửa file đấy, cách tìm ra file xml lỗi rất đơn giản.
1. Em vào file __openerp__.py, comment (dùng dấu #) hết file xml trong đoạn code update{…}. Để lại 1 file xml đầu tiên.
2. Vào OpenERP install module đó, nếu lỗi thì chứng tổ file xml đó bị lỗi. Nếu không lỗi, em lại vào bỏ comment file xml tiếp theo. Sau đó vào OpenERP, kích vào module đó rồi Upgrade. Nếu không lỗi thì chứng tỏ file xml thứ 2 không vấn đề gì. Em cứ thế làm sẽ phát hiện ra file xml nào bị lỗi.
Lưu ý, mỗi lần thay đổi code python, cụ thể ở đây là file __openerp__.py, em cần restart lại service, hoặc vào IDE chạy lại.
Liệu anh có thể hướng dẫn em cách viết một module như anh David Tran bảo không ạ? Và anh có thể nói trước về thời gian để có thể hoàn thành được module này không ạ? Em cảm ơn.Anh chỉ có thể hướng dẫn em upgrade module commission lên bản 7.0. Đó là cách duy nhất anh có thể giúp em vào lúc này.
Còn hướng dẫn viết mới một module thì anh sẽ cần phải thu xếp thời gian đã.
@nhatlinh,
Việc can thiệp vào module Sale là tối kỵ, Vì nghiệp vụ Sale là vô cùng quan trọng đối với bất kỳ một doanh nghiệp nào, đặc biệt là doanh nghiệp sử dụng ERP. Trừ khi em là chuyên gia.
P/S: Để biết được độ phức tạp của nó, em có thể vào menu Setting/Technical/Workflow/Workflows và xem workflow có tên sale.order.basic dưới dạng diagram view
Cách làm như ở TERP cũng được và theo mình thì đơn giản hơn là viết một module mới vì nó giải quyết ngay vấn đề trước mắt. Tuy nhiên, mình khuyên bạn không nên làm như vậy vì các lý do dưới đây:
- Quá trình test sẽ kéo dài hơn: vì không có gì đảm bảo việc chỉnh sửa một module sẵn có sẽ không làm ảnh hưởng đến các tính năng sẵn có. Và do đó, sau khi chỉnh sửa xong, ngoài việc test tính năng mới bổ sung thì vẫn phải test lại các tính năng cũ.
- Ảnh hưởng đến việc nâng cấp sau này: Nếu mỗi lần có nhu cầu về tính năng mới, bạn lại tìm cách sửa đổi thì cuối cùng cái module tiêu chuẩn sẽ tan nát và đường nhiên bạn sẽ phải là người chịu trách nhiệm bảo trì cho cái module ấy. Giả sử sau này OpenERP lên bản 8 với nhiều tính năng hấp dẫn, lúc này bạn muốn nâng cấp thì sẽ phải viết lại toàn bộ module sales và module payroll. Mà chưa chắc bác đã làm được và cũng không có gì đảm bảo nó không lỗi nếu như bạn làm được.
- Cách làm đó đi ngược lại với triết lý "chia nhỏ để trị": Đối với các phần mềm kiến trúc dạng module như OpenERP, Joomla, Drupal, v.v. thì ưu điểm lớn của chúng chính là cái kiến trúc chia nhỏ để trị. Bạn tìm cách gộp thì bạn đã phá hỏng cái ưu điểm của nó rồi.
- Hạn chế khả năng mở rộng sau này: Giả sử sau khi bạn chỉnh sửa xong như hướng dẫn bên ERP, lúc đó bạn/sếp bạn phát sinh thêm nhu cầu trả thưởng cho nhân viên kinh doanh tăng dần theo doanh số, ví dụ: doanh số/tháng từ 0~100tr thì được thưởng 2%, doanh số từ 100tr đến 500% thì được 5%, v.v. thì bạn sẽ giải quyết thế nào? Bạn lại tiếp tục "đè" cái sales và payroll ra để "xử" à?
- Customize lai module sale = cách tình % hoa hồng theo Sales OrderNếu em đã đủ kinh nghiệm để customize được như vậy thì việc em upgrade module commission lên thì qua đơn giản. Chưa kể module đó còn cho phép em cấu hình quy tắc tính hoa hồng, cái này anh David chuyên về Sale giải thích sẽ rõ hơn.
- Customize lai module hr payroll để khi Compute Salary thì load thông số các Sales Order liên quan đến tháng đó và add vô Allowance trong bảng lương (Do đó phải tạo trước 1 Salary Category là dạng Allowance )
Nói như vậy có nghĩa, đối với người mới tiếp cận với OpenERP thì rõ ràng việc customize như trên sẽ khó hơn việc sửa xml, lý do: xml là ngôn ngữ phổ biến, em chỉ cần xem qua 1 file xml mẫu là biết cách dùng các thẻ của nó. Trong khi đó để customize một module với yêu cầu như của em, em sẽ phải tìm hiểu rất nhiều: cách tổ chức module, workflow, model, function trong OpenERP. Tùy em chọn thôi,
Cho em hỏi, cách này có phải là cách giải quyết duy nhất cho cách tính % lương theo sản phẩm của nhân viên không ạ? Ở diễn đàn terp.vn thì có một cách như sau dành cho bản 7.0. Các anh xem và cho nhận xét xem thế nào ạ.
- Customize lai module sale = cách tình % hoa hồng theo Sales Order
- Customize lai module hr payroll để khi Compute Salary thì load thông số các Sales Order liên quan đến tháng đó và add vô Allowance trong bảng lương (Do đó phải tạo trước 1 Salary Category là dạng Allowance )
Ps/ Em cũng chưa hiểu và thử cách này, nhưng nghe có vẻ đơn giản hơn việc update lên ạ.
Cách của Leo Trần là để giúp anh em tiếp cận theo hướng tự mò thôi, không phải cách làm chính tắc. Tuy nhiên, nó cũng hữu ích trong một số trường hợp.Nhất trí thôi anh.
Hôm nào Leo làm một bài help cụ thể chi tiết hướng dẫn anh em viết module cho OpenERP đi. Như thế mới chính tắc, chứ chơi cái bài dò lỗi này có vẻ hơi nông dân :p
Cách của Leo Trần là để giúp anh em tiếp cận theo hướng tự mò thôi, không phải cách làm chính tắc. Tuy nhiên, nó cũng hữu ích trong một số trường hợp.
Hôm nào Leo làm một bài help cụ thể chi tiết hướng dẫn anh em viết module cho OpenERP đi. Như thế mới chính tắc, chứ chơi cái bài dò lỗi này có vẻ hơi nông dân :p
@nhatlinh,
Trước tiên, anh rẽ nhanh phản hồi của em thành một topic mới cho tiện trao đổi. Để thêm một module mới vào trong danh sách module của OpenERP em làm như sau:
1. Download module cần cài đặt.
2. Giải nén và copy vào thư mục addons
3. Truy cập vào hệ thống OpenERP, vào menu Thiết lập (setting)/Cập nhật danh sách module (Update module list), kích vào nút Cập nhật (Update). Lúc này hệ thống đã update module mới mà em vừa copy vào thư mục addons
4. Search tên module đó.
5. Install.
Chúc em thành công!