32 lines
1.3 KiB
Python
32 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models, _
|
|
from odoo.exceptions import UserError, ValidationError
|
|
from datetime import datetime
|
|
import pytz
|
|
|
|
|
|
class CrmTeam(models.Model):
|
|
_inherit = 'crm.team'
|
|
|
|
pos_config_ids = fields.One2many('pos.config', 'crm_team_id', string="Point of Sales")
|
|
pos_sessions_open_count = fields.Integer(string='Open POS Sessions', compute='_compute_pos_sessions_open_count')
|
|
pos_order_amount_total = fields.Float(string="Session Sale Amount", compute='_compute_pos_order_amount_total')
|
|
|
|
def _compute_pos_sessions_open_count(self):
|
|
for team in self:
|
|
team.pos_sessions_open_count = self.env['pos.session'].search_count([('config_id.crm_team_id', '=', team.id), ('state', '=', 'opened')])
|
|
|
|
def _compute_pos_order_amount_total(self):
|
|
data = self.env['report.pos.order']._read_group([
|
|
('session_id.state', '=', 'opened'),
|
|
('config_id.crm_team_id', 'in', self.ids),
|
|
], ['config_id'], ['price_total:sum'])
|
|
rg_results = {config.id: price_total_sum for config, price_total_sum in data}
|
|
for team in self:
|
|
team.pos_order_amount_total = sum([
|
|
rg_results.get(config.id, 0.0)
|
|
for config in team.pos_config_ids
|
|
])
|