Hỏi Đáp

Welcome!

This community is for professionals and enthusiasts of our products and services.
Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

0

Tạo nhãn thông báo ở menu

Ảnh đại diện
Huy

Mình để ý thấy khi có module mới (menu Updates) sẽ hiện thông báo như ở hình đình kèm

Không rõ Odoo có sẵn hàm này không hay phải tự viết?

Mình có thể dùng tài khoản addmin để vào setting set cái tương tự cho menu mình mong muốn không hay buộc phải custom code?

xin được các bác chỉ giáo xin cảm ơn!

Tạo nhãn thông báo ở menu

Ảnh đại diện
Huỷ
2 Trả lời
1
Best Answer

Cái này gọi là Menu Badge. Nó cho phép lập trình viên Odoo hiển thị một cái nhãn ở menu item trong Odoo.
Để sử dụng tính năng này, bạn cần phải lập trình cho menu của mình bằng cách viết model của bạn kế thừa model ir.needaction_mixin sẵn có trong Odoo

_inherit = ['ir.needaction_mixin']

Sau đó, bạn cần định nghĩa một phương thức có tên _needaction_domain_get để hiển thị các record mới với tiêu chí được định nghĩa trong _needaction_domain_get, ví dụ như sau:
@api.model
def _needaction_domain_get(self):
    return [('state', '=', 'new')]

Hoặc, thay vì định nghĩa phương thức trên, bạn có thể định nghĩa phương thức _needaction_count để hiển thị số lượng, đại loại như sau:
@api.model
def _needaction_count(self, domain=None):
    """
    Đếm các records của object theo domain truyền vào
    hoặc đếm toàn bộ nếu không truyền domain vào
    """
    return self.search_count(domain or [])


Một ví dụ cụ thể cho một class mới:
class HocSinh(models.Model):
    _name = 'hocsinh'
    _inherit = ['ir.needaction_mixin']

    # viết riêng thằng state này ra để tiện cho thằng khác kế thừa
    # mà không cần override lại trường kiểu Selection dưới đây
    STATES = [
        ('khoe', "Sức khoẻ tốt"),
        ('yeu', "Sức khoẻ yếu"),
    ]

    name = fields.Char(required=True)
    state = fields.Selection(STATES, default='khoe')

    @api.model
    def _needaction_domain_get(self):
        """
        Hiển thị số lượng học sinh bị yếu ở menu badge
        """
        return [('state', '=', 'yeu')]


Hy vọng giờ bạn biết cách làm!
Ảnh đại diện
Huỷ
0
Ảnh đại diện
Huy
Best Answer

rất cám ơn bạn hướng dẫn thật cụ thể và tuyệt vời ;)

Ảnh đại diện
Huỷ

Trả lời của bạn

Vui lòng đảm bảo câu trả lời của bạn có liên quan và giải đáp đúng nội dung câu hỏi. Nếu muốn bình luận về câu hỏi hoặc câu trả lời, hãy sử dụng công cụ Bình luận. Lưu ý, bạn có thể thay đổi nội dung trả lời thay vì trả lời lại 02 lần cho cùng một câu hỏi. Đồng thời bạn có thể nhấn nút để bầu chọn câu hỏi / câu trả lời tốt nhất.