Explorar el Código

commit inicial

Rodney Elpidio Enciso Arias hace 7 años
commit
cf9099971f

+ 66 - 0
README.rst

@@ -0,0 +1,66 @@
+.. 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
+
+=====================
+Pricelist Per Product
+=====================
+
+This module allows to see and edit all sale prices on product form
+
+
+
+Configuration
+=============
+
+* Sales / Customer feature :
+  check "Use pricelists to adapt your price per customers"
+* Menu Sales / Configuration / Pricelist Versions
+  Check Product Price Grid field in your pricelists of your choice
+
+.. image:: static/description/pricelist.png
+
+
+Usage
+=====
+
+* Go to the product form (Sales tab): add a Price version
+
+.. image:: static/description/product.png
+
+* Menu Sales / Configuration / Pricelist Versions
+
+
+.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
+   :alt: Try me on Runbot
+   :target: https://runbot.odoo-community.org/runbot/135/8.0
+
+
+Known issues / Roadmap
+======================
+
+Mass update of prices in not the object of this module.
+
+
+
+Credits
+=======
+
+Contributors
+------------
+
+* David BEAL <david.beal@akretion.com>
+* Sylvain CALADOR <sylvain.calador@akretion.com>
+
+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.

+ 2 - 0
__init__.py

@@ -0,0 +1,2 @@
+from . import product
+from . import pricelist

BIN
__init__.pyc


+ 36 - 0
__openerp__.py

@@ -0,0 +1,36 @@
+# coding: utf-8
+# © 2015 Sylvain CALADOR @ Akretion
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+{
+    'name': 'Pricelist Per Product',
+    'version': '8.0.1.0.0',
+    'author': 'Akretion, Odoo Community Association (OCA)',
+    'summarize': 'Display pricelist items in products',
+    'maintainer': 'Akretion',
+    'category': 'sale',
+    'depends': [
+        'sale',
+    ],
+    'website': 'http://www.akretion.com/',
+    'data': [
+        'install_view.xml',
+        'product_view.xml',
+        'pricelist_view.xml',
+        'data/pricelist.xml',
+    ],
+    'demo': [
+        'demo/product.pricelist.item.csv',
+    ],
+    'tests': [],
+    'images': [
+        'static/description/mass.png',
+        'static/description/pricelist.png',
+        'static/description/product.png',
+    ],
+    'installable': True,
+    'license': 'AGPL-3',
+    'external_dependencies': {
+        'python': [],
+    },
+}

+ 17 - 0
data/pricelist.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+  <data noupdate="1">
+
+    <record id="pricelist_grid" model="product.pricelist">
+        <field name="name">Pricelist Grid</field>
+        <field name="type">sale</field>
+        <field name="price_grid" eval="1"/>
+    </record>
+
+    <record id="pricelist_grid_version" model="product.pricelist.version">
+        <field name="name">Grid Version</field>
+        <field name="pricelist_id" eval="ref('pricelist_grid')"/>
+    </record>
+
+  </data>
+</openerp>

+ 4 - 0
demo/product.pricelist.item.csv

@@ -0,0 +1,4 @@
+"id","product_tmpl_id/id","product_id/id","price_version_id/id","price_surcharge","price_discount","sequence","base","min_quantity"
+"price_grid_item1","product.product_product_4_product_template",,"pricelist_grid_version",1,-1,1,1,1
+"price_grid_item2",,"product.product_product_8","pricelist_grid_version",2,-1,1,1,1
+"price_grid_item3",,"product.product_product_7","pricelist_grid_version",3,-1,1,1,1

+ 189 - 0
i18n/ca.po

@@ -0,0 +1,189 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pricelist_per_product
+# 
+# Translators:
+# OCA Transbot <transbot@odoo-community.org>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-11-03 10:07+0000\n"
+"PO-Revision-Date: 2016-11-03 10:07+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
+"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Base"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Click to see this product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,currency_name:0
+msgid "Currency"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid ""
+"Define a price for this variant according to attribute price extra if any "
+"(tab 'Variants')"
+msgstr ""
+
+#. module: pricelist_per_product
+#: code:addons/pricelist_per_product/pricelist.py:8
+#: help:product.pricelist,price_grid:0
+#: help:product.pricelist.version,price_grid:0
+#, python-format
+msgid ""
+"Define if the price list items are filled\n"
+"from product form with a grid of specific values\n"
+"for each product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Disc."
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,date_end:0
+msgid "End Date"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,related_sequence:0
+msgid ""
+"Gives the order in which the pricelist items will be checked. The evaluation"
+" gives highest priority to lowest sequence and stops as soon as a matching "
+"item is found."
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist.version,name:pricelist_per_product.pricelist_grid_version
+msgid "Grid Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,item_grid_ids:0
+msgid "Item grid ids"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,date_end:0
+msgid "Last valid date for the version."
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.version,tmpl_in_count:0
+msgid "Number of Product Template with this Pricelist version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.actions.client,name:pricelist_per_product.action_pricelist_per_product_module_install
+msgid "Open pricelist per product Menu"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist
+msgid "Pricelist"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist,name:pricelist_per_product.pricelist_grid
+msgid "Pricelist Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.template,pricelist_item_ids:0
+msgid "Pricelist Items"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Element de la tarifa"
+
+#. module: pricelist_per_product
+#: field:product.pricelist,price_grid:0
+#: field:product.pricelist.version,price_grid:0
+msgid "Product Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Product Variant"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Products templates with this version (click to see them)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Public price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,related_sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Show Products"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,tmpl_in_count:0
+msgid "Template with this Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.template,pricelist_item_ids:0
+msgid ""
+"These prices are defined with absolute values\n"
+"(no calculation with discount)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "{'invisible': [('price_grid', '=', True)]}"
+msgstr ""

