Skip to content

Commit

Permalink
Merge 4caa1d8 into 7565e89
Browse files Browse the repository at this point in the history
  • Loading branch information
gborelli committed Nov 13, 2014
2 parents 7565e89 + 4caa1d8 commit f2d5257
Show file tree
Hide file tree
Showing 7 changed files with 231 additions and 29 deletions.
5 changes: 5 additions & 0 deletions l10n_it_ateco/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ This module registers a model in order to manage Ateco categories.
Each partner can be referenced by one or many Ateco codes
that specify the activities of a partner.

Each partner must have at least one and only one Ateco category set as 'Main category'.

The main Ateco category can be retrieved
by the field _main_ateco_category_id_ on res.partner model.


TODO
----
Expand Down
51 changes: 42 additions & 9 deletions l10n_it_ateco/i18n/it.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-10-20 15:45+0000\n"
"PO-Revision-Date: 2014-10-20 15:45+0000\n"
"POT-Creation-Date: 2014-11-13 15:13+0000\n"
"PO-Revision-Date: 2014-11-13 15:13+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
Expand Down Expand Up @@ -40,20 +40,27 @@ msgstr "Categoria Ateco"
msgid "Ateco categories"
msgstr "Categorie Ateco"

#. module: l10n_it_ateco
#: field:res.partner.ateco,ateco_category_id:0
msgid "Ateco category"
msgstr "Categoria Ateco"

#. module: l10n_it_ateco
#: field:ateco.category,child_ids:0
msgid "Child Categories"
msgstr "Categorie figlie"

#. module: l10n_it_ateco
#: field:ateco.category,create_uid:0
#: field:res.partner.ateco,create_uid:0
msgid "Created by"
msgstr ""
msgstr "Creato da"

#. module: l10n_it_ateco
#: field:ateco.category,create_date:0
#: field:res.partner.ateco,create_date:0
msgid "Created on"
msgstr ""
msgstr "Creato il"

#. module: l10n_it_ateco
#: field:ateco.category,description:0
Expand All @@ -62,18 +69,26 @@ msgstr "Descrizione"

#. module: l10n_it_ateco
#: field:ateco.category,id:0
#: field:res.partner.ateco,id:0
msgid "ID"
msgstr ""
msgstr "ID"

#. module: l10n_it_ateco
#: field:ateco.category,write_uid:0
#: field:res.partner.ateco,write_uid:0
msgid "Last Updated by"
msgstr ""
msgstr "Ultima modifica di"

#. module: l10n_it_ateco
#: field:ateco.category,write_date:0
#: field:res.partner.ateco,write_date:0
msgid "Last Updated on"
msgstr ""
msgstr "Ultima modifica il"

#. module: l10n_it_ateco
#: field:res.partner.ateco,main_category:0
msgid "Main category"
msgstr "Categoria principale"

#. module: l10n_it_ateco
#: field:ateco.category,name:0
Expand All @@ -88,15 +103,33 @@ msgstr "Categoria genitore"
#. module: l10n_it_ateco
#: view:ateco.category:l10n_it_ateco.view_ateco_category_form
#: model:ir.model,name:l10n_it_ateco.model_res_partner
#: field:res.partner.ateco,partner_id:0
msgid "Partner"
msgstr ""
msgstr "Partner"

#. module: l10n_it_ateco
#: view:res.partner.ateco:l10n_it_ateco.view_partner_ateco_form
msgid "Partner Ateco Category"
msgstr "Categoria ateco del partner"

#. module: l10n_it_ateco
#: field:ateco.category,partner_ids:0
msgid "Partners"
msgstr ""
msgstr "Partner"

#. module: l10n_it_ateco
#: view:ateco.category:l10n_it_ateco.ateco_category_search
msgid "Search Ateco categories"
msgstr "Ricerca categorie Ateco"

#. module: l10n_it_ateco
#: code:addons/l10n_it_ateco/model/partner.py:95
#, python-format
msgid "You can define only one main ateco category for a partner"
msgstr "Puoi impostare solamente una categoria Ateco come principale."

#. module: l10n_it_ateco
#: code:addons/l10n_it_ateco/model/partner.py:100
#, python-format
msgid "You should define at least one main ateco category"
msgstr "Devi definire almeno una categoria Ateco principale"
40 changes: 37 additions & 3 deletions l10n_it_ateco/i18n/l10n_it_ateco.pot
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_it_ateco
# * l10n_it_ateco
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-10-20 15:45+0000\n"
"PO-Revision-Date: 2014-10-20 15:45+0000\n"
"POT-Creation-Date: 2014-11-13 15:12+0000\n"
"PO-Revision-Date: 2014-11-13 15:12+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
Expand Down Expand Up @@ -40,18 +40,25 @@ msgstr ""
msgid "Ateco categories"
msgstr ""

#. module: l10n_it_ateco
#: field:res.partner.ateco,ateco_category_id:0
msgid "Ateco category"
msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,child_ids:0
msgid "Child Categories"
msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,create_uid:0
#: field:res.partner.ateco,create_uid:0
msgid "Created by"
msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,create_date:0
#: field:res.partner.ateco,create_date:0
msgid "Created on"
msgstr ""

