From 5fe45609772c8f8149b92b500ed22ee5e392021a Mon Sep 17 00:00:00 2001 From: Laetitia Gangloff Date: Fri, 22 Apr 2016 11:29:53 +0200 Subject: [PATCH 01/58] module to manage analytic on purchase order --- purchase_analytic/README.rst | 76 +++++++++++++ purchase_analytic/__init__.py | 3 + purchase_analytic/__openerp__.py | 17 +++ purchase_analytic/i18n/fr.po | 37 ++++++ purchase_analytic/i18n/purchase_analytic.pot | 37 ++++++ purchase_analytic/models/__init__.py | 3 + purchase_analytic/models/purchase.py | 68 ++++++++++++ purchase_analytic/tests/__init__.py | 3 + .../tests/test_purchase_analytic.py | 105 ++++++++++++++++++ purchase_analytic/views/purchase_views.xml | 50 +++++++++ 10 files changed, 399 insertions(+) create mode 100644 purchase_analytic/README.rst create mode 100644 purchase_analytic/__init__.py create mode 100644 purchase_analytic/__openerp__.py create mode 100644 purchase_analytic/i18n/fr.po create mode 100644 purchase_analytic/i18n/purchase_analytic.pot create mode 100644 purchase_analytic/models/__init__.py create mode 100644 purchase_analytic/models/purchase.py create mode 100644 purchase_analytic/tests/__init__.py create mode 100644 purchase_analytic/tests/test_purchase_analytic.py create mode 100644 purchase_analytic/views/purchase_views.xml diff --git a/purchase_analytic/README.rst b/purchase_analytic/README.rst new file mode 100644 index 0000000000..c11eb3e790 --- /dev/null +++ b/purchase_analytic/README.rst @@ -0,0 +1,76 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +================= +Purchase Analytic +================= + +The goal of this module is to ease analytic account management on purchase order. +This module add analytic account on purchase order. + +If all lines of the purchase order have the same analytic account, the analytic account on the purchase order is automatically set with this value. +If a analytic account is set on the purchase order, all lines of the purchase will take this value. + +Installation +============ + +To install this module, you need to: + +* Click on install button + +Usage +===== + +To use this module, you need to: + +* Go to ... + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/142/8.0 + +Known issues / Roadmap +====================== + +* ... + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Laetitia Gangloff + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file diff --git a/purchase_analytic/__init__.py b/purchase_analytic/__init__.py new file mode 100644 index 0000000000..cde864bae2 --- /dev/null +++ b/purchase_analytic/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/purchase_analytic/__openerp__.py b/purchase_analytic/__openerp__.py new file mode 100644 index 0000000000..d46dbbaa2f --- /dev/null +++ b/purchase_analytic/__openerp__.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Purchase Analytic", + "version": "8.0.1.0.0", + 'author': "Acsone SA/NV,Odoo Community Association (OCA)", + "category": "Purchase Management", + "website": "http://www.acsone.eu", + "depends": ["purchase" + ], + "data": ["views/purchase_views.xml"], + "license": "AGPL-3", + "installable": True, + "application": False, +} diff --git a/purchase_analytic/i18n/fr.po b/purchase_analytic/i18n/fr.po new file mode 100644 index 0000000000..fe52d8d75f --- /dev/null +++ b/purchase_analytic/i18n/fr.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-07 08:25+0000\n" +"PO-Revision-Date: 2016-04-07 08:25+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: purchase_analytic +#: field:purchase.order,project_id2:0 +msgid "Contract / Analytic" +msgstr "Contrat / analytique" + +#. module: purchase_analytic +#: model:ir.model,name:purchase_analytic.model_purchase_order +msgid "Purchase Order" +msgstr "Bon de commande" + +#. module: purchase_analytic +#: help:purchase.order,project_id2:0 +msgid "Use to store the value of project_id if there is no lines" +msgstr "Utilisé pour stocker la valeur du champs project_id lorsqu'il n'y a pas de lignes" + +#. module: purchase_analytic +#: view:purchase.order:purchase_analytic.purchase_order_view_form_inherit_purchase_analytic +msgid "{'default_account_analytic_id': project_id}" +msgstr "" + diff --git a/purchase_analytic/i18n/purchase_analytic.pot b/purchase_analytic/i18n/purchase_analytic.pot new file mode 100644 index 0000000000..558ee7285f --- /dev/null +++ b/purchase_analytic/i18n/purchase_analytic.pot @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-07 08:25+0000\n" +"PO-Revision-Date: 2016-04-07 08:25+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: purchase_analytic +#: field:purchase.order,project_id2:0 +msgid "Contract / Analytic" +msgstr "" + +#. module: purchase_analytic +#: model:ir.model,name:purchase_analytic.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_analytic +#: help:purchase.order,project_id2:0 +msgid "Use to store the value of project_id if there is no lines" +msgstr "" + +#. module: purchase_analytic +#: view:purchase.order:purchase_analytic.purchase_order_view_form_inherit_purchase_analytic +msgid "{'default_account_analytic_id': project_id}" +msgstr "" + diff --git a/purchase_analytic/models/__init__.py b/purchase_analytic/models/__init__.py new file mode 100644 index 0000000000..b46d7f441e --- /dev/null +++ b/purchase_analytic/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import purchase diff --git a/purchase_analytic/models/purchase.py b/purchase_analytic/models/purchase.py new file mode 100644 index 0000000000..c9b6da45b8 --- /dev/null +++ b/purchase_analytic/models/purchase.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import api, fields, models + + +class PurchaseOrder(models.Model): + _inherit = 'purchase.order' + + project_id2 = fields.Many2one( + comodel_name='account.analytic.account', + string='Contract / Analytic', + help='Use to store the value of project_id if there is no lines') + project_id = fields.Many2one( + compute='_compute_project_id', + inverse='_inverse_project_id', + comodel_name='account.analytic.account', + string='Contract / Analytic', readonly=True, + states={'draft': [('readonly', False)]}, + store=True, + help="The analytic account related to a sales order.") + + @api.multi + @api.depends('order_line.account_analytic_id') + def _compute_project_id(self): + """ If all order line have same analytic account set project_id + """ + for po in self: + al = po.project_id2 + if po.order_line: + al = (po.order_line[0].account_analytic_id) or False + for ol in po.order_line: + if ol.account_analytic_id != al: + al = False + break + po.project_id = al + + @api.multi + def _inverse_project_id(self): + """ When set project_id set analytic account on all order lines + """ + for po in self: + if po.project_id: + po.order_line.write({'account_analytic_id': po.project_id.id}) + po.project_id2 = po.project_id + + @api.onchange('project_id') + def _onchange_project_id(self): + """ When change project_id set analytic account on all order lines + Do it in one operation to avoid to recompute the project_id field + during the change. + In case of new record, nothing is recomputed to avoid ugly message + """ + r = [] + for ol in self.order_line: + if isinstance(ol.id, int): + r.append((1, ol.id, + {'account_analytic_id': self.project_id.id})) + else: + # this is new record, do nothing ! + return + self.project_id2 = self.project_id + self.order_line = r + + def _get_merge_order_key(self): + res = super(PurchaseOrder, self)._get_merge_order_key() + return res + ('project_id', ) diff --git a/purchase_analytic/tests/__init__.py b/purchase_analytic/tests/__init__.py new file mode 100644 index 0000000000..894155ddc7 --- /dev/null +++ b/purchase_analytic/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_purchase_analytic diff --git a/purchase_analytic/tests/test_purchase_analytic.py b/purchase_analytic/tests/test_purchase_analytic.py new file mode 100644 index 0000000000..16006d33e7 --- /dev/null +++ b/purchase_analytic/tests/test_purchase_analytic.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import openerp.tests.common as common + + +class TestPurchaseAnalytic(common.TransactionCase): + + def setUp(self): + super(TestPurchaseAnalytic, self).setUp() + + def test_analytic_account(self): + """ Create a purchase order with line + Set analytic account on purchase + Check analytic account on line is set + """ + po = self.env['purchase.order'].create( + {'partner_id': self.env.ref('base.res_partner_16').id, + 'location_id': self.env.ref('stock.stock_location_stock').id, + 'pricelist_id': self.env.ref('purchase.list0').id + }) + + vals = self.env['purchase.order.line'].onchange_product_id( + po.pricelist_id.id, self.env.ref('product.product_product_34').id, + 0, False, po.partner_id.id, date_order=po.date_order, + fiscal_position_id=po.fiscal_position.id, date_planned=False, + name=False, price_unit=False, state=po.state) + vals['value']['order_id'] = po.id + vals['value']['product_id'] = self.env.ref( + 'product.product_product_34').id + po_line = self.env['purchase.order.line'].create(vals['value']) + po.project_id = self.env.ref('account.analytic_project_1').id + self.assertEqual(po.project_id.id, + self.env.ref('account.analytic_project_1').id) + self.assertEqual(po_line.account_analytic_id.id, + self.env.ref('account.analytic_project_1').id) + + def test_project_id(self): + """ Create a purchase order without line + Set analytic account on purchase + Check analytic account is on purchase + """ + po = self.env['purchase.order'].new( + {'partner_id': self.env.ref('base.res_partner_16').id, + 'location_id': self.env.ref('stock.stock_location_stock').id, + 'pricelist_id': self.env.ref('purchase.list0').id, + 'project_id': self.env.ref('account.analytic_project_1').id + }) + po._onchange_project_id() + self.assertEqual(po.project_id.id, + self.env.ref('account.analytic_project_1').id) + + def _create_po(self, partner_id): + po = self.env['purchase.order'].create( + {'partner_id': partner_id, + 'location_id': self.env.ref('stock.stock_location_stock').id, + 'pricelist_id': self.env.ref('purchase.list0').id + }) + + vals = self.env['purchase.order.line'].onchange_product_id( + po.pricelist_id.id, self.env.ref('product.product_product_34').id, + 0, False, po.partner_id.id, date_order=po.date_order, + fiscal_position_id=po.fiscal_position.id, date_planned=False, + name=False, price_unit=False, state=po.state) + vals['value']['order_id'] = po.id + vals['value']['product_id'] = self.env.ref( + 'product.product_product_34').id + self.env['purchase.order.line'].create(vals['value']) + return po + + def test_merge_po(self): + """ Create po1 with project1 + Create po2 with project1 + Create po3 with project2 + Merge po1 with po2 + Check po1 and po2 are cancelled + Check po4 is created with project1 + Merge po4 with po3 + Check po4 and po3 are draft + """ + project1 = self.env.ref('account.analytic_project_1') + project2 = self.env.ref('account.analytic_project_2') + partner_id = self.env.ref('base.res_partner_4').id + po1 = self._create_po(partner_id) + po1.project_id = project1.id + po2 = self._create_po(partner_id) + po2.project_id = project1.id + po3 = self._create_po(partner_id) + po3.project_id = project2.id + po_merge = po1 + po2 + new_order = po_merge.do_merge() + self.assertEqual(1, len(new_order)) + old_po_id = new_order.values()[0] + self.assertTrue(po1.id in old_po_id) + self.assertTrue(po2.id in old_po_id) + self.assertEqual('cancel', po1.state) + self.assertEqual('cancel', po2.state) + po4 = self.env['purchase.order'].browse(new_order.keys()[0]) + self.assertEqual(project1.id, po4.project_id.id) + po_merge = po3 + po4 + new_order = po_merge.do_merge() + self.assertEqual(0, len(new_order)) + self.assertEqual('draft', po3.state) + self.assertEqual('draft', po4.state) diff --git a/purchase_analytic/views/purchase_views.xml b/purchase_analytic/views/purchase_views.xml new file mode 100644 index 0000000000..cdc36eadfa --- /dev/null +++ b/purchase_analytic/views/purchase_views.xml @@ -0,0 +1,50 @@ + + + + + purchase.order.search (purchase_analytic) + purchase.order + + + + + + + + + + + + purchase.order.tree (purchase_analytic) + purchase.order + + + + + + + + + + + + purchase.order.form (purchase_analytic) + purchase.order + + + + + + + + + {'default_account_analytic_id': project_id} + + + + + + + From ca878dd4472337470aa104c2c3ae33b0d0e2fd6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pigeon?= Date: Thu, 11 May 2017 14:53:32 +0200 Subject: [PATCH 02/58] [10.0][MIG] port purchase_analytic to V10.0 --- purchase_analytic/README.rst | 8 +- .../{__openerp__.py => __manifest__.py} | 2 +- purchase_analytic/models/purchase.py | 6 +- .../tests/test_purchase_analytic.py | 101 +++++------------- purchase_analytic/views/purchase_views.xml | 1 - 5 files changed, 30 insertions(+), 88 deletions(-) rename purchase_analytic/{__openerp__.py => __manifest__.py} (94%) diff --git a/purchase_analytic/README.rst b/purchase_analytic/README.rst index c11eb3e790..440698c139 100644 --- a/purchase_analytic/README.rst +++ b/purchase_analytic/README.rst @@ -30,11 +30,6 @@ To use this module, you need to: :alt: Try me on Runbot :target: https://runbot.odoo-community.org/runbot/142/8.0 -Known issues / Roadmap -====================== - -* ... - Bug Tracker =========== @@ -59,6 +54,7 @@ Contributors ------------ * Laetitia Gangloff +* Cédric Pigeon Maintainer ---------- @@ -73,4 +69,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file +To contribute to this module, please visit https://odoo-community.org. diff --git a/purchase_analytic/__openerp__.py b/purchase_analytic/__manifest__.py similarity index 94% rename from purchase_analytic/__openerp__.py rename to purchase_analytic/__manifest__.py index d46dbbaa2f..af4b7a736d 100644 --- a/purchase_analytic/__openerp__.py +++ b/purchase_analytic/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Analytic", - "version": "8.0.1.0.0", + "version": "10.0.1.0.0", 'author': "Acsone SA/NV,Odoo Community Association (OCA)", "category": "Purchase Management", "website": "http://www.acsone.eu", diff --git a/purchase_analytic/models/purchase.py b/purchase_analytic/models/purchase.py index c9b6da45b8..00fd73c351 100644 --- a/purchase_analytic/models/purchase.py +++ b/purchase_analytic/models/purchase.py @@ -2,7 +2,7 @@ # © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import api, fields, models +from odoo import api, fields, models class PurchaseOrder(models.Model): @@ -62,7 +62,3 @@ def _onchange_project_id(self): return self.project_id2 = self.project_id self.order_line = r - - def _get_merge_order_key(self): - res = super(PurchaseOrder, self)._get_merge_order_key() - return res + ('project_id', ) diff --git a/purchase_analytic/tests/test_purchase_analytic.py b/purchase_analytic/tests/test_purchase_analytic.py index 16006d33e7..9504705db6 100644 --- a/purchase_analytic/tests/test_purchase_analytic.py +++ b/purchase_analytic/tests/test_purchase_analytic.py @@ -2,39 +2,45 @@ # © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -import openerp.tests.common as common +import odoo.tests.common as common +from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT +from datetime import datetime class TestPurchaseAnalytic(common.TransactionCase): def setUp(self): super(TestPurchaseAnalytic, self).setUp() + self.project = self.env['account.analytic.account'].create({ + 'name': 'Account Analytic for Tests' + }) def test_analytic_account(self): """ Create a purchase order with line Set analytic account on purchase Check analytic account on line is set """ + product_id = self.env.ref('product.product_product_9') po = self.env['purchase.order'].create( - {'partner_id': self.env.ref('base.res_partner_16').id, - 'location_id': self.env.ref('stock.stock_location_stock').id, - 'pricelist_id': self.env.ref('purchase.list0').id + {'partner_id': self.env.ref('base.res_partner_12').id, + 'order_line': [ + (0, 0, { + 'name': product_id.name, + 'product_id': product_id.id, + 'product_qty': 1.0, + 'product_uom': self.env.ref( + 'product.product_uom_unit').id, + 'price_unit': 121.0, + 'date_planned': datetime.today().strftime( + DEFAULT_SERVER_DATETIME_FORMAT), + })], }) - vals = self.env['purchase.order.line'].onchange_product_id( - po.pricelist_id.id, self.env.ref('product.product_product_34').id, - 0, False, po.partner_id.id, date_order=po.date_order, - fiscal_position_id=po.fiscal_position.id, date_planned=False, - name=False, price_unit=False, state=po.state) - vals['value']['order_id'] = po.id - vals['value']['product_id'] = self.env.ref( - 'product.product_product_34').id - po_line = self.env['purchase.order.line'].create(vals['value']) - po.project_id = self.env.ref('account.analytic_project_1').id + po.project_id = self.project.id self.assertEqual(po.project_id.id, - self.env.ref('account.analytic_project_1').id) - self.assertEqual(po_line.account_analytic_id.id, - self.env.ref('account.analytic_project_1').id) + self.project.id) + self.assertEqual(po.order_line.account_analytic_id.id, + self.project.id) def test_project_id(self): """ Create a purchase order without line @@ -42,64 +48,9 @@ def test_project_id(self): Check analytic account is on purchase """ po = self.env['purchase.order'].new( - {'partner_id': self.env.ref('base.res_partner_16').id, - 'location_id': self.env.ref('stock.stock_location_stock').id, - 'pricelist_id': self.env.ref('purchase.list0').id, - 'project_id': self.env.ref('account.analytic_project_1').id + {'partner_id': self.env.ref('base.res_partner_12').id, + 'project_id': self.project.id }) po._onchange_project_id() self.assertEqual(po.project_id.id, - self.env.ref('account.analytic_project_1').id) - - def _create_po(self, partner_id): - po = self.env['purchase.order'].create( - {'partner_id': partner_id, - 'location_id': self.env.ref('stock.stock_location_stock').id, - 'pricelist_id': self.env.ref('purchase.list0').id - }) - - vals = self.env['purchase.order.line'].onchange_product_id( - po.pricelist_id.id, self.env.ref('product.product_product_34').id, - 0, False, po.partner_id.id, date_order=po.date_order, - fiscal_position_id=po.fiscal_position.id, date_planned=False, - name=False, price_unit=False, state=po.state) - vals['value']['order_id'] = po.id - vals['value']['product_id'] = self.env.ref( - 'product.product_product_34').id - self.env['purchase.order.line'].create(vals['value']) - return po - - def test_merge_po(self): - """ Create po1 with project1 - Create po2 with project1 - Create po3 with project2 - Merge po1 with po2 - Check po1 and po2 are cancelled - Check po4 is created with project1 - Merge po4 with po3 - Check po4 and po3 are draft - """ - project1 = self.env.ref('account.analytic_project_1') - project2 = self.env.ref('account.analytic_project_2') - partner_id = self.env.ref('base.res_partner_4').id - po1 = self._create_po(partner_id) - po1.project_id = project1.id - po2 = self._create_po(partner_id) - po2.project_id = project1.id - po3 = self._create_po(partner_id) - po3.project_id = project2.id - po_merge = po1 + po2 - new_order = po_merge.do_merge() - self.assertEqual(1, len(new_order)) - old_po_id = new_order.values()[0] - self.assertTrue(po1.id in old_po_id) - self.assertTrue(po2.id in old_po_id) - self.assertEqual('cancel', po1.state) - self.assertEqual('cancel', po2.state) - po4 = self.env['purchase.order'].browse(new_order.keys()[0]) - self.assertEqual(project1.id, po4.project_id.id) - po_merge = po3 + po4 - new_order = po_merge.do_merge() - self.assertEqual(0, len(new_order)) - self.assertEqual('draft', po3.state) - self.assertEqual('draft', po4.state) + self.project.id) diff --git a/purchase_analytic/views/purchase_views.xml b/purchase_analytic/views/purchase_views.xml index cdc36eadfa..0b83c61349 100644 --- a/purchase_analytic/views/purchase_views.xml +++ b/purchase_analytic/views/purchase_views.xml @@ -36,7 +36,6 @@ From 8b10a1684bb04e055623593d678ef6dfa206b4c1 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 1 Oct 2019 00:55:52 +0000 Subject: [PATCH 03/58] [UPD] Update purchase_analytic.pot --- purchase_analytic/i18n/purchase_analytic.pot | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/purchase_analytic/i18n/purchase_analytic.pot b/purchase_analytic/i18n/purchase_analytic.pot index 558ee7285f..0452620a8b 100644 --- a/purchase_analytic/i18n/purchase_analytic.pot +++ b/purchase_analytic/i18n/purchase_analytic.pot @@ -4,10 +4,8 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-04-07 08:25+0000\n" -"PO-Revision-Date: 2016-04-07 08:25+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,7 +14,8 @@ msgstr "" "Plural-Forms: \n" #. module: purchase_analytic -#: field:purchase.order,project_id2:0 +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order_project_id +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order_project_id2 msgid "Contract / Analytic" msgstr "" @@ -26,12 +25,12 @@ msgid "Purchase Order" msgstr "" #. module: purchase_analytic -#: help:purchase.order,project_id2:0 -msgid "Use to store the value of project_id if there is no lines" +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order_project_id +msgid "The analytic account related to a sales order." msgstr "" #. module: purchase_analytic -#: view:purchase.order:purchase_analytic.purchase_order_view_form_inherit_purchase_analytic -msgid "{'default_account_analytic_id': project_id}" +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order_project_id2 +msgid "Use to store the value of project_id if there is no lines" msgstr "" From 39b226faadbdbd73a79f77208ad61666bab078a8 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 1 Oct 2019 05:49:26 +0000 Subject: [PATCH 04/58] [ADD] icon.png --- purchase_analytic/static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 purchase_analytic/static/description/icon.png diff --git a/purchase_analytic/static/description/icon.png b/purchase_analytic/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From ff4054ac8d381da9187167cae3a4b2d3f13b734a Mon Sep 17 00:00:00 2001 From: mreficent Date: Wed, 23 Oct 2019 16:38:51 +0200 Subject: [PATCH 05/58] [MIG] purchase_analytic: Migration to 12.0 --- purchase_analytic/README.rst | 25 ++++--------------- purchase_analytic/__init__.py | 2 -- purchase_analytic/__manifest__.py | 10 ++++---- purchase_analytic/i18n/purchase_analytic.pot | 2 +- purchase_analytic/models/__init__.py | 2 -- purchase_analytic/models/purchase.py | 4 +-- purchase_analytic/readme/CONTRIBUTORS.rst | 2 ++ purchase_analytic/readme/DESCRIPTION.rst | 5 ++++ purchase_analytic/tests/__init__.py | 2 -- .../tests/test_purchase_analytic.py | 13 ++++------ purchase_analytic/views/purchase_views.xml | 6 ++--- 11 files changed, 27 insertions(+), 46 deletions(-) create mode 100644 purchase_analytic/readme/CONTRIBUTORS.rst create mode 100644 purchase_analytic/readme/DESCRIPTION.rst diff --git a/purchase_analytic/README.rst b/purchase_analytic/README.rst index 440698c139..f7e2aa16d8 100644 --- a/purchase_analytic/README.rst +++ b/purchase_analytic/README.rst @@ -1,5 +1,5 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl :alt: License: AGPL-3 ================= @@ -12,23 +12,12 @@ This module add analytic account on purchase order. If all lines of the purchase order have the same analytic account, the analytic account on the purchase order is automatically set with this value. If a analytic account is set on the purchase order, all lines of the purchase will take this value. -Installation -============ - -To install this module, you need to: - -* Click on install button - Usage ===== -To use this module, you need to: - -* Go to ... - .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/142/8.0 + :target: https://runbot.odoo-community.org/runbot/142/12.0 Bug Tracker =========== @@ -36,11 +25,7 @@ Bug Tracker Bugs are tracked on `GitHub 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 -`_. +help us smash it by providing detailed and welcomed feedback. Credits ======= @@ -48,7 +33,7 @@ Credits Images ------ -* Odoo Community Association: `Icon `_. +* Odoo Community Association: `Icon `_. Contributors ------------ diff --git a/purchase_analytic/__init__.py b/purchase_analytic/__init__.py index cde864bae2..0650744f6b 100644 --- a/purchase_analytic/__init__.py +++ b/purchase_analytic/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import models diff --git a/purchase_analytic/__manifest__.py b/purchase_analytic/__manifest__.py index af4b7a736d..d5b3ed64c3 100644 --- a/purchase_analytic/__manifest__.py +++ b/purchase_analytic/__manifest__.py @@ -1,15 +1,15 @@ -# -*- coding: utf-8 -*- # © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Purchase Analytic", - "version": "10.0.1.0.0", + "version": "12.0.1.0.0", 'author': "Acsone SA/NV,Odoo Community Association (OCA)", "category": "Purchase Management", - "website": "http://www.acsone.eu", - "depends": ["purchase" - ], + "website": "https://github.com/OCA/account-analytic", + "depends": [ + "purchase", + ], "data": ["views/purchase_views.xml"], "license": "AGPL-3", "installable": True, diff --git a/purchase_analytic/i18n/purchase_analytic.pot b/purchase_analytic/i18n/purchase_analytic.pot index 0452620a8b..7c07caf5c1 100644 --- a/purchase_analytic/i18n/purchase_analytic.pot +++ b/purchase_analytic/i18n/purchase_analytic.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/purchase_analytic/models/__init__.py b/purchase_analytic/models/__init__.py index b46d7f441e..370f577b2a 100644 --- a/purchase_analytic/models/__init__.py +++ b/purchase_analytic/models/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import purchase diff --git a/purchase_analytic/models/purchase.py b/purchase_analytic/models/purchase.py index 00fd73c351..c3c8a3fd65 100644 --- a/purchase_analytic/models/purchase.py +++ b/purchase_analytic/models/purchase.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -10,7 +9,6 @@ class PurchaseOrder(models.Model): project_id2 = fields.Many2one( comodel_name='account.analytic.account', - string='Contract / Analytic', help='Use to store the value of project_id if there is no lines') project_id = fields.Many2one( compute='_compute_project_id', @@ -29,7 +27,7 @@ def _compute_project_id(self): for po in self: al = po.project_id2 if po.order_line: - al = (po.order_line[0].account_analytic_id) or False + al = po.order_line[0].account_analytic_id or False for ol in po.order_line: if ol.account_analytic_id != al: al = False diff --git a/purchase_analytic/readme/CONTRIBUTORS.rst b/purchase_analytic/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..987427023e --- /dev/null +++ b/purchase_analytic/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Laetitia Gangloff +* Cédric Pigeon diff --git a/purchase_analytic/readme/DESCRIPTION.rst b/purchase_analytic/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..e22d247a70 --- /dev/null +++ b/purchase_analytic/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +The goal of this module is to ease analytic account management on purchase order. +This module add analytic account on purchase order. + +If all lines of the purchase order have the same analytic account, the analytic account on the purchase order is automatically set with this value. +If a analytic account is set on the purchase order, all lines of the purchase will take this value. diff --git a/purchase_analytic/tests/__init__.py b/purchase_analytic/tests/__init__.py index 894155ddc7..32e4346775 100644 --- a/purchase_analytic/tests/__init__.py +++ b/purchase_analytic/tests/__init__.py @@ -1,3 +1 @@ -# -*- coding: utf-8 -*- - from . import test_purchase_analytic diff --git a/purchase_analytic/tests/test_purchase_analytic.py b/purchase_analytic/tests/test_purchase_analytic.py index 9504705db6..ad2acf215f 100644 --- a/purchase_analytic/tests/test_purchase_analytic.py +++ b/purchase_analytic/tests/test_purchase_analytic.py @@ -1,18 +1,16 @@ -# -*- coding: utf-8 -*- # © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -import odoo.tests.common as common -from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT +from odoo.tests.common import TransactionCase from datetime import datetime -class TestPurchaseAnalytic(common.TransactionCase): +class TestPurchaseAnalytic(TransactionCase): def setUp(self): super(TestPurchaseAnalytic, self).setUp() self.project = self.env['account.analytic.account'].create({ - 'name': 'Account Analytic for Tests' + 'name': 'Account Analytic for Tests', }) def test_analytic_account(self): @@ -29,10 +27,9 @@ def test_analytic_account(self): 'product_id': product_id.id, 'product_qty': 1.0, 'product_uom': self.env.ref( - 'product.product_uom_unit').id, + 'uom.product_uom_unit').id, 'price_unit': 121.0, - 'date_planned': datetime.today().strftime( - DEFAULT_SERVER_DATETIME_FORMAT), + 'date_planned': datetime.today(), })], }) diff --git a/purchase_analytic/views/purchase_views.xml b/purchase_analytic/views/purchase_views.xml index 0b83c61349..fd44914709 100644 --- a/purchase_analytic/views/purchase_views.xml +++ b/purchase_analytic/views/purchase_views.xml @@ -8,7 +8,7 @@ - + @@ -21,7 +21,7 @@ - + @@ -35,7 +35,7 @@ - From 06f56e784eb6b35090999803b3664b1942e9e814 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 28 Oct 2019 11:15:43 +0000 Subject: [PATCH 06/58] [UPD] Update purchase_analytic.pot --- purchase_analytic/i18n/purchase_analytic.pot | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/purchase_analytic/i18n/purchase_analytic.pot b/purchase_analytic/i18n/purchase_analytic.pot index 7c07caf5c1..d1d67deb5f 100644 --- a/purchase_analytic/i18n/purchase_analytic.pot +++ b/purchase_analytic/i18n/purchase_analytic.pot @@ -14,23 +14,27 @@ msgstr "" "Plural-Forms: \n" #. module: purchase_analytic -#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order_project_id -#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order_project_id2 +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order__project_id msgid "Contract / Analytic" msgstr "" +#. module: purchase_analytic +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order__project_id2 +msgid "Project Id2" +msgstr "" + #. module: purchase_analytic #: model:ir.model,name:purchase_analytic.model_purchase_order msgid "Purchase Order" msgstr "" #. module: purchase_analytic -#: model:ir.model.fields,help:purchase_analytic.field_purchase_order_project_id +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order__project_id msgid "The analytic account related to a sales order." msgstr "" #. module: purchase_analytic -#: model:ir.model.fields,help:purchase_analytic.field_purchase_order_project_id2 +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order__project_id2 msgid "Use to store the value of project_id if there is no lines" msgstr "" From 1c4ee7a706f019a21ee0c585267749db0c68c916 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 28 Oct 2019 11:37:01 +0000 Subject: [PATCH 07/58] [UPD] README.rst --- purchase_analytic/README.rst | 65 ++- .../static/description/index.html | 423 ++++++++++++++++++ 2 files changed, 466 insertions(+), 22 deletions(-) create mode 100644 purchase_analytic/static/description/index.html diff --git a/purchase_analytic/README.rst b/purchase_analytic/README.rst index f7e2aa16d8..55a48b0eca 100644 --- a/purchase_analytic/README.rst +++ b/purchase_analytic/README.rst @@ -1,57 +1,78 @@ -.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png - :target: https://www.gnu.org/licenses/agpl - :alt: License: AGPL-3 - ================= Purchase Analytic ================= +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github + :target: https://github.com/OCA/account-analytic/tree/12.0/purchase_analytic + :alt: OCA/account-analytic +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-analytic-12-0/account-analytic-12-0-purchase_analytic + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/87/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + The goal of this module is to ease analytic account management on purchase order. This module add analytic account on purchase order. If all lines of the purchase order have the same analytic account, the analytic account on the purchase order is automatically set with this value. If a analytic account is set on the purchase order, all lines of the purchase will take this value. -Usage -===== +**Table of contents** -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/142/12.0 +.. contents:: + :local: Bug Tracker =========== -Bugs are tracked on `GitHub Issues -`_. In case of trouble, please -check there if your issue has already been reported. If you spotted it first, -help us smash it by providing detailed and welcomed feedback. +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Acsone SA/NV Contributors ------------- +~~~~~~~~~~~~ * Laetitia Gangloff * Cédric Pigeon -Maintainer ----------- +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/account-analytic `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_analytic/static/description/index.html b/purchase_analytic/static/description/index.html new file mode 100644 index 0000000000..ede7ad8c23 --- /dev/null +++ b/purchase_analytic/static/description/index.html @@ -0,0 +1,423 @@ + + + + + + +Purchase Analytic + + + +
+