+ 198 - 0
i18n/de.po

@@ -0,0 +1,198 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pricelist_per_product
+# 
+# Translators:
+# OCA Transbot <transbot@odoo-community.org>, 2016
+# Rudolf Schnapka <rs@techno-flex.de>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-04-21 02:49+0000\n"
+"PO-Revision-Date: 2017-04-21 02:49+0000\n"
+"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>, 2017\n"
+"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,related_sequence:0
+msgid ""
+"Allows to modify the sequence manually because the sequence field is "
+"difficult to modify because 'handle'."
+msgstr ""
+"Erlaubt die Reihenfolge manuell anzupassen, da das sequenz-Feld wegen seiner"
+" Nutzung als 'handle' schwierig zu nutzen ist."
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Base"
+msgstr "Basis"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Click to see this product"
+msgstr "Klicken, um dieses Produkt anzusehen"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,currency_name:0
+msgid "Currency"
+msgstr "Währung"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid ""
+"Define a price for this variant according to attribute price extra if any "
+"(tab 'Variants')"
+msgstr ""
+"Legen Sie einen Preis für diese Varainte, gemäß dem Attribut-Preiszuschlag "
+"(Reiter \"Varianten\") fest."
+
+#. module: pricelist_per_product
+#: code:addons/pricelist_per_product/pricelist.py:8
+#: help:product.pricelist,price_grid:0
+#: help:product.pricelist.version,price_grid:0
+#, python-format
+msgid ""
+"Define if the price list items are filled\n"
+"from product form with a grid of specific values\n"
+"for each product"
+msgstr ""
+"Legen Sie fest, ob die Preislistenpositionen\n"
+"aus dem Produktformular mittels Gitter spzifischer\n"
+"Werte jeden Produkt ermittelt werden"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Disc."
+msgstr "Rab."
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,date_end:0
+msgid "End Date"
+msgstr "Enddatum"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Grid"
+msgstr "Gitter"
+
+#. module: pricelist_per_product
+#: model:product.pricelist.version,name:pricelist_per_product.pricelist_grid_version
+msgid "Grid Version"
+msgstr "Gitter-Version"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,item_grid_ids:0
+msgid "Item grid ids"
+msgstr "Gitterelement-IDs"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,date_end:0
+msgid "Last valid date for the version."
+msgstr "Letztes Gültigkeitsdatum dieser Version."
+
+#. module: pricelist_per_product
+#: help:product.pricelist.version,tmpl_in_count:0
+msgid "Number of Product Template with this Pricelist version"
+msgstr "Anzahl der Produktvorlagen mit dieser Preislistenversion"
+
+#. module: pricelist_per_product
+#: model:ir.actions.client,name:pricelist_per_product.action_pricelist_per_product_module_install
+msgid "Open pricelist per product Menu"
+msgstr "Öffne Menü Preisliste je Produkt"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Price"
+msgstr "Preis"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Price Grid"
+msgstr "Preisgitter"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist
+msgid "Pricelist"
+msgstr "Preisliste"
+
+#. module: pricelist_per_product
+#: model:product.pricelist,name:pricelist_per_product.pricelist_grid
+msgid "Pricelist Grid"
+msgstr "Preislistengitter"
+
+#. module: pricelist_per_product
+#: field:product.template,pricelist_item_ids:0
+msgid "Pricelist Items"
+msgstr "Preislistenpositionen"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr "Preislistenversion"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Preisliste Einzelposition"
+
+#. module: pricelist_per_product
+#: field:product.pricelist,price_grid:0
+#: field:product.pricelist.version,price_grid:0
+msgid "Product Price Grid"
+msgstr "Produktpreisgitter"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_template
+msgid "Product Template"
+msgstr "Produktvorlage"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Product Variant"
+msgstr "Produktvariante"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Products templates with this version (click to see them)"
+msgstr "Produktvorlagen mit dieser Version (Klicken, um diese anzusehen)"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Public price"
+msgstr "Öffentl. Preis"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,related_sequence:0
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Show Products"
+msgstr "Zeige Produkte"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,tmpl_in_count:0
+msgid "Template with this Version"
+msgstr "Vorlage mit dieser Version"
+
+#. module: pricelist_per_product
+#: help:product.template,pricelist_item_ids:0
+msgid ""
+"These prices are defined with absolute values\n"
+"(no calculation with discount)"
+msgstr ""
+"Diese Preise sind als Absolutwerte festgelegt\n"
+"(Ermittlung ohne  Rabatt)"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "{'invisible': [('price_grid', '=', True)]}"
+msgstr "{'invisible': [('price_grid', '=', True)]}"

+ 189 - 0
i18n/es.po

