# Copyright 2019 Tecnativa - David Vidal # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models from odoo.addons import decimal_precision as dp class GlobalDiscount(models.Model): _name = 'global.discount' _description = 'Global Discount' _order = "sequence, id desc" sequence = fields.Integer( help='Gives the order to apply discounts', ) name = fields.Char( string='Discount Name', required=True, ) discount = fields.Float( digits=dp.get_precision('Discount'), required=True, default=0.0, ) discount_scope = fields.Selection( selection=[ ('sale', 'Sales'), ('purchase', 'Purchases'), ], default='sale', required='True', string='Discount Scope', ) company_id = fields.Many2one( comodel_name='res.company', string='Company', default=lambda self: self.env.user.company_id, ) def name_get(self): result = [] for one in self: result.append( (one.id, '{} ({:.2f}%)'.format(one.name, one.discount))) return result def _get_global_discount_vals(self, base, **kwargs): """ Prepare the dict of values to create to obtain the discounted amount :param float base: the amount to discount :return: dict with the discounted amount """ self.ensure_one() return { 'global_discount': self, 'base': base, 'base_discounted': base * (1 - (self.discount / 100)), }