← Back to team overview

openerp-community-reviewer team mailing list archive

lp:~therp-nl/openerp-product-attributes/7.0_lp1272282_fixed_price into lp:openerp-product-attributes

 

Ronald Portier (Therp) has proposed merging lp:~therp-nl/openerp-product-attributes/7.0_lp1272282_fixed_price into lp:openerp-product-attributes.

Requested reviews:
  Product Core Editors (product-core-editors)
Related bugs:
  Bug #1272282 in OpenERP Product Attributes: "Fixed price module not installable"
  https://bugs.launchpad.net/openerp-product-attributes/+bug/1272282

For more details, see:
https://code.launchpad.net/~therp-nl/openerp-product-attributes/7.0_lp1272282_fixed_price/+merge/203348

Replace original code to make it compatible with 7.0.

I used the trick to have -1 for the price discount and put the fixed price in price_surcharge.

This will create a price: (base_price * (1 + price_discount)) + price_surcharge =
 
(base_price * (1 -1)) + price_surcharge = price_surcharge.

Therefore OpenERP will do all its normal computations (including currency-conversions), but none of those computations needs to be modified, adopted or overruled.


-- 
https://code.launchpad.net/~therp-nl/openerp-product-attributes/7.0_lp1272282_fixed_price/+merge/203348
Your team Product Core Editors is requested to review the proposed merge of lp:~therp-nl/openerp-product-attributes/7.0_lp1272282_fixed_price into lp:openerp-product-attributes.
=== modified file 'product_pricelist_fixed_price/AUTHORS.txt'
--- product_pricelist_fixed_price/AUTHORS.txt	2011-04-01 10:14:05 +0000
+++ product_pricelist_fixed_price/AUTHORS.txt	2014-01-27 15:19:50 +0000
@@ -1,1 +1,3 @@
 Lorenzo Battistini <lorenzo.battistini@xxxxxxxxxxxx>
+Ronald Portier <ronald@xxxxxxxx>
+

=== modified file 'product_pricelist_fixed_price/__init__.py'
--- product_pricelist_fixed_price/__init__.py	2011-04-01 10:14:05 +0000
+++ product_pricelist_fixed_price/__init__.py	2014-01-27 15:19:50 +0000
@@ -1,22 +1,3 @@
 # -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-##############################################################################
+from . import model
 
-import pricelist

=== modified file 'product_pricelist_fixed_price/__openerp__.py'
--- product_pricelist_fixed_price/__openerp__.py	2013-01-21 06:49:06 +0000
+++ product_pricelist_fixed_price/__openerp__.py	2014-01-27 15:19:50 +0000
@@ -3,6 +3,7 @@
 #
 #    OpenERP, Open Source Management Solution
 #    Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
+#                  2014 Therp BV        (<http://www.therp.nl>).      
 #
 #    This program is free software: you can redistribute it and/or modify
 #    it under the terms of the GNU Affero General Public License as
@@ -19,20 +20,21 @@
 #
 ##############################################################################
 