@@ -0,0 +1,189 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pricelist_per_product
+# 
+# Translators:
+# OCA Transbot <transbot@odoo-community.org>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-11-03 10:07+0000\n"
+"PO-Revision-Date: 2016-11-03 10:07+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
+"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Base"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Click to see this product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,currency_name:0
+msgid "Currency"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid ""
+"Define a price for this variant according to attribute price extra if any "
+"(tab 'Variants')"
+msgstr ""
+
+#. module: pricelist_per_product
+#: code:addons/pricelist_per_product/pricelist.py:8
+#: help:product.pricelist,price_grid:0
+#: help:product.pricelist.version,price_grid:0
+#, python-format
+msgid ""
+"Define if the price list items are filled\n"
+"from product form with a grid of specific values\n"
+"for each product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Disc."
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,date_end:0
+msgid "End Date"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,related_sequence:0
+msgid ""
+"Gives the order in which the pricelist items will be checked. The evaluation"
+" gives highest priority to lowest sequence and stops as soon as a matching "
+"item is found."
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist.version,name:pricelist_per_product.pricelist_grid_version
+msgid "Grid Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,item_grid_ids:0
+msgid "Item grid ids"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,date_end:0
+msgid "Last valid date for the version."
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.version,tmpl_in_count:0
+msgid "Number of Product Template with this Pricelist version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.actions.client,name:pricelist_per_product.action_pricelist_per_product_module_install
+msgid "Open pricelist per product Menu"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist
+msgid "Pricelist"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist,name:pricelist_per_product.pricelist_grid
+msgid "Pricelist Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.template,pricelist_item_ids:0
+msgid "Pricelist Items"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Elemento de tarifa"
+
+#. module: pricelist_per_product
+#: field:product.pricelist,price_grid:0
+#: field:product.pricelist.version,price_grid:0
+msgid "Product Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_template
+msgid "Product Template"
+msgstr "Plantilla de producto"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Product Variant"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Products templates with this version (click to see them)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Public price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,related_sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Show Products"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,tmpl_in_count:0
+msgid "Template with this Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.template,pricelist_item_ids:0
+msgid ""
+"These prices are defined with absolute values\n"
+"(no calculation with discount)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "{'invisible': [('price_grid', '=', True)]}"
+msgstr ""

+ 198 - 0
i18n/fr.po

@@ -0,0 +1,198 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pricelist_per_product
+# 
+# Translators:
+# OCA Transbot <transbot@odoo-community.org>, 2016
+# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-04-21 02:49+0000\n"
+"PO-Revision-Date: 2017-04-21 02:49+0000\n"
+"Last-Translator: Christophe CHAUVET <christophe.chauvet@gmail.com>, 2017\n"
+"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,related_sequence:0
+msgid ""
+"Allows to modify the sequence manually because the sequence field is "
+"difficult to modify because 'handle'."
+msgstr ""
+"Autoriser la modification de la séquence manuellement, parce que le champ "
+"séquence est difficile a modifier à cause du curseur à glisser"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Base"
+msgstr "Base"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Click to see this product"
+msgstr "Cliquez pour voir les produits"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,currency_name:0
+msgid "Currency"
+msgstr "Devise"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid ""
+"Define a price for this variant according to attribute price extra if any "
+"(tab 'Variants')"
+msgstr ""
+"Définissez un prix pour cette variante en fonction du supplément de prix sur"
+" les caractéristiques si existantes (onglet 'Variantes')"
+
+#. module: pricelist_per_product
+#: code:addons/pricelist_per_product/pricelist.py:8
+#: help:product.pricelist,price_grid:0
+#: help:product.pricelist.version,price_grid:0
+#, python-format
+msgid ""
+"Define if the price list items are filled\n"
+"from product form with a grid of specific values\n"
+"for each product"
+msgstr ""
+"Défini si les éléments de liste de prix sont remplis\n"
+"depuis le formulaire produit avec une grille spécifique de valeurs\n"
+"pour chaque produit."
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Disc."
+msgstr "Rem."
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,date_end:0
+msgid "End Date"
+msgstr "Date de fin"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Grid"
+msgstr "Grille"
+
+#. module: pricelist_per_product
+#: model:product.pricelist.version,name:pricelist_per_product.pricelist_grid_version
+msgid "Grid Version"
+msgstr "Version de la grille"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,item_grid_ids:0
+msgid "Item grid ids"
+msgstr "Ids des éléments de grille"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,date_end:0
+msgid "Last valid date for the version."
+msgstr "Dernière date de validité pour cette version"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.version,tmpl_in_count:0
+msgid "Number of Product Template with this Pricelist version"
+msgstr "Nombre de modèle de produit pour cette version de liste de prix"
+
+#. module: pricelist_per_product
+#: model:ir.actions.client,name:pricelist_per_product.action_pricelist_per_product_module_install
+msgid "Open pricelist per product Menu"
+msgstr "Open pricelist per product Menu"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Price"
+msgstr "Prix"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Price Grid"
+msgstr "Grille Tarifaire"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist
+msgid "Pricelist"
+msgstr "Liste de prix"
+
+#. module: pricelist_per_product
+#: model:product.pricelist,name:pricelist_per_product.pricelist_grid
+msgid "Pricelist Grid"
+msgstr "Grille de prix"
+
+#. module: pricelist_per_product
+#: field:product.template,pricelist_item_ids:0
+msgid "Pricelist Items"
+msgstr "Eléments de liste de prix"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr "Version de liste de prix"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Élément de la liste de prix"
+
+#. module: pricelist_per_product
+#: field:product.pricelist,price_grid:0
+#: field:product.pricelist.version,price_grid:0
+msgid "Product Price Grid"
+msgstr "Grille Tarifaire Produit"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_template
+msgid "Product Template"
+msgstr "Article Modèle"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Product Variant"
+msgstr "Variante d'article"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Products templates with this version (click to see them)"
+msgstr "Les modèles de produits avec cette version (cliquez pour les voir)"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Public price"
+msgstr "Prix Publique"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,related_sequence:0
+msgid "Sequence"
+msgstr "Séquence"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Show Products"
+msgstr "Voir les Produits"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,tmpl_in_count:0
+msgid "Template with this Version"
+msgstr "Modèle avec cette version"
+
+#. module: pricelist_per_product
+#: help:product.template,pricelist_item_ids:0
+msgid ""
+"These prices are defined with absolute values\n"
+"(no calculation with discount)"
+msgstr ""
+"Ces prix sont définis en valeurs absolues\n"
+"(pas de calcul avec remise)"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "{'invisible': [('price_grid', '=', True)]}"
+msgstr "{'invisible': [('price_grid', '=', True)]}"

