You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

58 lines
1.6 KiB

# 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)),
}