From 6a8d5cc25563659827ec17931e8566776ef30f8d Mon Sep 17 00:00:00 2001
From: Sylvain LE GAL
Date: Fri, 24 Jul 2015 07:27:39 +0200
Subject: [PATCH 01/30] [ADD] V8. product_replenishment_cost - move
product_get_cost_field from unported folder to root folder; rename module;
[PORT] various changes realized in v7 branch; specially
7f3f6294444e4de51c180db5bf26ca707d9ad60c [REF] OCA convention about folders;
[PORT] V8 api; [ADD] demo data; [FIX] set replenishment_cost as a stored
field;
---
product_replenishment_cost/README.rst | 50 +++++++++++++++++++
product_replenishment_cost/__init__.py | 22 ++++++++
product_replenishment_cost/__openerp__.py | 38 ++++++++++++++
.../demo/res_groups.yml | 28 +++++++++++
product_replenishment_cost/i18n/fr.po | 34 +++++++++++++
product_replenishment_cost/i18n/nl.po | 37 ++++++++++++++
.../i18n/product_replenishment_cost.pot | 34 +++++++++++++
product_replenishment_cost/models/__init__.py | 22 ++++++++
.../models/product_product.py | 44 ++++++++++++++++
.../test/cost_price_update.yml | 50 +++++++++++++++++++
product_replenishment_cost/views/view.xml | 15 ++++++
11 files changed, 374 insertions(+)
create mode 100644 product_replenishment_cost/README.rst
create mode 100644 product_replenishment_cost/__init__.py
create mode 100644 product_replenishment_cost/__openerp__.py
create mode 100644 product_replenishment_cost/demo/res_groups.yml
create mode 100644 product_replenishment_cost/i18n/fr.po
create mode 100644 product_replenishment_cost/i18n/nl.po
create mode 100644 product_replenishment_cost/i18n/product_replenishment_cost.pot
create mode 100644 product_replenishment_cost/models/__init__.py
create mode 100644 product_replenishment_cost/models/product_product.py
create mode 100644 product_replenishment_cost/test/cost_price_update.yml
create mode 100644 product_replenishment_cost/views/view.xml
diff --git a/product_replenishment_cost/README.rst b/product_replenishment_cost/README.rst
new file mode 100644
index 000000000..93128cca9
--- /dev/null
+++ b/product_replenishment_cost/README.rst
@@ -0,0 +1,50 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+ :alt: License: AGPL-3
+
+Product Replenishment Cost
+==========================
+
+Provides an overridable method on product which compute the Replenishment cost
+of a product. By default it just returns the value of "Cost price" field, but
+using the product_cost_incl_bom module, it will return the costing from the
+bom.
+
+As it is a generic module, you can also setup your own way of computing the
+replenishment_cost for your product.
+
+All OCA modules to compute margins are based on it, so you'll be able to use
+them in your own way.
+
+
+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
+`here `_.
+
+Credits
+=======
+
+Contributors
+------------
+
+* Alexandre Fayolle
+* Yannick Vaucher
+* Joël Grand-Guillaume
+* Sylvain Le Gal (https://twitter.com/legalsylvain)
+
+Maintainer
+----------
+
+.. image:: http://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: http://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 http://odoo-community.org.
+
diff --git a/product_replenishment_cost/__init__.py b/product_replenishment_cost/__init__.py
new file mode 100644
index 000000000..aaf3afe2e
--- /dev/null
+++ b/product_replenishment_cost/__init__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alexandre Fayolle, Joel Grand-Guillaume
+# Copyright 2012 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from . import models
diff --git a/product_replenishment_cost/__openerp__.py b/product_replenishment_cost/__openerp__.py
new file mode 100644
index 000000000..1f7238dcf
--- /dev/null
+++ b/product_replenishment_cost/__openerp__.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alexandre Fayolle
+# Copyright 2012 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+{
+ 'name': 'Replenishment cost',
+ 'version': '2.0',
+ 'author': "Camptocamp,GRAP,Odoo Community Association (OCA)",
+ 'category': 'Products',
+ 'depends': [
+ 'product',
+ ],
+ 'website': 'http://www.camptocamp.com/',
+ 'data': [
+ 'views/view.xml',
+ 'demo/res_groups.yml',
+ ],
+ 'test': [
+ 'test/cost_price_update.yml',
+ ],
+ 'license': 'AGPL-3',
+}
diff --git a/product_replenishment_cost/demo/res_groups.yml b/product_replenishment_cost/demo/res_groups.yml
new file mode 100644
index 000000000..f420e810e
--- /dev/null
+++ b/product_replenishment_cost/demo/res_groups.yml
@@ -0,0 +1,28 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# Copyright (C) 2015-Today GRAP (http://www.grap.coop)
+# @author Sylvain LE GAL (https://twitter.com/legalsylvain)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+- !record {model: res.groups, id: base.group_no_one}:
+ users:
+ - base.user_root
+
+- !record {model: res.groups, id: base.group_sale_manager}:
+ users:
+ - base.user_root
diff --git a/product_replenishment_cost/i18n/fr.po b/product_replenishment_cost/i18n/fr.po
new file mode 100644
index 000000000..97740e0a4
--- /dev/null
+++ b/product_replenishment_cost/i18n/fr.po
@@ -0,0 +1,34 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-10-30 16:52+0000\n"
+"PO-Revision-Date: 2014-10-30 16:52+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_replenishment_cost
+#: field:product.product,cost_price:0
+msgid "Replenishment cost"
+msgstr "Coût de réapprovisionnement"
+
+#. module: product_replenishment_cost
+#: code:_description:0
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+#, python-format
+msgid "Product"
+msgstr "Article"
+
+#. module: product_replenishment_cost
+#: help:product.product,cost_price:0
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr "Le coût que vous devez prendre en charge pour produire ou acquerir la marchandise. Selon les modules installés, le calcul de ce coût peut s'appuyer sur diverses informations : par exemple les nomenclatures ou les derniers achats. Par défaut, le coût de réapprovisionnement est le même que le Prix de revient."
+
diff --git a/product_replenishment_cost/i18n/nl.po b/product_replenishment_cost/i18n/nl.po
new file mode 100644
index 000000000..1d17b6f8a
--- /dev/null
+++ b/product_replenishment_cost/i18n/nl.po
@@ -0,0 +1,37 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-12-23 10:21+0000\n"
+"PO-Revision-Date: 2012-12-23 11:28+0100\n"
+"Last-Translator: Erwin van der Ploeg | Endian Solutions "
+"\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"X-Generator: Poedit 1.5.4\n"
+
+#. module: product_replenishment_cost
+#: help:product.product,cost_price:0
+msgid ""
+"The cost price is the standard price or, if the product has a bom, the sum "
+"of all standard price of its components. it take also care of the bom "
+"costing like cost per cylce."
+msgstr "Dit is de kostprijs, inclusief eventuele kosten."
+
+#. module: product_replenishment_cost
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+msgid "Product"
+msgstr "Product"
+
+#. module: product_replenishment_cost
+#: field:product.product,cost_price:0
+msgid "Cost Price (incl. BoM)"
+msgstr "Kostprijs (incl. kosten)"
+
diff --git a/product_replenishment_cost/i18n/product_replenishment_cost.pot b/product_replenishment_cost/i18n/product_replenishment_cost.pot
new file mode 100644
index 000000000..e093d8f7c
--- /dev/null
+++ b/product_replenishment_cost/i18n/product_replenishment_cost.pot
@@ -0,0 +1,34 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-10-30 16:51+0000\n"
+"PO-Revision-Date: 2014-10-30 16:51+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_replenishment_cost
+#: field:product.product,cost_price:0
+msgid "Replenishment cost"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: code:_description:0
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+#, python-format
+msgid "Product"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: help:product.product,cost_price:0
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
+
diff --git a/product_replenishment_cost/models/__init__.py b/product_replenishment_cost/models/__init__.py
new file mode 100644
index 000000000..4859eca20
--- /dev/null
+++ b/product_replenishment_cost/models/__init__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alexandre Fayolle, Joel Grand-Guillaume
+# Copyright 2012 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from . import product_product
diff --git a/product_replenishment_cost/models/product_product.py b/product_replenishment_cost/models/product_product.py
new file mode 100644
index 000000000..78c04325c
--- /dev/null
+++ b/product_replenishment_cost/models/product_product.py
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alexandre Fayolle
+# Copyright 2012 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from openerp import fields, api
+from openerp.models import Model
+
+import openerp.addons.decimal_precision as dp
+
+
+class ProductProduct(Model):
+ _inherit = 'product.product'
+
+ @api.one
+ @api.depends('product_tmpl_id.standard_price')
+ def _get_replenishment_cost(self):
+ self.replenishment_cost = self.standard_price
+
+ replenishment_cost = fields.Float(
+ compute=_get_replenishment_cost, store=True,
+ digits_compute=dp.get_precision('Product Price'),
+ help="The cost that you have to support in order to produce or "
+ "acquire the goods. Depending on the modules installed, "
+ "this cost may be computed based on various pieces of "
+ "information, for example Bills of Materials or latest "
+ "Purchases. By default, the Replenishment cost is the same "
+ "as the Cost Price.")
diff --git a/product_replenishment_cost/test/cost_price_update.yml b/product_replenishment_cost/test/cost_price_update.yml
new file mode 100644
index 000000000..7889744db
--- /dev/null
+++ b/product_replenishment_cost/test/cost_price_update.yml
@@ -0,0 +1,50 @@
+-
+ Test the following with user admin
+-
+ !context
+ uid: 'base.user_root'
+-
+ Create a wine A product
+-
+ !record {model: product.product, id: product_product_a}:
+ categ_id: product.product_category_1
+ name: Wine A01
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+ company_id: 0
+ standard_price: 50.0
+ list_price: 75.0
+-
+ Test the prices are updated correctly
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product_product_a'))
+ assert product.standard_price == 50.0, "01 The standard_price has not been recorded correctly"
+ assert product.replenishment_cost == 50.0, "01 The replenishment_cost has not been recorded correctly"
+-
+ Modify product A set new prices
+-
+ !python {model: product.product}: |
+ self.write(cr, uid, ref('product_product_a'), {'standard_price':70})
+-
+ Test price are update accordingly
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product_product_a'))
+ assert product.standard_price == 70.0, "02 The standard_price has not been recorded correctly"
+ assert product.replenishment_cost == 70.0, "02 The replenishment_cost has not been recorded correctly"
+-
+ Modify product A using the template object and set new prices
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product_product_a'))
+ prod_tmpl_id = product.product_tmpl_id.id
+ self.pool.get('product.template').write(cr, uid, [prod_tmpl_id], {'standard_price':100})
+-
+ Test replenishment_cost is update accordingly
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref('product_product_a'))
+ assert product.standard_price == 100.0, "03 The standard_price has not been recorded correctly"
+ assert product.replenishment_cost == 100.0, "03 The replenishment_cost has not been recorded correctly"
+
diff --git a/product_replenishment_cost/views/view.xml b/product_replenishment_cost/views/view.xml
new file mode 100644
index 000000000..122e1d809
--- /dev/null
+++ b/product_replenishment_cost/views/view.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ product.product
+
+
+
+
+
+
+
+
+
+
From 73c2e3fa032acd6d998a204d621730a40bff4e21 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Bidoul?=
Date: Fri, 9 Oct 2015 10:01:49 +0200
Subject: [PATCH 02/30] [UPD] prefix versions with 8.0
---
product_replenishment_cost/__openerp__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/product_replenishment_cost/__openerp__.py b/product_replenishment_cost/__openerp__.py
index 1f7238dcf..647e01f29 100644
--- a/product_replenishment_cost/__openerp__.py
+++ b/product_replenishment_cost/__openerp__.py
@@ -20,7 +20,7 @@
##############################################################################
{
'name': 'Replenishment cost',
- 'version': '2.0',
+ 'version': '8.0.2.0.0',
'author': "Camptocamp,GRAP,Odoo Community Association (OCA)",
'category': 'Products',
'depends': [
From 4625132af02dc21feed639c211c0b090d081685f Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Wed, 14 Oct 2015 03:30:30 +0200
Subject: [PATCH 03/30] [MIG] Make modules uninstallable
---
product_replenishment_cost/__openerp__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/product_replenishment_cost/__openerp__.py b/product_replenishment_cost/__openerp__.py
index 647e01f29..a523c163f 100644
--- a/product_replenishment_cost/__openerp__.py
+++ b/product_replenishment_cost/__openerp__.py
@@ -35,4 +35,5 @@
'test/cost_price_update.yml',
],
'license': 'AGPL-3',
+ 'installable': False,
}
From f22aa348c9c691f0452dcfb6d55a03141cce946d Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Thu, 6 Oct 2016 15:56:23 +0200
Subject: [PATCH 04/30] [MIG] Rename manifest files
---
product_replenishment_cost/{__openerp__.py => __manifest__.py} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename product_replenishment_cost/{__openerp__.py => __manifest__.py} (100%)
diff --git a/product_replenishment_cost/__openerp__.py b/product_replenishment_cost/__manifest__.py
similarity index 100%
rename from product_replenishment_cost/__openerp__.py
rename to product_replenishment_cost/__manifest__.py
From 130856b02e54050613cbf60fb54713e7be1794af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?=
Date: Fri, 15 Jun 2018 23:32:06 +0200
Subject: [PATCH 05/30] remove obsolete .pot files [ci skip]
---
.../i18n/product_replenishment_cost.pot | 34 -------------------
1 file changed, 34 deletions(-)
delete mode 100644 product_replenishment_cost/i18n/product_replenishment_cost.pot
diff --git a/product_replenishment_cost/i18n/product_replenishment_cost.pot b/product_replenishment_cost/i18n/product_replenishment_cost.pot
deleted file mode 100644
index e093d8f7c..000000000
--- a/product_replenishment_cost/i18n/product_replenishment_cost.pot
+++ /dev/null
@@ -1,34 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * product_replenishment_cost
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 7.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-10-30 16:51+0000\n"
-"PO-Revision-Date: 2014-10-30 16:51+0000\n"
-"Last-Translator: <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
-"Plural-Forms: \n"
-
-#. module: product_replenishment_cost
-#: field:product.product,cost_price:0
-msgid "Replenishment cost"
-msgstr ""
-
-#. module: product_replenishment_cost
-#: code:_description:0
-#: model:ir.model,name:product_replenishment_cost.model_product_product
-#, python-format
-msgid "Product"
-msgstr ""
-
-#. module: product_replenishment_cost
-#: help:product.product,cost_price:0
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
-msgstr ""
-
From 5b2a03f2709242a3a930639c807b2b365b7971cd Mon Sep 17 00:00:00 2001
From: Nicolas Mac Rouillon
Date: Wed, 2 Nov 2016 14:39:41 -0300
Subject: [PATCH 06/30] migrate product_replenishment_cost to v9
---
product_replenishment_cost/README.rst | 59 +++++++++++++++---
product_replenishment_cost/__manifest__.py | 10 +--
.../models/product_product.py | 2 +-
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../views/{view.xml => product_view.xml} | 7 +--
5 files changed, 58 insertions(+), 20 deletions(-)
create mode 100644 product_replenishment_cost/static/description/icon.png
rename product_replenishment_cost/views/{view.xml => product_view.xml} (77%)
diff --git a/product_replenishment_cost/README.rst b/product_replenishment_cost/README.rst
index 93128cca9..7278bfd1c 100644
--- a/product_replenishment_cost/README.rst
+++ b/product_replenishment_cost/README.rst
@@ -1,25 +1,59 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
- :alt: License: AGPL-3
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+==========================
Product Replenishment Cost
==========================
-Provides an overridable method on product which compute the Replenishment cost
-of a product. By default it just returns the value of "Cost price" field, but
-using the product_cost_incl_bom module, it will return the costing from the
-bom.
+Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of "Cost price" field, but using the product_cost_incl_bom module, it will return the costing from the bom.
+
+As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
+
+All OCA modules to compute margins are based on it, so you'll be able to use them in your own way.
+
+
+Installation
+============
+
+To install this module, you need to:
+
+#. Just install module.
+
+Configuration
+=============
+
+To configure this module, you need to:
-As it is a generic module, you can also setup your own way of computing the
-replenishment_cost for your product.
+#. No configuration needed.
-All OCA modules to compute margins are based on it, so you'll be able to use
-them in your own way.
+.. figure:: path/to/local/image.png
+ :alt: alternative description
+ :width: 600 px
+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 `_.
+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
`here `_.
@@ -27,6 +61,11 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
Credits
=======
+Images
+------
+
+* Odoo Community Association: `Icon `_.
+
Contributors
------------
diff --git a/product_replenishment_cost/__manifest__.py b/product_replenishment_cost/__manifest__.py
index a523c163f..97a308b2d 100644
--- a/product_replenishment_cost/__manifest__.py
+++ b/product_replenishment_cost/__manifest__.py
@@ -19,21 +19,21 @@
#
##############################################################################
{
- 'name': 'Replenishment cost',
- 'version': '8.0.2.0.0',
+ 'name': 'Replenishment Cost',
+ 'version': '9.0.1.0.0',
'author': "Camptocamp,GRAP,Odoo Community Association (OCA)",
+ 'license': 'AGPL-3',
'category': 'Products',
'depends': [
'product',
],
'website': 'http://www.camptocamp.com/',
'data': [
- 'views/view.xml',
+ 'views/product_view.xml',
'demo/res_groups.yml',
],
'test': [
'test/cost_price_update.yml',
],
- 'license': 'AGPL-3',
- 'installable': False,
+ 'installable': True,
}
diff --git a/product_replenishment_cost/models/product_product.py b/product_replenishment_cost/models/product_product.py
index 78c04325c..45b5e6455 100644
--- a/product_replenishment_cost/models/product_product.py
+++ b/product_replenishment_cost/models/product_product.py
@@ -29,7 +29,7 @@ class ProductProduct(Model):
_inherit = 'product.product'
@api.one
- @api.depends('product_tmpl_id.standard_price')
+ @api.depends('product_tmpl_id.standard_price', 'standard_price')
def _get_replenishment_cost(self):
self.replenishment_cost = self.standard_price
diff --git a/product_replenishment_cost/static/description/icon.png b/product_replenishment_cost/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/product_replenishment_cost/views/view.xml b/product_replenishment_cost/views/product_view.xml
similarity index 77%
rename from product_replenishment_cost/views/view.xml
rename to product_replenishment_cost/views/product_view.xml
index 122e1d809..d54b2df29 100644
--- a/product_replenishment_cost/views/view.xml
+++ b/product_replenishment_cost/views/product_view.xml
@@ -5,11 +5,10 @@
product.product
-
+
-
+
-
-
+
\ No newline at end of file
From c318f134580a10ff342f7d5a477b221c873b8d30 Mon Sep 17 00:00:00 2001
From: "@PlanetaTIC" <@PlanetaTIC>
Date: Wed, 31 Jul 2019 13:28:38 +0200
Subject: [PATCH 07/30] [MIG] product_replenishment_cost: Migration to 10.0
---
product_replenishment_cost/README.rst | 107 ++---
product_replenishment_cost/__manifest__.py | 19 +-
.../demo/res_groups.xml | 14 +
.../demo/res_groups.yml | 28 --
product_replenishment_cost/i18n/es.po | 43 ++
product_replenishment_cost/i18n/fr.po | 29 +-
product_replenishment_cost/i18n/nl.po | 21 +-
.../i18n/product_replenishment_cost.pot | 30 ++
.../models/product_product.py | 10 +-
.../readme/CONTRIBUTORS.rst | 5 +
.../readme/DESCRIPTION.rst | 5 +
.../static/description/index.html | 426 ++++++++++++++++++
.../test/cost_price_update.yml | 14 +-
.../views/product_view.xml | 26 +-
14 files changed, 644 insertions(+), 133 deletions(-)
create mode 100644 product_replenishment_cost/demo/res_groups.xml
delete mode 100644 product_replenishment_cost/demo/res_groups.yml
create mode 100644 product_replenishment_cost/i18n/es.po
create mode 100644 product_replenishment_cost/i18n/product_replenishment_cost.pot
create mode 100644 product_replenishment_cost/readme/CONTRIBUTORS.rst
create mode 100644 product_replenishment_cost/readme/DESCRIPTION.rst
create mode 100644 product_replenishment_cost/static/description/index.html
diff --git a/product_replenishment_cost/README.rst b/product_replenishment_cost/README.rst
index 7278bfd1c..41ddab341 100644
--- a/product_replenishment_cost/README.rst
+++ b/product_replenishment_cost/README.rst
@@ -1,10 +1,29 @@
-.. 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
-
-==========================
-Product Replenishment Cost
-==========================
+==================
+Replenishment Cost
+==================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! 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%2Fmargin--analysis-lightgray.png?logo=github
+ :target: https://github.com/OCA/margin-analysis/tree/10.0/product_replenishment_cost
+ :alt: OCA/margin-analysis
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/margin-analysis-10-0/margin-analysis-10-0-product_replenishment_cost
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/132/10.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of "Cost price" field, but using the product_cost_incl_bom module, it will return the costing from the bom.
@@ -12,78 +31,52 @@ As it is a generic module, you can also setup your own way of computing the repl
All OCA modules to compute margins are based on it, so you'll be able to use them in your own way.
+**Table of contents**
-Installation
-============
-
-To install this module, you need to:
-
-#. Just install module.
-
-Configuration
-=============
-
-To configure this module, you need to:
-
-#. No configuration needed.
-
-.. figure:: path/to/local/image.png
- :alt: alternative description
- :width: 600 px
-
-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
-======================
-
-* ...
+.. 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
-`here `_.
+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 `_.
+* Camptocamp
+* GRAP
Contributors
-------------
+~~~~~~~~~~~~
* Alexandre Fayolle
* Yannick Vaucher
* Joël Grand-Guillaume
* Sylvain Le Gal (https://twitter.com/legalsylvain)
+* Marc Poch Mallandrich
-Maintainer
-----------
-
-.. image:: http://odoo-community.org/logo.png
- :alt: Odoo Community Association
- :target: http://odoo-community.org
+Maintainers
+~~~~~~~~~~~
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.
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+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 http://odoo-community.org.
+This module is part of the `OCA/margin-analysis `_ project on GitHub.
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/product_replenishment_cost/__manifest__.py b/product_replenishment_cost/__manifest__.py
index 97a308b2d..c1e135da6 100644
--- a/product_replenishment_cost/__manifest__.py
+++ b/product_replenishment_cost/__manifest__.py
@@ -20,17 +20,30 @@
##############################################################################
{
'name': 'Replenishment Cost',
- 'version': '9.0.1.0.0',
+ 'version': '10.0.1.0.0',
'author': "Camptocamp,GRAP,Odoo Community Association (OCA)",
'license': 'AGPL-3',
'category': 'Products',
'depends': [
'product',
+ 'sales_team',
],
- 'website': 'http://www.camptocamp.com/',
+ 'description': """
+Provides an overridable method on product which compute the Replenishment cost
+of a product. By default it just returns the value of "Cost price" field, but
+using the product_cost_incl_bom module, it will return the costing from the
+bom.
+
+As it is a generic module, you can also setup your own way of computing the
+replenishment_cost for your product.
+
+All OCA modules to compute margins are based on it, so you'll be able to use
+them in your own way.
+""",
+ 'website': 'https://github.com/OCA/margin-analysis',
'data': [
'views/product_view.xml',
- 'demo/res_groups.yml',
+ 'demo/res_groups.xml',
],
'test': [
'test/cost_price_update.yml',
diff --git a/product_replenishment_cost/demo/res_groups.xml b/product_replenishment_cost/demo/res_groups.xml
new file mode 100644
index 000000000..3cf0bf35d
--- /dev/null
+++ b/product_replenishment_cost/demo/res_groups.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/product_replenishment_cost/demo/res_groups.yml b/product_replenishment_cost/demo/res_groups.yml
deleted file mode 100644
index f420e810e..000000000
--- a/product_replenishment_cost/demo/res_groups.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# Copyright (C) 2015-Today GRAP (http://www.grap.coop)
-# @author Sylvain LE GAL (https://twitter.com/legalsylvain)
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-- !record {model: res.groups, id: base.group_no_one}:
- users:
- - base.user_root
-
-- !record {model: res.groups, id: base.group_sale_manager}:
- users:
- - base.user_root
diff --git a/product_replenishment_cost/i18n/es.po b/product_replenishment_cost/i18n/es.po
new file mode 100644
index 000000000..aa239ac1b
--- /dev/null
+++ b/product_replenishment_cost/i18n/es.po
@@ -0,0 +1,43 @@
+# # Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+# Translators:
+# PlanetaTIC - Marc Poch , 2019
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-10-30 16:52+0000\n"
+"PO-Revision-Date: 2014-10-30 16:52+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_replenishment_cost
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+msgid "Product"
+msgstr "Producto"
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+msgid "Replenishment cost"
+msgstr "Coste de reposición"
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
+"El coste que tiene que pagar para producir o adquirir los bienes. "
+"Dependiendo de los módulos instalados, este coste puede calcularse en "
+"función de diversos datos, por ejemplo, listas de materiales o compras más "
+"recientes. De forma predeterminada, el coste de reposición es el mismo que "
+"el precio de coste."
diff --git a/product_replenishment_cost/i18n/fr.po b/product_replenishment_cost/i18n/fr.po
index 97740e0a4..0d81258c1 100644
--- a/product_replenishment_cost/i18n/fr.po
+++ b/product_replenishment_cost/i18n/fr.po
@@ -1,6 +1,6 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
-# * product_replenishment_cost
+# * product_replenishment_cost
#
msgid ""
msgstr ""
@@ -10,25 +10,32 @@ msgstr ""
"PO-Revision-Date: 2014-10-30 16:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: product_replenishment_cost
-#: field:product.product,cost_price:0
-msgid "Replenishment cost"
-msgstr "Coût de réapprovisionnement"
-
-#. module: product_replenishment_cost
-#: code:_description:0
#: model:ir.model,name:product_replenishment_cost.model_product_product
-#, python-format
msgid "Product"
msgstr "Article"
#. module: product_replenishment_cost
-#: help:product.product,cost_price:0
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
-msgstr "Le coût que vous devez prendre en charge pour produire ou acquerir la marchandise. Selon les modules installés, le calcul de ce coût peut s'appuyer sur diverses informations : par exemple les nomenclatures ou les derniers achats. Par défaut, le coût de réapprovisionnement est le même que le Prix de revient."
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+msgid "Replenishment cost"
+msgstr "Coût de réapprovisionnement"
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
+"Le coût que vous devez prendre en charge pour produire ou acquerir la "
+"marchandise. Selon les modules installés, le calcul de ce coût peut "
+"s'appuyer sur diverses informations : par exemple les nomenclatures ou les "
+"derniers achats. Par défaut, le coût de réapprovisionnement est le même que "
+"le Prix de revient."
diff --git a/product_replenishment_cost/i18n/nl.po b/product_replenishment_cost/i18n/nl.po
index 1d17b6f8a..633c7dff3 100644
--- a/product_replenishment_cost/i18n/nl.po
+++ b/product_replenishment_cost/i18n/nl.po
@@ -11,27 +11,28 @@ msgstr ""
"Last-Translator: Erwin van der Ploeg | Endian Solutions "
"\n"
"Language-Team: \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: Poedit 1.5.4\n"
-#. module: product_replenishment_cost
-#: help:product.product,cost_price:0
-msgid ""
-"The cost price is the standard price or, if the product has a bom, the sum "
-"of all standard price of its components. it take also care of the bom "
-"costing like cost per cylce."
-msgstr "Dit is de kostprijs, inclusief eventuele kosten."
-
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
msgid "Product"
msgstr "Product"
#. module: product_replenishment_cost
-#: field:product.product,cost_price:0
-msgid "Cost Price (incl. BoM)"
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+msgid "Replenishment cost"
msgstr "Kostprijs (incl. kosten)"
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr "Dit is de kostprijs, inclusief eventuele kosten."
diff --git a/product_replenishment_cost/i18n/product_replenishment_cost.pot b/product_replenishment_cost/i18n/product_replenishment_cost.pot
new file mode 100644
index 000000000..9bc8184b5
--- /dev/null
+++ b/product_replenishment_cost/i18n/product_replenishment_cost.pot
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+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: product_replenishment_cost
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+msgid "Product"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+msgid "Replenishment cost"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
+
diff --git a/product_replenishment_cost/models/product_product.py b/product_replenishment_cost/models/product_product.py
index 45b5e6455..27ac12477 100644
--- a/product_replenishment_cost/models/product_product.py
+++ b/product_replenishment_cost/models/product_product.py
@@ -19,10 +19,10 @@
#
##############################################################################
-from openerp import fields, api
-from openerp.models import Model
+from odoo import fields, api
+from odoo.models import Model
-import openerp.addons.decimal_precision as dp
+import odoo.addons.decimal_precision as dp
class ProductProduct(Model):
@@ -34,8 +34,8 @@ def _get_replenishment_cost(self):
self.replenishment_cost = self.standard_price
replenishment_cost = fields.Float(
- compute=_get_replenishment_cost, store=True,
- digits_compute=dp.get_precision('Product Price'),
+ string='Replenishment cost', compute='_get_replenishment_cost',
+ store=True, digits=dp.get_precision('Product Price'),
help="The cost that you have to support in order to produce or "
"acquire the goods. Depending on the modules installed, "
"this cost may be computed based on various pieces of "
diff --git a/product_replenishment_cost/readme/CONTRIBUTORS.rst b/product_replenishment_cost/readme/CONTRIBUTORS.rst
new file mode 100644
index 000000000..f863ad159
--- /dev/null
+++ b/product_replenishment_cost/readme/CONTRIBUTORS.rst
@@ -0,0 +1,5 @@
+* Alexandre Fayolle
+* Yannick Vaucher
+* Joël Grand-Guillaume
+* Sylvain Le Gal (https://twitter.com/legalsylvain)
+* Marc Poch Mallandrich
\ No newline at end of file
diff --git a/product_replenishment_cost/readme/DESCRIPTION.rst b/product_replenishment_cost/readme/DESCRIPTION.rst
new file mode 100644
index 000000000..fc3f34f70
--- /dev/null
+++ b/product_replenishment_cost/readme/DESCRIPTION.rst
@@ -0,0 +1,5 @@
+Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of "Cost price" field, but using the product_cost_incl_bom module, it will return the costing from the bom.
+
+As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
+
+All OCA modules to compute margins are based on it, so you'll be able to use them in your own way.
\ No newline at end of file
diff --git a/product_replenishment_cost/static/description/index.html b/product_replenishment_cost/static/description/index.html
new file mode 100644
index 000000000..36d380327
--- /dev/null
+++ b/product_replenishment_cost/static/description/index.html
@@ -0,0 +1,426 @@
+
+
+
+
+
+
+Replenishment Cost
+
+
+
+
+
Replenishment Cost
+
+
+

+
Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of “Cost price” field, but using the product_cost_incl_bom module, it will return the costing from the bom.
+
As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
+
All OCA modules to compute margins are based on it, so you’ll be able to use them in your own way.
+
Table of contents
+
+
+
+
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.
+
+
+
+
+
+
+
+
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.
+
This module is part of the OCA/margin-analysis project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/product_replenishment_cost/test/cost_price_update.yml b/product_replenishment_cost/test/cost_price_update.yml
index 7889744db..cf1405cac 100644
--- a/product_replenishment_cost/test/cost_price_update.yml
+++ b/product_replenishment_cost/test/cost_price_update.yml
@@ -18,33 +18,35 @@
Test the prices are updated correctly
-
!python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_a'))
+ product = self.browse(ref('product_product_a'))
assert product.standard_price == 50.0, "01 The standard_price has not been recorded correctly"
assert product.replenishment_cost == 50.0, "01 The replenishment_cost has not been recorded correctly"
-
Modify product A set new prices
-
!python {model: product.product}: |
- self.write(cr, uid, ref('product_product_a'), {'standard_price':70})
+ product = self.browse(ref('product_product_a'))
+ product.write({'standard_price':70})
-
Test price are update accordingly
-
!python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_a'))
+ product = self.browse(ref('product_product_a'))
assert product.standard_price == 70.0, "02 The standard_price has not been recorded correctly"
assert product.replenishment_cost == 70.0, "02 The replenishment_cost has not been recorded correctly"
-
Modify product A using the template object and set new prices
-
!python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_a'))
+ product = self.browse(ref('product_product_a'))
prod_tmpl_id = product.product_tmpl_id.id
- self.pool.get('product.template').write(cr, uid, [prod_tmpl_id], {'standard_price':100})
+ prod_template = self.env['product.template'].browse(prod_tmpl_id)
+ prod_template.write({'standard_price':100})
-
Test replenishment_cost is update accordingly
-
!python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_a'))
+ product = self.browse(ref('product_product_a'))
assert product.standard_price == 100.0, "03 The standard_price has not been recorded correctly"
assert product.replenishment_cost == 100.0, "03 The replenishment_cost has not been recorded correctly"
diff --git a/product_replenishment_cost/views/product_view.xml b/product_replenishment_cost/views/product_view.xml
index d54b2df29..2e6aaa510 100644
--- a/product_replenishment_cost/views/product_view.xml
+++ b/product_replenishment_cost/views/product_view.xml
@@ -1,14 +1,14 @@
-
-
-
- product.product
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+ product.product
+
+
+
+
+
+
+
+
+
From c02e6245fc714231cc10878e0785f4083f8a114a Mon Sep 17 00:00:00 2001
From: Sylvain LE GAL
Date: Fri, 9 Aug 2019 19:00:59 +0200
Subject: [PATCH 08/30] [PORT][12.0] product_replenishment_cost
---
product_replenishment_cost/README.rst | 25 ++++++---
product_replenishment_cost/__init__.py | 21 --------
product_replenishment_cost/__manifest__.py | 47 +++--------------
.../demo/res_groups.xml | 14 -----
product_replenishment_cost/i18n/fr.po | 21 +++-----
.../i18n/product_replenishment_cost.pot | 6 +--
product_replenishment_cost/models/__init__.py | 21 --------
.../models/product_product.py | 33 ++++--------
product_replenishment_cost/readme/ROADMAP.rst | 5 ++
.../static/description/index.html | 40 ++++++++------
.../test/cost_price_update.yml | 52 -------------------
product_replenishment_cost/tests/__init__.py | 1 +
.../tests/test_module.py | 30 +++++++++++
13 files changed, 105 insertions(+), 211 deletions(-)
delete mode 100644 product_replenishment_cost/demo/res_groups.xml
create mode 100644 product_replenishment_cost/readme/ROADMAP.rst
delete mode 100644 product_replenishment_cost/test/cost_price_update.yml
create mode 100644 product_replenishment_cost/tests/__init__.py
create mode 100644 product_replenishment_cost/tests/test_module.py
diff --git a/product_replenishment_cost/README.rst b/product_replenishment_cost/README.rst
index 41ddab341..c1631c71a 100644
--- a/product_replenishment_cost/README.rst
+++ b/product_replenishment_cost/README.rst
@@ -1,6 +1,6 @@
-==================
-Replenishment Cost
-==================
+==========================
+Product Replenishment Cost
+==========================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
@@ -14,13 +14,13 @@ Replenishment Cost
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmargin--analysis-lightgray.png?logo=github
- :target: https://github.com/OCA/margin-analysis/tree/10.0/product_replenishment_cost
+ :target: https://github.com/OCA/margin-analysis/tree/12.0/product_replenishment_cost
:alt: OCA/margin-analysis
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/margin-analysis-10-0/margin-analysis-10-0-product_replenishment_cost
+ :target: https://translation.odoo-community.org/projects/margin-analysis-12-0/margin-analysis-12-0-product_replenishment_cost
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/132/10.0
+ :target: https://runbot.odoo-community.org/runbot/132/12.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -36,13 +36,22 @@ All OCA modules to compute margins are based on it, so you'll be able to use the
.. contents::
:local:
+Known issues / Roadmap
+======================
+
+Due to framework limitation, the field ``replenishment_cost`` is not
+company dependent, while ``standard_price`` is. (in the recent Odoo versions)
+
+It is due to the current impossibility to make working computed field between
+two field ``company_dependent=True``.
+
Bug Tracker
===========
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -77,6 +86,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/margin-analysis `_ project on GitHub.
+This module is part of the `OCA/margin-analysis `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/product_replenishment_cost/__init__.py b/product_replenishment_cost/__init__.py
index aaf3afe2e..0650744f6 100644
--- a/product_replenishment_cost/__init__.py
+++ b/product_replenishment_cost/__init__.py
@@ -1,22 +1 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Alexandre Fayolle, Joel Grand-Guillaume
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
from . import models
diff --git a/product_replenishment_cost/__manifest__.py b/product_replenishment_cost/__manifest__.py
index c1e135da6..ee190637e 100644
--- a/product_replenishment_cost/__manifest__.py
+++ b/product_replenishment_cost/__manifest__.py
@@ -1,52 +1,21 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Alexandre Fayolle
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
+# Copyright (C) 2012 - Today: Camptocamp SA
+# Copyright (C) 2016 - Today: GRAP (http://www.grap.coop)
+# @author: Alexandre Fayolle
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
- 'name': 'Replenishment Cost',
- 'version': '10.0.1.0.0',
+ 'name': 'Product Replenishment Cost',
+ 'summary': "Provides an overridable method on product which compute"
+ "the Replenishment cost of a product",
+ 'version': '12.0.1.0.0',
'author': "Camptocamp,GRAP,Odoo Community Association (OCA)",
'license': 'AGPL-3',
'category': 'Products',
'depends': [
'product',
- 'sales_team',
],
- 'description': """
-Provides an overridable method on product which compute the Replenishment cost
-of a product. By default it just returns the value of "Cost price" field, but
-using the product_cost_incl_bom module, it will return the costing from the
-bom.
-
-As it is a generic module, you can also setup your own way of computing the
-replenishment_cost for your product.
-
-All OCA modules to compute margins are based on it, so you'll be able to use
-them in your own way.
-""",
'website': 'https://github.com/OCA/margin-analysis',
'data': [
'views/product_view.xml',
- 'demo/res_groups.xml',
- ],
- 'test': [
- 'test/cost_price_update.yml',
],
'installable': True,
}
diff --git a/product_replenishment_cost/demo/res_groups.xml b/product_replenishment_cost/demo/res_groups.xml
deleted file mode 100644
index 3cf0bf35d..000000000
--- a/product_replenishment_cost/demo/res_groups.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/product_replenishment_cost/i18n/fr.po b/product_replenishment_cost/i18n/fr.po
index 0d81258c1..742113d5f 100644
--- a/product_replenishment_cost/i18n/fr.po
+++ b/product_replenishment_cost/i18n/fr.po
@@ -1,16 +1,15 @@
-# Translation of OpenERP Server.
+# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * product_replenishment_cost
+# * product_replenishment_cost
#
msgid ""
msgstr ""
-"Project-Id-Version: OpenERP Server 7.0\n"
+"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-10-30 16:52+0000\n"
-"PO-Revision-Date: 2014-10-30 16:52+0000\n"
+"POT-Creation-Date: 2019-08-09 17:05+0000\n"
+"PO-Revision-Date: 2019-08-09 17:05+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
@@ -22,17 +21,13 @@ msgid "Product"
msgstr "Article"
#. module: product_replenishment_cost
-#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
msgid "Replenishment cost"
msgstr "Coût de réapprovisionnement"
#. module: product_replenishment_cost
-#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
-msgid ""
-"The cost that you have to support in order to produce or acquire the goods. "
-"Depending on the modules installed, this cost may be computed based on "
-"various pieces of information, for example Bills of Materials or latest "
-"Purchases. By default, the Replenishment cost is the same as the Cost Price."
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
"Le coût que vous devez prendre en charge pour produire ou acquerir la "
"marchandise. Selon les modules installés, le calcul de ce coût peut "
diff --git a/product_replenishment_cost/i18n/product_replenishment_cost.pot b/product_replenishment_cost/i18n/product_replenishment_cost.pot
index 9bc8184b5..ecea8fb07 100644
--- a/product_replenishment_cost/i18n/product_replenishment_cost.pot
+++ b/product_replenishment_cost/i18n/product_replenishment_cost.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 10.0\n"
+"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
@@ -19,12 +19,12 @@ msgid "Product"
msgstr ""
#. module: product_replenishment_cost
-#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
msgid "Replenishment cost"
msgstr ""
#. module: product_replenishment_cost
-#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
diff --git a/product_replenishment_cost/models/__init__.py b/product_replenishment_cost/models/__init__.py
index 4859eca20..5c74c8c30 100644
--- a/product_replenishment_cost/models/__init__.py
+++ b/product_replenishment_cost/models/__init__.py
@@ -1,22 +1 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Alexandre Fayolle, Joel Grand-Guillaume
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
from . import product_product
diff --git a/product_replenishment_cost/models/product_product.py b/product_replenishment_cost/models/product_product.py
index 27ac12477..add263f0f 100644
--- a/product_replenishment_cost/models/product_product.py
+++ b/product_replenishment_cost/models/product_product.py
@@ -1,23 +1,8 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Alexandre Fayolle
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
+# Copyright (C) 2012 - Today: Camptocamp SA
+# Copyright (C) 2016 - Today: GRAP (http://www.grap.coop)
+# @author: Alexandre Fayolle
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
from odoo import fields, api
from odoo.models import Model
@@ -28,13 +13,13 @@
class ProductProduct(Model):
_inherit = 'product.product'
- @api.one
@api.depends('product_tmpl_id.standard_price', 'standard_price')
- def _get_replenishment_cost(self):
- self.replenishment_cost = self.standard_price
+ def _compute_replenishment_cost(self):
+ for product in self:
+ product.replenishment_cost = product.standard_price
replenishment_cost = fields.Float(
- string='Replenishment cost', compute='_get_replenishment_cost',
+ string='Replenishment cost', compute='_compute_replenishment_cost',
store=True, digits=dp.get_precision('Product Price'),
help="The cost that you have to support in order to produce or "
"acquire the goods. Depending on the modules installed, "
diff --git a/product_replenishment_cost/readme/ROADMAP.rst b/product_replenishment_cost/readme/ROADMAP.rst
new file mode 100644
index 000000000..e9b545d67
--- /dev/null
+++ b/product_replenishment_cost/readme/ROADMAP.rst
@@ -0,0 +1,5 @@
+Due to framework limitation, the field ``replenishment_cost`` is not
+company dependent, while ``standard_price`` is. (in the recent Odoo versions)
+
+It is due to the current impossibility to make working computed field between
+two field ``company_dependent=True``.
diff --git a/product_replenishment_cost/static/description/index.html b/product_replenishment_cost/static/description/index.html
index 36d380327..d447fe7a1 100644
--- a/product_replenishment_cost/static/description/index.html
+++ b/product_replenishment_cost/static/description/index.html
@@ -4,7 +4,7 @@
-Replenishment Cost
+Product Replenishment Cost
-
-
Replenishment Cost
+
+
Product Replenishment Cost
-

+

Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of “Cost price” field, but using the product_cost_incl_bom module, it will return the costing from the bom.
As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
All OCA modules to compute margins are based on it, so you’ll be able to use them in your own way.
Table of contents
+
+
+
Due to framework limitation, the field replenishment_cost is not
+company dependent, while standard_price is. (in the recent Odoo versions)
+
It is due to the current impossibility to make working computed field between
+two field company_dependent=True.
+
-
+
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
+
feedback.
Do not contact contributors directly about support or help with technical issues.
-
+
-
+
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.
-
This module is part of the OCA/margin-analysis project on GitHub.
+
This module is part of the OCA/margin-analysis project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/product_replenishment_cost/test/cost_price_update.yml b/product_replenishment_cost/test/cost_price_update.yml
deleted file mode 100644
index cf1405cac..000000000
--- a/product_replenishment_cost/test/cost_price_update.yml
+++ /dev/null
@@ -1,52 +0,0 @@
--
- Test the following with user admin
--
- !context
- uid: 'base.user_root'
--
- Create a wine A product
--
- !record {model: product.product, id: product_product_a}:
- categ_id: product.product_category_1
- name: Wine A01
- uom_id: product.product_uom_unit
- uom_po_id: product.product_uom_unit
- company_id: 0
- standard_price: 50.0
- list_price: 75.0
--
- Test the prices are updated correctly
--
- !python {model: product.product}: |
- product = self.browse(ref('product_product_a'))
- assert product.standard_price == 50.0, "01 The standard_price has not been recorded correctly"
- assert product.replenishment_cost == 50.0, "01 The replenishment_cost has not been recorded correctly"
--
- Modify product A set new prices
--
- !python {model: product.product}: |
- product = self.browse(ref('product_product_a'))
- product.write({'standard_price':70})
--
- Test price are update accordingly
--
- !python {model: product.product}: |
- product = self.browse(ref('product_product_a'))
- assert product.standard_price == 70.0, "02 The standard_price has not been recorded correctly"
- assert product.replenishment_cost == 70.0, "02 The replenishment_cost has not been recorded correctly"
--
- Modify product A using the template object and set new prices
--
- !python {model: product.product}: |
- product = self.browse(ref('product_product_a'))
- prod_tmpl_id = product.product_tmpl_id.id
- prod_template = self.env['product.template'].browse(prod_tmpl_id)
- prod_template.write({'standard_price':100})
--
- Test replenishment_cost is update accordingly
--
- !python {model: product.product}: |
- product = self.browse(ref('product_product_a'))
- assert product.standard_price == 100.0, "03 The standard_price has not been recorded correctly"
- assert product.replenishment_cost == 100.0, "03 The replenishment_cost has not been recorded correctly"
-
diff --git a/product_replenishment_cost/tests/__init__.py b/product_replenishment_cost/tests/__init__.py
new file mode 100644
index 000000000..d9b96c4fa
--- /dev/null
+++ b/product_replenishment_cost/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_module
diff --git a/product_replenishment_cost/tests/test_module.py b/product_replenishment_cost/tests/test_module.py
new file mode 100644
index 000000000..a0ba89648
--- /dev/null
+++ b/product_replenishment_cost/tests/test_module.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2019 - Today: GRAP (http://www.grap.coop)
+# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from openerp.tests.common import TransactionCase
+
+
+class TestModule(TransactionCase):
+
+ def setUp(self):
+ super(TestModule, self).setUp()
+ self.ProductProduct = self.env['product.product']
+
+ # Test Section
+ def test_create_or_update(self):
+ # Test compute on creation
+ product = self.ProductProduct.create({
+ 'name': 'Wine A01',
+ 'standard_price': 50,
+ })
+ self.assertEqual(product.replenishment_cost, 50.0)
+
+ # Test Update
+ product.standard_price = 70.0
+
+ self.assertEqual(product.replenishment_cost, 70.0)
+
+ # Test Update via template
+ product.product_tmpl_id.standard_price = 100.0
+ self.assertEqual(product.replenishment_cost, 100.0)
From 377e235ab23c2cecccfe86420b186b01b6a9a74f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com>
Date: Wed, 18 Sep 2019 17:07:57 +0000
Subject: [PATCH 09/30] Added translation using Weblate (Chinese (Simplified))
---
product_replenishment_cost/i18n/zh_CN.po | 30 ++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 product_replenishment_cost/i18n/zh_CN.po
diff --git a/product_replenishment_cost/i18n/zh_CN.po b/product_replenishment_cost/i18n/zh_CN.po
new file mode 100644
index 000000000..81190be73
--- /dev/null
+++ b/product_replenishment_cost/i18n/zh_CN.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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: product_replenishment_cost
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+msgid "Product"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "Replenishment cost"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
From 1c3dfa8b654e5dbf983792bf6c02ab5761bbc1ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com>
Date: Wed, 18 Sep 2019 17:08:07 +0000
Subject: [PATCH 10/30] Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (3 of 3 strings)
Translation: margin-analysis-12.0/margin-analysis-12.0-product_replenishment_cost
Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-12-0/margin-analysis-12-0-product_replenishment_cost/zh_CN/
---
product_replenishment_cost/i18n/es.po | 4 ++--
product_replenishment_cost/i18n/fr.po | 7 ++++++-
product_replenishment_cost/i18n/nl.po | 4 ++--
product_replenishment_cost/i18n/zh_CN.po | 10 ++++++----
4 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/product_replenishment_cost/i18n/es.po b/product_replenishment_cost/i18n/es.po
index aa239ac1b..b72eda4a6 100644
--- a/product_replenishment_cost/i18n/es.po
+++ b/product_replenishment_cost/i18n/es.po
@@ -24,12 +24,12 @@ msgid "Product"
msgstr "Producto"
#. module: product_replenishment_cost
-#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
msgid "Replenishment cost"
msgstr "Coste de reposición"
#. module: product_replenishment_cost
-#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
msgid ""
"The cost that you have to support in order to produce or acquire the goods. "
"Depending on the modules installed, this cost may be computed based on "
diff --git a/product_replenishment_cost/i18n/fr.po b/product_replenishment_cost/i18n/fr.po
index 742113d5f..532ec25cd 100644
--- a/product_replenishment_cost/i18n/fr.po
+++ b/product_replenishment_cost/i18n/fr.po
@@ -10,6 +10,7 @@ msgstr ""
"PO-Revision-Date: 2019-08-09 17:05+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
@@ -27,7 +28,11 @@ msgstr "Coût de réapprovisionnement"
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
"Le coût que vous devez prendre en charge pour produire ou acquerir la "
"marchandise. Selon les modules installés, le calcul de ce coût peut "
diff --git a/product_replenishment_cost/i18n/nl.po b/product_replenishment_cost/i18n/nl.po
index 633c7dff3..ab2cdb9a9 100644
--- a/product_replenishment_cost/i18n/nl.po
+++ b/product_replenishment_cost/i18n/nl.po
@@ -24,12 +24,12 @@ msgid "Product"
msgstr "Product"
#. module: product_replenishment_cost
-#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
msgid "Replenishment cost"
msgstr "Kostprijs (incl. kosten)"
#. module: product_replenishment_cost
-#: model:ir.model.fields,help:product_replenishment_cost.field_product_product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
msgid ""
"The cost that you have to support in order to produce or acquire the goods. "
"Depending on the modules installed, this cost may be computed based on "
diff --git a/product_replenishment_cost/i18n/zh_CN.po b/product_replenishment_cost/i18n/zh_CN.po
index 81190be73..b3bf9d2ea 100644
--- a/product_replenishment_cost/i18n/zh_CN.po
+++ b/product_replenishment_cost/i18n/zh_CN.po
@@ -6,25 +6,27 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2019-09-18 19:24+0000\n"
+"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
"Language-Team: none\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"
+"X-Generator: Weblate 3.8\n"
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
msgid "Product"
-msgstr ""
+msgstr "产品"
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
msgid "Replenishment cost"
-msgstr ""
+msgstr "补货成本"
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
-msgstr ""
+msgstr "为生产或获得货物而必须支付的费用。根据安装的模块,此成本可根据各种信息(例如物料清单或最新采购)计算。默认情况下,补货成本与成本价相同。"
From 3e48c7f99ddb729bd33ae8f9e74dbaa1eba747ee Mon Sep 17 00:00:00 2001
From: Marcel Savegnago
Date: Sun, 14 Mar 2021 21:38:31 +0000
Subject: [PATCH 11/30] Added translation using Weblate (Portuguese (Brazil))
---
product_replenishment_cost/i18n/pt_BR.po | 30 ++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 product_replenishment_cost/i18n/pt_BR.po
diff --git a/product_replenishment_cost/i18n/pt_BR.po b/product_replenishment_cost/i18n/pt_BR.po
new file mode 100644
index 000000000..73047fd43
--- /dev/null
+++ b/product_replenishment_cost/i18n/pt_BR.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: pt_BR\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: product_replenishment_cost
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+msgid "Product"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "Replenishment cost"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
From 857c699f603c3a5b338135e07647baf189981078 Mon Sep 17 00:00:00 2001
From: alvarorib
Date: Mon, 12 Apr 2021 13:58:57 +0000
Subject: [PATCH 12/30] Added translation using Weblate (Portuguese)
---
product_replenishment_cost/i18n/pt.po | 30 +++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 product_replenishment_cost/i18n/pt.po
diff --git a/product_replenishment_cost/i18n/pt.po b/product_replenishment_cost/i18n/pt.po
new file mode 100644
index 000000000..7e6649e8c
--- /dev/null
+++ b/product_replenishment_cost/i18n/pt.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: pt\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: product_replenishment_cost
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+msgid "Product"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "Replenishment cost"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
From aaa30307f564348ec2fdac3f413c5bd51b676564 Mon Sep 17 00:00:00 2001
From: alvarorib
Date: Mon, 12 Apr 2021 13:59:50 +0000
Subject: [PATCH 13/30] Translated using Weblate (Portuguese)
Currently translated at 100.0% (3 of 3 strings)
Translation: margin-analysis-12.0/margin-analysis-12.0-product_replenishment_cost
Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-12-0/margin-analysis-12-0-product_replenishment_cost/pt/
---
product_replenishment_cost/i18n/pt.po | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/product_replenishment_cost/i18n/pt.po b/product_replenishment_cost/i18n/pt.po
index 7e6649e8c..33e9b0f4f 100644
--- a/product_replenishment_cost/i18n/pt.po
+++ b/product_replenishment_cost/i18n/pt.po
@@ -6,25 +6,31 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2021-04-12 16:46+0000\n"
+"Last-Translator: alvarorib \n"
"Language-Team: none\n"
"Language: pt\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"
+"X-Generator: Weblate 4.3.2\n"
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
msgid "Product"
-msgstr ""
+msgstr "Produto"
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
msgid "Replenishment cost"
-msgstr ""
+msgstr "Custo de Reposição"
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
+"O custo que deverá suportar para produzir ou adquirir os bens. Dependendo "
+"dos módulos instalados, esse custo pode ser calculado com base em várias "
+"informações, por exemplo, listas de materiais ou compras mais recentes. Por "
+"pré definição, o custo de Reposição é igual ao Preço de custo."
From bbc9a0721f62524e428dfc853d2f68e531bfa84e Mon Sep 17 00:00:00 2001
From: mymage
Date: Wed, 28 Dec 2022 18:46:12 +0000
Subject: [PATCH 14/30] Added translation using Weblate (Italian)
---
product_replenishment_cost/i18n/it.po | 30 +++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 product_replenishment_cost/i18n/it.po
diff --git a/product_replenishment_cost/i18n/it.po b/product_replenishment_cost/i18n/it.po
new file mode 100644
index 000000000..8f786cd7a
--- /dev/null
+++ b/product_replenishment_cost/i18n/it.po
@@ -0,0 +1,30 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * product_replenishment_cost
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: it\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: product_replenishment_cost
+#: model:ir.model,name:product_replenishment_cost.model_product_product
+msgid "Product"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "Replenishment cost"
+msgstr ""
+
+#. module: product_replenishment_cost
+#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
+msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
From 1619c33415039bc9e77f5860436189bbc007af2f Mon Sep 17 00:00:00 2001
From: mymage
Date: Wed, 28 Dec 2022 18:46:49 +0000
Subject: [PATCH 15/30] Translated using Weblate (Italian)
Currently translated at 100.0% (3 of 3 strings)
Translation: margin-analysis-12.0/margin-analysis-12.0-product_replenishment_cost
Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-12-0/margin-analysis-12-0-product_replenishment_cost/it/
---
product_replenishment_cost/i18n/it.po | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/product_replenishment_cost/i18n/it.po b/product_replenishment_cost/i18n/it.po
index 8f786cd7a..c5e6ddf6f 100644
--- a/product_replenishment_cost/i18n/it.po
+++ b/product_replenishment_cost/i18n/it.po
@@ -6,25 +6,31 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2022-12-28 21:45+0000\n"
+"Last-Translator: mymage \n"
"Language-Team: none\n"
"Language: it\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"
+"X-Generator: Weblate 4.14.1\n"
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
msgid "Product"
-msgstr ""
+msgstr "Prodotto"
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
msgid "Replenishment cost"
-msgstr ""
+msgstr "Costo rifornimento"
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
+"Il costo che si sostiene per produrre o acquistare il bene. In funzione dei "
+"moduli installati, questo costo può essere calcolato in base a varie "
+"informazioni, per esempio distinte base o gli ultimi acquisti. Il costo di "
+"rifornimento predefinito è lo stesso del prezzo di costo."
From 40a00815b6ec711c67a99769a86364bd843f18d7 Mon Sep 17 00:00:00 2001
From: Sylvain LE GAL
Date: Tue, 3 Jan 2023 12:19:00 +0100
Subject: [PATCH 16/30] [REF] apply pre-commit fixes
---
product_replenishment_cost/__manifest__.py | 2 +-
product_replenishment_cost/readme/CONTRIBUTORS.rst | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/product_replenishment_cost/__manifest__.py b/product_replenishment_cost/__manifest__.py
index ee190637e..50b30e5d0 100644
--- a/product_replenishment_cost/__manifest__.py
+++ b/product_replenishment_cost/__manifest__.py
@@ -6,7 +6,7 @@
'name': 'Product Replenishment Cost',
'summary': "Provides an overridable method on product which compute"
"the Replenishment cost of a product",
- 'version': '12.0.1.0.0',
+ 'version': '12.0.1.0.1',
'author': "Camptocamp,GRAP,Odoo Community Association (OCA)",
'license': 'AGPL-3',
'category': 'Products',
diff --git a/product_replenishment_cost/readme/CONTRIBUTORS.rst b/product_replenishment_cost/readme/CONTRIBUTORS.rst
index f863ad159..1bf74e807 100644
--- a/product_replenishment_cost/readme/CONTRIBUTORS.rst
+++ b/product_replenishment_cost/readme/CONTRIBUTORS.rst
@@ -2,4 +2,4 @@
* Yannick Vaucher
* Joël Grand-Guillaume
* Sylvain Le Gal (https://twitter.com/legalsylvain)
-* Marc Poch Mallandrich
\ No newline at end of file
+* Marc Poch Mallandrich
From 7f8dc8f2da33554ee2831d6e0f8f045d2fbbf76f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro?=
Date: Mon, 5 Jun 2023 12:23:09 +0200
Subject: [PATCH 17/30] [IMP] product_replenishment_cost: pre-commit stuff
---
product_replenishment_cost/__manifest__.py | 26 +++++++++----------
.../models/product_product.py | 23 +++++++++-------
.../readme/DESCRIPTION.rst | 2 +-
.../tests/test_module.py | 13 +++++-----
.../views/product_view.xml | 9 ++++---
5 files changed, 40 insertions(+), 33 deletions(-)
diff --git a/product_replenishment_cost/__manifest__.py b/product_replenishment_cost/__manifest__.py
index 50b30e5d0..1ea848c6a 100644
--- a/product_replenishment_cost/__manifest__.py
+++ b/product_replenishment_cost/__manifest__.py
@@ -3,19 +3,19 @@
# @author: Alexandre Fayolle
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
- 'name': 'Product Replenishment Cost',
- 'summary': "Provides an overridable method on product which compute"
- "the Replenishment cost of a product",
- 'version': '12.0.1.0.1',
- 'author': "Camptocamp,GRAP,Odoo Community Association (OCA)",
- 'license': 'AGPL-3',
- 'category': 'Products',
- 'depends': [
- 'product',
+ "name": "Product Replenishment Cost",
+ "summary": "Provides an overridable method on product which compute"
+ "the Replenishment cost of a product",
+ "version": "12.0.1.0.1",
+ "author": "Camptocamp,GRAP,Odoo Community Association (OCA)",
+ "license": "AGPL-3",
+ "category": "Products",
+ "depends": [
+ "product",
],
- 'website': 'https://github.com/OCA/margin-analysis',
- 'data': [
- 'views/product_view.xml',
+ "website": "https://github.com/OCA/margin-analysis",
+ "data": [
+ "views/product_view.xml",
],
- 'installable': True,
+ "installable": True,
}
diff --git a/product_replenishment_cost/models/product_product.py b/product_replenishment_cost/models/product_product.py
index add263f0f..93c920e55 100644
--- a/product_replenishment_cost/models/product_product.py
+++ b/product_replenishment_cost/models/product_product.py
@@ -4,26 +4,29 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from odoo import fields, api
+from odoo import api, fields
from odoo.models import Model
import odoo.addons.decimal_precision as dp
class ProductProduct(Model):
- _inherit = 'product.product'
+ _inherit = "product.product"
- @api.depends('product_tmpl_id.standard_price', 'standard_price')
+ @api.depends("product_tmpl_id.standard_price", "standard_price")
def _compute_replenishment_cost(self):
for product in self:
product.replenishment_cost = product.standard_price
replenishment_cost = fields.Float(
- string='Replenishment cost', compute='_compute_replenishment_cost',
- store=True, digits=dp.get_precision('Product Price'),
+ string="Replenishment cost",
+ compute="_compute_replenishment_cost",
+ store=True,
+ digits=dp.get_precision("Product Price"),
help="The cost that you have to support in order to produce or "
- "acquire the goods. Depending on the modules installed, "
- "this cost may be computed based on various pieces of "
- "information, for example Bills of Materials or latest "
- "Purchases. By default, the Replenishment cost is the same "
- "as the Cost Price.")
+ "acquire the goods. Depending on the modules installed, "
+ "this cost may be computed based on various pieces of "
+ "information, for example Bills of Materials or latest "
+ "Purchases. By default, the Replenishment cost is the same "
+ "as the Cost Price.",
+ )
diff --git a/product_replenishment_cost/readme/DESCRIPTION.rst b/product_replenishment_cost/readme/DESCRIPTION.rst
index fc3f34f70..a8df8c606 100644
--- a/product_replenishment_cost/readme/DESCRIPTION.rst
+++ b/product_replenishment_cost/readme/DESCRIPTION.rst
@@ -2,4 +2,4 @@ Provides an overridable method on product which compute the Replenishment cost o
As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
-All OCA modules to compute margins are based on it, so you'll be able to use them in your own way.
\ No newline at end of file
+All OCA modules to compute margins are based on it, so you'll be able to use them in your own way.
diff --git a/product_replenishment_cost/tests/test_module.py b/product_replenishment_cost/tests/test_module.py
index a0ba89648..addecae34 100644
--- a/product_replenishment_cost/tests/test_module.py
+++ b/product_replenishment_cost/tests/test_module.py
@@ -6,18 +6,19 @@
class TestModule(TransactionCase):
-
def setUp(self):
super(TestModule, self).setUp()
- self.ProductProduct = self.env['product.product']
+ self.ProductProduct = self.env["product.product"]
# Test Section
def test_create_or_update(self):
# Test compute on creation
- product = self.ProductProduct.create({
- 'name': 'Wine A01',
- 'standard_price': 50,
- })
+ product = self.ProductProduct.create(
+ {
+ "name": "Wine A01",
+ "standard_price": 50,
+ }
+ )
self.assertEqual(product.replenishment_cost, 50.0)
# Test Update
diff --git a/product_replenishment_cost/views/product_view.xml b/product_replenishment_cost/views/product_view.xml
index 2e6aaa510..f803787f9 100644
--- a/product_replenishment_cost/views/product_view.xml
+++ b/product_replenishment_cost/views/product_view.xml
@@ -1,12 +1,15 @@
-
+
product.product
-
-
+
+
From ef7ddff38659a72e86defb61c7fa69e8119bef34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro?=
Date: Mon, 5 Jun 2023 12:59:19 +0200
Subject: [PATCH 18/30] [MIG] product_replenishment_cost: Migration to 16.0
---
product_replenishment_cost/__manifest__.py | 2 +-
product_replenishment_cost/models/product_product.py | 4 +---
product_replenishment_cost/tests/test_module.py | 9 +++++----
3 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/product_replenishment_cost/__manifest__.py b/product_replenishment_cost/__manifest__.py
index 1ea848c6a..40166484e 100644
--- a/product_replenishment_cost/__manifest__.py
+++ b/product_replenishment_cost/__manifest__.py
@@ -6,7 +6,7 @@
"name": "Product Replenishment Cost",
"summary": "Provides an overridable method on product which compute"
"the Replenishment cost of a product",
- "version": "12.0.1.0.1",
+ "version": "16.0.1.0.0",
"author": "Camptocamp,GRAP,Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Products",
diff --git a/product_replenishment_cost/models/product_product.py b/product_replenishment_cost/models/product_product.py
index 93c920e55..78007a708 100644
--- a/product_replenishment_cost/models/product_product.py
+++ b/product_replenishment_cost/models/product_product.py
@@ -7,8 +7,6 @@
from odoo import api, fields
from odoo.models import Model
-import odoo.addons.decimal_precision as dp
-
class ProductProduct(Model):
_inherit = "product.product"
@@ -22,7 +20,7 @@ def _compute_replenishment_cost(self):
string="Replenishment cost",
compute="_compute_replenishment_cost",
store=True,
- digits=dp.get_precision("Product Price"),
+ digits="Product Price",
help="The cost that you have to support in order to produce or "
"acquire the goods. Depending on the modules installed, "
"this cost may be computed based on various pieces of "
diff --git a/product_replenishment_cost/tests/test_module.py b/product_replenishment_cost/tests/test_module.py
index addecae34..4ecbc616e 100644
--- a/product_replenishment_cost/tests/test_module.py
+++ b/product_replenishment_cost/tests/test_module.py
@@ -2,13 +2,14 @@
# @author: Sylvain LE GAL (https://twitter.com/legalsylvain)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from openerp.tests.common import TransactionCase
+from odoo.tests.common import TransactionCase
class TestModule(TransactionCase):
- def setUp(self):
- super(TestModule, self).setUp()
- self.ProductProduct = self.env["product.product"]
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.ProductProduct = cls.env["product.product"]
# Test Section
def test_create_or_update(self):
From 540bf6b7873c4a7808137dfd3a2386cdaf0dd731 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro?=
Date: Tue, 6 Jun 2023 13:24:50 +0200
Subject: [PATCH 19/30] [UPD] DESCRIPTION.rst
---
product_replenishment_cost/readme/DESCRIPTION.rst | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/product_replenishment_cost/readme/DESCRIPTION.rst b/product_replenishment_cost/readme/DESCRIPTION.rst
index a8df8c606..87fe0c8eb 100644
--- a/product_replenishment_cost/readme/DESCRIPTION.rst
+++ b/product_replenishment_cost/readme/DESCRIPTION.rst
@@ -1,5 +1,9 @@
Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of "Cost price" field, but using the product_cost_incl_bom module, it will return the costing from the bom.
+"Cost price" is the cost assigned for each product in the warehouse and the "Replenishment cost" is the cost it would cost to buy a new product. They are different costs because the cost price depends on your valuation method and the operations you have performed while the replenishment cost is determined by the current market conditions.
+
+For example: The price of the product in the supplier's catalog is €15/piece. Therefore, if I want to buy a new unit, my replenishment cost would be €15. But if my stock comes from having bought it in a special offer that allowed me to buy it for €10, then my cost price is €10/piece.
+
As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
All OCA modules to compute margins are based on it, so you'll be able to use them in your own way.
From c62a433f721973839069893d3c200d7ffe8a2f7d Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Tue, 25 Jul 2023 11:56:51 +0000
Subject: [PATCH 20/30] [UPD] Update product_replenishment_cost.pot
---
product_replenishment_cost/README.rst | 14 +++++++++-----
.../i18n/product_replenishment_cost.pot | 15 +++++++++------
.../static/description/index.html | 8 +++++---
3 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/product_replenishment_cost/README.rst b/product_replenishment_cost/README.rst
index c1631c71a..718f7774e 100644
--- a/product_replenishment_cost/README.rst
+++ b/product_replenishment_cost/README.rst
@@ -14,19 +14,23 @@ Product Replenishment Cost
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmargin--analysis-lightgray.png?logo=github
- :target: https://github.com/OCA/margin-analysis/tree/12.0/product_replenishment_cost
+ :target: https://github.com/OCA/margin-analysis/tree/16.0/product_replenishment_cost
:alt: OCA/margin-analysis
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/margin-analysis-12-0/margin-analysis-12-0-product_replenishment_cost
+ :target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-product_replenishment_cost
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/132/12.0
+ :target: https://runbot.odoo-community.org/runbot/132/16.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of "Cost price" field, but using the product_cost_incl_bom module, it will return the costing from the bom.
+"Cost price" is the cost assigned for each product in the warehouse and the "Replenishment cost" is the cost it would cost to buy a new product. They are different costs because the cost price depends on your valuation method and the operations you have performed while the replenishment cost is determined by the current market conditions.
+
+For example: The price of the product in the supplier's catalog is €15/piece. Therefore, if I want to buy a new unit, my replenishment cost would be €15. But if my stock comes from having bought it in a special offer that allowed me to buy it for €10, then my cost price is €10/piece.
+
As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
All OCA modules to compute margins are based on it, so you'll be able to use them in your own way.
@@ -51,7 +55,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -86,6 +90,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/margin-analysis `_ project on GitHub.
+This module is part of the `OCA/margin-analysis `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/product_replenishment_cost/i18n/product_replenishment_cost.pot b/product_replenishment_cost/i18n/product_replenishment_cost.pot
index ecea8fb07..5ba675bf0 100644
--- a/product_replenishment_cost/i18n/product_replenishment_cost.pot
+++ b/product_replenishment_cost/i18n/product_replenishment_cost.pot
@@ -1,12 +1,12 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * product_replenishment_cost
+# * product_replenishment_cost
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
+"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: <>\n"
+"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -15,7 +15,7 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
+msgid "Product Variant"
msgstr ""
#. module: product_replenishment_cost
@@ -25,6 +25,9 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
-
diff --git a/product_replenishment_cost/static/description/index.html b/product_replenishment_cost/static/description/index.html
index d447fe7a1..4d7b538a8 100644
--- a/product_replenishment_cost/static/description/index.html
+++ b/product_replenishment_cost/static/description/index.html
@@ -367,8 +367,10 @@ Product Replenishment Cost
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of “Cost price” field, but using the product_cost_incl_bom module, it will return the costing from the bom.
+“Cost price” is the cost assigned for each product in the warehouse and the “Replenishment cost” is the cost it would cost to buy a new product. They are different costs because the cost price depends on your valuation method and the operations you have performed while the replenishment cost is determined by the current market conditions.
+For example: The price of the product in the supplier’s catalog is €15/piece. Therefore, if I want to buy a new unit, my replenishment cost would be €15. But if my stock comes from having bought it in a special offer that allowed me to buy it for €10, then my cost price is €10/piece.
As it is a generic module, you can also setup your own way of computing the replenishment_cost for your product.
All OCA modules to compute margins are based on it, so you’ll be able to use them in your own way.
Table of contents
@@ -396,7 +398,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -425,7 +427,7 @@
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/margin-analysis project on GitHub.
+
This module is part of the OCA/margin-analysis project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
From f56439fe6f3bd319009bf05be9dc0defda78b16a Mon Sep 17 00:00:00 2001
From: Weblate
Date: Tue, 25 Jul 2023 15:09:38 +0000
Subject: [PATCH 21/30] Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Translation: margin-analysis-16.0/margin-analysis-16.0-product_replenishment_cost
Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-product_replenishment_cost/
---
product_replenishment_cost/i18n/es.po | 7 +++++--
product_replenishment_cost/i18n/fr.po | 7 +++++--
product_replenishment_cost/i18n/it.po | 15 +++++++++++----
product_replenishment_cost/i18n/nl.po | 7 +++++--
product_replenishment_cost/i18n/pt.po | 15 +++++++++++----
product_replenishment_cost/i18n/pt_BR.po | 10 +++++++---
product_replenishment_cost/i18n/zh_CN.po | 19 ++++++++++++++-----
7 files changed, 58 insertions(+), 22 deletions(-)
diff --git a/product_replenishment_cost/i18n/es.po b/product_replenishment_cost/i18n/es.po
index b72eda4a6..06a36907b 100644
--- a/product_replenishment_cost/i18n/es.po
+++ b/product_replenishment_cost/i18n/es.po
@@ -20,8 +20,8 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
-msgstr "Producto"
+msgid "Product Variant"
+msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
@@ -41,3 +41,6 @@ msgstr ""
"función de diversos datos, por ejemplo, listas de materiales o compras más "
"recientes. De forma predeterminada, el coste de reposición es el mismo que "
"el precio de coste."
+
+#~ msgid "Product"
+#~ msgstr "Producto"
diff --git a/product_replenishment_cost/i18n/fr.po b/product_replenishment_cost/i18n/fr.po
index 532ec25cd..0bc6bb599 100644
--- a/product_replenishment_cost/i18n/fr.po
+++ b/product_replenishment_cost/i18n/fr.po
@@ -18,8 +18,8 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
-msgstr "Article"
+msgid "Product Variant"
+msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
@@ -39,3 +39,6 @@ msgstr ""
"s'appuyer sur diverses informations : par exemple les nomenclatures ou les "
"derniers achats. Par défaut, le coût de réapprovisionnement est le même que "
"le Prix de revient."
+
+#~ msgid "Product"
+#~ msgstr "Article"
diff --git a/product_replenishment_cost/i18n/it.po b/product_replenishment_cost/i18n/it.po
index c5e6ddf6f..426ece26a 100644
--- a/product_replenishment_cost/i18n/it.po
+++ b/product_replenishment_cost/i18n/it.po
@@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * product_replenishment_cost
+# * product_replenishment_cost
#
msgid ""
msgstr ""
@@ -18,8 +18,8 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
-msgstr "Prodotto"
+msgid "Product Variant"
+msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
@@ -28,9 +28,16 @@ msgstr "Costo rifornimento"
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
"Il costo che si sostiene per produrre o acquistare il bene. In funzione dei "
"moduli installati, questo costo può essere calcolato in base a varie "
"informazioni, per esempio distinte base o gli ultimi acquisti. Il costo di "
"rifornimento predefinito è lo stesso del prezzo di costo."
+
+#~ msgid "Product"
+#~ msgstr "Prodotto"
diff --git a/product_replenishment_cost/i18n/nl.po b/product_replenishment_cost/i18n/nl.po
index ab2cdb9a9..91f1a5384 100644
--- a/product_replenishment_cost/i18n/nl.po
+++ b/product_replenishment_cost/i18n/nl.po
@@ -20,8 +20,8 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
-msgstr "Product"
+msgid "Product Variant"
+msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
@@ -36,3 +36,6 @@ msgid ""
"various pieces of information, for example Bills of Materials or latest "
"Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr "Dit is de kostprijs, inclusief eventuele kosten."
+
+#~ msgid "Product"
+#~ msgstr "Product"
diff --git a/product_replenishment_cost/i18n/pt.po b/product_replenishment_cost/i18n/pt.po
index 33e9b0f4f..5eda83d72 100644
--- a/product_replenishment_cost/i18n/pt.po
+++ b/product_replenishment_cost/i18n/pt.po
@@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * product_replenishment_cost
+# * product_replenishment_cost
#
msgid ""
msgstr ""
@@ -18,8 +18,8 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
-msgstr "Produto"
+msgid "Product Variant"
+msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
@@ -28,9 +28,16 @@ msgstr "Custo de Reposição"
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
"O custo que deverá suportar para produzir ou adquirir os bens. Dependendo "
"dos módulos instalados, esse custo pode ser calculado com base em várias "
"informações, por exemplo, listas de materiais ou compras mais recentes. Por "
"pré definição, o custo de Reposição é igual ao Preço de custo."
+
+#~ msgid "Product"
+#~ msgstr "Produto"
diff --git a/product_replenishment_cost/i18n/pt_BR.po b/product_replenishment_cost/i18n/pt_BR.po
index 73047fd43..e3d9dc7ea 100644
--- a/product_replenishment_cost/i18n/pt_BR.po
+++ b/product_replenishment_cost/i18n/pt_BR.po
@@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * product_replenishment_cost
+# * product_replenishment_cost
#
msgid ""
msgstr ""
@@ -16,7 +16,7 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
+msgid "Product Variant"
msgstr ""
#. module: product_replenishment_cost
@@ -26,5 +26,9 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
msgstr ""
diff --git a/product_replenishment_cost/i18n/zh_CN.po b/product_replenishment_cost/i18n/zh_CN.po
index b3bf9d2ea..ba50a5379 100644
--- a/product_replenishment_cost/i18n/zh_CN.po
+++ b/product_replenishment_cost/i18n/zh_CN.po
@@ -1,6 +1,6 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * product_replenishment_cost
+# * product_replenishment_cost
#
msgid ""
msgstr ""
@@ -18,8 +18,8 @@ msgstr ""
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
-msgid "Product"
-msgstr "产品"
+msgid "Product Variant"
+msgstr ""
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
@@ -28,5 +28,14 @@ msgstr "补货成本"
#. module: product_replenishment_cost
#: model:ir.model.fields,help:product_replenishment_cost.field_product_product__replenishment_cost
-msgid "The cost that you have to support in order to produce or acquire the goods. Depending on the modules installed, this cost may be computed based on various pieces of information, for example Bills of Materials or latest Purchases. By default, the Replenishment cost is the same as the Cost Price."
-msgstr "为生产或获得货物而必须支付的费用。根据安装的模块,此成本可根据各种信息(例如物料清单或最新采购)计算。默认情况下,补货成本与成本价相同。"
+msgid ""
+"The cost that you have to support in order to produce or acquire the goods. "
+"Depending on the modules installed, this cost may be computed based on "
+"various pieces of information, for example Bills of Materials or latest "
+"Purchases. By default, the Replenishment cost is the same as the Cost Price."
+msgstr ""
+"为生产或获得货物而必须支付的费用。根据安装的模块,此成本可根据各种信息(例如"
+"物料清单或最新采购)计算。默认情况下,补货成本与成本价相同。"
+
+#~ msgid "Product"
+#~ msgstr "产品"
From f6f964af4ab82ad1b8666c4c61e472783ce0ac07 Mon Sep 17 00:00:00 2001
From: Ivorra78
Date: Mon, 21 Aug 2023 15:21:30 +0000
Subject: [PATCH 22/30] Translated using Weblate (Spanish)
Currently translated at 100.0% (3 of 3 strings)
Translation: margin-analysis-16.0/margin-analysis-16.0-product_replenishment_cost
Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-product_replenishment_cost/es/
---
product_replenishment_cost/README.rst | 15 +++++---
product_replenishment_cost/i18n/es.po | 11 +++---
.../static/description/index.html | 38 ++++++++++---------
3 files changed, 35 insertions(+), 29 deletions(-)
diff --git a/product_replenishment_cost/README.rst b/product_replenishment_cost/README.rst
index 718f7774e..8e70c8358 100644
--- a/product_replenishment_cost/README.rst
+++ b/product_replenishment_cost/README.rst
@@ -2,10 +2,13 @@
Product Replenishment Cost
==========================
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:11c36c6abdc64d2df703b1e6a520296b6566111a90c1782d8093576c121677a1
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -19,11 +22,11 @@ Product Replenishment Cost
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-product_replenishment_cost
:alt: Translate me on Weblate
-.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/132/16.0
- :alt: Try me on Runbot
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/margin-analysis&target_branch=16.0
+ :alt: Try me on Runboat
-|badge1| |badge2| |badge3| |badge4| |badge5|
+|badge1| |badge2| |badge3| |badge4| |badge5|
Provides an overridable method on product which compute the Replenishment cost of a product. By default it just returns the value of "Cost price" field, but using the product_cost_incl_bom module, it will return the costing from the bom.
@@ -54,7 +57,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
-If you spotted it first, help us smashing it by providing a detailed and welcomed
+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.
diff --git a/product_replenishment_cost/i18n/es.po b/product_replenishment_cost/i18n/es.po
index 06a36907b..2cda61c34 100644
--- a/product_replenishment_cost/i18n/es.po
+++ b/product_replenishment_cost/i18n/es.po
@@ -9,19 +9,20 @@ msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-10-30 16:52+0000\n"
-"PO-Revision-Date: 2014-10-30 16:52+0000\n"
-"Last-Translator: <>\n"
+"PO-Revision-Date: 2023-09-02 18:17+0000\n"
+"Last-Translator: Ivorra78 \n"
"Language-Team: \n"
-"Language: \n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
-"Plural-Forms: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
#. module: product_replenishment_cost
#: model:ir.model,name:product_replenishment_cost.model_product_product
msgid "Product Variant"
-msgstr ""
+msgstr "Variante del producto"
#. module: product_replenishment_cost
#: model:ir.model.fields,field_description:product_replenishment_cost.field_product_product__replenishment_cost
diff --git a/product_replenishment_cost/static/description/index.html b/product_replenishment_cost/static/description/index.html
index 4d7b538a8..4493986a6 100644
--- a/product_replenishment_cost/static/description/index.html
+++ b/product_replenishment_cost/static/description/index.html
@@ -1,20 +1,20 @@
-
+
-
+
Product Replenishment Cost
-
-
Product Replenishment Cost
+
+
+
+
+
+
-
+
Due to framework limitation, the field replenishment_cost is not
company dependent, while standard_price is. (in the recent Odoo
versions)
@@ -410,7 +415,7 @@
between two field
company_dependent=True.
-
+
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
@@ -418,16 +423,16 @@
Do not contact contributors directly about support or help with technical issues.
+
From c895a6c128698ebab1357a405b30736f8bb40eff Mon Sep 17 00:00:00 2001
From: Alex Cuellar
Date: Thu, 30 Jul 2026 17:57:55 -0500
Subject: [PATCH 30/30] [MIG] product_replenishment_cost: Migration to 19.0
---
product_replenishment_cost/README.rst | 10 +++++-----
product_replenishment_cost/__manifest__.py | 2 +-
.../static/description/index.html | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/product_replenishment_cost/README.rst b/product_replenishment_cost/README.rst
index f7e041e88..cac38d71a 100644
--- a/product_replenishment_cost/README.rst
+++ b/product_replenishment_cost/README.rst
@@ -21,13 +21,13 @@ Product Replenishment Cost
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmargin--analysis-lightgray.png?logo=github
- :target: https://github.com/OCA/margin-analysis/tree/18.0/product_replenishment_cost
+ :target: https://github.com/OCA/margin-analysis/tree/19.0/product_replenishment_cost
:alt: OCA/margin-analysis
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/margin-analysis-18-0/margin-analysis-18-0-product_replenishment_cost
+ :target: https://translation.odoo-community.org/projects/margin-analysis-19-0/margin-analysis-19-0-product_replenishment_cost
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/margin-analysis&target_branch=18.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/margin-analysis&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -76,7 +76,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -114,6 +114,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/margin-analysis `_ project on GitHub.
+This module is part of the `OCA/margin-analysis `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/product_replenishment_cost/__manifest__.py b/product_replenishment_cost/__manifest__.py
index 69e44da86..9904d0291 100644
--- a/product_replenishment_cost/__manifest__.py
+++ b/product_replenishment_cost/__manifest__.py
@@ -6,7 +6,7 @@
"name": "Product Replenishment Cost",
"summary": "Provides an overridable method on product which compute"
"the Replenishment cost of a product",
- "version": "18.0.1.0.0",
+ "version": "19.0.1.0.0",
"author": "Camptocamp,GRAP,Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Products",
diff --git a/product_replenishment_cost/static/description/index.html b/product_replenishment_cost/static/description/index.html
index 7835778bb..5f82a25a0 100644
--- a/product_replenishment_cost/static/description/index.html
+++ b/product_replenishment_cost/static/description/index.html
@@ -374,7 +374,7 @@ Product Replenishment Cost
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:51e1eecb980106fd47d58027e5f35156393cf7134c3d6ebc1d6f85269a83e7df
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Provides an overridable method on product which compute the
Replenishment cost of a product. By default it just returns the value of
“Cost price” field, but using the product_cost_incl_bom module, it will
@@ -419,7 +419,7 @@
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.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -454,7 +454,7 @@
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/margin-analysis project on GitHub.
+
This module is part of the OCA/margin-analysis project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.