+ 189 - 0
i18n/it.po

@@ -0,0 +1,189 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pricelist_per_product
+# 
+# Translators:
+# OCA Transbot <transbot@odoo-community.org>, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-11-03 10:07+0000\n"
+"PO-Revision-Date: 2016-11-03 10:07+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
+"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Base"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Click to see this product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,currency_name:0
+msgid "Currency"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid ""
+"Define a price for this variant according to attribute price extra if any "
+"(tab 'Variants')"
+msgstr ""
+
+#. module: pricelist_per_product
+#: code:addons/pricelist_per_product/pricelist.py:8
+#: help:product.pricelist,price_grid:0
+#: help:product.pricelist.version,price_grid:0
+#, python-format
+msgid ""
+"Define if the price list items are filled\n"
+"from product form with a grid of specific values\n"
+"for each product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Disc."
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,date_end:0
+msgid "End Date"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,related_sequence:0
+msgid ""
+"Gives the order in which the pricelist items will be checked. The evaluation"
+" gives highest priority to lowest sequence and stops as soon as a matching "
+"item is found."
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist.version,name:pricelist_per_product.pricelist_grid_version
+msgid "Grid Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,item_grid_ids:0
+msgid "Item grid ids"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,date_end:0
+msgid "Last valid date for the version."
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.pricelist.version,tmpl_in_count:0
+msgid "Number of Product Template with this Pricelist version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.actions.client,name:pricelist_per_product.action_pricelist_per_product_module_install
+msgid "Open pricelist per product Menu"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist
+msgid "Pricelist"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist,name:pricelist_per_product.pricelist_grid
+msgid "Pricelist Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.template,pricelist_item_ids:0
+msgid "Pricelist Items"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Oggetto Listino"
+
+#. module: pricelist_per_product
+#: field:product.pricelist,price_grid:0
+#: field:product.pricelist.version,price_grid:0
+msgid "Product Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Product Variant"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Products templates with this version (click to see them)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Public price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,related_sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Show Products"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,tmpl_in_count:0
+msgid "Template with this Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.template,pricelist_item_ids:0
+msgid ""
+"These prices are defined with absolute values\n"
+"(no calculation with discount)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "{'invisible': [('price_grid', '=', True)]}"
+msgstr ""

+ 145 - 0
i18n/pricelist_per_product.pot

@@ -0,0 +1,145 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+#	* pricelist_per_product
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-11 08:27+0000\n"
+"PO-Revision-Date: 2016-04-11 08:27+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: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Base"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Click to see this product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Define a price for this variant according to attribute price extra if any (tab 'Variants')"
+msgstr ""
+
+#. module: pricelist_per_product
+#: code:addons/pricelist_per_product/pricelist.py:8
+#: help:product.pricelist,price_grid:0
+#: help:product.pricelist.version,price_grid:0
+#, python-format
+msgid "Define if the price list items are filled\n"
+"from product form with a grid of specific values\n"
+"for each product"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Disc."
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist.version,name:pricelist_per_product.pricelist_grid_version
+msgid "Grid Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,item_grid_ids:0
+msgid "Item grid ids"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.actions.client,name:pricelist_per_product.action_pricelist_per_product_module_install
+msgid "Open pricelist per product Menu"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist
+msgid "Pricelist"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:product.pricelist,name:pricelist_per_product.pricelist_grid
+msgid "Pricelist Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.template,pricelist_item_ids:0
+msgid "Pricelist Items"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr ""
+
+#. module: pricelist_per_product
+#: field:product.pricelist,price_grid:0
+#: field:product.pricelist.version,price_grid:0
+msgid "Product Price Grid"
+msgstr ""
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Product Variant"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Products templates with this version (click to see them)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Public price"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Show Products"
+msgstr ""
+
+#. module: pricelist_per_product
+#: help:product.template,pricelist_item_ids:0
+msgid "These prices are defined with absolute values\n"
+"(no calculation with discount)"
+msgstr ""
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "{'invisible': [('price_grid', '=', True)]}"
+msgstr ""
+

+ 198 - 0
i18n/sl.po

