Browse Source

base_partner_sequence module

pull/668/head
cubells 8 years ago
committed by Quentin Groulard
parent
commit
0f3ce33d04
  1. 16
      base_partner_sequence/README.rst
  2. 7
      base_partner_sequence/__init__.py
  3. 38
      base_partner_sequence/__openerp__.py
  4. 26
      base_partner_sequence/data/partner_sequence.xml
  5. 21
      base_partner_sequence/i18n/base_partner_sequence.pot
  6. 5
      base_partner_sequence/models/__init__.py
  7. 42
      base_partner_sequence/models/partner.py
  8. 5
      base_partner_sequence/tests/__init__.py
  9. 28
      base_partner_sequence/tests/test_base_partner_sequence.py
  10. 26
      base_partner_sequence/views/partner_view.xml

16
base_partner_sequence/README.rst

@ -7,7 +7,7 @@ Add a sequence on partner's reference.
====================================== ======================================
This module adds the possibility to define a sequence for This module adds the possibility to define a sequence for
the partner's reference. This reference is then set as default
the partner's reference. This reference is then set as default
when you create a new partner, using the defined sequence. when you create a new partner, using the defined sequence.
The reference field is treated as a commercial field, i.e. it The reference field is treated as a commercial field, i.e. it
@ -17,8 +17,6 @@ but it can only be modified from the commercial partner.
No references are assigned for contacts such as shipping and No references are assigned for contacts such as shipping and
invoice addresses. invoice addresses.
This module is a migration of the original base_partner_sequence
addon to OpenERP version 7.0.
Usage Usage
@ -26,17 +24,16 @@ Usage
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot :alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/134/8.0
:target: https://runbot.odoo-community.org/runbot/134/9.0
Bug Tracker Bug Tracker
=========== ===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/partner-contact/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/partner-contact/issues/new?body=module:%base_partner_sequence%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/partner-contact/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits Credits
======= =======
@ -51,6 +48,7 @@ Contributors
* Laurent Mignon (ACSONE) <laurent.mignon@acsone.eu> * Laurent Mignon (ACSONE) <laurent.mignon@acsone.eu>
* Guewen Baconnier <guewen.baconnier@camptocamp.com> * Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com> * Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
* Vicent Cubells <vicent.cubells@tecnativa.com>
Maintainer Maintainer
---------- ----------

7
base_partner_sequence/__init__.py

@ -1,3 +1,8 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
# Copyright 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright 2013 initOS GmbH & Co. KG (<http://www.initos.com>).
# Copyright 2016 Tecnativa - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models from . import models
from . import tests from . import tests

38
base_partner_sequence/__openerp__.py

@ -1,38 +1,26 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2013 initOS GmbH & Co. KG (<http://www.initos.com>).
# Author Thomas Rehn <thomas.rehn at initos.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
# -*- coding: utf-8 -*-
# Copyright 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright 2013 initOS GmbH & Co. KG (<http://www.initos.com>).
# Copyright 2016 Tecnativa - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{ {
"name": "Add a sequence on customers' code", "name": "Add a sequence on customers' code",
"version": "8.0.1.1.1",
"version": "9.0.0.1.0",
"author": "Tiny/initOS GmbH & Co. KG," "author": "Tiny/initOS GmbH & Co. KG,"
"ACSONE SA/NV," "ACSONE SA/NV,"
"Tecnativa, "
"Odoo Community Association (OCA)", "Odoo Community Association (OCA)",
"category": "Generic Modules/Base", "category": "Generic Modules/Base",
"website": "http://www.initos.com", "website": "http://www.initos.com",
"depends": [
'base',
],
"summary": "Sets customer's code from a sequence", "summary": "Sets customer's code from a sequence",
"data": [ "data": [
'data/partner_sequence.xml', 'data/partner_sequence.xml',
'views/partner_view.xml', 'views/partner_view.xml',
], ],
"active": False,
"installable": True
"installable": True,
"license": "AGPL-3",
} }

26
base_partner_sequence/data/partner_sequence.xml

@ -1,21 +1,11 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<openerp>
<data noupdate="1">
<odoo noupdate="1">
#
# Sequences for res.partner
#
<record model="ir.sequence" id="seq_res_partner">
<field name="name">Partner code</field>
<field name="code">res.partner</field>
<field name="prefix">P/</field>
<field name="padding">5</field>
</record>
<record model="ir.sequence.type" id="seq_type_res_partner">
<field name="name">Partner code</field>
<field name="code">res.partner</field>
</record>
<record model="ir.sequence" id="seq_res_partner">
<field name="name">Partner code</field>
<field name="code">res.partner</field>
<field name="prefix">P/</field>
<field name="padding">5</field>
</record>
</data>
</openerp>
</odoo>

21
base_partner_sequence/i18n/base_partner_sequence.pot

@ -1,21 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0-20131013-231025\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 13:47+0000\n"
"PO-Revision-Date: 2013-11-13 13:47+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: base_partner_sequence
#: model:ir.model,name:base_partner_sequence.model_res_partner
msgid "Partner"
msgstr ""

5
base_partner_sequence/models/__init__.py

