At the top of a company/individual there is a tab that shows "XX Sales". I'd like to use this field in reports but it doesn't seem to be an actual field on the object. Is there a way (perhaps with Python) to define a computed field which would be a count of all related sales orders for this company?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Kế toán
- Tồn kho
- PoS
- Project
- MRP
Câu hỏi này đã bị gắn cờ
1
Trả lời
3238
Lượt xem
Hi,
You can set store=True for compute functions then the value will be stored in the database.
Here you can redefine the sale order count field with store=True and also give sale_order_ids as depends on the compute function.
ie,
sale_order_count = fields.Integer(compute="_compute_sale_order_count",
string="Sale Order Count",
store=True)
@api.depends('sale_order_ids')
def _compute_sale_order_count(self):
# retrieve all children partners and prefetch 'parent_id' on them
all_partners = self.with_context(active_test=False).search(
[('id', 'child_of', self.ids)])
all_partners.read(['parent_id'])
sale_order_groups = self.env['sale.order'].read_group(
domain=[('partner_id', 'in', all_partners.ids)],
fields=['partner_id'], groupby=['partner_id']
)
partners = self.browse()
for group in sale_order_groups:
partner = self.browse(group['partner_id'][0])
while partner:
if partner in self:
partner.sale_order_count += group['partner_id_count']
partners |= partner
partner = partner.parent_id
(self - partners).sale_order_count = 0
Regards
Bạn có hứng thú với cuộc thảo luận không? Đừng chỉ đọc, hãy tham gia nhé!
Tạo tài khoản ngay hôm nay để tận hưởng các tính năng độc đáo và tham gia cộng đồng tuyệt vời của chúng tôi!
Đăng ký