-
 {
     "name": "Price List Fixed Price",
-    "version": "1.0",
+    "version": "2.0",
     'category': 'Generic Modules/Inventory Control',
     "depends": ["product"],
-    "author": "Agile Business Group & Domsense",
-    "description": """This module allows to specify a fixed price for price list rules. So, if the rule is based on 'fixed price', this price will be used without any computation""",
-    'website': 'http://www.agilebg.com',
-    'init_xml': [],
-    'update_xml': [
-        'pricelist_view.xml',
+    "author": "Product Addons Community",
+    "description": """This module allows to specify a fixed price for price
+    list rules.""",
+    'website': 'https://launchpad.net/openerp-product-attributes',
+    'data': [
+        'view/pricelist_view.xml',
+        'view/pricelist_menu.xml',
         ],
     'demo_xml': [],
-    'installable': False,
+    'installable': True,
     'active': False,
 }
+

=== removed file 'product_pricelist_fixed_price/i18n/ca.po'
--- product_pricelist_fixed_price/i18n/ca.po	2012-12-05 05:42:11 +0000
+++ product_pricelist_fixed_price/i18n/ca.po	1970-01-01 00:00:00 +0000
@@ -1,65 +0,0 @@
-# Catalan translation for openobject-addons
-# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2011-03-25 10:08+0000\n"
-"PO-Revision-Date: 2012-04-18 23:39+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Catalan <ca@xxxxxx>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-12-05 05:42+0000\n"
-"X-Generator: Launchpad (build 16335)\n"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Max. Margin"
-msgstr "Marge màxim"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Min. Margin"
-msgstr "Marge mínim"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Rounding Method"
-msgstr "Mètode arrodoniment"
-
-#. module: product_pricelist_fixed_price
-#: constraint:product.pricelist.item:0
-msgid ""
-"Error ! You cannot assign the Main Pricelist as Other Pricelist in PriceList "
-"Item!"
-msgstr ""
-"Error!  No podeu assignar la tarifa principal com una altre tarifa en un "
-"element de la tarifa."
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist
-msgid "Pricelist"
-msgstr "Tarifa"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:97
-#, python-format
-msgid "Warning !"
-msgstr "Atenció!"
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_item
-msgid "Pricelist item"
-msgstr "Element de la tarifa"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:32
-#: field:product.pricelist.item,fixed_price:0
-#, python-format
-msgid "Fixed Price"
-msgstr "Preu fix"

=== removed file 'product_pricelist_fixed_price/i18n/de.po'
--- product_pricelist_fixed_price/i18n/de.po	2012-12-05 05:42:11 +0000
+++ product_pricelist_fixed_price/i18n/de.po	1970-01-01 00:00:00 +0000
@@ -1,65 +0,0 @@
-# German translation for openobject-addons
-# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2011-03-25 10:08+0000\n"
-"PO-Revision-Date: 2011-05-02 07:47+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: German <de@xxxxxx>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-12-05 05:42+0000\n"
-"X-Generator: Launchpad (build 16335)\n"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Max. Margin"
-msgstr "Max. Spanne"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Min. Margin"
-msgstr "Min. Spanne"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Rounding Method"
-msgstr "Rundungsverfahren"
-
-#. module: product_pricelist_fixed_price
-#: constraint:product.pricelist.item:0
-msgid ""
-"Error ! You cannot assign the Main Pricelist as Other Pricelist in PriceList "
-"Item!"
-msgstr ""
-"Fehler! Sie können die Basispreisliste nicht als alternative Preisliste in "
-"einem Preislisteneintrag zuweisen."
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist
-msgid "Pricelist"
-msgstr "Preisliste"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:97
-#, python-format
-msgid "Warning !"
-msgstr "Warnung!"
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_item
-msgid "Pricelist item"
-msgstr "Preisliste Einzelposition"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:32
-#: field:product.pricelist.item,fixed_price:0
-#, python-format
-msgid "Fixed Price"
-msgstr "Festpreis"

=== removed file 'product_pricelist_fixed_price/i18n/es.po'
--- product_pricelist_fixed_price/i18n/es.po	2012-12-05 05:42:11 +0000
+++ product_pricelist_fixed_price/i18n/es.po	1970-01-01 00:00:00 +0000
@@ -1,65 +0,0 @@
-# Spanish translation for openobject-addons
-# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2011-03-25 10:08+0000\n"
-"PO-Revision-Date: 2011-08-26 23:18+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Spanish <es@xxxxxx>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-12-05 05:42+0000\n"
-"X-Generator: Launchpad (build 16335)\n"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Max. Margin"
-msgstr "Margen máximo"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Min. Margin"
-msgstr "Margen mínimo"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Rounding Method"
-msgstr "Método redondeo"
-
-#. module: product_pricelist_fixed_price
-#: constraint:product.pricelist.item:0
-msgid ""
-"Error ! You cannot assign the Main Pricelist as Other Pricelist in PriceList "
-"Item!"
-msgstr ""
-"¡Error!  No puede asignar la tarifa principal como otra tarifa en un "
-"elemento de la tarifa."
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist
-msgid "Pricelist"
-msgstr "Lista de Precios"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:97
-#, python-format
-msgid "Warning !"
-msgstr "¡Atención!"
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_item
-msgid "Pricelist item"
-msgstr "Elemento de la tarifa"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:32
-#: field:product.pricelist.item,fixed_price:0
-#, python-format
-msgid "Fixed Price"
-msgstr "Precio fijo"

=== removed file 'product_pricelist_fixed_price/i18n/it.po'
--- product_pricelist_fixed_price/i18n/it.po	2012-12-05 05:42:11 +0000
+++ product_pricelist_fixed_price/i18n/it.po	1970-01-01 00:00:00 +0000
@@ -1,64 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-#	* product_pricelist_fixed_price
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0.1\n"
-"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
-"POT-Creation-Date: 2011-03-25 10:08+0000\n"
-"PO-Revision-Date: 2011-03-31 12:02+0000\n"
-"Last-Translator: Lorenzo Battistini <lorenzo.battistini@xxxxxxxxxxx>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-12-05 05:42+0000\n"
-"X-Generator: Launchpad (build 16335)\n"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Max. Margin"
-msgstr "Margine Massimo"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Min. Margin"
-msgstr "Margine Minimo"
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Rounding Method"
-msgstr "Metodo Arrotondamento"
-
-#. module: product_pricelist_fixed_price
-#: constraint:product.pricelist.item:0
-msgid ""
-"Error ! You cannot assign the Main Pricelist as Other Pricelist in PriceList "
-"Item!"
-msgstr ""
-"Errore ! Non è possibile assegnare il listino principale come 'altro "
-"listino' nell'elemento di listino!"
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist
-msgid "Pricelist"
-msgstr "Listino Prezzi"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:97
-#, python-format
-msgid "Warning !"
-msgstr "attenzione !"
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_item
-msgid "Pricelist item"
-msgstr "Oggetto Listino"
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:32
-#: field:product.pricelist.item,fixed_price:0
-#, python-format
-msgid "Fixed Price"
-msgstr "Prezzo fisso"

=== added file 'product_pricelist_fixed_price/i18n/nl.po'
--- product_pricelist_fixed_price/i18n/nl.po	1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/i18n/nl.po	2014-01-27 15:19:50 +0000
@@ -0,0 +1,175 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# 	* product_pricelist_fixed_price
+# <ronald@xxxxxxxx> <>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-01-27 14:11+0000\n"
+"PO-Revision-Date: 2014-01-27 15:37+0100\n"
+"Last-Translator: <ronald@xxxxxxxx>\n"
+"Language-Team:\n"
+"Language: nl_NL\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+"X-Generator: Gtranslator 2.91.6\n"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.actions.act_window,help:product_pricelist_fixed_price.product_fixedprice_version_action
+msgid ""
+"<p class=\"oe_view_nocontent_create\">\n"
+"                Click to add a pricelist version.\n"
+"              </p><p>\n"
+"                There can be more than one version of a pricelist, each of\n"
+"                these must be valid during a certain period of time. Some\n"
+"                examples of versions: Main Prices, 2010, 2011, Summer "
+"Sales,\n"
+"                etc.\n"
+"              </p>\n"
+"            "
+msgstr ""
+"<p class=\"oe_view_nocontent_create\">\n"
+"                Klik om een prijslijst versie toe te voegen.\n"
+"              </p><p>\n"
+"                Er kan meer dan één versie van een prijslijst zijn. Ieder\n"
+"                daarvan moet een bepaalde tijd geldig zijn. Voorbeelden van\n"
+"                versies: Standaard prijzen, 2010, 2011, Zomer-uitverkoop, "
+"etc.\n"
+"              </p>\n"
+"..............."
+
+#. module: product_pricelist_fixed_price
+#: model:ir.actions.act_window,help:product_pricelist_fixed_price.product_fixedprice_action
+msgid ""
+"<p class=\"oe_view_nocontent_create\">\n"
+"                Click to add a pricelist.\n"
+"              </p><p>\n"
+"                There can be more than one version of a pricelist, each of\n"
+"                these must be valid during a certain period of time. Some\n"
+"                examples of versions: Main Prices, 2010, 2011, Summer "
+"Sales,\n"
+"                etc.\n"
+"              </p>\n"
+"            "
+msgstr ""
+"<p class=\"oe_view_nocontent_create\">\n"
+"                Klik om een prijslijst toe te voegen.\n"
+"              </p><p>\n"
+"                Er kan meer dan één versie van een prijslijst zijn. Ieder\n"
+"                daarvan moet een bepaalde tijd geldig zijn. Voorbeelden van\n"
+"                versies: Standaard prijzen, 2010, 2011, Zomer-uitverkoop, "
+"etc.\n"
+"              </p>"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.version:0
+msgid "Fixed Pricelist Version"
+msgstr "Vaste prijslijst versie"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.actions.act_window,name:product_pricelist_fixed_price.product_fixedprice_version_action
+#: model:ir.ui.menu,name:product_pricelist_fixed_price.product_fixedprice_version_menu
+msgid "Fixed Pricelist versions"
+msgstr "Vaste prijslijst versies"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.actions.act_window,name:product_pricelist_fixed_price.product_fixedprice_action
+#: model:ir.ui.menu,name:product_pricelist_fixed_price.product_fixedprice_menu
+msgid "Fixed Pricelists"
+msgstr "Vaste prijslijsten"
+
+#. module: product_pricelist_fixed_price
+#: field:product.pricelist,fixed_price:0
+#: field:product.pricelist.item,fixed_price:0
+#: field:product.pricelist.version,fixed_price:0
+msgid "Fixed price"
+msgstr "Vaste prijs"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:80
+#, python-format
+msgid "Fixed price item only valid on fixed pricelist."
+msgstr "Vaste prijs regel alleen geldig op een vaste prijslijst."
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:26
+#, python-format
+msgid "Fixed price version only valid on fixed pricelist."
+msgstr "Vaste prijsversie alleen geldig voor een vaste prijslijst"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:73
+#, python-format
+msgid "Fixed pricelist should have fixed price items."
+msgstr "Vaste prijslijst moet vaste prijs regels hebben."
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:19
+#, python-format
+msgid "Fixed pricelist should have fixed price versions."
+msgstr "Vaste prijslijst moet vaste prijs versies hebben."
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.item:0
+msgid "Price"
+msgstr "Prijs"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist
+msgid "Pricelist"
+msgstr "Prijslijst"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr "Prijslijst versie"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Prijslijst regel"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:85
+#, python-format
+msgid "Product required for fixed price item."
+msgstr "Produkt verplicht op vaste prijs regel"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.item:0
+msgid "Products Fixed Price Items"
+msgstr "Vaste prijs regels voor producten"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist:0
+msgid "Products Fixed Price List"
+msgstr "Vaste prijslijst voor produkten"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist:0
+msgid "Products Fixed Price Search"
+msgstr "Zoeken in vaste prijzen voor produkten"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist:0
+msgid "Products Price"
+msgstr "Produktprijzen"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:72
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:79
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:84
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:18
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:25
+#, python-format
+msgid "Validation error!"
+msgstr "Validatie fout!"
+
+#. module: product_pricelist_fixed_price
+#: constraint:product.pricelist.item:0
+msgid "invalid values for fixed price"
+msgstr "Ongeldige waarden voor vaste prijs"

=== modified file 'product_pricelist_fixed_price/i18n/product_pricelist_fixed_price.pot'
--- product_pricelist_fixed_price/i18n/product_pricelist_fixed_price.pot	2011-04-01 10:14:05 +0000
+++ product_pricelist_fixed_price/i18n/product_pricelist_fixed_price.pot	2014-01-27 15:19:50 +0000
@@ -4,10 +4,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: OpenERP Server 6.0.1\n"
-"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
-"POT-Creation-Date: 2011-03-25 10:08+0000\n"
-"PO-Revision-Date: 2011-03-25 10:08+0000\n"
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-01-27 14:11+0000\n"
+"PO-Revision-Date: 2014-01-27 14:11+0000\n"
 "Last-Translator: <>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -16,45 +16,153 @@
 "Plural-Forms: \n"
 
 #. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Max. Margin"
-msgstr ""
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Min. Margin"
-msgstr ""
-
-#. module: product_pricelist_fixed_price
-#: view:product.pricelist.item:0
-msgid "Rounding Method"
-msgstr ""
-
-#. module: product_pricelist_fixed_price
-#: constraint:product.pricelist.item:0
-msgid "Error ! You cannot assign the Main Pricelist as Other Pricelist in PriceList Item!"
-msgstr ""
+#: model:ir.actions.act_window,help:product_pricelist_fixed_price.product_fixedprice_action
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+"                Click to add a pricelist.\n"
+"              </p><p>\n"
+"                There can be more than one version of a pricelist, each of\n"
+"                these must be valid during a certain period of time. Some\n"
+"                examples of versions: Main Prices, 2010, 2011, Summer Sales,\n"
+"                etc.\n"
+"              </p>\n"
+"            "
+msgstr "<p class=\"oe_view_nocontent_create\">\n"
+"                Click to add a pricelist.\n"
+"              </p><p>\n"
+"                There can be more than one version of a pricelist, each of\n"
+"                these must be valid during a certain period of time. Some\n"
+"                examples of versions: Main Prices, 2010, 2011, Summer Sales,\n"
+"                etc.\n"
+"              </p>\n"
+"            "
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:80
+#, python-format
+msgid "Fixed price item only valid on fixed pricelist."
+msgstr "Fixed price item only valid on fixed pricelist."
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:19
+#, python-format
+msgid "Fixed pricelist should have fixed price versions."
+msgstr "Fixed pricelist should have fixed price versions."
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:72
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:79
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:84
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:18
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:25
+#, python-format
+msgid "Validation error!"
+msgstr "Validation error!"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_version
+msgid "Pricelist Version"
+msgstr "Pricelist Version"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_version.py:26
+#, python-format
+msgid "Fixed price version only valid on fixed pricelist."
+msgstr "Fixed price version only valid on fixed pricelist."
+
+#. module: product_pricelist_fixed_price
+#: model:ir.actions.act_window,help:product_pricelist_fixed_price.product_fixedprice_version_action
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+"                Click to add a pricelist version.\n"
+"              </p><p>\n"
+"                There can be more than one version of a pricelist, each of\n"
+"                these must be valid during a certain period of time. Some\n"
+"                examples of versions: Main Prices, 2010, 2011, Summer Sales,\n"
+"                etc.\n"
+"              </p>\n"
+"            "
+msgstr "<p class=\"oe_view_nocontent_create\">\n"
+"                Click to add a pricelist version.\n"
+"              </p><p>\n"
+"                There can be more than one version of a pricelist, each of\n"
+"                these must be valid during a certain period of time. Some\n"
+"                examples of versions: Main Prices, 2010, 2011, Summer Sales,\n"
+"                etc.\n"
+"              </p>\n"
+"            "
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist:0
+msgid "Products Fixed Price Search"
+msgstr "Products Fixed Price Search"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.version:0
+msgid "Fixed Pricelist Version"
+msgstr "Fixed Pricelist Version"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:85
+#, python-format
+msgid "Product required for fixed price item."
+msgstr "Product required for fixed price item."
+
+#. module: product_pricelist_fixed_price
+#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr "Pricelist item"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.item:0
+msgid "Products Fixed Price Items"
+msgstr "Products Fixed Price Items"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist:0
+msgid "Products Price"
+msgstr "Products Price"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.actions.act_window,name:product_pricelist_fixed_price.product_fixedprice_action
+#: model:ir.ui.menu,name:product_pricelist_fixed_price.product_fixedprice_menu
+msgid "Fixed Pricelists"
+msgstr "Fixed Pricelists"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist:0
+msgid "Products Fixed Price List"
+msgstr "Products Fixed Price List"
 
 #. module: product_pricelist_fixed_price
 #: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist
 msgid "Pricelist"
-msgstr ""
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:97
-#, python-format
-msgid "Warning !"
-msgstr ""
-
-#. module: product_pricelist_fixed_price
-#: model:ir.model,name:product_pricelist_fixed_price.model_product_pricelist_item
-msgid "Pricelist item"
-msgstr ""
-
-#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:32
+msgstr "Pricelist"
+
+#. module: product_pricelist_fixed_price
+#: constraint:product.pricelist.item:0
+msgid "invalid values for fixed price"
+msgstr "invalid values for fixed price"
+
+#. module: product_pricelist_fixed_price
+#: model:ir.actions.act_window,name:product_pricelist_fixed_price.product_fixedprice_version_action
+#: model:ir.ui.menu,name:product_pricelist_fixed_price.product_fixedprice_version_menu
+msgid "Fixed Pricelist versions"
+msgstr "Fixed Pricelist versions"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.item:0
+msgid "Price"
+msgstr "Price"
+
+#. module: product_pricelist_fixed_price
+#: field:product.pricelist,fixed_price:0
 #: field:product.pricelist.item,fixed_price:0
+#: field:product.pricelist.version,fixed_price:0
+msgid "Fixed price"
+msgstr "Fixed price"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:73
 #, python-format
-msgid "Fixed Price"
-msgstr ""
+msgid "Fixed pricelist should have fixed price items."
+msgstr "Fixed pricelist should have fixed price items."
 

=== added directory 'product_pricelist_fixed_price/model'
=== added file 'product_pricelist_fixed_price/model/__init__.py'
--- product_pricelist_fixed_price/model/__init__.py	1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/model/__init__.py	2014-01-27 15:19:50 +0000
@@ -0,0 +1,5 @@
+# -*- encoding: utf-8 -*-
+from . import product_pricelist
+from . import product_pricelist_version
+from . import product_pricelist_item
+

=== added file 'product_pricelist_fixed_price/model/product_pricelist.py'
--- product_pricelist_fixed_price/model/product_pricelist.py	1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/model/product_pricelist.py	2014-01-27 15:19:50 +0000
@@ -0,0 +1,11 @@
+#-*- coding: utf-8 -*-
+from openerp.osv import orm, fields
+
+
+class ProductPricelist(orm.Model):
+    _inherit = 'product.pricelist'
+
+    _columns = {
+        'fixed_price': fields.boolean('Fixed price'),
+    }
+

=== added file 'product_pricelist_fixed_price/model/product_pricelist_item.py'
--- product_pricelist_fixed_price/model/product_pricelist_item.py	1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/model/product_pricelist_item.py	2014-01-27 15:19:50 +0000
@@ -0,0 +1,97 @@
+#-*- coding: utf-8 -*-
+'''All functionality to enable fixed prices in pricelists.
+A fixed price cannot be changed in a computed price, or the other way
+around.'''
+
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+
+
+class ProductPricelistItem(orm.Model):
+    _inherit = 'product.pricelist.item'
+
+    def _compute_vals(self, cr, uid, vals, browse_obj=None, context=None):
+        '''Ensure consistent values for fixed pricelists.
+        The passed vals parameter is used for both input and output.'''                 
+        context = context or {}
+        # First determine wether a fixed price should apply
+        fixed_price = False
+        if browse_obj:
+            fixed_price = browse_obj.fixed_price
+        else:
+            # new record
+            fixed_price = (
+                ('fixed_price' in vals and vals['fixed_price']) or
+                ('default_fixed_price' in vals 
+                    and vals['default_fixed_price']) or
+                False
+            )
+        if not fixed_price:
+            return
+        # If we get here, we have a fixed price, because we need some
+        # reference to a price in product (even though its influence will be
+        # eliminated by our price_discount), we use the standard price
+        model_model = self.pool.get('ir.model.data')
+        standard_price_type = model_model.get_object_reference(
+            cr, uid, 'product', 'standard_price')[1]
+        vals['price_discount'] = -1.0
+        vals['price_round'] = 0.0
+        vals['base'] = standard_price_type
+  
+    def create(self, cr, uid, vals, context=None):                            
+        '''Make sure fixed pricelist items have consistent values'''
+        self._compute_vals(cr, uid, vals, browse_obj=None, context=context)                                     
+        return super(ProductPricelistItem, self).create(
+            cr, uid, vals, context)        
+
+    def write(self, cr, uid, ids, vals, context=None):                        
+        '''Override write method. We have to take into account that            
+        we only get one set of values, but that the change might effect        
+        multiple ids. But because the computations we do might be different    
+        depending on the current values in the database, we will setup a loop  
+        and compute and update each record separately.                         
+        '''                                                                    
+        for item_id in ids:                                                    
+            browse_records = self.browse(cr, uid, [item_id])                  
+            browse_obj = browse_records[0]                                     
+            self._compute_vals(
+                cr, uid, vals, browse_obj=browse_obj, context=context)                     
+            super(ProductPricelistItem, self).write(
+                cr, uid, [item_id], vals, context=context)    
+        return True 
+
+    _columns = {
+        'fixed_price': fields.boolean('Fixed price'),
+    }
+
+    def _check_fixed_price(self, cr, uid, ids):                          
+        '''Raise exception when error found, else return True'''
+        for this_obj in self.browse(cr, uid, ids):
+            if not this_obj.fixed_price:
+                if this_obj.price_version_id.fixed_price:
+                    raise orm.except_orm(
+                        _('Validation error!'),
+                        _('Fixed pricelist should have fixed price items.')
+                    )
+                return True
+            # Check values for fixed price item
+            if not this_obj.price_version_id.fixed_price:
+                raise orm.except_orm(
+                    _('Validation error!'),
+                    _('Fixed price item only valid on fixed pricelist.')
+                )
+            if not this_obj.product_id:
+                raise orm.except_orm(
+                    _('Validation error!'),
+                    _('Product required for fixed price item.')
+                )
+            # Values for price_discount and price_round will not be checked,
+            # because create and write will automagically set appropiate
+            # values.
+        return True                                                            
+                                                                               
+    _constraints = [
+        (_check_fixed_price,                             
+            'invalid values for fixed price', ['fixed_price']),                        
+    ] 
+

=== added file 'product_pricelist_fixed_price/model/product_pricelist_version.py'
--- product_pricelist_fixed_price/model/product_pricelist_version.py	1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/model/product_pricelist_version.py	2014-01-27 15:19:50 +0000
@@ -0,0 +1,30 @@
+#-*- coding: utf-8 -*-
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+
+
+class ProductPricelistVersion(orm.Model):
+    _inherit = 'product.pricelist.version'
+
+    _columns = {
+        'fixed_price': fields.boolean('Fixed price'),
+    }
+
+    def _check_fixed_price(self, cr, user, ids):                          
+        '''Raise exception when error found, else return True'''
+        for this_obj in self.browse(cr, user, ids):
+            if not this_obj.fixed_price:
+                if this_obj.pricelist_id.fixed_price:
+                    raise orm.except_orm(
+                        _('Validation error!'),
+                        _('Fixed pricelist should have fixed price versions.')
+                    )
+                return True
+            # Check values for fixed price item
+            if not this_obj.price_version_id.fixed_price:
+                raise orm.except_orm(
+                    _('Validation error!'),
+                    _('Fixed price version only valid on fixed pricelist.')
+                )
+        return True                                                            
+

=== removed file 'product_pricelist_fixed_price/pricelist.py'
--- product_pricelist_fixed_price/pricelist.py	2011-04-01 10:14:05 +0000
+++ product_pricelist_fixed_price/pricelist.py	1970-01-01 00:00:00 +0000
@@ -1,211 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-#    OpenERP, Open Source Management Solution
-#    Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as
-#    published by the Free Software Foundation, either version 3 of the
-#    License, or (at your option) any later version.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#    GNU Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-##############################################################################
-
-from osv import fields,osv
-from tools.translate import _
-import decimal_precision as dp
-import time
-from product._common import rounding
-
-class product_pricelist_item(osv.osv):
-
-    def _price_field_get(self, cr, uid, context=None):
-        result = super(product_pricelist_item, self)._price_field_get(cr, uid, context)
-        result.append((-3, _('Fixed Price')))
-        return result
-
-    _inherit = "product.pricelist.item"
-
-    _columns = {
-        'fixed_price': fields.float('Fixed Price',
-            digits_compute= dp.get_precision('Sale Price')),
-        'base': fields.selection(_price_field_get, 'Based on', required=True, size=-1, help="The mode for computing the price for this rule."),
-        }
-
-product_pricelist_item()
-
-class product_pricelist(osv.osv):
-    _inherit = "product.pricelist"
-
-    def price_get_multi(self, cr, uid, pricelist_ids, products_by_qty_by_partner, context=None):
-
-        def _create_parent_category_list(id, lst):
-            if not id:
-                return []
-            parent = product_category_tree.get(id)
-            if parent:
-                lst.append(parent)
-                return _create_parent_category_list(parent, lst)
-            else:
-                return lst
-        # _create_parent_category_list
-
-        if context is None:
-            context = {}
-
-        date = time.strftime('%Y-%m-%d')
-        if 'date' in context:
-            date = context['date']
-
-        currency_obj = self.pool.get('res.currency')
-        product_obj = self.pool.get('product.product')
-        product_category_obj = self.pool.get('product.category')
-        product_uom_obj = self.pool.get('product.uom')
-        supplierinfo_obj = self.pool.get('product.supplierinfo')
-        price_type_obj = self.pool.get('product.price.type')
-        product_pricelist_version_obj = self.pool.get('product.pricelist.version')
-
-        # product.pricelist.version:
-        if pricelist_ids:
-            pricelist_version_ids = pricelist_ids
-        else:
-            # all pricelists:
-            pricelist_version_ids = self.pool.get('product.pricelist').search(cr, uid, [], context=context)
-
-        pricelist_version_ids = list(set(pricelist_version_ids))
-        plversions_search_args = [
-            ('pricelist_id', 'in', pricelist_version_ids),
-            '|',
-            ('date_start', '=', False),
-            ('date_start', '<=', date),
-            '|',
-            ('date_end', '=', False),
-            ('date_end', '>=', date),
-        ]
-
-        plversion_ids = product_pricelist_version_obj.search(cr, uid, plversions_search_args)
-        if len(pricelist_version_ids) != len(plversion_ids):
-            msg = "At least one pricelist has no active version !\nPlease create or activate one."
-            raise osv.except_osv(_('Warning !'), _(msg))
-
-        # product.product:
-        product_ids = [i[0] for i in products_by_qty_by_partner]
-        #products = dict([(item['id'], item) for item in product_obj.read(cr, uid, product_ids, ['categ_id', 'product_tmpl_id', 'uos_id', 'uom_id'])])
-        products = product_obj.browse(cr, uid, product_ids, context=context)
-        products_dict = dict([(item.id, item) for item in products])
-
-        # product.category:
-        product_category_ids = product_category_obj.search(cr, uid, [])
-        product_categories = product_category_obj.read(cr, uid, product_category_ids, ['parent_id'])
-        product_category_tree = dict([(item['id'], item['parent_id'][0]) for item in product_categories if item['parent_id']])
-
-        results = {}
-        for product_id, qty, partner in products_by_qty_by_partner:
-            for pricelist_id in pricelist_version_ids:
-                price = False
-
-                tmpl_id = products_dict[product_id].product_tmpl_id and products_dict[product_id].product_tmpl_id.id or False
-
-                categ_id = products_dict[product_id].categ_id and products_dict[product_id].categ_id.id or False
-                categ_ids = _create_parent_category_list(categ_id, [categ_id])
-                if categ_ids:
-                    categ_where = '(categ_id IN (' + ','.join(map(str, categ_ids)) + '))'
-                else:
-                    categ_where = '(categ_id IS NULL)'
-
-                cr.execute(
-                    'SELECT i.*, pl.currency_id '
-                    'FROM product_pricelist_item AS i, '
-                        'product_pricelist_version AS v, product_pricelist AS pl '
-                    'WHERE (product_tmpl_id IS NULL OR product_tmpl_id = %s) '
-                        'AND (product_id IS NULL OR product_id = %s) '
-                        'AND (' + categ_where + ' OR (categ_id IS NULL)) '
-                        'AND price_version_id = %s '
-                        'AND (min_quantity IS NULL OR min_quantity <= %s) '
-                        'AND i.price_version_id = v.id AND v.pricelist_id = pl.id '
-                    'ORDER BY sequence',
-                    (tmpl_id, product_id, plversion_ids[0], qty))
-                res1 = cr.dictfetchall()
-                uom_price_already_computed = False
-                for res in res1:
-                    if res:
-                        if res['base'] == -1:
-                            if not res['base_pricelist_id']:
-                                price = 0.0
-                            else:
-                                price_tmp = self.price_get(cr, uid,
-                                        [res['base_pricelist_id']], product_id,
-                                        qty, context=context)[res['base_pricelist_id']]
-                                ptype_src = self.browse(cr, uid, res['base_pricelist_id']).currency_id.id
-                                price = currency_obj.compute(cr, uid, ptype_src, res['currency_id'], price_tmp, round=False)
-                        elif res['base'] == -2:
-                            # this section could be improved by moving the queries outside the loop:
-                            where = []
-                            if partner:
-                                where = [('name', '=', partner) ]
-                            sinfo = supplierinfo_obj.search(cr, uid,
-                                    [('product_id', '=', tmpl_id)] + where)
-                            price = 0.0
-                            if sinfo:
-                                qty_in_product_uom = qty
-                                product_default_uom = product_obj.read(cr, uid, [tmpl_id], ['uom_id'])[0]['uom_id'][0]
-                                seller_uom = supplierinfo_obj.read(cr, uid, sinfo, ['product_uom'])[0]['product_uom'][0]
-                                if seller_uom and product_default_uom and product_default_uom != seller_uom:
-                                    uom_price_already_computed = True
-                                    qty_in_product_uom = product_uom_obj._compute_qty(cr, uid, product_default_uom, qty, to_uom_id=seller_uom)
-                                cr.execute('SELECT * ' \
-                                        'FROM pricelist_partnerinfo ' \
-                                        'WHERE suppinfo_id IN %s' \
-                                            'AND min_quantity <= %s ' \
-                                        'ORDER BY min_quantity DESC LIMIT 1', (tuple(sinfo),qty_in_product_uom,))
-                                res2 = cr.dictfetchone()
-                                if res2:
-                                    price = res2['price']
-                        elif res['base'] == -3:
-                            price = res['fixed_price']
-                        else:
-                            price_type = price_type_obj.browse(cr, uid, int(res['base']))
-                            price = currency_obj.compute(cr, uid,
-                                    price_type.currency_id.id, res['currency_id'],
-                                    product_obj.price_get(cr, uid, [product_id],
-                                        price_type.field,context=context)[product_id], round=False, context=context)
-
-                        if price:
-                            price_limit = price
-
-                            price = price * (1.0+(res['price_discount'] or 0.0))
-                            price = rounding(price, res['price_round'])
-                            price += (res['price_surcharge'] or 0.0)
-                            if res['price_min_margin']:
-                                price = max(price, price_limit+res['price_min_margin'])
-                            if res['price_max_margin']:
-                                price = min(price, price_limit+res['price_max_margin'])
-                            break
-
-                    else:
-                        # False means no valid line found ! But we may not raise an
-                        # exception here because it breaks the search
-                        price = False
-
-                if price:
-                    if 'uom' in context and not uom_price_already_computed:
-                        product = products_dict[product_id]
-                        uom = product.uos_id or product.uom_id
-                        price = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, price, context['uom'])
-
-                if results.get(product_id):
-                    results[product_id][pricelist_id] = price
-                else:
-                    results[product_id] = {pricelist_id: price}
-
-        return results
-
-product_pricelist()