@@ -0,0 +1,198 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * pricelist_per_product
+# 
+# Translators:
+# OCA Transbot <transbot@odoo-community.org>, 2016
+# Matjaž Mozetič <m.mozetic@matmoz.si>, 2017
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-03-01 13:35+0000\n"
+"PO-Revision-Date: 2017-03-01 13:35+0000\n"
+"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>, 2017\n"
+"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,related_sequence:0
+msgid ""
+"Allows to modify the sequence manually because the sequence field is "
+"difficult to modify because 'handle'."
+msgstr ""
+"Omogoči ročno spreminjanje zaporedja, ker je spreminjanje polja zaporedja z "
+"'ročajem' težko."
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Base"
+msgstr "Osnova"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Click to see this product"
+msgstr "Prikaži za proizvod"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,currency_name:0
+msgid "Currency"
+msgstr "Valuta"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid ""
+"Define a price for this variant according to attribute price extra if any "
+"(tab 'Variants')"
+msgstr ""
+"Določi ceno te variante glede na dodatno ceno morebitnega atributa (zavihek "
+"'Različice')"
+
+#. module: pricelist_per_product
+#: code:addons/pricelist_per_product/pricelist.py:8
+#: help:product.pricelist,price_grid:0
+#: help:product.pricelist.version,price_grid:0
+#, python-format
+msgid ""
+"Define if the price list items are filled\n"
+"from product form with a grid of specific values\n"
+"for each product"
+msgstr ""
+"Določa, če se postavke cenika izpolnijo\n"
+"iz obrazca proizvoda z mrežo določenih vrednosti\n"
+"za vsak proizvod"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Disc."
+msgstr "Padaj."
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,date_end:0
+msgid "End Date"
+msgstr "Končni datum"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Grid"
+msgstr "Mreža"
+
+#. module: pricelist_per_product
+#: model:product.pricelist.version,name:pricelist_per_product.pricelist_grid_version
+msgid "Grid Version"
+msgstr "Verzija mreže"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,item_grid_ids:0
+msgid "Item grid ids"
+msgstr "ID-ji postavk mreže"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.item,date_end:0
+msgid "Last valid date for the version."
+msgstr "Zadnji veljaven datum verzije"
+
+#. module: pricelist_per_product
+#: help:product.pricelist.version,tmpl_in_count:0
+msgid "Number of Product Template with this Pricelist version"
+msgstr "Številka predloge proizvoda za to verzijo cenika"
+
+#. module: pricelist_per_product
+#: model:ir.actions.client,name:pricelist_per_product.action_pricelist_per_product_module_install
+msgid "Open pricelist per product Menu"
+msgstr "Odpri meni cenika proizvodov"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Price"
+msgstr "Cena"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Price Grid"
+msgstr "Cenovna mreža"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist
+msgid "Pricelist"
+msgstr "Cenik"
+
+#. module: pricelist_per_product
+#: model:product.pricelist,name:pricelist_per_product.pricelist_grid
+msgid "Pricelist Grid"
+msgstr "Mreža cenikov"
+
+#. module: pricelist_per_product
+#: field:product.template,pricelist_item_ids:0
+msgid "Pricelist Items"
+msgstr "Postavke cenika"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr "Verzija cenika"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Postavka cenika"
+
+#. module: pricelist_per_product
+#: field:product.pricelist,price_grid:0
+#: field:product.pricelist.version,price_grid:0
+msgid "Product Price Grid"
+msgstr "Mreža cen proizvoda"
+
+#. module: pricelist_per_product
+#: model:ir.model,name:pricelist_per_product.model_product_template
+msgid "Product Template"
+msgstr "Predloga proizvoda"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Product Variant"
+msgstr "Različica proizvoda"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Products templates with this version (click to see them)"
+msgstr "Predloge proizvoda za to verzijo (kliknite za prikaz)"
+
+#. module: pricelist_per_product
+#: view:product.template:pricelist_per_product.product_template_form_view
+msgid "Public price"
+msgstr "Javna cena"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.item,related_sequence:0
+msgid "Sequence"
+msgstr "Zaporedje"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "Show Products"
+msgstr "Prikaz proizvodov"
+
+#. module: pricelist_per_product
+#: field:product.pricelist.version,tmpl_in_count:0
+msgid "Template with this Version"
+msgstr "Predloga za to verzijo"
+
+#. module: pricelist_per_product
+#: help:product.template,pricelist_item_ids:0
+msgid ""
+"These prices are defined with absolute values\n"
+"(no calculation with discount)"
+msgstr ""
+"Te cene so določene z absolutnimi vrednostmi\n"
+"(ni izračuna s popustom)"
+
+#. module: pricelist_per_product
+#: view:product.pricelist.version:pricelist_per_product.product_pricelist_version_form_view
+msgid "{'invisible': [('price_grid', '=', True)]}"
+msgstr "{'invisible': [('price_grid', '=', True)]}"

+ 20 - 0
install_view.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+
+<!-- After installation of the module, open the related menu -->
+<record id="action_pricelist_per_product_module_install" model="ir.actions.client">
+    <field name="name">Open pricelist per product Menu</field>
+    <field name="tag">reload</field>
+    <field name="params"
+           eval="{'menu_id': ref('product.menu_product_template_action')}"/>
+</record>
+<record id="base.open_menu" model="ir.actions.todo">
+    <field name="action_id" ref="action_pricelist_per_product_module_install"/>
+    <field name="state">open</field>
+</record>
+
+
+    </data>
+</openerp>

