Add module partner_market
This commit is contained in:
3
partner_market/__init__.py
Normal file
3
partner_market/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import partner
|
||||
31
partner_market/__manifest__.py
Normal file
31
partner_market/__manifest__.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# © 2016 Akretion (http://www.akretion.com)
|
||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# 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 <alexis.delattre@akretion.com> from Akretion.
|
||||
""",
|
||||
'author': 'Akretion',
|
||||
'website': 'http://www.akretion.com',
|
||||
'depends': ['base'],
|
||||
'data': [
|
||||
'partner_view.xml',
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'installable': True,
|
||||
}
|
||||
33
partner_market/partner.py
Normal file
33
partner_market/partner.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# © 2016 Akretion (http://www.akretion.com)
|
||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# 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
|
||||
56
partner_market/partner_view.xml
Normal file
56
partner_market/partner_view.xml
Normal file
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
© 2016 Akretion (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
|
||||
<record id="view_partner_form" model="ir.ui.view">
|
||||
<field name="name">partner_market.partner.form</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="lang" position="after">
|
||||
<field name="market_id" widget="selection"
|
||||
attrs="{'invisible': ['|', ('customer', '=', False), ('parent_id', '!=', False)]}"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_res_partner_filter" model="ir.ui.view">
|
||||
<field name="name">partner_market.partner.form</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_res_partner_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<group name="group_by" position="inside">
|
||||
<filter string="Market" name="market_groupby"
|
||||
context="{'group_by': 'market_id'}"/>
|
||||
</group>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_market_tree" model="ir.ui.view">
|
||||
<field name="name">res.partner.market.tree</field>
|
||||
<field name="model">res.partner.market</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_market_action" model="ir.actions.act_window">
|
||||
<field name="name">Market</field>
|
||||
<field name="res_model">res.partner.market</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="res_partner_market_root" name="Market"
|
||||
parent="base.menu_custom" sequence="100"/>
|
||||
|
||||
<menuitem id="res_partner_market_menu" action="res_partner_market_action"
|
||||
parent="res_partner_market_root"/>
|
||||
|
||||
</odoo>
|
||||
4
partner_market/security/ir.model.access.csv
Normal file
4
partner_market/security/ir.model.access.csv
Normal file
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user