=== removed file 'product_pricelist_fixed_price/pricelist_view.xml'
--- product_pricelist_fixed_price/pricelist_view.xml	2011-04-01 10:14:05 +0000
+++ product_pricelist_fixed_price/pricelist_view.xml	1970-01-01 00:00:00 +0000
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<openerp>
-    <data>
-        <record model="ir.ui.view" id="product_pricelist_item_form_view_fixed">
-            <field name="name">product.pricelist.item.form.fixed</field>
-            <field name="model">product.pricelist.item</field>
-            <field name="inherit_id" ref="product.product_pricelist_item_form_view"/>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                 <field name="price_max_margin" position="after">
-                    <field name="fixed_price" colspan="3" attrs="{'readonly': [('base','!=', -3)]}"/>
-                </field>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="product_pricelist_item_form_view_price_discount">
-            <field name="name">product.pricelist.item.form.price_discount</field>
-            <field name="model">product.pricelist.item</field>
-            <field name="inherit_id" ref="product.product_pricelist_item_form_view"/>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                 <field name="price_discount" position="replace">
-                    <field name="price_discount" nolabel="1" attrs="{'readonly': [('base','==', -3)]}"/>
-                </field>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="product_pricelist_item_form_view_price_surcharge">
-            <field name="name">product.pricelist.item.form.price_surcharge</field>
-            <field name="model">product.pricelist.item</field>
-            <field name="inherit_id" ref="product.product_pricelist_item_form_view"/>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                 <field name="price_surcharge" position="replace">
-                    <field name="price_surcharge" nolabel="1" attrs="{'readonly': [('base','==', -3)]}"/>
-                </field>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="product_pricelist_item_form_view_price_round">
-            <field name="name">product.pricelist.item.form.price_round</field>
-            <field name="model">product.pricelist.item</field>
-            <field name="inherit_id" ref="product.product_pricelist_item_form_view"/>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                 <field name="price_round" position="replace">
-                    <field name="price_round" string="Rounding Method" attrs="{'readonly': [('base','==', -3)]}"/>
-                </field>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="product_pricelist_item_form_view_price_min_margin">
-            <field name="name">product.pricelist.item.form.price_min_margin</field>
-            <field name="model">product.pricelist.item</field>
-            <field name="inherit_id" ref="product.product_pricelist_item_form_view"/>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                 <field name="price_min_margin" position="replace">
-                    <field name="price_min_margin" string="Min. Margin" attrs="{'readonly': [('base','==', -3)]}"/>
-                </field>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="product_pricelist_item_form_view_price_max_margin">
-            <field name="name">product.pricelist.item.form.price_max_margin</field>
-            <field name="model">product.pricelist.item</field>
-            <field name="inherit_id" ref="product.product_pricelist_item_form_view"/>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                 <field name="price_max_margin" position="replace">
-                    <field name="price_max_margin" string="Max. Margin" attrs="{'readonly': [('base','==', -3)]}"/>
-                </field>
-            </field>
-        </record>
-    </data>
-</openerp>