+ 162 - 0
pricelist.py

@@ -0,0 +1,162 @@
+# coding: utf-8
+# © 2015 David BEAL @ Akretion
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from openerp import _, api, fields, models
+
+
+PRICE_GRID_HELP = _("""Define if the price list items are filled
+from product form with a grid of specific values
+for each product""")
+
+
+class ProductPricelist(models.Model):
+    _inherit = 'product.pricelist'
+
+    price_grid = fields.Boolean(
+        string='Product Price Grid',
+        help=PRICE_GRID_HELP)
+
+
+class ProductPricelistVersion(models.Model):
+    _inherit = 'product.pricelist.version'
+
+    @api.depends('tmpl_in_count')
+    def _compute_count_products(self):
+        PPItem_m = self.env['product.pricelist.item']
+        for record in self:
+            if not isinstance(self.id, models.NewId):
+                predicats = {
+                    'tmpl_in_count': ('product_tmpl_id', '!=', False),
+                }
+                version_domain = [('price_version_id', '=', record.id)]
+                for field, predicat in predicats.items():
+                    domain = list(version_domain)
+                    domain.append(predicat)
+                    self[field] = PPItem_m.search_count(domain)
+
+    price_grid = fields.Boolean(
+        related='pricelist_id.price_grid',
+        domain=[('price_surcharge', '=', 0)],
+        store=True,
+        help=PRICE_GRID_HELP)
+    tmpl_in_count = fields.Integer(
+        string="Template with this Version",
+        compute='_compute_count_products',
+        help="Number of Product Template with this Pricelist version")
+    item_grid_ids = fields.One2many(
+        'product.pricelist.item',
+        'price_version_id')
+
+    @api.multi
+    def button_template_in_version(self):
+        self.ensure_one()
+        domain = [('pricelist_item_ids.price_version_id', '=', self.id)]
+        return {
+            'type': 'ir.actions.act_window',
+            'target': 'current',
+            'domain': domain,
+            'view_mode': 'tree,form',
+            'res_model': 'product.template',
+        }
+
+
+class ProductPricelistItem(models.Model):
+    _inherit = 'product.pricelist.item'
+
+    date_end = fields.Date(
+        related='price_version_id.date_end',
+        readonly=True)
+    currency_name = fields.Many2one(
+        related='price_version_id.pricelist_id.currency_id',
+        readonly=True)
+    related_sequence = fields.Integer(
+        String='Sequence',
+        related="sequence",
+        help="Allows to modify the sequence manually because "
+             "the sequence field is difficult to modify because 'handle'.")
+
+    @api.multi
+    def button_product(self):
+        self.ensure_one()
+        if self.product_tmpl_id:
+            product = self.product_tmpl_id
+        else:
+            product = self.product_id.product_tmpl_id
+        return {
+            'type': 'ir.actions.act_window',
+            'target': 'current',
+            'name': 'Product',
+            'view_mode': 'form',
+            'res_id': product.id,
+            'res_model': 'product.template',
+        }
+
+    @api.model
+    def _get_sequence_price_grid(self, vals):
+        """
+            In sale order line, we want to use as a priority
+            the product pricelist item associated with the product variant.
+            But in Odoo, it's the product pricelist item which has the
+            smallest sequence that is used.
+            That's why, we put a smaller sequence to the product pricelist item
+            of the product variant and a larger sequence to
+            the product pricelist item of the product template.
+        """
+        product_id = vals.get('product_id', self.product_id)
+        product_tmpl_id = vals.get('product_tmpl_id', self.product_tmpl_id)
+        related_sequence = 15
+        if product_id:
+            related_sequence = 5
+        elif product_tmpl_id:
+            related_sequence = 10
+        return related_sequence
+
+    @api.model
+    def create(self, vals):
+        if not self._is_catch_all_item(vals) and \
+                self.env['product.pricelist.version'].browse(
+                    vals['price_version_id']).price_grid:
+            vals.update({
+                'price_discount': -1,
+                'related_sequence': self._get_sequence_price_grid(vals),
+                'base': vals.get('base', 1),
+            })
+        return super(ProductPricelistItem, self).create(vals)
+
+    @api.multi
+    def write(self, vals):
+        for item in self:
+            if not self._is_catch_all_item(vals) and 'product_id' in vals:
+                vals['related_sequence'] = item._get_sequence_price_grid(
+                    vals)
+            super(ProductPricelistItem, item).write(vals)
+        return True
+
+    @api.model
+    def _is_catch_all_item(self, vals):
+        """ Sale Pricelists require a pricelist item in order to work.
+            This item must be based on public price without discount/surcharge
+            If not, public price from product is not propagated in sale line
+            and price is 0.0
+            Here we don't want block this behavior.
+        """
+        values = vals.copy()
+        conditions = {
+            'min_quantity': 0,
+            'price_surcharge': 0,
+            'price_discount': 0,
+            'categ_id': False,
+            'product_id': False,
+            'product_tmpl_id': False,
+        }
+        # We complete missing keys in values dict
+        # (write could have less keys than create)
+        for key in conditions.keys():
+            if key not in values:
+                values[key] = self[key] or False  # value in db
+        # we check 1 condition which prevent to be a catchall
+        for key, elm in conditions.items():
+            if key in values and values.get(key) != elm:
+                return False
+        return True

