mirror of
https://github.com/OCA/server-backend.git
synced 2025-02-18 09:52:42 +02:00
[IMP] base_global_discount: black, isort, prettier
This commit is contained in:
committed by
Omar (Comunitea)
parent
5326fd2a29
commit
bfda1e6a6a
@@ -2,22 +2,19 @@
|
|||||||
# Copyright 2020 Xtendoo - Manuel Calero
|
# Copyright 2020 Xtendoo - Manuel Calero
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
{
|
{
|
||||||
'name': 'Base Global Discount',
|
"name": "Base Global Discount",
|
||||||
'version': '12.0.1.0.0',
|
"version": "12.0.1.0.0",
|
||||||
'category': 'Base',
|
"category": "Base",
|
||||||
'author': 'Tecnativa,'
|
"author": "Tecnativa," "Odoo Community Association (OCA)",
|
||||||
'Odoo Community Association (OCA)',
|
"website": "https://github.com/OCA/server-backend",
|
||||||
'website': 'https://github.com/OCA/server-backend',
|
"license": "AGPL-3",
|
||||||
'license': 'AGPL-3',
|
"depends": ["product",],
|
||||||
'depends': [
|
"data": [
|
||||||
'product',
|
"security/ir.model.access.csv",
|
||||||
|
"security/security.xml",
|
||||||
|
"views/global_discount_views.xml",
|
||||||
|
"views/res_partner_views.xml",
|
||||||
],
|
],
|
||||||
'data': [
|
"application": False,
|
||||||
'security/ir.model.access.csv',
|
"installable": True,
|
||||||
'security/security.xml',
|
|
||||||
'views/global_discount_views.xml',
|
|
||||||
'views/res_partner_views.xml',
|
|
||||||
],
|
|
||||||
'application': False,
|
|
||||||
'installable': True,
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,46 +1,36 @@
|
|||||||
# Copyright 2019 Tecnativa - David Vidal
|
# Copyright 2019 Tecnativa - David Vidal
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||||
from odoo import fields, models
|
from odoo import fields, models
|
||||||
|
|
||||||
from odoo.addons import decimal_precision as dp
|
from odoo.addons import decimal_precision as dp
|
||||||
|
|
||||||
|
|
||||||
class GlobalDiscount(models.Model):
|
class GlobalDiscount(models.Model):
|
||||||
_name = 'global.discount'
|
_name = "global.discount"
|
||||||
_description = 'Global Discount'
|
_description = "Global Discount"
|
||||||
_order = "sequence, id desc"
|
_order = "sequence, id desc"
|
||||||
|
|
||||||
sequence = fields.Integer(
|
sequence = fields.Integer(help="Gives the order to apply discounts",)
|
||||||
help='Gives the order to apply discounts',
|
name = fields.Char(string="Discount Name", required=True,)
|
||||||
)
|
|
||||||
name = fields.Char(
|
|
||||||
string='Discount Name',
|
|
||||||
required=True,
|
|
||||||
)
|
|
||||||
discount = fields.Float(
|
discount = fields.Float(
|
||||||
digits=dp.get_precision('Discount'),
|
digits=dp.get_precision("Discount"), required=True, default=0.0,
|
||||||
required=True,
|
|
||||||
default=0.0,
|
|
||||||
)
|
)
|
||||||
discount_scope = fields.Selection(
|
discount_scope = fields.Selection(
|
||||||
selection=[
|
selection=[("sale", "Sales"), ("purchase", "Purchases"),],
|
||||||
('sale', 'Sales'),
|
default="sale",
|
||||||
('purchase', 'Purchases'),
|
required="True",
|
||||||
],
|
string="Discount Scope",
|
||||||
default='sale',
|
|
||||||
required='True',
|
|
||||||
string='Discount Scope',
|
|
||||||
)
|
)
|
||||||
company_id = fields.Many2one(
|
company_id = fields.Many2one(
|
||||||
comodel_name='res.company',
|
comodel_name="res.company",
|
||||||
string='Company',
|
string="Company",
|
||||||
default=lambda self: self.env.user.company_id,
|
default=lambda self: self.env.user.company_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
def name_get(self):
|
def name_get(self):
|
||||||
result = []
|
result = []
|
||||||
for one in self:
|
for one in self:
|
||||||
result.append(
|
result.append((one.id, "{} ({:.2f}%)".format(one.name, one.discount)))
|
||||||
(one.id, '{} ({:.2f}%)'.format(one.name, one.discount)))
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def _get_global_discount_vals(self, base, **kwargs):
|
def _get_global_discount_vals(self, base, **kwargs):
|
||||||
@@ -52,7 +42,7 @@ class GlobalDiscount(models.Model):
|
|||||||
"""
|
"""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
return {
|
return {
|
||||||
'global_discount': self,
|
"global_discount": self,
|
||||||
'base': base,
|
"base": base,
|
||||||
'base_discounted': base * (1 - (self.discount / 100)),
|
"base_discounted": base * (1 - (self.discount / 100)),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,19 +4,19 @@ from odoo import fields, models
|
|||||||
|
|
||||||
|
|
||||||
class ResPartner(models.Model):
|
class ResPartner(models.Model):
|
||||||
_inherit = 'res.partner'
|
_inherit = "res.partner"
|
||||||
|
|
||||||
customer_global_discount_ids = fields.Many2many(
|
customer_global_discount_ids = fields.Many2many(
|
||||||
comodel_name='global.discount',
|
comodel_name="global.discount",
|
||||||
column1='partner_id',
|
column1="partner_id",
|
||||||
column2='global_discount_id',
|
column2="global_discount_id",
|
||||||
string='Sale Global Discounts',
|
string="Sale Global Discounts",
|
||||||
domain=[('discount_scope', '=', 'sale')],
|
domain=[("discount_scope", "=", "sale")],
|
||||||
)
|
)
|
||||||
supplier_global_discount_ids = fields.Many2many(
|
supplier_global_discount_ids = fields.Many2many(
|
||||||
comodel_name='global.discount',
|
comodel_name="global.discount",
|
||||||
column1='partner_id',
|
column1="partner_id",
|
||||||
column2='global_discount_id',
|
column2="global_discount_id",
|
||||||
string='Purchase Global Discounts',
|
string="Purchase Global Discounts",
|
||||||
domain=[('discount_scope', '=', 'purchase')],
|
domain=[("discount_scope", "=", "purchase")],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0" ?>
|
||||||
<!-- Copyright 2019 Tecnativa - David Vidal
|
<!-- Copyright 2019 Tecnativa - David Vidal
|
||||||
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
|
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record model="ir.rule" id="global_discount_comp_rule">
|
<record model="ir.rule" id="global_discount_comp_rule">
|
||||||
<field name="name">Global Discount multi-company</field>
|
<field name="name">Global Discount multi-company</field>
|
||||||
<field name="model_id" ref="base_global_discount.model_global_discount"/>
|
<field name="model_id" ref="base_global_discount.model_global_discount" />
|
||||||
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
|
<field
|
||||||
<field name="perm_read" eval="1"/>
|
name="domain_force"
|
||||||
<field name="perm_create" eval="1"/>
|
>['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
|
||||||
<field name="perm_write" eval="1"/>
|
<field name="perm_read" eval="1" />
|
||||||
<field name="perm_unlink" eval="1"/>
|
<field name="perm_create" eval="1" />
|
||||||
|
<field name="perm_write" eval="1" />
|
||||||
|
<field name="perm_unlink" eval="1" />
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
@@ -4,30 +4,26 @@ from odoo.tests import common
|
|||||||
|
|
||||||
|
|
||||||
class TestGlobalDiscount(common.SavepointCase):
|
class TestGlobalDiscount(common.SavepointCase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
super().setUpClass()
|
super().setUpClass()
|
||||||
cls.global_discount_obj = cls.env['global.discount']
|
cls.global_discount_obj = cls.env["global.discount"]
|
||||||
cls.global_discount_1 = cls.global_discount_obj.create({
|
cls.global_discount_1 = cls.global_discount_obj.create(
|
||||||
'name': 'Test Discount 1',
|
{"name": "Test Discount 1", "discount_scope": "sale", "discount": 20,}
|
||||||
'discount_scope': 'sale',
|
)
|
||||||
'discount': 20,
|
cls.global_discount_2 = cls.global_discount_obj.create(
|
||||||
})
|
{"name": "Test Discount 2", "discount_scope": "sale", "discount": 30,}
|
||||||
cls.global_discount_2 = cls.global_discount_obj.create({
|
)
|
||||||
'name': 'Test Discount 2',
|
|
||||||
'discount_scope': 'sale',
|
|
||||||
'discount': 30,
|
|
||||||
})
|
|
||||||
|
|
||||||
def test_01_global_discounts(self):
|
def test_01_global_discounts(self):
|
||||||
"""Chain two discounts of different types"""
|
"""Chain two discounts of different types"""
|
||||||
discount_vals = self.global_discount_1._get_global_discount_vals(100.0)
|
discount_vals = self.global_discount_1._get_global_discount_vals(100.0)
|
||||||
self.assertAlmostEqual(discount_vals['base_discounted'], 80.0)
|
self.assertAlmostEqual(discount_vals["base_discounted"], 80.0)
|
||||||
discount_vals = self.global_discount_2._get_global_discount_vals(
|
discount_vals = self.global_discount_2._get_global_discount_vals(
|
||||||
discount_vals['base_discounted'])
|
discount_vals["base_discounted"]
|
||||||
self.assertAlmostEqual(discount_vals['base_discounted'], 56.0)
|
)
|
||||||
|
self.assertAlmostEqual(discount_vals["base_discounted"], 56.0)
|
||||||
|
|
||||||
def test_02_display_name(self):
|
def test_02_display_name(self):
|
||||||
"""Test that the name is computed fine"""
|
"""Test that the name is computed fine"""
|
||||||
self.assertTrue('%)' in self.global_discount_1.display_name)
|
self.assertTrue("%)" in self.global_discount_1.display_name)
|
||||||
|
|||||||
@@ -1,38 +1,35 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<!-- Copyright 2019 Tecnativa - David Vidal
|
<!-- Copyright 2019 Tecnativa - David Vidal
|
||||||
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
|
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record id="global_discount_view_tree" model="ir.ui.view">
|
<record id="global_discount_view_tree" model="ir.ui.view">
|
||||||
<field name="model">global.discount</field>
|
<field name="model">global.discount</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="Global Discounts" editable="bottom">
|
<tree string="Global Discounts" editable="bottom">
|
||||||
<field name="sequence" widget="handle"/>
|
<field name="sequence" widget="handle" />
|
||||||
<field name="name"/>
|
<field name="name" />
|
||||||
<field name="discount"/>
|
<field name="discount" />
|
||||||
<field name="discount_scope"/>
|
<field name="discount_scope" />
|
||||||
<field name="company_id"/>
|
<field name="company_id" />
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="global_discount_view_form" model="ir.ui.view">
|
<record id="global_discount_view_form" model="ir.ui.view">
|
||||||
<field name="model">global.discount</field>
|
<field name="model">global.discount</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Global Discounts">
|
<form string="Global Discounts">
|
||||||
<sheet>
|
<sheet>
|
||||||
<group col="4">
|
<group col="4">
|
||||||
<field name="name"/>
|
<field name="name" />
|
||||||
<field name="sequence"/>
|
<field name="sequence" />
|
||||||
<field name="discount"/>
|
<field name="discount" />
|
||||||
<field name="discount_scope"/>
|
<field name="discount_scope" />
|
||||||
<field name="company_id"/>
|
<field name="company_id" />
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="action_global_discount_tree" model="ir.actions.act_window">
|
<record id="action_global_discount_tree" model="ir.actions.act_window">
|
||||||
<field name="name">Global Discounts</field>
|
<field name="name">Global Discounts</field>
|
||||||
<field name="type">ir.actions.act_window</field>
|
<field name="type">ir.actions.act_window</field>
|
||||||
@@ -40,10 +37,11 @@
|
|||||||
<field name="view_type">form</field>
|
<field name="view_type">form</field>
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree,form</field>
|
||||||
</record>
|
</record>
|
||||||
|
<menuitem
|
||||||
<menuitem id="menu_global_discount"
|
id="menu_global_discount"
|
||||||
action="action_global_discount_tree"
|
action="action_global_discount_tree"
|
||||||
name="Global Discounts"
|
name="Global Discounts"
|
||||||
sequence="1" parent="base.menu_ir_property"/>
|
sequence="1"
|
||||||
|
parent="base.menu_ir_property"
|
||||||
|
/>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
@@ -1,21 +1,25 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<!-- Copyright 2019 Tecnativa - David Vidal
|
<!-- Copyright 2019 Tecnativa - David Vidal
|
||||||
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
|
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record model="ir.ui.view" id="res_partner_form_view">
|
<record model="ir.ui.view" id="res_partner_form_view">
|
||||||
<field name="model">res.partner</field>
|
<field name="model">res.partner</field>
|
||||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
<field name="inherit_id" ref="base.view_partner_form" />
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<group name="sale" position="inside">
|
<group name="sale" position="inside">
|
||||||
<field name="customer_global_discount_ids" widget="many2many_tags"
|
<field
|
||||||
attrs="{'invisible': [('customer', '=', False), ('is_company', '=', False), ('parent_id', '!=', False)]}"/>
|
name="customer_global_discount_ids"
|
||||||
|
widget="many2many_tags"
|
||||||
|
attrs="{'invisible': [('customer', '=', False), ('is_company', '=', False), ('parent_id', '!=', False)]}"
|
||||||
|
/>
|
||||||
</group>
|
</group>
|
||||||
<group name="purchase" position="inside">
|
<group name="purchase" position="inside">
|
||||||
<field name="supplier_global_discount_ids" widget="many2many_tags"
|
<field
|
||||||
attrs="{'invisible': [('supplier', '=', False), ('is_company', '=', False), ('parent_id', '!=', False)]}"/>
|
name="supplier_global_discount_ids"
|
||||||
|
widget="many2many_tags"
|
||||||
|
attrs="{'invisible': [('supplier', '=', False), ('is_company', '=', False), ('parent_id', '!=', False)]}"
|
||||||
|
/>
|
||||||
</group>
|
</group>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
Reference in New Issue
Block a user