=== added directory 'product_pricelist_fixed_price/view'
=== added file 'product_pricelist_fixed_price/view/pricelist_menu.xml'
--- product_pricelist_fixed_price/view/pricelist_menu.xml	1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/view/pricelist_menu.xml	2014-01-27 15:19:50 +0000
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <record id="product_fixedprice_action" model="ir.actions.act_window">
+            <field name="name">Fixed Pricelists</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">product.pricelist</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('fixed_price', '=', True)]</field>
+            <field name="context">{'default_fixed_price': True}</field>
+            <field name="view_id" ref="product_fixedprice_tree"/>
+            <field name="help" type="html">
+              <p class="oe_view_nocontent_create">
+                Click to add a pricelist.
+              </p><p>
+                There can be more than one version of a pricelist, each of
+                these must be valid during a certain period of time. Some
+                examples of versions: Main Prices, 2010, 2011, Summer Sales,
+                etc.
+              </p>
+            </field>
+        </record>
+
+        <record
+            id="product_fixedprice_action_tree"
+            model="ir.actions.act_window.view"
+        >
+            <field name="sequence" eval="99"/>                                  
+            <field name="view_mode">tree</field>                               
+            <field name="view_id" ref="product_fixedprice_tree"/>            
+            <field name="act_window_id" ref="product_fixedprice_action"/>        
+        </record> 
+
+        <record
+            id="product_fixedprice_action_form"
+            model="ir.actions.act_window.view"
+        >
+            <field name="sequence" eval="99"/>                                  
+            <field name="view_mode">form</field>                               
+            <field name="view_id" ref="product_fixedprice_form"/>            
+            <field name="act_window_id" ref="product_fixedprice_action"/>        
+        </record> 
+
+        <record
+            id="product_fixedprice_version_action"
+            model="ir.actions.act_window"
+        >
+            <field name="name">Fixed Pricelist versions</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">product.pricelist.version</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('fixed_price', '=', True)]</field>
+            <field name="context">{'default_fixed_price': True}</field>
+            <field name="view_id" ref="product_fixedprice_version_tree"/>
+            <field name="help" type="html">
+              <p class="oe_view_nocontent_create">
+                Click to add a pricelist version.
+              </p><p>
+                There can be more than one version of a pricelist, each of
+                these must be valid during a certain period of time. Some
+                examples of versions: Main Prices, 2010, 2011, Summer Sales,
+                etc.
+              </p>
+            </field>
+        </record>
+
+        <record
+            id="product_fixedprice_version_action_tree"
+            model="ir.actions.act_window.view"
+        >
+            <field name="sequence" eval="99"/>                                  
+            <field name="view_mode">tree</field>                               
+            <field name="view_id" ref="product_fixedprice_version_tree"/>            
+            <field
+                name="act_window_id"
+                ref="product_fixedprice_version_action"
+            />        
+        </record> 
+
+        <record
+            id="product_fixedprice_version_action_form"
+            model="ir.actions.act_window.view"
+        >
+            <field name="sequence" eval="99"/>                                  
+            <field name="view_mode">form</field>                               
+            <field name="view_id" ref="product_fixedprice_version_form"/>            
+            <field
+                name="act_window_id"
+                ref="product_fixedprice_version_action"
+            />        
+        </record> 
+
+        <menuitem
+            id="product_fixedprice_menu"
+            action="product_fixedprice_action"
+            parent="product.menu_product_pricelist_main"
+            sequence="22"
+        />
+
+        <menuitem
+            id="product_fixedprice_version_menu"
+            action="product_fixedprice_version_action"
+            parent="product.menu_product_pricelist_main"
+            sequence="24"
+        />
+
+    </data>
+</openerp>