Purchase Analytic

+ + +

Beta License: AGPL-3 OCA/account-analytic Translate me on Weblate Try me on Runbot

+

The goal of this module is to ease analytic account management on purchase order. +This module add analytic account on purchase order.

+

If all lines of the purchase order have the same analytic account, the analytic account on the purchase order is automatically set with this value. +If a analytic account is set on the purchase order, all lines of the purchase will take this value.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Acsone SA/NV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/account-analytic project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From 3bab689aef9a66628a42dc8bfd9c37dac41f4952 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Tue, 5 Nov 2019 13:45:16 +0000 Subject: [PATCH 08/58] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: account-analytic-12.0/account-analytic-12.0-purchase_analytic Translate-URL: https://translation.odoo-community.org/projects/account-analytic-12-0/account-analytic-12-0-purchase_analytic/ --- purchase_analytic/i18n/fr.po | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/purchase_analytic/i18n/fr.po b/purchase_analytic/i18n/fr.po index fe52d8d75f..8cedc9f65a 100644 --- a/purchase_analytic/i18n/fr.po +++ b/purchase_analytic/i18n/fr.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * purchase_analytic +# * purchase_analytic # msgid "" msgstr "" @@ -10,28 +10,35 @@ msgstr "" "PO-Revision-Date: 2016-04-07 08:25+0000\n" "Last-Translator: <>\n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" #. module: purchase_analytic -#: field:purchase.order,project_id2:0 +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order__project_id msgid "Contract / Analytic" msgstr "Contrat / analytique" +#. module: purchase_analytic +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order__project_id2 +msgid "Project Id2" +msgstr "" + #. module: purchase_analytic #: model:ir.model,name:purchase_analytic.model_purchase_order msgid "Purchase Order" msgstr "Bon de commande" #. module: purchase_analytic -#: help:purchase.order,project_id2:0 -msgid "Use to store the value of project_id if there is no lines" -msgstr "Utilisé pour stocker la valeur du champs project_id lorsqu'il n'y a pas de lignes" +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order__project_id +msgid "The analytic account related to a sales order." +msgstr "" #. module: purchase_analytic -#: view:purchase.order:purchase_analytic.purchase_order_view_form_inherit_purchase_analytic -msgid "{'default_account_analytic_id': project_id}" +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order__project_id2 +msgid "Use to store the value of project_id if there is no lines" msgstr "" - +"Utilisé pour stocker la valeur du champs project_id lorsqu'il n'y a pas de " +"lignes" From 45a25b4c38d238cfaa6a9885246cd00e9116899e Mon Sep 17 00:00:00 2001 From: ps-tubtim Date: Wed, 8 Jan 2020 16:33:09 +0700 Subject: [PATCH 09/58] [IMP] purchase_analytic: black, isort --- purchase_analytic/__manifest__.py | 8 +- purchase_analytic/models/purchase.py | 30 ++++--- .../tests/test_purchase_analytic.py | 63 +++++++------ purchase_analytic/views/purchase_views.xml | 89 +++++++++---------- 4 files changed, 96 insertions(+), 94 deletions(-) diff --git a/purchase_analytic/__manifest__.py b/purchase_analytic/__manifest__.py index d5b3ed64c3..bf0839804d 100644 --- a/purchase_analytic/__manifest__.py +++ b/purchase_analytic/__manifest__.py @@ -3,13 +3,11 @@ { "name": "Purchase Analytic", - "version": "12.0.1.0.0", - 'author': "Acsone SA/NV,Odoo Community Association (OCA)", + "version": "13.0.1.0.0", + "author": "Acsone SA/NV,Odoo Community Association (OCA)", "category": "Purchase Management", "website": "https://github.com/OCA/account-analytic", - "depends": [ - "purchase", - ], + "depends": ["purchase"], "data": ["views/purchase_views.xml"], "license": "AGPL-3", "installable": True, diff --git a/purchase_analytic/models/purchase.py b/purchase_analytic/models/purchase.py index c3c8a3fd65..dcef8a9dcf 100644 --- a/purchase_analytic/models/purchase.py +++ b/purchase_analytic/models/purchase.py @@ -5,22 +5,25 @@ class PurchaseOrder(models.Model): - _inherit = 'purchase.order' + _inherit = "purchase.order" project_id2 = fields.Many2one( - comodel_name='account.analytic.account', - help='Use to store the value of project_id if there is no lines') + comodel_name="account.analytic.account", + help="Use to store the value of project_id if there is no lines", + ) project_id = fields.Many2one( - compute='_compute_project_id', - inverse='_inverse_project_id', - comodel_name='account.analytic.account', - string='Contract / Analytic', readonly=True, - states={'draft': [('readonly', False)]}, + compute="_compute_project_id", + inverse="_inverse_project_id", + comodel_name="account.analytic.account", + string="Contract / Analytic", + readonly=True, + states={"draft": [("readonly", False)]}, store=True, - help="The analytic account related to a sales order.") + help="The analytic account related to a sales order.", + ) @api.multi - @api.depends('order_line.account_analytic_id') + @api.depends("order_line.account_analytic_id") def _compute_project_id(self): """ If all order line have same analytic account set project_id """ @@ -40,10 +43,10 @@ def _inverse_project_id(self): """ for po in self: if po.project_id: - po.order_line.write({'account_analytic_id': po.project_id.id}) + po.order_line.write({"account_analytic_id": po.project_id.id}) po.project_id2 = po.project_id - @api.onchange('project_id') + @api.onchange("project_id") def _onchange_project_id(self): """ When change project_id set analytic account on all order lines Do it in one operation to avoid to recompute the project_id field @@ -53,8 +56,7 @@ def _onchange_project_id(self): r = [] for ol in self.order_line: if isinstance(ol.id, int): - r.append((1, ol.id, - {'account_analytic_id': self.project_id.id})) + r.append((1, ol.id, {"account_analytic_id": self.project_id.id})) else: # this is new record, do nothing ! return diff --git a/purchase_analytic/tests/test_purchase_analytic.py b/purchase_analytic/tests/test_purchase_analytic.py index ad2acf215f..f31d06dcdf 100644 --- a/purchase_analytic/tests/test_purchase_analytic.py +++ b/purchase_analytic/tests/test_purchase_analytic.py @@ -1,53 +1,58 @@ # © 2016 Laetitia Gangloff, Acsone SA/NV (http://www.acsone.eu) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo.tests.common import TransactionCase from datetime import datetime +from odoo.tests.common import TransactionCase + class TestPurchaseAnalytic(TransactionCase): - def setUp(self): super(TestPurchaseAnalytic, self).setUp() - self.project = self.env['account.analytic.account'].create({ - 'name': 'Account Analytic for Tests', - }) + self.project = self.env["account.analytic.account"].create( + {"name": "Account Analytic for Tests"} + ) def test_analytic_account(self): """ Create a purchase order with line Set analytic account on purchase Check analytic account on line is set """ - product_id = self.env.ref('product.product_product_9') - po = self.env['purchase.order'].create( - {'partner_id': self.env.ref('base.res_partner_12').id, - 'order_line': [ - (0, 0, { - 'name': product_id.name, - 'product_id': product_id.id, - 'product_qty': 1.0, - 'product_uom': self.env.ref( - 'uom.product_uom_unit').id, - 'price_unit': 121.0, - 'date_planned': datetime.today(), - })], - }) + product_id = self.env.ref("product.product_product_9") + po = self.env["purchase.order"].create( + { + "partner_id": self.env.ref("base.res_partner_12").id, + "order_line": [ + ( + 0, + 0, + { + "name": product_id.name, + "product_id": product_id.id, + "product_qty": 1.0, + "product_uom": self.env.ref("uom.product_uom_unit").id, + "price_unit": 121.0, + "date_planned": datetime.today(), + }, + ) + ], + } + ) po.project_id = self.project.id - self.assertEqual(po.project_id.id, - self.project.id) - self.assertEqual(po.order_line.account_analytic_id.id, - self.project.id) + self.assertEqual(po.project_id.id, self.project.id) + self.assertEqual(po.order_line.account_analytic_id.id, self.project.id) def test_project_id(self): """ Create a purchase order without line Set analytic account on purchase Check analytic account is on purchase """ - po = self.env['purchase.order'].new( - {'partner_id': self.env.ref('base.res_partner_12').id, - 'project_id': self.project.id - }) + po = self.env["purchase.order"].new( + { + "partner_id": self.env.ref("base.res_partner_12").id, + "project_id": self.project.id, + } + ) po._onchange_project_id() - self.assertEqual(po.project_id.id, - self.project.id) + self.assertEqual(po.project_id.id, self.project.id) diff --git a/purchase_analytic/views/purchase_views.xml b/purchase_analytic/views/purchase_views.xml index fd44914709..1933fabef4 100644 --- a/purchase_analytic/views/purchase_views.xml +++ b/purchase_analytic/views/purchase_views.xml @@ -1,49 +1,46 @@ - - - - - purchase.order.search (purchase_analytic) - purchase.order - - - - - - - + + + + purchase.order.search (purchase_analytic) + purchase.order + + + + - - - - purchase.order.tree (purchase_analytic) - purchase.order - - - - - - - + + + + purchase.order.tree (purchase_analytic) + purchase.order + + + + - - - - purchase.order.form (purchase_analytic) - purchase.order - - - - - - - - - {'default_account_analytic_id': project_id} - - + + + + purchase.order.form (purchase_analytic) + purchase.order + + + + + - - - - + + {'default_account_analytic_id': project_id} + +
+ + From 317d07f77f623182fd327a95d533f92ed286cce5 Mon Sep 17 00:00:00 2001 From: ps-tubtim Date: Wed, 25 Mar 2020 11:15:46 +0700 Subject: [PATCH 10/58] [MIG] purchase_analytic: Migration to 13.0 --- purchase_analytic/README.rst | 34 ++++++++++-- purchase_analytic/__manifest__.py | 2 +- purchase_analytic/models/purchase.py | 2 - purchase_analytic/readme/CONTRIBUTORS.rst | 1 + purchase_analytic/readme/HISTORY.rst | 19 +++++++ .../static/description/index.html | 53 ++++++++++++++----- .../tests/test_purchase_analytic.py | 37 +++++++++---- 7 files changed, 117 insertions(+), 31 deletions(-) create mode 100644 purchase_analytic/readme/HISTORY.rst diff --git a/purchase_analytic/README.rst b/purchase_analytic/README.rst index 55a48b0eca..f5b7ff8b35 100644 --- a/purchase_analytic/README.rst +++ b/purchase_analytic/README.rst @@ -14,13 +14,13 @@ Purchase Analytic :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github - :target: https://github.com/OCA/account-analytic/tree/12.0/purchase_analytic + :target: https://github.com/OCA/account-analytic/tree/13.0/purchase_analytic :alt: OCA/account-analytic .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-analytic-12-0/account-analytic-12-0-purchase_analytic + :target: https://translation.odoo-community.org/projects/account-analytic-13-0/account-analytic-13-0-purchase_analytic :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/87/12.0 + :target: https://runbot.odoo-community.org/runbot/87/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -36,13 +36,36 @@ If a analytic account is set on the purchase order, all lines of the purchase wi .. contents:: :local: +Changelog +========= + +13.0.1.0.0 (2020-01-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 13. + +12.0.1.0.0 (2019-10-23) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 12. + +10.0.1.0.0 (2017-05-11) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 10. + +8.0.1.0.0 (2016-04-22) +~~~~~~~~~~~~~~~~~~~~~~~ + +First version. + Bug Tracker =========== Bugs are tracked on `GitHub 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -59,6 +82,7 @@ Contributors * Laetitia Gangloff * Cédric Pigeon +* Pimolnat Suntian Maintainers ~~~~~~~~~~~ @@ -73,6 +97,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/account-analytic `_ project on GitHub. +This module is part of the `OCA/account-analytic `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_analytic/__manifest__.py b/purchase_analytic/__manifest__.py index bf0839804d..401c8cff13 100644 --- a/purchase_analytic/__manifest__.py +++ b/purchase_analytic/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Analytic", "version": "13.0.1.0.0", - "author": "Acsone SA/NV,Odoo Community Association (OCA)", + "author": "Acsone SA/NV, Odoo Community Association (OCA)", "category": "Purchase Management", "website": "https://github.com/OCA/account-analytic", "depends": ["purchase"], diff --git a/purchase_analytic/models/purchase.py b/purchase_analytic/models/purchase.py index dcef8a9dcf..ff9145d681 100644 --- a/purchase_analytic/models/purchase.py +++ b/purchase_analytic/models/purchase.py @@ -22,7 +22,6 @@ class PurchaseOrder(models.Model): help="The analytic account related to a sales order.", ) - @api.multi @api.depends("order_line.account_analytic_id") def _compute_project_id(self): """ If all order line have same analytic account set project_id @@ -37,7 +36,6 @@ def _compute_project_id(self): break po.project_id = al - @api.multi def _inverse_project_id(self): """ When set project_id set analytic account on all order lines """ diff --git a/purchase_analytic/readme/CONTRIBUTORS.rst b/purchase_analytic/readme/CONTRIBUTORS.rst index 987427023e..08489b22c9 100644 --- a/purchase_analytic/readme/CONTRIBUTORS.rst +++ b/purchase_analytic/readme/CONTRIBUTORS.rst @@ -1,2 +1,3 @@ * Laetitia Gangloff * Cédric Pigeon +* Pimolnat Suntian diff --git a/purchase_analytic/readme/HISTORY.rst b/purchase_analytic/readme/HISTORY.rst new file mode 100644 index 0000000000..54ac0b2d82 --- /dev/null +++ b/purchase_analytic/readme/HISTORY.rst @@ -0,0 +1,19 @@ +13.0.1.0.0 (2020-01-08) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 13. + +12.0.1.0.0 (2019-10-23) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 12. + +10.0.1.0.0 (2017-05-11) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 10. + +8.0.1.0.0 (2016-04-22) +~~~~~~~~~~~~~~~~~~~~~~~ + +First version. diff --git a/purchase_analytic/static/description/index.html b/purchase_analytic/static/description/index.html index ede7ad8c23..57b804bf45 100644 --- a/purchase_analytic/static/description/index.html +++ b/purchase_analytic/static/description/index.html @@ -367,7 +367,7 @@

