From 73da827f767e68b40ec0d98fbc8ed01660f1e16a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Thu, 17 Nov 2016 22:44:48 +0100 Subject: [PATCH 01/14] purchase_variant_configurator_on_confirm OCA Transbot updated translations from Transifex --- .../README.rst | 83 ++++++++++++++ .../__init__.py | 1 + .../__openerp__.py | 24 ++++ .../i18n/es.po | 34 ++++++ .../i18n/it.po | 35 ++++++ .../i18n/pt_BR.po | 34 ++++++ .../i18n/ro.po | 34 ++++++ .../i18n/sl.po | 34 ++++++ .../models/__init__.py | 3 + .../models/product_template.py | 42 +++++++ .../models/purchase_order.py | 31 ++++++ .../models/purchase_order_line.py | 104 ++++++++++++++++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../views/inherited_purchase_order_views.xml | 18 +++ 14 files changed, 477 insertions(+) create mode 100644 purchase_variant_configurator_on_confirm/README.rst create mode 100644 purchase_variant_configurator_on_confirm/__init__.py create mode 100644 purchase_variant_configurator_on_confirm/__openerp__.py create mode 100644 purchase_variant_configurator_on_confirm/i18n/es.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/it.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/pt_BR.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/ro.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/sl.po create mode 100644 purchase_variant_configurator_on_confirm/models/__init__.py create mode 100644 purchase_variant_configurator_on_confirm/models/product_template.py create mode 100644 purchase_variant_configurator_on_confirm/models/purchase_order.py create mode 100644 purchase_variant_configurator_on_confirm/models/purchase_order_line.py create mode 100644 purchase_variant_configurator_on_confirm/static/description/icon.png create mode 100644 purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml diff --git a/purchase_variant_configurator_on_confirm/README.rst b/purchase_variant_configurator_on_confirm/README.rst new file mode 100644 index 000000000..699143f12 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/README.rst @@ -0,0 +1,83 @@ +.. 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 Variant Configurator On Confirm +======================================== + +Create product variants when confirming the purchase order + +Installation +============ + +To install this module, you need to: + +#. Do this ... + +Configuration +============= + +To configure this module, you need to: + +#. Go to ... + +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/{repo_id}/{branch} + +.. repo_id is available in https://github.com/OCA/maintainer-tools/blob/master/tools/repos_with_ids.txt +.. branch is "8.0" for example + +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 +------------ + +* Oihane Crucelaegui +* David Díaz +* Pedro M. Baeza +* Ana Juaristi +* Zakaria Makrelouf +* Stéphane Bidoul + +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. diff --git a/purchase_variant_configurator_on_confirm/__init__.py b/purchase_variant_configurator_on_confirm/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_variant_configurator_on_confirm/__openerp__.py b/purchase_variant_configurator_on_confirm/__openerp__.py new file mode 100644 index 000000000..2b3781691 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/__openerp__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Purchase Variant Configurator On Confirm', + 'summary': """ + Create product variants when confirming the purchase order""", + 'version': '9.0.1.0.0', + 'license': 'AGPL-3', + "author": "AvanzOSC, " + "Tecnativa, " + "ACSONE SA/NV," + "Odoo Community Association (OCA)", + 'website': 'https://odoo-community.org/', + 'depends': [ + 'purchase_variant_configurator', + ], + 'data': [ + "views/inherited_purchase_order_views.xml", + ], + 'demo': [ + ], +} diff --git a/purchase_variant_configurator_on_confirm/i18n/es.po b/purchase_variant_configurator_on_confirm/i18n/es.po new file mode 100644 index 000000000..65cca304e --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/es.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-08 10:01+0000\n" +"PO-Revision-Date: 2017-01-08 10:01+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Plantilla de producto" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Línea pedido de compra" diff --git a/purchase_variant_configurator_on_confirm/i18n/it.po b/purchase_variant_configurator_on_confirm/i18n/it.po new file mode 100644 index 000000000..182a1e2a1 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/it.po @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +# Paolo Valier , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-14 05:31+0000\n" +"PO-Revision-Date: 2017-01-14 05:31+0000\n" +"Last-Translator: Paolo Valier , 2017\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Template prodotto" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "Ordine d'Acquisto" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/pt_BR.po b/purchase_variant_configurator_on_confirm/i18n/pt_BR.po new file mode 100644 index 000000000..1d77d3bf8 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/pt_BR.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-08 10:01+0000\n" +"PO-Revision-Date: 2017-01-08 10:01+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Produto Modelo" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Linha pedido de compra" diff --git a/purchase_variant_configurator_on_confirm/i18n/ro.po b/purchase_variant_configurator_on_confirm/i18n/ro.po new file mode 100644 index 000000000..4428ca7fa --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/ro.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-08 10:01+0000\n" +"PO-Revision-Date: 2017-01-08 10:01+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Produs șablon" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Linie comandă achiziție" diff --git a/purchase_variant_configurator_on_confirm/i18n/sl.po b/purchase_variant_configurator_on_confirm/i18n/sl.po new file mode 100644 index 000000000..5d478fbb1 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/sl.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-08 10:01+0000\n" +"PO-Revision-Date: 2017-01-08 10:01+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Predloga proizvoda" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Postavka nabavnega naloga" diff --git a/purchase_variant_configurator_on_confirm/models/__init__.py b/purchase_variant_configurator_on_confirm/models/__init__.py new file mode 100644 index 000000000..582c19d1a --- /dev/null +++ b/purchase_variant_configurator_on_confirm/models/__init__.py @@ -0,0 +1,3 @@ +from . import product_template +from . import purchase_order +from . import purchase_order_line diff --git a/purchase_variant_configurator_on_confirm/models/product_template.py b/purchase_variant_configurator_on_confirm/models/product_template.py new file mode 100644 index 000000000..06afa80b4 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/models/product_template.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# © 2016 ACSONE SA/NV +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from openerp import api, models +from openerp.tools import DEFAULT_SERVER_DATE_FORMAT + +import time + + +class ProductTemplate(models.Model): + + _inherit = 'product.template' + + @api.multi + def _select_seller(self, partner_id=False, quantity=0.0, + date=time.strftime(DEFAULT_SERVER_DATE_FORMAT), + uom_id=False): + # this method is copied from the standard _select_seller on the + # product.product model + self.ensure_one() + res = self.env['product.supplierinfo'].browse([]) + for seller in self.seller_ids: + quantity_uom_seller = quantity + if quantity_uom_seller and uom_id and uom_id != seller.product_uom: + quantity_uom_seller = uom_id._compute_qty_obj( + uom_id, quantity_uom_seller, seller.product_uom) + if seller.date_start and seller.date_start > date: + continue + if seller.date_end and seller.date_end < date: + continue + if partner_id and seller.name not in [partner_id, + partner_id.parent_id]: + continue + if quantity_uom_seller < seller.qty: + continue + if seller.product_tmpl_id and seller.product_tmpl_id != self: + continue + + res |= seller + break + return res diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order.py b/purchase_variant_configurator_on_confirm/models/purchase_order.py new file mode 100644 index 000000000..686b5dafa --- /dev/null +++ b/purchase_variant_configurator_on_confirm/models/purchase_order.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# © 2016 Oihane Crucelaegui - AvanzOSC +# © 2016 Pedro M. Baeza +# © 2016 ACSONE SA/NV +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from openerp import api, models + + +class PurchaseOrder(models.Model): + _inherit = "purchase.order" + + @api.multi + def button_confirm(self): + """Create possible product variants not yet created.""" + product_obj = self.env['product.product'] + lines_without_product = self.order_line.filtered( + lambda x: not x.product_id and x.product_tmpl_id) + + for line in lines_without_product: + + product = product_obj._product_find( + line.product_tmpl_id, line.product_attribute_ids) + if not product: + product = product_obj.create({ + 'product_tmpl_id': line.product_tmpl_id.id, + 'attribute_value_ids': + [(6, 0, + line.product_attribute_ids.mapped('value_id').ids)]}) + line.write({'product_id': product.id}) + return super(PurchaseOrder, self).button_confirm() diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order_line.py b/purchase_variant_configurator_on_confirm/models/purchase_order_line.py new file mode 100644 index 000000000..a9ada7e86 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/models/purchase_order_line.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +# © 2016 Oihane Crucelaegui - AvanzOSC +# © 2016 Pedro M. Baeza +# © 2016 ACSONE SA/NV +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from openerp import api, fields, models +from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT + +from datetime import datetime + + +class PurchaseOrderLine(models.Model): + _inherit = ['purchase.order.line', 'product.configurator'] + _name = 'purchase.order.line' + + product_id = fields.Many2one(required=False) + + @api.onchange('product_tmpl_id') + def onchange_product_tmpl_id(self): + # this method is copied from the standard onchange_product_id + result = {} + if not self.product_tmpl_id: + return {} + + self.date_planned = datetime.today().strftime( + DEFAULT_SERVER_DATETIME_FORMAT) + self.price_unit = self.product_qty = 0.0 + self.product_uom = self.product_tmpl_id.uom_po_id or\ + self.product_tmpl_id.uom_id + result['domain'] = { + 'product_uom': + [('category_id', '=', + self.product_tmpl_id.uom_id.category_id.id)] + } + + product_lang = self.product_tmpl_id.with_context({ + 'lang': self.partner_id.lang, + 'partner_id': self.partner_id.id, + }) + self.name = product_lang.name + if product_lang.description_purchase: + self.name += '\n' + self.product_tmpl_id.description_purchase + + fpos = self.order_id.fiscal_position_id + company_id = self.env.user.company_id.id + self.taxes_id = fpos.map_tax( + self.product_tmpl_id.supplier_taxes_id.filtered( + lambda r: r.company_id.id == company_id) + ) + self._suggest_quantity_tmpl() + self._onchange_quantity_tmpl() + + return result + + def _suggest_quantity_tmpl(self): + # this method is copied from the standard _suggest_quantity + if not self.product_tmpl_id: + return + + seller_min_qty = self.product_tmpl_id.seller_ids \ + .filtered(lambda r: r.name == self.order_id.partner_id) \ + .sorted(key=lambda r: r.min_qty) + if seller_min_qty: + self.product_qty = seller_min_qty[0].min_qty or 1.0 + self.product_uom = seller_min_qty[0].product_uom + else: + self.product_qty = 1.0 + + @api.onchange('product_qty', 'product_uom') + def _onchange_quantity_tmpl(self): + # this method is copied from the standard _onchange_quantity + if not self.product_tmpl_id: + return + + # + seller = self.product_tmpl_id._select_seller( + partner_id=self.partner_id, + quantity=self.product_qty, + date=self.order_id.date_order and self.order_id.date_order[:10], + uom_id=self.product_uom) + + if seller or not self.date_planned: + self.date_planned = self._get_date_planned(seller).strftime( + DEFAULT_SERVER_DATETIME_FORMAT) + + if not seller: + return + + price_unit = self.env['account.tax']._fix_tax_included_price( + seller.price, self.product_tmpl_id.supplier_taxes_id, + self.taxes_id) if seller else 0.0 + if price_unit and seller and self.order_id.currency_id and \ + seller.currency_id != self.order_id.currency_id: + price_unit = seller.currency_id.compute(price_unit, + self.order_id.currency_id) + + if seller and self.product_uom and \ + seller.product_uom != self.product_uom: + price_unit = self.env['product.uom']._compute_price( + seller.product_uom.id, price_unit, + to_uom_id=self.product_uom.id) + + self.price_unit = price_unit diff --git a/purchase_variant_configurator_on_confirm/static/description/icon.png b/purchase_variant_configurator_on_confirm/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 diff --git a/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml b/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml new file mode 100644 index 000000000..2de30bea0 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml @@ -0,0 +1,18 @@ + + + + + + purchase.order.extended.form + purchase.order + + + + + + + + + + + From c82e658d3d948003392cb6fadab5c6d90ed7d3b9 Mon Sep 17 00:00:00 2001 From: David Vidal Date: Wed, 5 Jul 2017 11:20:25 +0200 Subject: [PATCH 02/14] [MIG] purchase_variant_configurator_on_confirm: Migration to 10.0 --- .../README.rst | 31 +---- .../__init__.py | 2 + .../{__openerp__.py => __manifest__.py} | 9 +- .../models/__init__.py | 2 + .../models/product_template.py | 46 +++----- .../models/purchase_order.py | 10 +- .../models/purchase_order_line.py | 107 +++--------------- .../tests/__init__.py | 3 + .../tests/test_purchase_order.py | 78 +++++++++++++ .../views/inherited_purchase_order_views.xml | 6 +- 10 files changed, 131 insertions(+), 163 deletions(-) rename purchase_variant_configurator_on_confirm/{__openerp__.py => __manifest__.py} (73%) create mode 100644 purchase_variant_configurator_on_confirm/tests/__init__.py create mode 100644 purchase_variant_configurator_on_confirm/tests/test_purchase_order.py diff --git a/purchase_variant_configurator_on_confirm/README.rst b/purchase_variant_configurator_on_confirm/README.rst index 699143f12..805d7b2a2 100644 --- a/purchase_variant_configurator_on_confirm/README.rst +++ b/purchase_variant_configurator_on_confirm/README.rst @@ -6,40 +6,14 @@ Purchase Variant Configurator On Confirm ======================================== -Create product variants when confirming the purchase order - -Installation -============ - -To install this module, you need to: - -#. Do this ... - -Configuration -============= - -To configure this module, you need to: - -#. Go to ... +Create product variants when confirming the purchase order. 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/{repo_id}/{branch} - -.. repo_id is available in https://github.com/OCA/maintainer-tools/blob/master/tools/repos_with_ids.txt -.. branch is "8.0" for example - -Known issues / Roadmap -====================== - -* ... + :target: https://runbot.odoo-community.org/runbot/188/10.0 Bug Tracker =========== @@ -66,6 +40,7 @@ Contributors * Ana Juaristi * Zakaria Makrelouf * Stéphane Bidoul +* David Vidal Maintainer ---------- diff --git a/purchase_variant_configurator_on_confirm/__init__.py b/purchase_variant_configurator_on_confirm/__init__.py index 0650744f6..cde864bae 100644 --- a/purchase_variant_configurator_on_confirm/__init__.py +++ b/purchase_variant_configurator_on_confirm/__init__.py @@ -1 +1,3 @@ +# -*- coding: utf-8 -*- + from . import models diff --git a/purchase_variant_configurator_on_confirm/__openerp__.py b/purchase_variant_configurator_on_confirm/__manifest__.py similarity index 73% rename from purchase_variant_configurator_on_confirm/__openerp__.py rename to purchase_variant_configurator_on_confirm/__manifest__.py index 2b3781691..181ad1445 100644 --- a/purchase_variant_configurator_on_confirm/__openerp__.py +++ b/purchase_variant_configurator_on_confirm/__manifest__.py @@ -1,12 +1,14 @@ # -*- coding: utf-8 -*- +# Copyright 2016 Oihane Crucelaegui - AvanzOSC +# Copyright 2016 Pedro M. Baeza # Copyright 2016 ACSONE SA/NV +# Copyright 2017 David Vidal # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - { 'name': 'Purchase Variant Configurator On Confirm', 'summary': """ Create product variants when confirming the purchase order""", - 'version': '9.0.1.0.0', + 'version': '10.0.1.0.0', 'license': 'AGPL-3', "author": "AvanzOSC, " "Tecnativa, " @@ -19,6 +21,5 @@ 'data': [ "views/inherited_purchase_order_views.xml", ], - 'demo': [ - ], + 'installable': True, } diff --git a/purchase_variant_configurator_on_confirm/models/__init__.py b/purchase_variant_configurator_on_confirm/models/__init__.py index 582c19d1a..41a25c483 100644 --- a/purchase_variant_configurator_on_confirm/models/__init__.py +++ b/purchase_variant_configurator_on_confirm/models/__init__.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + from . import product_template from . import purchase_order from . import purchase_order_line diff --git a/purchase_variant_configurator_on_confirm/models/product_template.py b/purchase_variant_configurator_on_confirm/models/product_template.py index 06afa80b4..1cec0bce0 100644 --- a/purchase_variant_configurator_on_confirm/models/product_template.py +++ b/purchase_variant_configurator_on_confirm/models/product_template.py @@ -1,42 +1,28 @@ # -*- coding: utf-8 -*- -# © 2016 ACSONE SA/NV +# Copyright 2016 ACSONE SA/NV +# Copyright 2017 David Vidal +# Copyright 2017 Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from openerp import api, models -from openerp.tools import DEFAULT_SERVER_DATE_FORMAT - -import time +from odoo import models class ProductTemplate(models.Model): _inherit = 'product.template' - @api.multi - def _select_seller(self, partner_id=False, quantity=0.0, - date=time.strftime(DEFAULT_SERVER_DATE_FORMAT), + def _select_seller(self, partner_id=False, quantity=0.0, date=None, uom_id=False): - # this method is copied from the standard _select_seller on the - # product.product model + """ Make use of ProductProduct _select_seller method """ self.ensure_one() - res = self.env['product.supplierinfo'].browse([]) - for seller in self.seller_ids: - quantity_uom_seller = quantity - if quantity_uom_seller and uom_id and uom_id != seller.product_uom: - quantity_uom_seller = uom_id._compute_qty_obj( - uom_id, quantity_uom_seller, seller.product_uom) - if seller.date_start and seller.date_start > date: - continue - if seller.date_end and seller.date_end < date: - continue - if partner_id and seller.name not in [partner_id, - partner_id.parent_id]: - continue - if quantity_uom_seller < seller.qty: - continue - if seller.product_tmpl_id and seller.product_tmpl_id != self: - continue + product = self._product_from_tmpl() + return product._select_seller( + partner_id=partner_id, quantity=quantity, date=date, uom_id=uom_id, + ) - res |= seller - break - return res + def _product_from_tmpl(self): + """ Creates a product in memory from template to use its methods """ + return self.env['product.product'].new({ + 'product_tmpl_id': self.id, + 'name': self.name, + }) diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order.py b/purchase_variant_configurator_on_confirm/models/purchase_order.py index 686b5dafa..93f58de65 100644 --- a/purchase_variant_configurator_on_confirm/models/purchase_order.py +++ b/purchase_variant_configurator_on_confirm/models/purchase_order.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -# © 2016 Oihane Crucelaegui - AvanzOSC -# © 2016 Pedro M. Baeza -# © 2016 ACSONE SA/NV +# Copyright 2016 Oihane Crucelaegui - AvanzOSC +# Copyright 2016 Pedro M. Baeza +# Copyright 2016 ACSONE SA/NV # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from openerp import api, models +from odoo import api, models class PurchaseOrder(models.Model): @@ -16,9 +16,7 @@ def button_confirm(self): product_obj = self.env['product.product'] lines_without_product = self.order_line.filtered( lambda x: not x.product_id and x.product_tmpl_id) - for line in lines_without_product: - product = product_obj._product_find( line.product_tmpl_id, line.product_attribute_ids) if not product: diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order_line.py b/purchase_variant_configurator_on_confirm/models/purchase_order_line.py index a9ada7e86..e10a13b54 100644 --- a/purchase_variant_configurator_on_confirm/models/purchase_order_line.py +++ b/purchase_variant_configurator_on_confirm/models/purchase_order_line.py @@ -1,13 +1,11 @@ # -*- coding: utf-8 -*- -# © 2016 Oihane Crucelaegui - AvanzOSC -# © 2016 Pedro M. Baeza -# © 2016 ACSONE SA/NV +# Copyright 2016 Oihane Crucelaegui - AvanzOSC +# Copyright 2016 Pedro M. Baeza +# Copyright 2016 ACSONE SA/NV +# Copyright 2017 David Vidal # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from openerp import api, fields, models -from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT - -from datetime import datetime +from odoo import api, fields, models class PurchaseOrderLine(models.Model): @@ -16,89 +14,16 @@ class PurchaseOrderLine(models.Model): product_id = fields.Many2one(required=False) + def onchange_product_id(self): + if self.env.context.get('product_id'): + self.product_id = self.env.context.get('product_id') + return super(PurchaseOrderLine, self).onchange_product_id() + @api.onchange('product_tmpl_id') def onchange_product_tmpl_id(self): - # this method is copied from the standard onchange_product_id - result = {} - if not self.product_tmpl_id: - return {} - - self.date_planned = datetime.today().strftime( - DEFAULT_SERVER_DATETIME_FORMAT) - self.price_unit = self.product_qty = 0.0 - self.product_uom = self.product_tmpl_id.uom_po_id or\ - self.product_tmpl_id.uom_id - result['domain'] = { - 'product_uom': - [('category_id', '=', - self.product_tmpl_id.uom_id.category_id.id)] - } - - product_lang = self.product_tmpl_id.with_context({ - 'lang': self.partner_id.lang, - 'partner_id': self.partner_id.id, - }) - self.name = product_lang.name - if product_lang.description_purchase: - self.name += '\n' + self.product_tmpl_id.description_purchase - - fpos = self.order_id.fiscal_position_id - company_id = self.env.user.company_id.id - self.taxes_id = fpos.map_tax( - self.product_tmpl_id.supplier_taxes_id.filtered( - lambda r: r.company_id.id == company_id) - ) - self._suggest_quantity_tmpl() - self._onchange_quantity_tmpl() - - return result - - def _suggest_quantity_tmpl(self): - # this method is copied from the standard _suggest_quantity - if not self.product_tmpl_id: - return - - seller_min_qty = self.product_tmpl_id.seller_ids \ - .filtered(lambda r: r.name == self.order_id.partner_id) \ - .sorted(key=lambda r: r.min_qty) - if seller_min_qty: - self.product_qty = seller_min_qty[0].min_qty or 1.0 - self.product_uom = seller_min_qty[0].product_uom - else: - self.product_qty = 1.0 - - @api.onchange('product_qty', 'product_uom') - def _onchange_quantity_tmpl(self): - # this method is copied from the standard _onchange_quantity - if not self.product_tmpl_id: - return - - # - seller = self.product_tmpl_id._select_seller( - partner_id=self.partner_id, - quantity=self.product_qty, - date=self.order_id.date_order and self.order_id.date_order[:10], - uom_id=self.product_uom) - - if seller or not self.date_planned: - self.date_planned = self._get_date_planned(seller).strftime( - DEFAULT_SERVER_DATETIME_FORMAT) - - if not seller: - return - - price_unit = self.env['account.tax']._fix_tax_included_price( - seller.price, self.product_tmpl_id.supplier_taxes_id, - self.taxes_id) if seller else 0.0 - if price_unit and seller and self.order_id.currency_id and \ - seller.currency_id != self.order_id.currency_id: - price_unit = seller.currency_id.compute(price_unit, - self.order_id.currency_id) - - if seller and self.product_uom and \ - seller.product_uom != self.product_uom: - price_unit = self.env['product.uom']._compute_price( - seller.product_uom.id, price_unit, - to_uom_id=self.product_uom.id) - - self.price_unit = price_unit + """ Make use of PurchaseOrderLine onchange_product_id method """ + product = self.product_tmpl_id.with_context({ + 'lang': self.order_id.partner_id.lang, + 'partner_id': self.order_id.partner_id.id, + })._product_from_tmpl() + return self.with_context({'product_id': product}).onchange_product_id() diff --git a/purchase_variant_configurator_on_confirm/tests/__init__.py b/purchase_variant_configurator_on_confirm/tests/__init__.py new file mode 100644 index 000000000..d2534f131 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_purchase_order diff --git a/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py b/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py new file mode 100644 index 000000000..c58b29c75 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 David Vidal +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo.tests.common import SavepointCase + + +class TestPurchaseOrder(SavepointCase): + @classmethod + def setUpClass(cls): + super(TestPurchaseOrder, cls).setUpClass() + # ENVIRONMENTS + cls.product_attribute = cls.env['product.attribute'] + cls.product_attribute_value = cls.env['product.attribute.value'] + cls.product_template = cls.env['product.template'].with_context( + check_variant_creation=True) + cls.purchase_order = cls.env['purchase.order'] + cls.product_product = cls.env['product.product'] + cls.purchase_order_line = cls.env['purchase.order.line'] + cls.res_partner = cls.env['res.partner'] + cls.product_category = cls.env['product.category'] + # Instances: product category + cls.category1 = cls.product_category.create({ + 'name': 'No create variants category', + }) + # Instances: product attribute + cls.attribute1 = cls.product_attribute.create({ + 'name': 'Test Attribute 1', + }) + # Instances: product attribute value + cls.value1 = cls.product_attribute_value.create({ + 'name': 'Value 1', + 'attribute_id': cls.attribute1.id, + }) + cls.value2 = cls.product_attribute_value.create({ + 'name': 'Value 2', + 'attribute_id': cls.attribute1.id, + }) + # Instances: product template + cls.product_template_yes = cls.product_template.create({ + 'name': 'Product template 1', + 'no_create_variants': 'yes', + 'categ_id': cls.category1.id, + 'attribute_line_ids': [ + (0, 0, {'attribute_id': cls.attribute1.id, + 'value_ids': [(6, 0, [cls.value1.id, + cls.value2.id])]})], + }) + cls.product_template_no = cls.product_template.create({ + 'name': 'Product template 2', + 'categ_id': cls.category1.id, + 'no_create_variants': 'no', + 'description_purchase': "Purchase Description" + }) + cls.supplier = cls.res_partner.create({ + 'name': 'Supplier 1', + 'is_company': True, + 'supplier': True, + }) + + def test_onchange_product_tmpl_id(self): + order = self.purchase_order.create({ + 'partner_id': self.supplier.id, + + }) + line1 = self.purchase_order_line.new({ + 'order_id': order.id, + 'product_tmpl_id': self.product_template_yes.id, + 'price_unit': 100, + 'product_uom': self.product_template_yes.uom_id.id, + 'product_qty': 1, + 'name': 'Line 1', + 'date_planned': '2017-01-01', + + }) + line1.product_tmpl_id = self.product_template_no + line1.onchange_product_tmpl_id() + self.assertEqual(line1.name, self.product_template_no.name) diff --git a/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml b/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml index 2de30bea0..ab55a16ed 100644 --- a/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml +++ b/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml @@ -1,6 +1,5 @@ - - + purchase.order.extended.form @@ -14,5 +13,4 @@ - - + From c323b843076dc3ac9ca65c31796cc26faef57051 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 14 Dec 2017 19:46:19 +0100 Subject: [PATCH 03/14] [FIX] *_variant_configurator*: Adjust things for proper purchase on confirm OCA Transbot updated translations from Transifex [UPD] Update purchase_variant_configurator_on_confirm.pot --- .../i18n/ar.po | 40 ++++++++ .../i18n/ca.po | 39 ++++++++ .../i18n/de.po | 39 ++++++++ .../i18n/es.po | 18 ++-- .../i18n/es_MX.po | 40 ++++++++ .../i18n/fi.po | 39 ++++++++ .../i18n/fr.po | 39 ++++++++ .../i18n/fr_CH.po | 40 ++++++++ .../i18n/hr.po | 41 ++++++++ .../i18n/hr_HR.po | 42 ++++++++ .../i18n/it.po | 21 ++-- .../i18n/nl_NL.po | 40 ++++++++ .../i18n/pt_BR.po | 18 ++-- ...rchase_variant_configurator_on_confirm.pot | 35 +++++++ .../i18n/ro.po | 18 ++-- .../i18n/sl.po | 18 ++-- .../i18n/tr_TR.po | 40 ++++++++ .../i18n/vi_VN.po | 40 ++++++++ .../i18n/zh_CN.po | 40 ++++++++ .../models/__init__.py | 2 +- .../models/product_product.py | 23 +++++ .../models/product_template.py | 10 -- .../models/purchase_order.py | 75 +++++++++++--- .../models/purchase_order_line.py | 29 ------ .../tests/test_purchase_order.py | 97 ++++++++++++------- 25 files changed, 764 insertions(+), 119 deletions(-) create mode 100644 purchase_variant_configurator_on_confirm/i18n/ar.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/ca.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/de.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/es_MX.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/fi.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/fr.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/fr_CH.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/hr.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/hr_HR.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/nl_NL.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot create mode 100644 purchase_variant_configurator_on_confirm/i18n/tr_TR.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/vi_VN.po create mode 100644 purchase_variant_configurator_on_confirm/i18n/zh_CN.po create mode 100644 purchase_variant_configurator_on_confirm/models/product_product.py delete mode 100644 purchase_variant_configurator_on_confirm/models/purchase_order_line.py diff --git a/purchase_variant_configurator_on_confirm/i18n/ar.po b/purchase_variant_configurator_on_confirm/i18n/ar.po new file mode 100644 index 000000000..8ea500f90 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/ar.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# abdullah alsabi , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: abdullah alsabi , 2017\n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "المنتج" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/ca.po b/purchase_variant_configurator_on_confirm/i18n/ca.po new file mode 100644 index 000000000..ed1879b1a --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/ca.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Plantilla del producte" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/de.po b/purchase_variant_configurator_on_confirm/i18n/de.po new file mode 100644 index 000000000..9273d1ae1 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/de.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Produktvorlage" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/es.po b/purchase_variant_configurator_on_confirm/i18n/es.po index 65cca304e..a3a0cab83 100644 --- a/purchase_variant_configurator_on_confirm/i18n/es.po +++ b/purchase_variant_configurator_on_confirm/i18n/es.po @@ -1,23 +1,29 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * purchase_variant_configurator_on_confirm -# +# # Translators: # OCA Transbot , 2017 +# Luis M. Ontalba , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-08 10:01+0000\n" -"PO-Revision-Date: 2017-01-08 10:01+0000\n" -"Last-Translator: OCA Transbot , 2017\n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: Luis M. Ontalba , 2017\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Producto" + #. module: purchase_variant_configurator_on_confirm #: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template msgid "Product Template" diff --git a/purchase_variant_configurator_on_confirm/i18n/es_MX.po b/purchase_variant_configurator_on_confirm/i18n/es_MX.po new file mode 100644 index 000000000..9eae05569 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/es_MX.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Plantilla del producto" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/fi.po b/purchase_variant_configurator_on_confirm/i18n/fi.po new file mode 100644 index 000000000..bbb9b50ca --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/fi.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Tuotteen malli" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/fr.po b/purchase_variant_configurator_on_confirm/i18n/fr.po new file mode 100644 index 000000000..d8636e840 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/fr.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Article" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Modèle de produit" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/fr_CH.po b/purchase_variant_configurator_on_confirm/i18n/fr_CH.po new file mode 100644 index 000000000..cb297db85 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/fr_CH.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/" +"teams/23907/fr_CH/)\n" +"Language: fr_CH\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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Template de produit" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/hr.po b/purchase_variant_configurator_on_confirm/i18n/hr.po new file mode 100644 index 000000000..3ee491829 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/hr.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-23 02:10+0000\n" +"PO-Revision-Date: 2018-02-23 02:10+0000\n" +"Last-Translator: Bole , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Proizvod" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Predložak proizvoda" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "Nalog za nabavu" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "Stavka naloga za nabavu" diff --git a/purchase_variant_configurator_on_confirm/i18n/hr_HR.po b/purchase_variant_configurator_on_confirm/i18n/hr_HR.po new file mode 100644 index 000000000..c7ef553e4 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/hr_HR.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# Bole , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Proizvod" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Predložak proizvoda" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/it.po b/purchase_variant_configurator_on_confirm/i18n/it.po index 182a1e2a1..23baafd17 100644 --- a/purchase_variant_configurator_on_confirm/i18n/it.po +++ b/purchase_variant_configurator_on_confirm/i18n/it.po @@ -1,24 +1,29 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * purchase_variant_configurator_on_confirm -# +# # Translators: # OCA Transbot , 2017 -# Paolo Valier , 2017 +# Paolo Valier , 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-14 05:31+0000\n" -"PO-Revision-Date: 2017-01-14 05:31+0000\n" -"Last-Translator: Paolo Valier , 2017\n" +"POT-Creation-Date: 2017-12-30 08:37+0000\n" +"PO-Revision-Date: 2017-12-30 08:37+0000\n" +"Last-Translator: Paolo Valier , 2018\n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Prodotto" + #. module: purchase_variant_configurator_on_confirm #: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template msgid "Product Template" @@ -32,4 +37,4 @@ msgstr "Ordine d'Acquisto" #. module: purchase_variant_configurator_on_confirm #: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line msgid "Purchase Order Line" -msgstr "" +msgstr "Riga Ordine di Acquisto" diff --git a/purchase_variant_configurator_on_confirm/i18n/nl_NL.po b/purchase_variant_configurator_on_confirm/i18n/nl_NL.po new file mode 100644 index 000000000..8c8b8feb9 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/nl_NL.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Productsjabloon" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/pt_BR.po b/purchase_variant_configurator_on_confirm/i18n/pt_BR.po index 1d77d3bf8..fb8df126f 100644 --- a/purchase_variant_configurator_on_confirm/i18n/pt_BR.po +++ b/purchase_variant_configurator_on_confirm/i18n/pt_BR.po @@ -1,23 +1,29 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * purchase_variant_configurator_on_confirm -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-08 10:01+0000\n" -"PO-Revision-Date: 2017-01-08 10:01+0000\n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" "Last-Translator: OCA Transbot , 2017\n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Produto" + #. module: purchase_variant_configurator_on_confirm #: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template msgid "Product Template" diff --git a/purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot b/purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot new file mode 100644 index 000000000..6ef549472 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \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_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" + diff --git a/purchase_variant_configurator_on_confirm/i18n/ro.po b/purchase_variant_configurator_on_confirm/i18n/ro.po index 4428ca7fa..6de6366a4 100644 --- a/purchase_variant_configurator_on_confirm/i18n/ro.po +++ b/purchase_variant_configurator_on_confirm/i18n/ro.po @@ -1,22 +1,28 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * purchase_variant_configurator_on_confirm -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-08 10:01+0000\n" -"PO-Revision-Date: 2017-01-08 10:01+0000\n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: ro\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Produs" #. module: purchase_variant_configurator_on_confirm #: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template diff --git a/purchase_variant_configurator_on_confirm/i18n/sl.po b/purchase_variant_configurator_on_confirm/i18n/sl.po index 5d478fbb1..946898780 100644 --- a/purchase_variant_configurator_on_confirm/i18n/sl.po +++ b/purchase_variant_configurator_on_confirm/i18n/sl.po @@ -1,22 +1,28 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * purchase_variant_configurator_on_confirm -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-08 10:01+0000\n" -"PO-Revision-Date: 2017-01-08 10:01+0000\n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "Proizvod" #. module: purchase_variant_configurator_on_confirm #: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template diff --git a/purchase_variant_configurator_on_confirm/i18n/tr_TR.po b/purchase_variant_configurator_on_confirm/i18n/tr_TR.po new file mode 100644 index 000000000..e5e6c9f32 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/tr_TR.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/" +"tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Ürün şablonu" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/vi_VN.po b/purchase_variant_configurator_on_confirm/i18n/vi_VN.po new file mode 100644 index 000000000..183a41129 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/vi_VN.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/" +"teams/23907/vi_VN/)\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "Mẫu sản phẩm" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/i18n/zh_CN.po b/purchase_variant_configurator_on_confirm/i18n/zh_CN.po new file mode 100644 index 000000000..fcf9cffab --- /dev/null +++ b/purchase_variant_configurator_on_confirm/i18n/zh_CN.po @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_variant_configurator_on_confirm +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-16 02:12+0000\n" +"PO-Revision-Date: 2017-12-16 02:12+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_product +msgid "Product" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_product_template +msgid "Product Template" +msgstr "产品模板" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_variant_configurator_on_confirm +#: model:ir.model,name:purchase_variant_configurator_on_confirm.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_variant_configurator_on_confirm/models/__init__.py b/purchase_variant_configurator_on_confirm/models/__init__.py index 41a25c483..e744703c8 100644 --- a/purchase_variant_configurator_on_confirm/models/__init__.py +++ b/purchase_variant_configurator_on_confirm/models/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- +from . import product_product from . import product_template from . import purchase_order -from . import purchase_order_line diff --git a/purchase_variant_configurator_on_confirm/models/product_product.py b/purchase_variant_configurator_on_confirm/models/product_product.py new file mode 100644 index 000000000..cb01f78d7 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/models/product_product.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV +# Copyright 2017 David Vidal +# Copyright 2017 Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import models + + +class ProductProduct(models.Model): + _inherit = 'product.product' + + def _select_seller(self, partner_id=False, quantity=0.0, date=None, + uom_id=False): + """Don't fail on empty products for allowing to copy purchase order + lines. + """ + if not self: + return False + return super(ProductProduct, self)._select_seller( + partner_id=partner_id, quantity=quantity, date=date, + uom_id=uom_id, + ) diff --git a/purchase_variant_configurator_on_confirm/models/product_template.py b/purchase_variant_configurator_on_confirm/models/product_template.py index 1cec0bce0..75b0ee4d5 100644 --- a/purchase_variant_configurator_on_confirm/models/product_template.py +++ b/purchase_variant_configurator_on_confirm/models/product_template.py @@ -8,18 +8,8 @@ class ProductTemplate(models.Model): - _inherit = 'product.template' - def _select_seller(self, partner_id=False, quantity=0.0, date=None, - uom_id=False): - """ Make use of ProductProduct _select_seller method """ - self.ensure_one() - product = self._product_from_tmpl() - return product._select_seller( - partner_id=partner_id, quantity=quantity, date=date, uom_id=uom_id, - ) - def _product_from_tmpl(self): """ Creates a product in memory from template to use its methods """ return self.env['product.product'].new({ diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order.py b/purchase_variant_configurator_on_confirm/models/purchase_order.py index 93f58de65..77428521d 100644 --- a/purchase_variant_configurator_on_confirm/models/purchase_order.py +++ b/purchase_variant_configurator_on_confirm/models/purchase_order.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- # Copyright 2016 Oihane Crucelaegui - AvanzOSC -# Copyright 2016 Pedro M. Baeza # Copyright 2016 ACSONE SA/NV +# Copyright 2017 Tecnativa - David Vidal +# Copyright 2016-2017 Tecnativa - Pedro M. Baeza # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from odoo import api, models +from odoo import api, fields, models class PurchaseOrder(models.Model): @@ -13,17 +14,65 @@ class PurchaseOrder(models.Model): @api.multi def button_confirm(self): """Create possible product variants not yet created.""" - product_obj = self.env['product.product'] lines_without_product = self.order_line.filtered( - lambda x: not x.product_id and x.product_tmpl_id) + lambda x: not x.product_id and x.product_tmpl_id + ) for line in lines_without_product: - product = product_obj._product_find( - line.product_tmpl_id, line.product_attribute_ids) - if not product: - product = product_obj.create({ - 'product_tmpl_id': line.product_tmpl_id.id, - 'attribute_value_ids': - [(6, 0, - line.product_attribute_ids.mapped('value_id').ids)]}) - line.write({'product_id': product.id}) + line.create_variant_if_needed() return super(PurchaseOrder, self).button_confirm() + + @api.multi + def copy(self, default=None): + """Change date_planned for lines without product after calling super""" + new_po = super(PurchaseOrder, self).copy(default=default) + for line in new_po.order_line.filtered(lambda x: not x.product_id): + product = line.product_tmpl_id._product_from_tmpl() + seller = product._select_seller( + partner_id=line.partner_id, quantity=line.product_qty, + date=(line.order_id.date_order or '')[:10] or None, + uom_id=line.product_uom, + ) + line.date_planned = line._get_date_planned(seller) + return new_po + + +class PurchaseOrderLine(models.Model): + _inherit = ['purchase.order.line', 'product.configurator'] + _name = 'purchase.order.line' + + product_id = fields.Many2one(required=False) + + @api.onchange('product_tmpl_id') + def _onchange_product_tmpl_id_configurator(self): + """ Make use of PurchaseOrderLine onchange_product_id method with + a virtual product created on the fly. + """ + self.product_id = self.product_tmpl_id._product_from_tmpl() + self.onchange_product_id() + self.product_id = False + # HACK: With NewId, making `with_context` loses temp values, so we + # need to recreate these operations + product_lang = self.product_tmpl_id.with_context({ + 'lang': self.partner_id.lang, + 'partner_id': self.partner_id.id, + }) + self.name = product_lang.display_name + if product_lang.description_purchase: + self.name += '\n' + product_lang.description_purchase + return super( + PurchaseOrderLine, self, + )._onchange_product_tmpl_id_configurator() + + @api.model + def create(self, vals): + """Create variant before calling super when the purchase order is + confirmed, as it creates associated stock moves. + """ + if 'order_id' not in vals or vals.get('product_id'): + return super(PurchaseOrderLine, self).create(vals) + order = self.env['purchase.order'].browse(vals['order_id']) + if order.state == 'purchase': + line = self.new(vals) + product = line.create_variant_if_needed() + vals['product_id'] = product.id + return super(PurchaseOrderLine, self).create(vals) diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order_line.py b/purchase_variant_configurator_on_confirm/models/purchase_order_line.py deleted file mode 100644 index e10a13b54..000000000 --- a/purchase_variant_configurator_on_confirm/models/purchase_order_line.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2016 Oihane Crucelaegui - AvanzOSC -# Copyright 2016 Pedro M. Baeza -# Copyright 2016 ACSONE SA/NV -# Copyright 2017 David Vidal -# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html - -from odoo import api, fields, models - - -class PurchaseOrderLine(models.Model): - _inherit = ['purchase.order.line', 'product.configurator'] - _name = 'purchase.order.line' - - product_id = fields.Many2one(required=False) - - def onchange_product_id(self): - if self.env.context.get('product_id'): - self.product_id = self.env.context.get('product_id') - return super(PurchaseOrderLine, self).onchange_product_id() - - @api.onchange('product_tmpl_id') - def onchange_product_tmpl_id(self): - """ Make use of PurchaseOrderLine onchange_product_id method """ - product = self.product_tmpl_id.with_context({ - 'lang': self.order_id.partner_id.lang, - 'partner_id': self.order_id.partner_id.id, - })._product_from_tmpl() - return self.with_context({'product_id': product}).onchange_product_id() diff --git a/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py b/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py index c58b29c75..955486429 100644 --- a/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py +++ b/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py @@ -9,25 +9,16 @@ class TestPurchaseOrder(SavepointCase): @classmethod def setUpClass(cls): super(TestPurchaseOrder, cls).setUpClass() - # ENVIRONMENTS - cls.product_attribute = cls.env['product.attribute'] cls.product_attribute_value = cls.env['product.attribute.value'] cls.product_template = cls.env['product.template'].with_context( - check_variant_creation=True) - cls.purchase_order = cls.env['purchase.order'] - cls.product_product = cls.env['product.product'] - cls.purchase_order_line = cls.env['purchase.order.line'] - cls.res_partner = cls.env['res.partner'] - cls.product_category = cls.env['product.category'] - # Instances: product category - cls.category1 = cls.product_category.create({ + check_variant_creation=True, + ) + cls.category1 = cls.env['product.category'].create({ 'name': 'No create variants category', }) - # Instances: product attribute - cls.attribute1 = cls.product_attribute.create({ + cls.attribute1 = cls.env['product.attribute'].create({ 'name': 'Test Attribute 1', }) - # Instances: product attribute value cls.value1 = cls.product_attribute_value.create({ 'name': 'Value 1', 'attribute_id': cls.attribute1.id, @@ -36,15 +27,30 @@ def setUpClass(cls): 'name': 'Value 2', 'attribute_id': cls.attribute1.id, }) - # Instances: product template + cls.supplier = cls.env['res.partner'].create({ + 'name': 'Supplier 1', + 'is_company': True, + 'supplier': True, + }) + cls.template_name = 'Product template 1' cls.product_template_yes = cls.product_template.create({ - 'name': 'Product template 1', + 'name': cls.template_name, 'no_create_variants': 'yes', 'categ_id': cls.category1.id, + 'standard_price': 100, 'attribute_line_ids': [ - (0, 0, {'attribute_id': cls.attribute1.id, - 'value_ids': [(6, 0, [cls.value1.id, - cls.value2.id])]})], + (0, 0, { + 'attribute_id': cls.attribute1.id, + 'value_ids': [(6, 0, [cls.value1.id, cls.value2.id])], + }), + ], + 'seller_ids': [ + (0, 0, { + 'name': cls.supplier.id, + 'min_qty': 10, + 'price': 90, + }) + ] }) cls.product_template_no = cls.product_template.create({ 'name': 'Product template 2', @@ -52,27 +58,50 @@ def setUpClass(cls): 'no_create_variants': 'no', 'description_purchase': "Purchase Description" }) - cls.supplier = cls.res_partner.create({ - 'name': 'Supplier 1', - 'is_company': True, - 'supplier': True, + cls.order = cls.env['purchase.order'].create({ + 'partner_id': cls.supplier.id, }) def test_onchange_product_tmpl_id(self): - order = self.purchase_order.create({ - 'partner_id': self.supplier.id, + line = self.env['purchase.order.line'].new({ + 'order_id': self.order.id, + 'product_tmpl_id': self.product_template_yes.id, + }) + line._onchange_product_tmpl_id_configurator() + self.assertEqual(line.name, self.template_name) + self.assertEqual(line.product_uom, self.product_template_yes.uom_id) + self.assertEqual(line.price_unit, 90) + self.assertEqual(line.product_qty, 10) + self.assertTrue(line.date_planned) + def test_button_confirm(self): + line1 = self.env['purchase.order.line'].new({ + 'order_id': self.order.id, + 'product_tmpl_id': self.product_template_yes.id, }) - line1 = self.purchase_order_line.new({ - 'order_id': order.id, + line1._onchange_product_tmpl_id_configurator() + line1.product_attribute_ids[0].value_id = self.value1.id + line1 = line1.create(line1._convert_to_write(line1._cache)) + self.order.button_confirm() + self.assertTrue(line1.product_id) + line2 = self.env['purchase.order.line'].new({ + 'order_id': self.order.id, 'product_tmpl_id': self.product_template_yes.id, - 'price_unit': 100, - 'product_uom': self.product_template_yes.uom_id.id, - 'product_qty': 1, - 'name': 'Line 1', - 'date_planned': '2017-01-01', + }) + line2._onchange_product_tmpl_id_configurator() + line2.product_attribute_ids[0].value_id = self.value1.id + line2 = line2.create(line2._convert_to_write(line2._cache)) + self.assertTrue(line2.product_id) + def test_copy(self): + line1 = self.env['purchase.order.line'].new({ + 'order_id': self.order.id, + 'product_tmpl_id': self.product_template_yes.id, }) - line1.product_tmpl_id = self.product_template_no - line1.onchange_product_tmpl_id() - self.assertEqual(line1.name, self.product_template_no.name) + line1._onchange_product_tmpl_id_configurator() + line1.product_attribute_ids[0].value_id = self.value1.id + old_date = '2017-01-01' + line1.date_planned = old_date + line1.create(line1._convert_to_write(line1._cache)) + new_order = self.order.copy() + self.assertNotEqual(new_order.order_line.date_planned, old_date) From 7dc4067b96fefe7575a3d014fdebd1cf0d69493e Mon Sep 17 00:00:00 2001 From: ernesto Date: Sun, 7 Oct 2018 21:26:39 -0400 Subject: [PATCH 04/14] [MIG] purchase_variant_configurator_on_confirm: Migration to 11.0 --- .../README.rst | 74 ++- .../__init__.py | 1 - .../__manifest__.py | 7 +- .../models/__init__.py | 1 - .../models/product_product.py | 1 - .../models/product_template.py | 1 - .../models/purchase_order.py | 1 - .../readme/CONTRIBUTORS.rst | 10 + .../readme/DESCRIPTION.rst | 1 + .../static/description/index.html | 431 ++++++++++++++++++ .../tests/__init__.py | 1 - .../tests/test_purchase_order.py | 1 - 12 files changed, 495 insertions(+), 35 deletions(-) create mode 100644 purchase_variant_configurator_on_confirm/readme/CONTRIBUTORS.rst create mode 100644 purchase_variant_configurator_on_confirm/readme/DESCRIPTION.rst create mode 100644 purchase_variant_configurator_on_confirm/static/description/index.html diff --git a/purchase_variant_configurator_on_confirm/README.rst b/purchase_variant_configurator_on_confirm/README.rst index 805d7b2a2..a0e5a75a8 100644 --- a/purchase_variant_configurator_on_confirm/README.rst +++ b/purchase_variant_configurator_on_confirm/README.rst @@ -1,58 +1,84 @@ -.. 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 Variant Configurator On Confirm ======================================== +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fproduct--variant-lightgray.png?logo=github + :target: https://github.com/OCA/product-variant/tree/11.0/purchase_variant_configurator_on_confirm + :alt: OCA/product-variant +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-variant-11-0/product-variant-11-0-purchase_variant_configurator_on_confirm + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/137/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + Create product variants when confirming the purchase order. -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/188/10.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 smashing it by providing a 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 `_. +* AvanzOSC +* Tecnativa +* ACSONE SA/NV Contributors ------------- +~~~~~~~~~~~~ * Oihane Crucelaegui * David Díaz -* Pedro M. Baeza * Ana Juaristi * Zakaria Makrelouf * Stéphane Bidoul -* David Vidal +* `Tecnativa `_: -Maintainer ----------- + * Pedro M. Baeza + * David Vidal + * Ernesto Tejeda + +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/product-variant `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_variant_configurator_on_confirm/__init__.py b/purchase_variant_configurator_on_confirm/__init__.py index cde864bae..a9e337226 100644 --- a/purchase_variant_configurator_on_confirm/__init__.py +++ b/purchase_variant_configurator_on_confirm/__init__.py @@ -1,3 +1,2 @@ -# -*- coding: utf-8 -*- from . import models diff --git a/purchase_variant_configurator_on_confirm/__manifest__.py b/purchase_variant_configurator_on_confirm/__manifest__.py index 181ad1445..cb24b4dd4 100644 --- a/purchase_variant_configurator_on_confirm/__manifest__.py +++ b/purchase_variant_configurator_on_confirm/__manifest__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2016 Oihane Crucelaegui - AvanzOSC # Copyright 2016 Pedro M. Baeza # Copyright 2016 ACSONE SA/NV @@ -8,13 +7,13 @@ 'name': 'Purchase Variant Configurator On Confirm', 'summary': """ Create product variants when confirming the purchase order""", - 'version': '10.0.1.0.0', + 'version': '11.0.1.0.0', 'license': 'AGPL-3', "author": "AvanzOSC, " "Tecnativa, " - "ACSONE SA/NV," + "ACSONE SA/NV, " "Odoo Community Association (OCA)", - 'website': 'https://odoo-community.org/', + 'website': 'https://github.com/OCA/product-variant', 'depends': [ 'purchase_variant_configurator', ], diff --git a/purchase_variant_configurator_on_confirm/models/__init__.py b/purchase_variant_configurator_on_confirm/models/__init__.py index e744703c8..4313ce974 100644 --- a/purchase_variant_configurator_on_confirm/models/__init__.py +++ b/purchase_variant_configurator_on_confirm/models/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from . import product_product from . import product_template diff --git a/purchase_variant_configurator_on_confirm/models/product_product.py b/purchase_variant_configurator_on_confirm/models/product_product.py index cb01f78d7..489e58083 100644 --- a/purchase_variant_configurator_on_confirm/models/product_product.py +++ b/purchase_variant_configurator_on_confirm/models/product_product.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2016 ACSONE SA/NV # Copyright 2017 David Vidal # Copyright 2017 Pedro M. Baeza diff --git a/purchase_variant_configurator_on_confirm/models/product_template.py b/purchase_variant_configurator_on_confirm/models/product_template.py index 75b0ee4d5..05164d751 100644 --- a/purchase_variant_configurator_on_confirm/models/product_template.py +++ b/purchase_variant_configurator_on_confirm/models/product_template.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2016 ACSONE SA/NV # Copyright 2017 David Vidal # Copyright 2017 Pedro M. Baeza diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order.py b/purchase_variant_configurator_on_confirm/models/purchase_order.py index 77428521d..52a92fc8f 100644 --- a/purchase_variant_configurator_on_confirm/models/purchase_order.py +++ b/purchase_variant_configurator_on_confirm/models/purchase_order.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2016 Oihane Crucelaegui - AvanzOSC # Copyright 2016 ACSONE SA/NV # Copyright 2017 Tecnativa - David Vidal diff --git a/purchase_variant_configurator_on_confirm/readme/CONTRIBUTORS.rst b/purchase_variant_configurator_on_confirm/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..5603d914c --- /dev/null +++ b/purchase_variant_configurator_on_confirm/readme/CONTRIBUTORS.rst @@ -0,0 +1,10 @@ +* Oihane Crucelaegui +* David Díaz +* Ana Juaristi +* Zakaria Makrelouf +* Stéphane Bidoul +* `Tecnativa `_: + + * Pedro M. Baeza + * David Vidal + * Ernesto Tejeda diff --git a/purchase_variant_configurator_on_confirm/readme/DESCRIPTION.rst b/purchase_variant_configurator_on_confirm/readme/DESCRIPTION.rst new file mode 100644 index 000000000..9ba9f25c0 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Create product variants when confirming the purchase order. diff --git a/purchase_variant_configurator_on_confirm/static/description/index.html b/purchase_variant_configurator_on_confirm/static/description/index.html new file mode 100644 index 000000000..0eb0a5b82 --- /dev/null +++ b/purchase_variant_configurator_on_confirm/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Purchase Variant Configurator On Confirm + + + +
+