=== added file 'product_pricelist_fixed_price/view/pricelist_view.xml'
--- product_pricelist_fixed_price/view/pricelist_view.xml	1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/view/pricelist_view.xml	2014-01-27 15:19:50 +0000
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+        <!-- Basically this file contains simplified versions of the views
+            for pricelist items, pricelist versions and pricelists.
+            The views contain only the fields needed to add fixed prices.
+            Actually the surcharche field is used for the fixed price, while
+            the discount_factor is set to -1 to eliminate the role of the
+            base price.
+            For fixed prices product_id is (ofcourse?) required.
+        -->
+
+        <!-- Pricelist item -->
+
+        <record id="product_fixedprice_item_tree" model="ir.ui.view">
+            <field name="name">product.fixedprice.item.tree</field>
+            <field name="model">product.pricelist.item</field>
+            <field name="priority">99</field>
+            <field name="arch" type="xml">
+                <tree string="Products Fixed Price Items">
+                    <field
+                        name="name"
+                        invisible="1"
+                    />
+                    <field
+                        name="fixed_price"
+                        invisible="1"
+                    />
+                    <field name="product_id"/>
+                    <field
+                        name="product_tmpl_id"
+                        groups="product.group_product_variant"
+                    />
+                    <field name="min_quantity"/>
+                    <field
+                        name="price_surcharge"
+                        string="Price"
+                    />
+                </tree>
+            </field>
+        </record>
+
+        <record id="product_fixedprice_item_form" model="ir.ui.view">
+            <field name="name">product.fixedprice.item.form</field>
+            <field name="model">product.pricelist.item</field>
+            <field name="priority">99</field>
+            <field name="arch" type="xml">
+                <form string="Products Fixed Price Items" version="7.0">
+                    <field
+                        name="name"
+                        invisible="1"
+                    />
+                    <field
+                        name="fixed_price"
+                        invisible="1"
+                    />
+                    <field
+                        name="price_discount"
+                        invisible="1"
+                    />
+                    <group col="4">
+                        <field
+                            name="product_id"
+                            on_change="product_id_change(product_id)"
+                            required="1"
+                        />
+                        <field
+                            name="product_tmpl_id"
+                            groups="product.group_product_variant"
+                        />
+                        <field
+                            name="company_id"
+                            groups="base.group_multi_company"
+                            widget="selection"
+                        />
+                        <field name="min_quantity"/>
+                        <field
+                            name="price_surcharge"
+                            string="Price"
+                        />
+                    </group>
+                </form>
+            </field>
+        </record>
+
+
+        <!-- Pricelist version -->
+
+        <record id="product_fixedprice_version_form" model="ir.ui.view">
+            <field name="name">product.fixedprice.version.form</field>
+            <field name="model">product.pricelist.version</field>
+            <field name="priority">99</field>
+            <field name="arch" type="xml">
+                <form string="Fixed Pricelist Version" version="7.0" >
+                    <group col="4">
+                        <field
+                            name="fixed_price"
+                            invisible="1"
+                        />
+                        <field name="name"/>
+                        <field name="active"/>
+                        <field
+                            colspan="4"
+                            name="pricelist_id"
+                            domain="[('fixed_price', '=', True),]"
+                        />
+                        <field name="date_start"/>
+                        <field name="date_end"/>
+                        <field 
+                            name="company_id"
+                            groups="base.group_multi_company"
+                            widget="selection"
+                        />
+                    </group>
+                    <p></p>
+                    <field
+                        name="items_id"
+                        context="{
+                            'form_view_ref': 'product_pricelist_fixed_price.product_fixedprice_item_form',
+                            'tree_view_ref': 'product_pricelist_fixed_price.product_fixedprice_item_tree',
+                            'default_fixed_price': True,
+                            'default_price_discount': -1,
+                        }"
+                    />
+                </form>
+            </field>
+        </record>
+
+        <record id="product_fixedprice_version_tree" model="ir.ui.view">
+            <field name="name">product.fixedprice.version.tree</field>
+            <field name="model">product.pricelist.version</field>
+            <field name="priority">99</field>
+            <field name="arch" type="xml">
+                <tree string="Fixed Pricelist Version">
+                    <field
+                        name="fixed_price"
+                        invisible="1"
+                    />
+                    <field name="name"/>
+                    <field name="pricelist_id"/>
+                    <field name="date_start"/>
+                    <field name="date_end"/>
+                </tree>
+            </field>
+        </record>
+
+
+        <!-- Pricelist -->
+
+        <record model="ir.ui.view" id="product_fixedprice_search">
+            <field name="name">product.fixedprice.search</field>
+            <field name="model">product.pricelist</field>
+            <field name="priority">99</field>
+            <field name="arch" type="xml">
+                <search string="Products Fixed Price Search">
+                    <field name="name" string="Products Price"/>
+                    <field name="type"/>
+                    <field name="active" />
+                    <field
+                        name="currency_id"
+                        groups="base.group_multi_currency"
+                    />
+                </search>
+            </field>
+        </record>
+
+        <record id="product_fixedprice_tree" model="ir.ui.view">
+            <field name="name">product.fixedprice.tree</field>
+            <field name="model">product.pricelist</field>
+            <field name="priority">99</field>
+            <field name="arch" type="xml">
+                <tree string="Products Fixed Price List">
+                    <field name="name"/>
+                    <field name="type"/>
+                    <field
+                        name="currency_id"
+                        groups="base.group_multi_currency"
+                    />
+                    <field name="active" />
+                </tree>
+            </field>
+        </record>
+
+        <record id="product_fixedprice_form" model="ir.ui.view">
+            <field name="name">product.fixedprice.form</field>
+            <field name="model">product.pricelist</field>
+            <field name="priority">99</field>
+            <field name="arch" type="xml">
+                <form string="Products Fixed Price List" version="7.0" >
+                    <field name="name"/>
+                    <group col="4">
+                        <field name="active"/>
+                        <field name="type"/>
+                        <field
+                            name="currency_id"
+                            groups="base.group_multi_currency"
+                        />
+                        <field
+                            name="company_id"
+                            groups="base.group_multi_company"
+                            widget="selection"
+                        />
+                    </group>
+                    <p></p>
+                    <field
+                        name="version_id"
+                        context="{
+                            'form_view_ref': 'product_pricelist_fixed_price.product_fixedprice_version_form',
+                            'tree_view_ref': 'product_pricelist_fixed_price.product_fixedprice_version_tree',
+                            'default_pricelist_id': active_id,
+                            'default_fixed_price': True,
+                        }"
+                    />
+                </form>
+            </field>
+        </record>
+
+    </data>
+</openerp>


Follow ups