BIN
pricelist.pyc


+ 84 - 0
pricelist_view.xml

@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+  <data>
+
+    <record id="product_pricelist_view" model="ir.ui.view">
+        <field name="model">product.pricelist</field>
+        <field name="inherit_id" ref="product.product_pricelist_view"/>
+        <field name="arch" type="xml">
+            <field name="type" position="after">
+                <field name="price_grid"/>
+            </field>
+        </field>
+    </record>
+
+    <record id="product_pricelist_view_tree" model="ir.ui.view">
+        <field name="model">product.pricelist</field>
+        <field name="inherit_id" ref="product.product_pricelist_view_tree"/>
+        <field name="arch" type="xml">
+            <field name="type" position="after">
+                <field name="price_grid"/>
+            </field>
+        </field>
+    </record>
+
+
+    <record id="product_pricelist_version_form_view" model="ir.ui.view">
+        <field name="model">product.pricelist.version</field>
+        <field name="inherit_id" ref="product.product_pricelist_version_form_view"/>
+        <field name="arch" type="xml">
+            <field name="pricelist_id" position="after">
+                <field name="price_grid"/>
+            </field>
+            <xpath expr="//group[1]" position="attributes">
+                <attribute name="col">6</attribute>
+            </xpath>
+            <xpath expr="//group[1]" position="inside">
+                <group attrs="{'invisible': [('price_grid', '=', False)]}" col="4">
+                    <div>
+                        <button name="button_template_in_version"
+                                class="oe_inline oe_stat_button" type="object"
+                                icon="fa-cube"
+                                help="Products templates with this version (click to see them)">
+                            <field name="tmpl_in_count" widget="statinfo"
+                                   string="Show Products"
+                                   attrs="{'invisible': [('price_grid', '=', False)]}"/>
+                        </button>
+                    </div>
+                </group>
+            </xpath>
+            <xpath expr="//notebook/page[@string='Item List']"
+                   position="attributes">
+                <attribute name="attrs">{'invisible': [('price_grid', '=', True)]}</attribute>
+            </xpath>
+            <xpath expr="//notebook[last()]" position="inside">
+                <page name="grid" string="Grid"
+                      attrs="{'invisible': [('price_grid', '=', False)]}">
+                    <group col="4">
+                        <field name="item_grid_ids" nolabel="1">
+                            <tree string="Price Grid" editable="1">
+                                <field name="id" invisible="1"/>
+                                <field name="sequence" widget="handle"/>
+                                <field name="price_surcharge" string="Price"/>
+                                <field name="product_tmpl_id"/>
+                                <button name="button_product"
+                                        icon="terp-stock_symbol-selection"
+                                        class="oe_link" type="object"
+                                        attrs="{'invisible': [
+                                            ('product_tmpl_id', '=', False),
+                                            ('product_id', '=', False)]}"
+                                        help="Click to see this product"/>
+                                <field name="product_id"/>
+                                <field name="related_sequence"/>
+                                <field name="price_discount" string="Disc." invisible="1"/>
+                                <field name="base" string="Base" invisible="1"/>
+                            </tree>
+                        </field>
+                    </group>
+                </page>
+            </xpath>
+        </field>
+    </record>
+
+  </data>
+</openerp>

+ 67 - 0
product.py

@@ -0,0 +1,67 @@
+# coding: utf-8
+# © 2015 David BEAL @ Akretion
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from openerp import api, fields, models
+
+
+class ProductTemplate(models.Model):
+    _inherit = 'product.template'
+
+    def _default_pricelist_item_ids(self):
+        return self.default_pricelist_item_ids()
+
+    pricelist_item_ids = fields.One2many(
+        'product.pricelist.item',
+        'product_tmpl_id',
+        string='Pricelist Items',
+        default=_default_pricelist_item_ids,
+        help="These prices are defined with absolute values\n"
+             "(no calculation with discount)"
+    )
+
+    def get_pricelist_version_domain(self):
+        return [('pricelist_id.price_grid', '=', True)]
+
+    def get_default_pricelist_item_vals(self, version):
+        return {
+            'price_version_id': version.id,
+            'price_discount': -1,
+            'base': 1,
+        }
+
+    def default_pricelist_item_ids(self):
+        versions = self.env['product.pricelist.version'].search(
+            self.get_pricelist_version_domain())
+        res = []
+        for version in versions:
+            res.append(self.get_default_pricelist_item_vals(version))
+        return res
+
+    @api.model
+    def create(self, vals):
+        if 'pricelist_item_ids' in vals:
+            self.create_or_write_pricelist(vals['pricelist_item_ids'])
+        return super(ProductTemplate, self).create(vals)
+
+    @api.multi
+    def write(self, vals):
+        if 'pricelist_item_ids' in vals:
+            self.create_or_write_pricelist(vals['pricelist_item_ids'])
+        return super(ProductTemplate, self).write(vals)
+
+    @api.model
+    def create_or_write_pricelist(self, pricelist_item_vals):
+        for version in pricelist_item_vals:
+            if version[2]:
+                self.update_pricelist_values(version[2])
+        return True
+
+    @api.model
+    def update_pricelist_values(self, vals):
+        vals.update({
+            'price_discount': -1,
+            'sequence': 1,
+            'base': 1,
+        })
+        return True