Purchase Variant Configurator On Confirm

+ + +

Beta License: AGPL-3 OCA/product-variant Translate me on Weblate Try me on Runbot

+

Create product variants when confirming the purchase order.

+

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

+
    +
  • AvanzOSC
  • +
  • Tecnativa
  • +
  • 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/product-variant project on GitHub.

+

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

+
+
+
+ + diff --git a/purchase_variant_configurator_on_confirm/tests/__init__.py b/purchase_variant_configurator_on_confirm/tests/__init__.py index d2534f131..036c37e90 100644 --- a/purchase_variant_configurator_on_confirm/tests/__init__.py +++ b/purchase_variant_configurator_on_confirm/tests/__init__.py @@ -1,3 +1,2 @@ -# -*- coding: utf-8 -*- from . import test_purchase_order diff --git a/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py b/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py index 955486429..63027588c 100644 --- a/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py +++ b/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2017 David Vidal # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html From 0f7e3fc0480ff3beb52c3afe74f12cf5e6f78e96 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Sun, 20 Jan 2019 14:35:50 +0100 Subject: [PATCH 05/14] [FIX] purchase_variant_configurator_on_confirm: Don't reset product on template change if existing If you have set product_id and product_tmpl_id and want to call onchange programatically, the value is reset without real need. Changing the onchange for taking into account this prevents the problem. [UPD] README.rst [UPD] Update purchase_variant_configurator_on_confirm.pot --- ...rchase_variant_configurator_on_confirm.pot | 2 +- .../models/purchase_order.py | 28 ++++++++++--------- .../static/description/index.html | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot b/purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot index 6ef549472..6e2be58e0 100644 --- a/purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot +++ b/purchase_variant_configurator_on_confirm/i18n/purchase_variant_configurator_on_confirm.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/purchase_variant_configurator_on_confirm/models/purchase_order.py b/purchase_variant_configurator_on_confirm/models/purchase_order.py index 52a92fc8f..4e440ab97 100644 --- a/purchase_variant_configurator_on_confirm/models/purchase_order.py +++ b/purchase_variant_configurator_on_confirm/models/purchase_order.py @@ -46,21 +46,23 @@ def _onchange_product_tmpl_id_configurator(self): """ Make use of PurchaseOrderLine onchange_product_id method with a virtual product created on the fly. """ - self.product_id = self.product_tmpl_id._product_from_tmpl() - self.onchange_product_id() - self.product_id = False - # HACK: With NewId, making `with_context` loses temp values, so we - # need to recreate these operations - product_lang = self.product_tmpl_id.with_context({ - 'lang': self.partner_id.lang, - 'partner_id': self.partner_id.id, - }) - self.name = product_lang.display_name - if product_lang.description_purchase: - self.name += '\n' + product_lang.description_purchase - return super( + res = super( PurchaseOrderLine, self, )._onchange_product_tmpl_id_configurator() + if not self.product_id: + self.product_id = self.product_tmpl_id._product_from_tmpl() + self.onchange_product_id() + self.product_id = False + # HACK: With NewId, making `with_context` loses temp values, so we + # need to recreate these operations + product_lang = self.product_tmpl_id.with_context({ + 'lang': self.partner_id.lang, + 'partner_id': self.partner_id.id, + }) + self.name = product_lang.display_name + if product_lang.description_purchase: + self.name += '\n' + product_lang.description_purchase + return res @api.model def create(self, vals): diff --git a/purchase_variant_configurator_on_confirm/static/description/index.html b/purchase_variant_configurator_on_confirm/static/description/index.html index 0eb0a5b82..8875345ab 100644 --- a/purchase_variant_configurator_on_confirm/static/description/index.html +++ b/purchase_variant_configurator_on_confirm/static/description/index.html @@ -3,7 +3,7 @@ - + Purchase Variant Configurator On Confirm - - -
-