Purchase Analytic

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/account-analytic Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/account-analytic Translate me on Weblate Try me on Runbot

The goal of this module is to ease analytic account management on purchase order. This module add analytic account on purchase order.

If all lines of the purchase order have the same analytic account, the analytic account on the purchase order is automatically set with this value. @@ -375,46 +375,73 @@

Purchase Analytic

Table of contents

+
+

Changelog

+
+

13.0.1.0.0 (2020-01-08)

+

Migrated to odoo 13.

+
+
+

12.0.1.0.0 (2019-10-23)

+

Migrated to odoo 12.

+
+
+

10.0.1.0.0 (2017-05-11)

+

Migrated to odoo 10.

+
+
+

8.0.1.0.0 (2016-04-22)

+

First version.

+
-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub 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.

+feedback.

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • Acsone SA/NV
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/account-analytic project on GitHub.

+

This module is part of the OCA/account-analytic project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/purchase_analytic/tests/test_purchase_analytic.py b/purchase_analytic/tests/test_purchase_analytic.py index f31d06dcdf..eff80b3ed9 100644 --- a/purchase_analytic/tests/test_purchase_analytic.py +++ b/purchase_analytic/tests/test_purchase_analytic.py @@ -8,29 +8,31 @@ class TestPurchaseAnalytic(TransactionCase): def setUp(self): - super(TestPurchaseAnalytic, self).setUp() + super().setUp() + self.partner_id = self.env.ref("base.res_partner_12") + self.product_id = self.env.ref("product.product_product_9") + self.uom_id = self.env.ref("uom.product_uom_unit") self.project = self.env["account.analytic.account"].create( {"name": "Account Analytic for Tests"} ) def test_analytic_account(self): - """ Create a purchase order with line + """ Create a purchase order (create) Set analytic account on purchase Check analytic account on line is set """ - product_id = self.env.ref("product.product_product_9") po = self.env["purchase.order"].create( { - "partner_id": self.env.ref("base.res_partner_12").id, + "partner_id": self.partner_id.id, "order_line": [ ( 0, 0, { - "name": product_id.name, - "product_id": product_id.id, + "name": self.product_id.name, + "product_id": self.product_id.id, "product_qty": 1.0, - "product_uom": self.env.ref("uom.product_uom_unit").id, + "product_uom": self.uom_id.id, "price_unit": 121.0, "date_planned": datetime.today(), }, @@ -38,21 +40,36 @@ def test_analytic_account(self): ], } ) - po.project_id = self.project.id + po._onchange_project_id() self.assertEqual(po.project_id.id, self.project.id) self.assertEqual(po.order_line.account_analytic_id.id, self.project.id) def test_project_id(self): - """ Create a purchase order without line + """ Create a purchase order (new) Set analytic account on purchase Check analytic account is on purchase """ po = self.env["purchase.order"].new( { - "partner_id": self.env.ref("base.res_partner_12").id, + "partner_id": self.partner_id.id, "project_id": self.project.id, + "order_line": [ + ( + 0, + 0, + { + "name": self.product_id.name, + "product_id": self.product_id.id, + "product_qty": 1.0, + "product_uom": self.uom_id.id, + "price_unit": 121.0, + "date_planned": datetime.today(), + }, + ) + ], } ) po._onchange_project_id() self.assertEqual(po.project_id.id, self.project.id) + self.assertFalse(po.order_line.account_analytic_id) From 03555422ebb0e048158522782cc8e9843245f67d Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 30 Mar 2020 15:20:51 +0000 Subject: [PATCH 11/58] [UPD] Update purchase_analytic.pot --- purchase_analytic/i18n/purchase_analytic.pot | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/purchase_analytic/i18n/purchase_analytic.pot b/purchase_analytic/i18n/purchase_analytic.pot index d1d67deb5f..8c96c3150e 100644 --- a/purchase_analytic/i18n/purchase_analytic.pot +++ b/purchase_analytic/i18n/purchase_analytic.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * purchase_analytic +# * purchase_analytic # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,4 +37,3 @@ msgstr "" #: model:ir.model.fields,help:purchase_analytic.field_purchase_order__project_id2 msgid "Use to store the value of project_id if there is no lines" msgstr "" - From 15b6a98aa26f382f6600e9baee5efca70968a051 Mon Sep 17 00:00:00 2001 From: eduardgm Date: Fri, 26 Mar 2021 16:37:29 +0000 Subject: [PATCH 12/58] Added translation using Weblate (Spanish) --- purchase_analytic/i18n/es.po | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 purchase_analytic/i18n/es.po diff --git a/purchase_analytic/i18n/es.po b/purchase_analytic/i18n/es.po new file mode 100644 index 0000000000..d577e6fd84 --- /dev/null +++ b/purchase_analytic/i18n/es.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_analytic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: purchase_analytic +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order__project_id +msgid "Contract / Analytic" +msgstr "" + +#. module: purchase_analytic +#: model:ir.model.fields,field_description:purchase_analytic.field_purchase_order__project_id2 +msgid "Project Id2" +msgstr "" + +#. module: purchase_analytic +#: model:ir.model,name:purchase_analytic.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_analytic +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order__project_id +msgid "The analytic account related to a sales order." +msgstr "" + +#. module: purchase_analytic +#: model:ir.model.fields,help:purchase_analytic.field_purchase_order__project_id2 +msgid "Use to store the value of project_id if there is no lines" +msgstr "" From 6537bf631fdc1fde266357830d08dda1ca65e545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Alan=20Ramos=20Rodri=CC=81guez?= Date: Mon, 29 Nov 2021 15:28:58 -0600 Subject: [PATCH 13/58] [IMP] purchase_analytic: black, isort, prettier --- purchase_analytic/models/purchase.py | 14 ++++++-------- purchase_analytic/tests/test_purchase_analytic.py | 12 ++++++------ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/purchase_analytic/models/purchase.py b/purchase_analytic/models/purchase.py index ff9145d681..342d0cfe67 100644 --- a/purchase_analytic/models/purchase.py +++ b/purchase_analytic/models/purchase.py @@ -24,8 +24,7 @@ class PurchaseOrder(models.Model): @api.depends("order_line.account_analytic_id") def _compute_project_id(self): - """ If all order line have same analytic account set project_id - """ + """If all order line have same analytic account set project_id""" for po in self: al = po.project_id2 if po.order_line: @@ -37,8 +36,7 @@ def _compute_project_id(self): po.project_id = al def _inverse_project_id(self): - """ When set project_id set analytic account on all order lines - """ + """When set project_id set analytic account on all order lines""" for po in self: if po.project_id: po.order_line.write({"account_analytic_id": po.project_id.id}) @@ -46,10 +44,10 @@ def _inverse_project_id(self): @api.onchange("project_id") def _onchange_project_id(self): - """ When change project_id set analytic account on all order lines - Do it in one operation to avoid to recompute the project_id field - during the change. - In case of new record, nothing is recomputed to avoid ugly message + """When change project_id set analytic account on all order lines + Do it in one operation to avoid to recompute the project_id field + during the change. + In case of new record, nothing is recomputed to avoid ugly message """ r = [] for ol in self.order_line: diff --git a/purchase_analytic/tests/test_purchase_analytic.py b/purchase_analytic/tests/test_purchase_analytic.py index eff80b3ed9..88eed8f6e4 100644 --- a/purchase_analytic/tests/test_purchase_analytic.py +++ b/purchase_analytic/tests/test_purchase_analytic.py @@ -17,9 +17,9 @@ def setUp(self): ) def test_analytic_account(self): - """ Create a purchase order (create) - Set analytic account on purchase - Check analytic account on line is set + """Create a purchase order (create) + Set analytic account on purchase + Check analytic account on line is set """ po = self.env["purchase.order"].create( { @@ -46,9 +46,9 @@ def test_analytic_account(self): self.assertEqual(po.order_line.account_analytic_id.id, self.project.id) def test_project_id(self): - """ Create a purchase order (new) - Set analytic account on purchase - Check analytic account is on purchase + """Create a purchase order (new) + Set analytic account on purchase + Check analytic account is on purchase """ po = self.env["purchase.order"].new( { From e4247dd81ed341ef24fb7a38cde23c3187b43418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Alan=20Ramos=20Rodri=CC=81guez?= Date: Mon, 29 Nov 2021 15:39:29 -0600 Subject: [PATCH 14/58] [MIG] purchase_analytic: Migration to 15.0 --- purchase_analytic/README.rst | 13 ++++++++----- purchase_analytic/__manifest__.py | 2 +- purchase_analytic/readme/CONTRIBUTORS.rst | 3 +++ purchase_analytic/readme/HISTORY.rst | 5 +++++ purchase_analytic/static/description/index.html | 12 ++++++++---- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/purchase_analytic/README.rst b/purchase_analytic/README.rst index f5b7ff8b35..4620e060b6 100644 --- a/purchase_analytic/README.rst +++ b/purchase_analytic/README.rst @@ -14,13 +14,13 @@ Purchase Analytic :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--analytic-lightgray.png?logo=github - :target: https://github.com/OCA/account-analytic/tree/13.0/purchase_analytic + :target: https://github.com/OCA/account-analytic/tree/15.0/purchase_analytic :alt: OCA/account-analytic .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-analytic-13-0/account-analytic-13-0-purchase_analytic + :target: https://translation.odoo-community.org/projects/account-analytic-15-0/account-analytic-15-0-purchase_analytic :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/87/13.0 + :target: https://runbot.odoo-community.org/runbot/87/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -65,7 +65,7 @@ Bug Tracker Bugs are tracked on `GitHub 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -83,6 +83,9 @@ Contributors * Laetitia Gangloff * Cédric Pigeon * Pimolnat Suntian +* `Jarsa `_ + + * Alan Ramos Maintainers ~~~~~~~~~~~ @@ -97,6 +100,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/account-analytic `_ project on GitHub. +This module is part of the `OCA/account-analytic `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_analytic/__manifest__.py b/purchase_analytic/__manifest__.py index 401c8cff13..651ddfa402 100644 --- a/purchase_analytic/__manifest__.py +++ b/purchase_analytic/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Analytic", - "version": "13.0.1.0.0", + "version": "15.0.1.0.0", "author": "Acsone SA/NV, Odoo Community Association (OCA)", "category": "Purchase Management", "website": "https://github.com/OCA/account-analytic", diff --git a/purchase_analytic/readme/CONTRIBUTORS.rst b/purchase_analytic/readme/CONTRIBUTORS.rst index 08489b22c9..30870e9d12 100644 --- a/purchase_analytic/readme/CONTRIBUTORS.rst +++ b/purchase_analytic/readme/CONTRIBUTORS.rst @@ -1,3 +1,6 @@ * Laetitia Gangloff * Cédric Pigeon * Pimolnat Suntian +* `Jarsa `_ + + * Alan Ramos diff --git a/purchase_analytic/readme/HISTORY.rst b/purchase_analytic/readme/HISTORY.rst index 54ac0b2d82..8710d7a6ed 100644 --- a/purchase_analytic/readme/HISTORY.rst +++ b/purchase_analytic/readme/HISTORY.rst @@ -1,3 +1,8 @@ +15.0.1.0.0 (2022-05-17) +~~~~~~~~~~~~~~~~~~~~~~~ + +Migrated to odoo 15. + 13.0.1.0.0 (2020-01-08) ~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/purchase_analytic/static/description/index.html b/purchase_analytic/static/description/index.html index 57b804bf45..95461d9712 100644 --- a/purchase_analytic/static/description/index.html +++ b/purchase_analytic/static/description/index.html @@ -3,7 +3,7 @@ - + Purchase Analytic