diff --git a/partner_market/__init__.py b/partner_market/__init__.py new file mode 100644 index 0000000..61cf8b2 --- /dev/null +++ b/partner_market/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import partner diff --git a/partner_market/__manifest__.py b/partner_market/__manifest__.py new file mode 100644 index 0000000..05774c4 --- /dev/null +++ b/partner_market/__manifest__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +{ + 'name': 'Partner Market', + 'version': '0.1', + 'category': 'Partner', + 'license': 'AGPL-3', + 'summary': 'Adds market field on customers', + 'description': """ +Partner Market +============== + +This module adds a many2one field *Market* on customers, so be able to have sale/invoicing stats per markets. + +We cannot use *Tags* to categorize customers per market because this field is a many2many field, so we cannot make statistics on it. + +This module has been written by Alexis de Lattre from Akretion. + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': ['base'], + 'data': [ + 'partner_view.xml', + 'security/ir.model.access.csv', + ], + 'installable': True, +} diff --git a/partner_market/partner.py b/partner_market/partner.py new file mode 100644 index 0000000..a9bf20e --- /dev/null +++ b/partner_market/partner.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields, api + + +class ResPartnerMarket(models.Model): + _name = 'res.partner.market' + _description = 'Market' + + name = fields.Char(string='Name', required=True) + + _sql_constraints = [( + 'name_uniq', + 'unique(name)', + 'This market already exists!' + )] + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + market_id = fields.Many2one( + 'res.partner.market', string='Market', ondelete='restrict', copy=False) + # Field only displayed on customers with parent_id = False + + @api.model + def _commercial_fields(self): + res = super(ResPartner, self)._commercial_fields() + res.append('market_id') + return res diff --git a/partner_market/partner_view.xml b/partner_market/partner_view.xml new file mode 100644 index 0000000..7a14318 --- /dev/null +++ b/partner_market/partner_view.xml @@ -0,0 +1,56 @@ + + + + + + + partner_market.partner.form + res.partner + + + + + + + + + + partner_market.partner.form + res.partner + + + + + + + + + + res.partner.market.tree + res.partner.market + + + + + + + + + Market + res.partner.market + tree,form + + + + + + + diff --git a/partner_market/security/ir.model.access.csv b/partner_market/security/ir.model.access.csv new file mode 100644 index 0000000..f7a50fc --- /dev/null +++ b/partner_market/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_res_partner_access_read,Read access on res.partner.market,model_res_partner_market,base.group_user,1,0,0,0 +access_res_partner_access_full,Full access on res.partner.market,model_res_partner_market,base.group_partner_manager,1,1,1,1 +