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
- Účetnictví
- Sklad
- PoS
- Project
- MRP
This question has been flagged
1
Odpovědět
3178
Zobrazení
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
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Přihlásit se