Tổng hợp những thay đổi trên Odoo 13 (Kỳ 1)

Một số thay đổi ở góc độ kĩ thuật trên Odoo 13

Anh Vu

Odoo đã ra mắt phiên bản mới nhất - phiên bản 13.0, vì số lượng các tính năng thay đổi ở phiên bản này rất nhiều nên mình không thể tổng hợp tất cả và post bài cùng một lúc được, nên bài viết này sẽ được chia ra thành nhiều kỳ khác nhau các bạn nhé.

Dưới đây là chi tiết những tính năng mới đã được cập nhật(Kỳ 1):

Vấn đề import

Hiện tại Odoo đã hỗ trợ tính năng Import/Export từ các version trước, các bạn có thể tìm thấy cấu hình tại đường dẫn Setting > General Setting Label User > tickbox Import/Export


Tuy nhiên tính năng này có một số hạn chế, đó là việc bạn có thể sử dụng nó ở bất kì tree view nào của tất cả model nếu như được phân quyền. Sau khi triển khai cho một số khách hàng ở Việt Nam cũng như ở nước ngoài, đã có một số yêu cầu từ người dùng rằng họ chỉ muốn tính năng Import/Export ở một số tree view nhất định. Các bạn Developers bên mình cũng đã cố gắng để đáp ứng được nhu cầu của khách hàng.

May mắn thay ở phiên bản 13.0 này Odoo cũng tận tình giúp đỡ cho anh em dev chúng ta xử lý tình huống này một cách rất nhanh (chỉ import thôi nhé, còn export vẫn còn phải đợi - hoặc liên hệ Trobz để có tính năng này), chỉ cần thêm thuộc tính import="0" ở trên phần khai báo tree view là đủ ví dụ:


So sánh kết quả


- Thông tin chi tiết về tính năng này có thể tham khảo tại đây.

Function onchange khuyến cáo không nên sử dụng

Function onchange khuyến cáo không nên sử dụng, thay vào đó sẽ sử dụng function compute với giá trị store=True readonly=False (hiện tại phiên bản 13.0 vẫn giữ tuy nhiên sẽ bị loại bỏ trong tương lai)

- Thông tin chi tiết về thay đổi này có thể tham khảo tại đây.

- Chi tiết về onchangecompute thay đổi thế nào có thể tham khảo tại đây.

Vô hiệu hóa hàm onchange ở một số view

Hiện tại hàm onchange ở phiên bản 8.0 đến phiên bản 12.0 nói chung cũng như các phiên bản < 7.0 nói riêng đều có các cách sử dụng khác nhau.

  • Ở phiên bản < 7.0: cần khai báo onchange ở file python và xml.

  • Ở phiên bản 8.0 - 12.0: chúng ta cần khai báo ở file python.

Ở các cách khai báo trên sẽ có một số hạn chế đó là nếu trường hợp một model có nhiều form view và người dùng chỉ muốn thao tác onchange ở một số form view nhất định thì Developer cần phải có một số thủ thuật mới có thể giải quyết được trường hợp này (ví dụ truyền context từ trên xml để xuống python xử lý, ...).

Có lẽ nắm bắt được nhược điểm này mà ở phiên bản mới, các bạn Dev không cần phải tốn thời gian xử lý, chỉ cân thêm thuộc tính on_change=”false” lúc khai báo field trong file xml mà thôi.

    Ví dụ:

...
<field name="partner_id" on_change="false"/>
...

- Thông tin chi tiết về tính năng này có thể tham khảo tại đây.

Hỗ trợ "Expand" tất cả các records ở trên list view nếu sử dụng Group By

Để sử dụng tính năng này, bạn cần phải thêm thuộc tính expand="1" ở bước khai báo tree view, ví dụ:


Kết quả hiển thị :


Hỗ trợ thêm một số thuộc tính trên list view

Hỗ trơ thêm một số thuộc tính trên list view như avg,sum,min,max

Ở các phiên bản cũ, Odoo có hỗ trợ sum trên phần list view. Trong lần cập nhật mới này, các thuộc tính avg,min,max cũng được bổ sung nhằm giúp người dùng giải quyết một số bài toán trong thực tế. Cách sử dụng các thuộc tính này như sau:

  • Khai báo thuộc tính của field trên tree view

  • Kết quả


Hỗ trợ cho việc debug những lỗi liên quan đến phân quyền/securiy

Hỗ trợ cho việc debug những lỗi liên quan đến phân quyền/securiy được nhanh chóng và tiện lợi hơn

Ở các phiên bản cũ, khi gặp các lỗi liên quan đến việc phân quyền/security, Developer thường sẽ mất rất nhiều thời gian cho việc debug. Giờ đây, mọi việc sẽ đơn giản hơn rất nhiều bởi vì Odoo sẽ trả về những lỗi trong đó có những "key word" rất "nhạy cảm" nhằm giúp đỡ anh em giải quyết công việc nhanh chóng hơn

- Thông tin chi tiết về tính năng này có thể tham khảo tại đây.

Chỉ hỗ trợ dữ liệu dạng chuỗi (string) khi khai báo cho field Selection

Hiện tại đối với các phiên bản cũ, lúc khai báo field Selection hệ thống vẫn hỗ trợ cho các giá trị với loại là integer. Tuy nhiên ở một số trường hợp lúc đọc giá trị của field Selection này, bạn phải ép kiểu (parse) giá trị của key sang dạng chuỗi (string) thì mới có thể thực hiện một số hàm khác, điều này dẫn đến khá nhiều phiền phức.

Với phiên bản mới lúc khai báo cho field Selection bắt buộc các bạn phải khai báo dạng chuỗi (string) hết nhé, dưới đây là cách khai báo cũ và mới:

- Thông tin chi tiết về thay đổi này có thể tham khảo tại đây.

Action mở rộng trên Listview

Tính năng này nhằm mục đích hiển thị dưới dạng action button các function cần thực thi có liên quan tới field many2one

Ví dụ gọi tính năng Reset Password cho User khi đứng từ list view của SO

Khai báo dưới code


Kết quả hiển thị:


api.one hoàn toàn không còn được hỗ trợ

api.one hoàn toàn không còn được hỗ trợ

- Thông tin chi tiết về thay đổi này có thể tham khảo tại đây.

api.multi

api.multi sẽ là mặc định, không cần khai báo @api.multi

- Thông tin chi tiết về thay đổi này có thể tham khảo tại đây.


Trên đây mình đã trình bày với các bạn một số thay đổi về technical mà mình có thể tìm hiểu được, để có thêm cái nhìn sâu sắc và toàn diện hơn về những vấn đề mởi ở phiên bản Odoo 13 này mời các bạn đón đọc bài viết của mình ở kỳ 2 nhé.

Nếu có thắc mắc hay yêu cầu gì, các bạn cứ thoải mái để lại comment ở bên dưới nha.