BIN
product.pyc


+ 38 - 0
product_view.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+  <data>
+
+    <record id="product_template_form_view" model="ir.ui.view">
+        <field name="model">product.template</field>
+        <field name="inherit_id" ref="product.product_template_form_view"/>
+        <!-- There is a position="replace" then we add a priority -->
+        <!-- <field name="priority" eval="100"/> -->
+        <field name="arch" type="xml">
+             <xpath expr="//page[@string='Information']//field[@name='list_price']"
+                   position="replace">
+            </xpath>
+            <xpath expr="//page[@string='Sales']/group[@name='sale']" position="before">
+                <group>
+                    <field name="list_price" string="Public price" invisible="1"/>
+                    <field name="pricelist_item_ids" colspan="4" nolabel="1"
+                       domain="[('price_version_id.pricelist_id.type', '=', 'sale'),
+                ('price_version_id.price_grid', '=', True)]">
+                        <tree editable="top" create="0" delete="0">
+                            <field name="price_version_id"/>
+                            <field name="product_id" string="Product Variant"
+                                   domain="[('product_tmpl_id', '=', parent.id)]"
+                                   help="Define a price for this variant according to attribute price extra if any (tab 'Variants')" invisible="1"/>
+                            <field name="price_surcharge" string="Valor"/>
+                            <field name="date_end" invisible="1"/>
+                            <field name="price_discount" invisible="1"/>
+                            <field name="sequence" invisible="1"/>
+                            <field name="base" invisible="1"/>
+                        </tree>
+                    </field>
+                </group>
+            </xpath>
+        </field>
+    </record>
+
+  </data>
+</openerp>

BIN
static/description/akretion.png


BIN
static/description/icon.png


+ 65 - 0
static/description/index.html

@@ -0,0 +1,65 @@
+
+<section class="oe_container oe_dark">
+    <div class="oe_row oe_spaced">
+        <h2 class="oe_slogan">Pricelist Grid</h2>
+        <h3 class="oe_slogan">All pricelists at once in the product form</h3>
+        <div class="oe_span6">
+            <img class="oe_picture oe_screenshot" src="product.png">
+        </div>
+        <div class="oe_span6">
+            <p class="oe_mt32">
+Fill all your pricelists directly in your product form.
+<br/>
+<br/>
+The prices are defined with absolute values.
+<br/>
+<br/>
+
+Use Case: you only want to apply an absolute price whatever other prices.
+            </p>
+        </div>
+    </div>
+</section>
+
+
+<section class="oe_container">
+    <div class="oe_row oe_spaced">
+            <h2 class="oe_slogan">Pricelist Version</h2>
+            <h3 class="oe_slogan">All products within version</h3>
+        <div class="oe_span6">
+            <p class="oe_mt32">
+You may also create absolute prices from the pricelist version.
+            </p>
+        </div>
+        <div class="oe_span6">
+            <img class="oe_picture oe_screenshot" src="mass.png">
+        </div>
+    </div>
+</section>
+
+
+<section class="oe_container oe_dark">
+    <div class="oe_row oe_spaced">
+            <h2 class="oe_slogan">Pricelist Configuration</h2>
+            <h3 class="oe_slogan">Product Price Grid</h3>
+        <div class="oe_span6">
+            <p class="oe_mt32">
+Define in the pricelist if the price items are filled from product form
+with a grid of specific values for each product.
+            </p>
+        </div>
+        <div class="oe_span6">
+            <img class="oe_picture oe_screenshot" src="pricelist.png">
+        </div>
+    </div>
+</section>
+
+
+<section class="oe_container">
+    <div class="oe_picture oe_screenshot">
+        <a href="http://www.akretion.com/blog">
+            <img src="akretion.png">
+        </a>
+    </div>
+</section>
+

BIN
static/description/mass.png


BIN
static/description/pricelist.png


BIN
static/description/product.png


+ 1 - 0
tests/__init__.py

@@ -0,0 +1 @@
+from . import test_create

+ 28 - 0
tests/test_create.py

@@ -0,0 +1,28 @@
+# coding: utf-8
+# © 2015 David BEAL @ Akretion
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+
+from openerp.tests.common import TransactionCase
+
+
+class CreatePriceItemCase(TransactionCase):
+    def test_create_from_product(self):
+        """ Check if price item created from product template has:
+            - price_discount = -1
+            - base = 1
+        """
+        versions = self.env['product.pricelist.version'].search(
+            [('pricelist_id.price_grid', '=', True)])
+        version_values = {
+            'price_version_id': versions[0].id, 'price_surcharge': 7}
+        vals = {'name': 'Test from pricelist per product',
+                'type': 'consu',
+                'list_price': 10,
+                'pricelist_item_ids': [(0, 0, version_values)]}
+        product = self.env['product.template'].create(vals)
+        item = self.env['product.pricelist.item'].search([
+            ('product_tmpl_id', '=', product.id)])
+        self.assertEqual(item.price_discount, -1.0)
+        self.assertEqual(item.base, 1)
+        self.assertEqual(versions[0].tmpl_in_count, 2)