Purchase Variant Configurator On Confirm

- - -

Beta License: AGPL-3 OCA/product-variant Translate me on Weblate Try me on Runboat

-

Create product variants when confirming the purchase order.

-

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 to smash it by providing a detailed and welcomed -feedback.

-

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

-
-
-

Credits

-
-

Authors

-
    -
  • AvanzOSC
  • -
  • Tecnativa
  • -
  • 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/product-variant project on GitHub.

-

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

-
-
-
- - diff --git a/purchase_variant_configurator_on_confirm/tests/__init__.py b/purchase_variant_configurator_on_confirm/tests/__init__.py deleted file mode 100644 index 165f23ce4..000000000 --- a/purchase_variant_configurator_on_confirm/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import test_purchase_order diff --git a/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py b/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py deleted file mode 100644 index 00ef34a2f..000000000 --- a/purchase_variant_configurator_on_confirm/tests/test_purchase_order.py +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright 2017 Tecnativa - David Vidal -# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -from odoo.tests import Form, common - - -class TestPurchaseOrder(common.SavepointCase): - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.product_attribute_value = cls.env["product.attribute.value"] - cls.product_template = cls.env["product.template"].with_context( - check_variant_creation=True, - ) - cls.category1 = cls.env["product.category"].create( - {"name": "No create variants category"} - ) - cls.attribute1 = cls.env["product.attribute"].create( - {"name": "Test Attribute 1"} - ) - cls.value1 = cls.product_attribute_value.create( - {"name": "Value 1", "attribute_id": cls.attribute1.id} - ) - cls.value2 = cls.product_attribute_value.create( - {"name": "Value 2", "attribute_id": cls.attribute1.id} - ) - cls.supplier = cls.env["res.partner"].create( - {"name": "Supplier 1", "is_company": True} - ) - cls.template_name = "Product template 1" - cls.product_template_yes = cls.product_template.create( - { - "name": cls.template_name, - "no_create_variants": "yes", - "categ_id": cls.category1.id, - "standard_price": 100, - "attribute_line_ids": [ - ( - 0, - 0, - { - "attribute_id": cls.attribute1.id, - "value_ids": [(6, 0, [cls.value1.id, cls.value2.id])], - }, - ), - ], - } - ) - cls.supplier_pricelist = cls.env["product.supplierinfo"].create( - { - "product_tmpl_id": cls.product_template_yes.id, - "name": cls.supplier.id, - "min_qty": 11, - "price": 90, - } - ) - cls.product_template_no = cls.product_template.create( - { - "name": "Product template 2", - "categ_id": cls.category1.id, - "no_create_variants": "no", - "description_purchase": "Purchase Description", - } - ) - cls.order = cls.env["purchase.order"].create({"partner_id": cls.supplier.id}) - - def test_onchange_product_tmpl_id(self): - purchase = Form(self.order) - with purchase.order_line.new() as line: - line.product_tmpl_id = self.product_template_yes - self.assertEqual(line.name, self.template_name) - self.assertEqual(line.product_uom, self.product_template_yes.uom_id) - self.assertEqual(line.price_unit, 90) - self.assertEqual(line.product_qty, 11) - self.assertTrue(line.date_planned) - - def test_button_confirm(self): - line1 = self.env["purchase.order.line"].new( - { - "order_id": self.order.id, - "product_tmpl_id": self.product_template_yes.id, - } - ) - line1._onchange_product_tmpl_id_configurator() - line1.product_attribute_ids[0].value_id = self.value1.id - line1 = line1.create(line1._convert_to_write(line1._cache)) - self.order.button_confirm() - self.assertTrue(line1.product_id) - line2 = self.env["purchase.order.line"].new( - { - "order_id": self.order.id, - "product_tmpl_id": self.product_template_yes.id, - } - ) - line2._onchange_product_tmpl_id_configurator() - line2.product_attribute_ids[0].value_id = self.value1.id - line2 = line2.create(line2._convert_to_write(line2._cache)) - self.assertTrue(line2.product_id) - - def test_copy(self): - line1 = self.env["purchase.order.line"].new( - { - "order_id": self.order.id, - "product_tmpl_id": self.product_template_yes.id, - } - ) - line1._onchange_product_tmpl_id_configurator() - line1.product_attribute_ids[0].value_id = self.value1.id - old_date = "2017-01-01" - line1.date_planned = old_date - line1.create(line1._convert_to_write(line1._cache)) - new_order = self.order.copy() - self.assertNotEqual(new_order.order_line.date_planned, old_date) diff --git a/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml b/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml deleted file mode 100644 index 747519d47..000000000 --- a/purchase_variant_configurator_on_confirm/views/inherited_purchase_order_views.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - purchase.order.extended.form - purchase.order - - - - - - - - - diff --git a/setup/purchase_variant_configurator_on_confirm/odoo/addons/purchase_variant_configurator_on_confirm b/setup/purchase_variant_configurator_on_confirm/odoo/addons/purchase_variant_configurator_on_confirm deleted file mode 120000 index 3335cfc58..000000000 --- a/setup/purchase_variant_configurator_on_confirm/odoo/addons/purchase_variant_configurator_on_confirm +++ /dev/null @@ -1 +0,0 @@ -../../../../purchase_variant_configurator_on_confirm \ No newline at end of file diff --git a/setup/purchase_variant_configurator_on_confirm/setup.py b/setup/purchase_variant_configurator_on_confirm/setup.py deleted file mode 100644 index 28c57bb64..000000000 --- a/setup/purchase_variant_configurator_on_confirm/setup.py +++ /dev/null @@ -1,6 +0,0 @@ -import setuptools - -setuptools.setup( - setup_requires=['setuptools-odoo'], - odoo_addon=True, -)