openerp-community team mailing list archive
-
openerp-community team
-
Mailing list archive
-
Message #04820
[Merge] lp:~pedro.baeza/openerp-product-attributes/7.0-product_pricelist_fixed_price into lp:openerp-product-attributes
Pedro Manuel Baeza has proposed merging lp:~pedro.baeza/openerp-product-attributes/7.0-product_pricelist_fixed_price into lp:openerp-product-attributes.
Requested reviews:
Product Core Editors (product-core-editors)
For more details, see:
https://code.launchpad.net/~pedro.baeza/openerp-product-attributes/7.0-product_pricelist_fixed_price/+merge/205045
This is the module product_pricelist_fixed_price, rewritten from scratch, with another different approach than the current one. Derived from the discussion on this MP:
https://code.launchpad.net/~therp-nl/openerp-product-attributes/7.0_lp1272282_fixed_price/+merge/203348
This only has one drawback: if you install it when you have some pricelists created, when you go to the pricelist form, based on field will be empty for these pricelists (although the behaviour won't break).
--
https://code.launchpad.net/~pedro.baeza/openerp-product-attributes/7.0-product_pricelist_fixed_price/+merge/205045
Your team OpenERP Community is subscribed to branch lp:openerp-product-attributes.
=== removed 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 1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
-Lorenzo Battistini <lorenzo.battistini@xxxxxxxxxxxx>
=== 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-02-05 20:45:47 +0000
@@ -1,13 +1,10 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: 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.
+# 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
@@ -18,5 +15,4 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
-
-import pricelist
+from . import model
=== 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-02-05 20:45:47 +0000
@@ -1,13 +1,14 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
+# Copyright (c) 2014 Serv. Tecnol. Avanzados (http://www.serviciosbaeza.com)
+# Pedro M. Baeza <pedro.baeza@xxxxxxxxxxxxxxxxxx>
#
# 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.
+# 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
@@ -19,20 +20,26 @@
#
##############################################################################
-
{
- "name": "Price List Fixed Price",
- "version": "1.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',
- ],
- 'demo_xml': [],
- 'installable': False,
- 'active': False,
+ "name" : "Fixed price in pricelists",
+ "version" : "1.0",
+ "author" : "Serv. Tecnol. Avanzados - Pedro M. Baeza",
+ "category" : "Sales Management",
+ "description" : """
+Fixed price on pricelist rule
+=============================
+
+Adds a new option on pricelist rules to set a fixed price.
+ """,
+ "website" : "www.serviciosbaeza.com",
+ "license" : "AGPL-3",
+ "depends" : [
+ "product",
+ ],
+ "demo" : [],
+ "data" : [
+ 'view/product_pricelist_item_view.xml',
+ ],
+ "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"
=== modified 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 2014-02-05 20:45:47 +0000
@@ -1,65 +1,48 @@
-# 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.
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_pricelist_fixed_price
#
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"
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-02-05 20:35+0000\n"
+"PO-Revision-Date: 2014-02-05 21:36+0100\n"
+"Last-Translator: Pedro Manuel Baeza <pedro.baeza@xxxxxxxxxxxxxxxxxx>\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 "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!"
+"Plural-Forms: \n"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.item:0
+msgid "Base Price"
+msgstr "Precio base"
+
+#. module: product_pricelist_fixed_price
+#: help:product.pricelist.item,base_ext:0
+msgid "Base price for computation."
+msgstr "Precio base para el cálculo."
+
+#. module: product_pricelist_fixed_price
+#: field:product.pricelist.item,base_ext:0
+msgid "Based on"
+msgstr "Basado en"
#. 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
+msgstr "Elemento de tarifa"
+
+#. module: product_pricelist_fixed_price
+#: view:product.pricelist.item:0
+msgid "Price Computation"
+msgstr "Cálculo del precio"
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:32
#, 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"
=== 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-02-05 20:45:47 +0000
@@ -4,46 +4,30 @@
#
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"
-"Last-Translator: <>\n"
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-02-05 20:35+0000\n"
+"PO-Revision-Date: 2014-02-05 21:35+0100\n"
+"Last-Translator: Pedro Manuel Baeza <pedro.baeza@xxxxxxxxxxxxxxxxxx>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
+"Content-Transfer-Encoding: 8bit\n"
"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 ""
-
-#. 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 !"
+msgid "Base Price"
+msgstr ""
+
+#. module: product_pricelist_fixed_price
+#: help:product.pricelist.item,base_ext:0
+msgid "Base price for computation."
+msgstr ""
+
+#. module: product_pricelist_fixed_price
+#: field:product.pricelist.item,base_ext:0
+msgid "Based on"
msgstr ""
#. module: product_pricelist_fixed_price
@@ -52,8 +36,12 @@
msgstr ""
#. module: product_pricelist_fixed_price
-#: code:addons/product_pricelist_fixed_price/pricelist.py:32
-#: field:product.pricelist.item,fixed_price:0
+#: view:product.pricelist.item:0
+msgid "Price Computation"
+msgstr ""
+
+#. module: product_pricelist_fixed_price
+#: code:addons/product_pricelist_fixed_price/model/product_pricelist_item.py:32
#, python-format
msgid "Fixed Price"
msgstr ""
=== 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>
Follow ups