@ -1,2 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright 2013 initOS GmbH & Co. KG (<http://www.initos.com>).
# Copyright 2016 Tecnativa - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import partner from . import partner

42
base_partner_sequence/models/partner.py

@ -1,9 +1,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2004-2009 Tiny SPRL (<http://tiny.be>).
# © 2013 initOS GmbH & Co. KG (<http://www.initos.com>).
# Copyright 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright 2013 initOS GmbH & Co. KG (<http://www.initos.com>).
# Copyright 2016 Tecnativa - Vicent Cubells
# 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).
from openerp import models, api
from openerp import models, api, exceptions, _
class ResPartner(models.Model): class ResPartner(models.Model):
@ -16,20 +17,24 @@ class ResPartner(models.Model):
""" """
Checks whether a sequence value should be assigned to a partner's 'ref' Checks whether a sequence value should be assigned to a partner's 'ref'
:param parnter_id: id of the partner object
:param partner_id: id of the partner object
:param vals: known field values of the partner object :param vals: known field values of the partner object
:return: true iff a sequence value should be assigned to the\
partner's 'ref'
:return: true if a sequence value should be assigned to the
partner's 'ref'
""" """
if not vals and not partner_id: if not vals and not partner_id:
raise Exception('Either field values or an id must be provided.')
vals = vals or {}
raise exceptions.Warning(
_('Either field values or an id must be provided.')
)
if vals is None:
vals = {}
values = vals.copy()
# only assign a 'ref' to commercial partners # only assign a 'ref' to commercial partners
if partner_id: if partner_id:
partner = self.browse(partner_id) partner = self.browse(partner_id)
vals.setdefault('is_company', partner.is_company)
vals.setdefault('parent_id', partner.parent_id.id)
return vals.get('is_company') or not vals.get('parent_id')
values.setdefault('is_company', partner.is_company)
values.setdefault('parent_id', partner.parent_id.id)
return values.get('is_company') or not values.get('parent_id')
@api.model @api.model
def _commercial_fields(self): def _commercial_fields(self):
@ -41,7 +46,7 @@ class ResPartner(models.Model):
@api.model @api.model
def _get_next_ref(self, partner=None, vals=None): def _get_next_ref(self, partner=None, vals=None):
return self.env['ir.sequence'].get('res.partner')
return self.env['ir.sequence'].next_by_code('res.partner')
@api.model @api.model
def create(self, vals): def create(self, vals):
@ -58,12 +63,13 @@ class ResPartner(models.Model):
super(ResPartner, partner).write(vals) super(ResPartner, partner).write(vals)
return True return True
@api.one
@api.multi
def copy(self, default=None): def copy(self, default=None):
default = default or {}
if self._needsRef(self.id):
default.update({
'ref': self._get_next_ref(),
})
for partner in self:
default = default or {}
if self._needsRef(self.id):
default.update({
'ref': self._get_next_ref(),
})
return super(ResPartner, self).copy(default) return super(ResPartner, self).copy(default)

5
base_partner_sequence/tests/__init__.py

@ -1,2 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright 2013 initOS GmbH & Co. KG (<http://www.initos.com>).
# Copyright 2016 Tecnativa - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_base_partner_sequence from . import test_base_partner_sequence

28
base_partner_sequence/tests/test_base_partner_sequence.py

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2015 ACSONE SA/NV (<http://acsone.eu>).
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>).
# Copyright 2016 Tecnativa - Vicent Cubells
# 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).
import openerp.tests.common as common import openerp.tests.common as common
@ -7,13 +8,28 @@ import openerp.tests.common as common
class TestBasePartnerSequence(common.TransactionCase): class TestBasePartnerSequence(common.TransactionCase):
def test_ref_sequence_on_partner(self):
res_partner = self.env['res.partner']
partner = res_partner.create({
def setUp(self):
super(TestBasePartnerSequence, self).setUp()
self.res_partner = self.env['res.partner']
self.partner = self.res_partner.create({
'name': "test1", 'name': "test1",
'email': "test@test.com"}) 'email': "test@test.com"})
self.assertTrue(partner.ref, "A partner has always a ref.")
copy = partner.copy()
def test_ref_sequence_on_partner(self):
# Test sequence on creating partner and copying it
self.assertTrue(self.partner.ref, "A partner has always a ref.")
copy = self.partner.copy()
self.assertTrue(copy.ref, "A partner with ref created by copy " self.assertTrue(copy.ref, "A partner with ref created by copy "
"has a ref by default.") "has a ref by default.")
def test_ref_sequence_on_contact(self):
# Test if sequence doesn't increase on creating a contact child
contact = self.res_partner.create({
'name': "contact1",
'email': "contact@contact.com",
'parent_id': self.partner.id})
self.assertEqual(
self.partner.ref, contact.ref, "All it's ok as sequence doesn't "
"increase.")

26
base_partner_sequence/views/partner_view.xml

@ -1,20 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<odoo>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">Make partner reference readonly when non-commercial</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="ref" position="attributes">
<attribute name="attrs">{
'readonly': [('is_company', '=', False),
('parent_id', '!=', False)]}</attribute>
</field>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">Make partner reference readonly when non-commercial</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="ref" position="attributes">
<attribute name="attrs">{'readonly': [('is_company', '=', False), ('parent_id', '!=', False)]}</attribute>
</field> </field>
</field>
</record>
</record>
</data>
</openerp>
</odoo>
Loading…
Cancel
Save