Expand All @@ -62,19 +69,27 @@ msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,id:0
#: field:res.partner.ateco,id:0
msgid "ID"
msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,write_uid:0
#: field:res.partner.ateco,write_uid:0
msgid "Last Updated by"
msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,write_date:0
#: field:res.partner.ateco,write_date:0
msgid "Last Updated on"
msgstr ""

#. module: l10n_it_ateco
#: field:res.partner.ateco,main_category:0
msgid "Main category"
msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,name:0
msgid "Name"
Expand All @@ -88,9 +103,15 @@ msgstr ""
#. module: l10n_it_ateco
#: view:ateco.category:l10n_it_ateco.view_ateco_category_form
#: model:ir.model,name:l10n_it_ateco.model_res_partner
#: field:res.partner.ateco,partner_id:0
msgid "Partner"
msgstr ""

#. module: l10n_it_ateco
#: view:res.partner.ateco:l10n_it_ateco.view_partner_ateco_form
msgid "Partner Ateco Category"
msgstr ""

#. module: l10n_it_ateco
#: field:ateco.category,partner_ids:0
msgid "Partners"
Expand All @@ -100,3 +121,16 @@ msgstr ""
#: view:ateco.category:l10n_it_ateco.ateco_category_search
msgid "Search Ateco categories"
msgstr ""

#. module: l10n_it_ateco
#: code:addons/l10n_it_ateco/model/partner.py:95
#, python-format
msgid "You can define only one main ateco category for a partner"
msgstr ""

#. module: l10n_it_ateco
#: code:addons/l10n_it_ateco/model/partner.py:100
#, python-format
msgid "You should define at least one main ateco category"
msgstr ""

46 changes: 41 additions & 5 deletions l10n_it_ateco/model/ateco.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#
##############################################################################
from openerp import models
from openerp import api
from openerp import fields


Expand All @@ -30,14 +31,22 @@ class ateco_category(models.Model):
'Name',
required=True
)

code = fields.Char(
'ATECO Code',
size=9,
required=False
)

complete_name = fields.Char(
compute="_get_complete_name",
string="Complete name"
)

description = fields.Text(
'Description'
)

parent_id = fields.Many2one(
'ateco.category',
'Parent Category',
Expand All @@ -48,10 +57,37 @@ class ateco_category(models.Model):
'parent_id',
'Child Categories'
)
partner_ids = fields.Many2many(
'res.partner',
'ateco_category_partner_rel',
'ateco_id',
'partner_id',

partner_ids = fields.One2many(
'res.partner.ateco',
'ateco_category_id',
'Partners'
)

def _get_complete_name(self):
"""Concatenate code and name fields"""
for res in self:
code = res.code
if code:
name = u"{} - {}".format(code, res.name)
else:
name = res.name
res.complete_name = name

@api.multi
def name_get(self):
return [(i.id, i.complete_name) for i in self]

@api.model
def name_search(self, name, args=None, operator='ilike', limit=100):
"""Search in name and code fields"""
args = args or []
if name:
recs = self.search([
'|',
('code', operator, name),
('name', operator, name)
] + args, limit=limit)
else:
recs = self.browse()
return recs.name_get()
81 changes: 74 additions & 7 deletions l10n_it_ateco/model/partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,84 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models
from openerp import api
from openerp import exceptions
from openerp import fields
from openerp import models
from openerp import _


class res_partner_ateco(models.Model):
_name = 'res.partner.ateco'

ateco_category_id = fields.Many2one(
'ateco.category',
'Ateco category'
)

ateco_category_code = fields.Char(
related="ateco_category_id.code",
string="Ateco code"
)

partner_id = fields.Many2one(
'res.partner',
'Partner'
)

main_category = fields.Boolean("Main category")

@api.multi
def name_get(self):
"""Return ateco.category.complete_name"""
return [(i.id, i.ateco_category_id.complete_name) for i in self]

def get_main_category(self, partner_id):
"""Return the category with main_category flag set true"""
return self.search([
'&',
('partner_id', '=', partner_id),
('main_category', '=', True),
])


class res_partner(models.Model):
_inherit = 'res.partner'

ateco_category_ids = fields.Many2many(
'ateco.category',
'ateco_category_partner_rel',
'partner_id',
'ateco_id',
'Ateco categories'
ateco_category_ids = fields.One2many(
"res.partner.ateco",
"partner_id",
"Ateco categories"
)

main_ateco_category_id = fields.Many2one(
"res.partner.ateco",
string="Main Ateco category",
compute='_get_main_ateco_category_id'
)

def _get_main_ateco_category_id(self):
"""Search into res.partner.ateco related to this partner
and get the one with main_category flag to true
"""
ateco_obj = self.env['res.partner.ateco']
for i in self:
cat = ateco_obj.get_main_category(i.id)
i.main_ateco_category_id = cat.id

@api.one
@api.constrains('ateco_category_ids')
def main_category_constraint(self):
"""It is allowed only one and at least
main ateco category for each partner"""
res = [i for i in self.ateco_category_ids if i.main_category is True]
count_rs = len(res)
if count_rs > 1:
raise exceptions.Warning(
_(u"You can define only one main ateco category for a partner")
)

if count_rs == 0:
raise exceptions.Warning(
_(u"You should define at least one main ateco category")
)

0 comments on commit f2d5257

Please sign in to comment.