mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-22 21:32:05 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -1,44 +1,54 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.addons.base.models.res_partner import WARNING_MESSAGE, WARNING_HELP
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class res_partner(models.Model):
|
||||
_name = 'res.partner'
|
||||
class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
def _compute_purchase_order_count(self):
|
||||
# retrieve all children partners
|
||||
all_partners = self.with_context(active_test=False).search([('id', 'child_of', self.ids)])
|
||||
self.purchase_order_count = 0
|
||||
if not self.env.user._has_group('purchase.group_purchase_user'):
|
||||
return
|
||||
|
||||
# retrieve all children partners and prefetch 'parent_id' on them
|
||||
all_partners = self.with_context(active_test=False).search_fetch(
|
||||
[('id', 'child_of', self.ids)],
|
||||
['parent_id'],
|
||||
)
|
||||
purchase_order_groups = self.env['purchase.order']._read_group(
|
||||
domain=[('partner_id', 'in', all_partners.ids)],
|
||||
fields=['partner_id'], groupby=['partner_id']
|
||||
groupby=['partner_id'], aggregates=['__count'],
|
||||
)
|
||||
partners = self.browse()
|
||||
for group in purchase_order_groups:
|
||||
partner = self.browse(group['partner_id'][0])
|
||||
while partner:
|
||||
if partner in self:
|
||||
partner.purchase_order_count += group['partner_id_count']
|
||||
partners |= partner
|
||||
partner = partner.parent_id
|
||||
(self - partners).purchase_order_count = 0
|
||||
self_ids = set(self._ids)
|
||||
|
||||
@api.model
|
||||
def _commercial_fields(self):
|
||||
return super(res_partner, self)._commercial_fields()
|
||||
for partner, count in purchase_order_groups:
|
||||
while partner:
|
||||
if partner.id in self_ids:
|
||||
partner.purchase_order_count += count
|
||||
partner = partner.parent_id
|
||||
|
||||
property_purchase_currency_id = fields.Many2one(
|
||||
'res.currency', string="Supplier Currency", company_dependent=True,
|
||||
help="This currency will be used, instead of the default one, for purchases from the current partner")
|
||||
purchase_order_count = fields.Integer(compute='_compute_purchase_order_count', string='Purchase Order Count')
|
||||
purchase_warn = fields.Selection(WARNING_MESSAGE, 'Purchase Order Warning', help=WARNING_HELP, default="no-message")
|
||||
help="This currency will be used for purchases from the current partner")
|
||||
purchase_order_count = fields.Integer(
|
||||
string="Purchase Order Count",
|
||||
groups='purchase.group_purchase_user',
|
||||
compute='_compute_purchase_order_count',
|
||||
)
|
||||
purchase_warn_msg = fields.Text('Message for Purchase Order')
|
||||
|
||||
receipt_reminder_email = fields.Boolean('Receipt Reminder', default=False, company_dependent=True,
|
||||
receipt_reminder_email = fields.Boolean('Receipt Reminder', company_dependent=True,
|
||||
help="Automatically send a confirmation email to the vendor X days before the expected receipt date, asking him to confirm the exact date.")
|
||||
reminder_date_before_receipt = fields.Integer('Days Before Receipt', default=1, company_dependent=True,
|
||||
reminder_date_before_receipt = fields.Integer('Days Before Receipt', company_dependent=True,
|
||||
help="Number of days to send reminder email before the promised receipt date")
|
||||
buyer_id = fields.Many2one('res.users', string='Buyer')
|
||||
|
||||
def _compute_application_statistics_hook(self):
|
||||
data_list = super()._compute_application_statistics_hook()
|
||||
if not self.env.user.has_group('purchase.group_purchase_user'):
|
||||
return data_list
|
||||
for partner in self.filtered(lambda partner: partner.purchase_order_count):
|
||||
stat_info = {'iconClass': 'fa-credit-card', 'value': partner.purchase_order_count, 'label': _('Purchases'), 'tagClass': 'o_tag_color_5'}
|
||||
data_list[partner.id].append(stat_info)
|
||||
return data_list
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue