openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #07414
[Merge] lp:~agilebg/sale-wkfl/adding_sale_line_quantity_properties_based_7 into lp:sale-wkfl
Alex Comba - Agile BG has proposed merging lp:~agilebg/sale-wkfl/adding_sale_line_quantity_properties_based_7 into lp:sale-wkfl.
Commit message:
[ADD] module 'sale_line_quantity_properties_based'
Requested reviews:
Lorenzo Battistini - Agile BG (elbati)
Sale Core Editors (sale-core-editors)
For more details, see:
https://code.launchpad.net/~agilebg/sale-wkfl/adding_sale_line_quantity_properties_based_7/+merge/223538
This branch adds the module 'sale_line_quantity_properties_based' which allows the calculation of the product quantity on the basis of a formula that considers the properties specified by the user on the sale order line and on the quantity (UoS).
The module description contains an example to explain how this module works.
--
https://code.launchpad.net/~agilebg/sale-wkfl/adding_sale_line_quantity_properties_based_7/+merge/223538
Your team Sale Core Editors is requested to review the proposed merge of lp:~agilebg/sale-wkfl/adding_sale_line_quantity_properties_based_7 into lp:sale-wkfl.
=== added directory 'sale_line_quantity_properties_based'
=== added file 'sale_line_quantity_properties_based/__init__.py'
--- sale_line_quantity_properties_based/__init__.py 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/__init__.py 2014-06-26 08:16:26 +0000
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alex Comba <alex.comba@xxxxxxxxxxx>
+# Copyright (C) 2014 Agile Business Group sagl
+# (<http://www.agilebg.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 sale
=== added file 'sale_line_quantity_properties_based/__openerp__.py'
--- sale_line_quantity_properties_based/__openerp__.py 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/__openerp__.py 2014-06-26 08:16:26 +0000
@@ -0,0 +1,100 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alex Comba <alex.comba@xxxxxxxxxxx>
+# Copyright (C) 2014 Agile Business Group sagl
+# (<http://www.agilebg.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/>.
+#
+##############################################################################
+{
+ 'name': "Sale line quantity properties based",
+ 'version': '0.1',
+ 'category': 'Sales Management',
+ 'description': """
+Sale line quantity based on line properties
+===========================================
+
+*This module allows the calculation of the product quantity on the basis of a
+formula that considers the properties specified by the user on the sale order
+line and on the quantity (UoS).*
+
+Example
+--------
+
+Provided the sale of a given number of pieces (shelves), that may be
+’x’ meter long and ’y’ meter large, the formula enables the calculation of the
+total area sold expressed in square meters:
+ 10 [pcs of] (4 m x 0.5 m) shelves = 20 m² of wood
+
+In order to have this function working, it is necessary to have the user
+proceeding as follows:
+
+before starting, s/he has to belong to **sale.group_mrp_properties** by
+selecting the option "Invoice products in a different unit of measure than the
+sales order" in the following menu: **Settings --> Configration --> Warehouse**
+
+Then s/he shall create properties such as ‘length 4’, ‘width 0.5’.
+
+Properties must respond the following criteria:
+
+ * Name: ‘length 1’, ‘length 4’, ‘width 0.5’
+ * Property Group : either ‘length’ or ‘width’
+ * Description : the corresponding quantity (1, 4, 0.5...)
+
+Property 'length 4'
+ * Name: ‘length 4’
+ * Property Group : ‘length’
+ * Description : 4
+
+Property 'width 0.5'
+ * Name: ‘width 0.5’
+ * Property Group : ‘width’
+ * Description : 0.5
+
+After this, the formula 'surface' must be created:
+
+**P['length'] * P['width']**
+whereas P is a mandatory element and 'length' and 'width' must be provided
+in square brackets **[ ]**
+
+This is possible by using the menu:
+**Manufacturing --> Configuration--> Formulas**
+
+Upon the registering of the order, the user will apply in the properties field
+the desired properties (in this example the ‘lenght 4’ and ‘width 2’), the
+needed formula (in this example 'surface') and last the quantity (UoS).
+
+Contributors
+------------
+* Alex Comba <alex.comba@xxxxxxxxxxx>
+* Lorenzo Battistini <lorenzo.battistini@xxxxxxxxxxx>
+""",
+ 'author': 'Agile Business Group',
+ 'website': 'http://www.agilebg.com',
+ 'license': 'AGPL-3',
+ 'depends': [
+ 'sale_mrp',
+ ],
+ 'data': [
+ 'sale_view.xml',
+ 'mrp_view.xml',
+ 'security/ir.model.access.csv',
+ ],
+ 'test': [
+ 'test/sale_line_quantity_properties_based.yml',
+ ],
+ 'installable': True
+}
=== added directory 'sale_line_quantity_properties_based/i18n'
=== added file 'sale_line_quantity_properties_based/i18n/it.po'
--- sale_line_quantity_properties_based/i18n/it.po 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/i18n/it.po 2014-06-26 08:16:26 +0000
@@ -0,0 +1,100 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * sale_line_quantity_properties_based
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-06-18 12:36+0000\n"
+"PO-Revision-Date: 2014-06-18 14:40+0100\n"
+"Last-Translator: Alex Comba <alex.comba@xxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"X-Generator: Poedit 1.5.4\n"
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.actions.act_window,name:sale_line_quantity_properties_based.mrp_formula_action
+#: model:ir.ui.menu,name:sale_line_quantity_properties_based.menu_mrp_formula_group_action
+msgid "Formulas"
+msgstr "Formule"
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:48
+#, python-format
+msgid "The property %s has the field description not filled"
+msgstr "La proprietà %s ha il campo descrizione non compilato"
+
+#. module: sale_line_quantity_properties_based
+#: field:sale.order.line.quantity.formula,name:0
+msgid "Name"
+msgstr "Nome"
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:38
+#, python-format
+msgid "Formula Error!"
+msgstr "Errore Formula!"
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.actions.act_window,help:sale_line_quantity_properties_based.mrp_formula_action
+msgid ""
+"<p class=\"oe_view_nocontent_create\">\n"
+" Click to create a new formula.\n"
+" </p><p>\n"
+" The formulas are used to automatically compute the product "
+"quantity on the basis of the properties specified by the user\n"
+" on the sale order line and on the quantity (UoS)\n"
+" </p>\n"
+" "
+msgstr ""
+"<p class=\"oe_view_nocontent_create\">\n"
+" Clicca per creare una nuova formula.\n"
+" </p><p>\n"
+" Le formule vengono usate per calcolare in modo automatico la "
+"quantità del prodotto in base alle proprietà specificate dall'utente\n"
+" sulla riga dell'ordine di vendita e in base alla quantità "
+"(Unità di Vendita)\n"
+" </p>\n"
+" "
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.model,name:sale_line_quantity_properties_based.model_sale_order_line_quantity_formula
+msgid "sale.order.line.quantity.formula"
+msgstr "sale.order.line.quantity.formula"
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:54
+#, python-format
+msgid ""
+"The formula %s cannot work since there are more than one property belong to "
+"the same group"
+msgstr ""
+"La formula %s non può funzionare perchè sono presenti più di una proprietà "
+"apparteneti allo stesso gruppo"
+
+#. module: sale_line_quantity_properties_based
+#: field:sale.order.line,formula_id:0
+#: field:sale.order.line.quantity.formula,formula_text:0
+msgid "Formula"
+msgstr "Formula"
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:83
+#, python-format
+msgid "%s is not a valid formula. Reason: %s"
+msgstr "%s non è valida. Motivo: %s"
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:67
+#, python-format
+msgid "%s is not a valid value for the property %s, it must be a number"
+msgstr "%s non è un valore valido per la proprietà %s, deve essere un numero"
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.model,name:sale_line_quantity_properties_based.model_sale_order_line
+msgid "Sales Order Line"
+msgstr "Linea d'ordine di vendita"
=== added file 'sale_line_quantity_properties_based/i18n/sale_line_quantity_properties_based.pot'
--- sale_line_quantity_properties_based/i18n/sale_line_quantity_properties_based.pot 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/i18n/sale_line_quantity_properties_based.pot 2014-06-26 08:16:26 +0000
@@ -0,0 +1,85 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * sale_line_quantity_properties_based
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-06-18 12:43+0000\n"
+"PO-Revision-Date: 2014-06-18 12:43+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.actions.act_window,name:sale_line_quantity_properties_based.mrp_formula_action
+#: model:ir.ui.menu,name:sale_line_quantity_properties_based.menu_mrp_formula_group_action
+msgid "Formulas"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:48
+#, python-format
+msgid "The property %s has the field description not filled"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: field:sale.order.line.quantity.formula,name:0
+msgid "Name"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:38
+#, python-format
+msgid "Formula Error!"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.actions.act_window,help:sale_line_quantity_properties_based.mrp_formula_action
+msgid "<p class=\"oe_view_nocontent_create\">\n"
+" Click to create a new formula.\n"
+" </p><p>\n"
+" The formulas are used to automatically compute the product quantity on the basis of the properties specified by the user\n"
+" on the sale order line and on the quantity (UoS)\n"
+" </p>\n"
+" "
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.model,name:sale_line_quantity_properties_based.model_sale_order_line_quantity_formula
+msgid "sale.order.line.quantity.formula"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:54
+#, python-format
+msgid "The formula %s cannot work since there are more than one property belong to the same group"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: field:sale.order.line,formula_id:0
+#: field:sale.order.line.quantity.formula,formula_text:0
+msgid "Formula"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:83
+#, python-format
+msgid "%s is not a valid formula. Reason: %s"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: code:addons/sale_line_quantity_properties_based/sale.py:67
+#, python-format
+msgid "%s is not a valid value for the property %s, it must be a number"
+msgstr ""
+
+#. module: sale_line_quantity_properties_based
+#: model:ir.model,name:sale_line_quantity_properties_based.model_sale_order_line
+msgid "Sales Order Line"
+msgstr ""
+
=== added file 'sale_line_quantity_properties_based/mrp_view.xml'
--- sale_line_quantity_properties_based/mrp_view.xml 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/mrp_view.xml 2014-06-26 08:16:26 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="mrp_formula_action" model="ir.actions.act_window">
+ <field name="name">Formulas</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">sale.order.line.quantity.formula</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ <field name="help" type="html">
+ <p class="oe_view_nocontent_create">
+ Click to create a new formula.
+ </p><p>
+ The formulas are used to automatically compute the product quantity on the basis of the properties specified by the user
+ on the sale order line and on the quantity (UoS)
+ </p>
+ </field>
+ </record>
+
+ <menuitem
+ action="mrp_formula_action"
+ parent="mrp.menu_mrp_configuration"
+ groups="base.group_no_one,product.group_mrp_properties"
+ id="menu_mrp_formula_group_action"
+ sequence="40"/>
+
+ </data>
+</openerp>
=== added file 'sale_line_quantity_properties_based/sale.py'
--- sale_line_quantity_properties_based/sale.py 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/sale.py 2014-06-26 08:16:26 +0000
@@ -0,0 +1,150 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alex Comba <alex.comba@xxxxxxxxxxx>
+# Copyright (C) 2014 Agile Business Group sagl
+# (<http://www.agilebg.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 openerp.osv import orm, fields
+from openerp.tools.translate import _
+import traceback
+
+
+class sale_order_line(orm.Model):
+ _inherit = 'sale.order.line'
+
+ def onchange_formula(
+ self, cr, uid, ids,
+ formula_id, property_ids, product_uos_qty, context=None
+ ):
+ res = {}
+ properties = {}
+ warning_msg = ''
+ warning = {'title': _('Formula Error!')}
+ if formula_id and property_ids:
+ formula = self.pool.get('sale.order.line.quantity.formula').browse(
+ cr, uid, formula_id, context=context)
+ formula_text = formula.formula_text
+ mrp_property_obj = self.pool.get('mrp.property')
+ for mrp_property_id in property_ids[0][2]:
+ mrp_property = mrp_property_obj.browse(
+ cr, uid, mrp_property_id, context=context)
+ if not mrp_property.description:
+ warning_msg = _(
+ u"The property %s has the field description "
+ u"not filled" % mrp_property.name
+ )
+ break
+ if mrp_property.group_id.name in properties:
+ warning_msg = _(
+ u"The formula %s cannot work since "
+ u"there are more than one property belong "
+ u"to the same group" % formula_text
+ )
+ break
+ try:
+ properties[mrp_property.group_id.name] = float(
+ mrp_property.description)
+ except ValueError:
+ warning_msg = _(
+ u"%s is not a valid value for the "
+ u"property %s, it must be a number"
+ % (
+ mrp_property.description,
+ mrp_property.group_id.name
+ )
+ )
+ break
+ if warning_msg:
+ warning.update({'message': warning_msg})
+ return {'warning': warning}
+ try:
+ res['product_uom_qty'] = eval(formula_text.replace(
+ 'P', 'properties')) * product_uos_qty
+ except Exception:
+ formatted_lines = traceback.format_exc().splitlines()
+ warning_msg = _(
+ u"%s is not a valid formula. Reason: %s"
+ % (
+ formula_text,
+ formatted_lines[-1]
+ )
+ )
+ warning.update({'message': warning_msg})
+ return {'warning': warning}
+ return {'value': res}
+
+ _columns = {
+ 'formula_id': fields.many2one(
+ 'sale.order.line.quantity.formula', 'Formula',),
+ }
+
+ def product_id_change(
+ self, cr, uid, ids, pricelist, product, qty=0,
+ uom=False, qty_uos=0, uos=False, name='', partner_id=False,
+ lang=False, update_tax=True, date_order=False, packaging=False,
+ fiscal_position=False, flag=False, context=None
+ ):
+ """
+ Removing product_uos_qty is needed because it is now used to compute
+ the real quantity.
+ Otherwise it would be recomputed after the quantity changed.
+ See the automated test for the use case.
+ """
+ res = super(sale_order_line, self).product_id_change(
+ cr, uid, ids, pricelist, product, qty=qty,
+ uom=uom, qty_uos=qty_uos, uos=uos, name=name,
+ partner_id=partner_id, lang=lang, update_tax=update_tax,
+ date_order=date_order, packaging=packaging,
+ fiscal_position=fiscal_position, flag=flag, context=context
+ )
+ if 'value' in res and 'product_uos_qty' in res['value']:
+ del res['value']['product_uos_qty']
+ return res
+
+
+class sale_order_line_quantity_formula(orm.Model):
+ _name = "sale.order.line.quantity.formula"
+
+ _columns = {
+ 'name': fields.char('Name', size=32),
+ 'formula_text': fields.text('Formula'),
+ }
+
+
+class mrp_property(orm.Model):
+ _inherit = 'mrp.property'
+
+ def name_create(self, cr, uid, name, context=None):
+ """
+ This allows the user to digit 'width 0.5' and the system will
+ automatically create a property of group 'width' with value '0.5'
+ """
+ splitted_name = name.split(' ')
+ if len(splitted_name) == 2:
+ group_ids = self.pool['mrp.property.group'].search(
+ cr, uid, [('name', '=', splitted_name[0])], context=context)
+ if group_ids and len(group_ids) == 1:
+ rec_id = self.create(cr, uid, {
+ 'name': name,
+ 'group_id': group_ids[0],
+ 'description': splitted_name[1]
+ }, context=context)
+ return self.name_get(cr, uid, [rec_id], context)[0]
+ return super(mrp_property, self).name_create(
+ cr, uid, name, context=context)
=== added file 'sale_line_quantity_properties_based/sale_view.xml'
--- sale_line_quantity_properties_based/sale_view.xml 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/sale_view.xml 2014-06-26 08:16:26 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record id="view_order_form_inherit" model="ir.ui.view">
+ <field name="name">sale.order.form.sale.stock</field>
+ <field name="model">sale.order</field>
+ <field name="inherit_id" ref="sale_stock.view_order_form_inherit"/>
+ <field name="arch" type="xml">
+ <xpath expr="//field[@name='property_ids']" position="replace"/>
+ <xpath expr="//page[@string='Order Lines']/field[@name='order_line']/form[@string='Sales Order Lines']/group/group/field[@name='product_id']" position="after">
+ <field name="property_ids" on_change="onchange_formula(formula_id, property_ids, product_uos_qty)" widget="many2many_tags"/>
+ </xpath>
+ </field>
+ </record>
+
+ <record id="view_order_form" model="ir.ui.view">
+ <field name="name">sale.order.form</field>
+ <field name="model">sale.order</field>
+ <field name="inherit_id" ref="sale.view_order_form"/>
+ <field name="arch" type="xml">
+ <xpath expr="//page[@string='Order Lines']/field[@name='order_line']/form[@string='Sales Order Lines']/group/group/label[@for='product_uos_qty']" position="replace">
+ </xpath>
+ <xpath expr="//page[@string='Order Lines']/field[@name='order_line']/form[@string='Sales Order Lines']/group/group/div[@groups='product.group_uos']" position="replace">
+ </xpath>
+ <xpath expr="//page[@string='Order Lines']/field[@name='order_line']/form[@string='Sales Order Lines']/group/group/field[@name='price_unit']" position="replace">
+ </xpath>
+ <xpath expr="//page[@string='Order Lines']/field[@name='order_line']/form[@string='Sales Order Lines']/group/group/field[@name='product_id']" position="after">
+ <field name="formula_id" on_change="onchange_formula(formula_id, property_ids, product_uos_qty)"/>
+ <label for="product_uos_qty"/>
+ <div>
+ <field name="product_uos_qty" on_change="onchange_formula(formula_id, property_ids, product_uos_qty)" class="oe_inline"/>
+ <field name="product_uos" class="oe_inline"/>
+ </div>
+ </xpath>
+ <xpath expr="//page[@string='Order Lines']/field[@name='order_line']/form[@string='Sales Order Lines']/group/group/field[@name='address_allotment_id']" position="after">
+ <field name="price_unit"/>
+ </xpath>
+ </field>
+ </record>
+
+ </data>
+</openerp>
=== added directory 'sale_line_quantity_properties_based/security'
=== added file 'sale_line_quantity_properties_based/security/ir.model.access.csv'
--- sale_line_quantity_properties_based/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/security/ir.model.access.csv 2014-06-26 08:16:26 +0000
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_sale_order_line_quantity_formula_user,sale.order.line.quantity.formula.user,model_sale_order_line_quantity_formula,base.group_sale_salesman,1,0,0,0
+access_sale_order_line_quantity_formula_manager,sale.order.line.quantity.formula salemanager,model_sale_order_line_quantity_formula,base.group_sale_manager,1,1,1,1
=== added directory 'sale_line_quantity_properties_based/test'
=== added file 'sale_line_quantity_properties_based/test/sale_line_quantity_properties_based.yml'
--- sale_line_quantity_properties_based/test/sale_line_quantity_properties_based.yml 1970-01-01 00:00:00 +0000
+++ sale_line_quantity_properties_based/test/sale_line_quantity_properties_based.yml 2014-06-26 08:16:26 +0000
@@ -0,0 +1,68 @@
+-
+ In order to test the sale_line_quantity_properties_based,
+ I start by creating a new unit of measure category 'Surface'
+-
+ !record {model: product.uom.categ, id: product_uom_categ_area}:
+ name: Surface
+-
+ I create the unit of measure square meter
+-
+ !record {model: product.uom, id: product_uom_m2}:
+ name: m²
+ category_id: product_uom_categ_area
+-
+ I create a product 'shelf'
+-
+ !record {model: product.product, id: product_product_shelf}:
+ categ_id: product.product_category_all
+ name: shelf
+ type: product
+ uom_id: product_uom_m2
+ list_price: 1.0
+-
+ I create a property group 'length'
+-
+ !record {model: mrp.property.group, id: mrp_property_group_length}:
+ name: length
+-
+ I create a property group 'width'
+-
+ !record {model: mrp.property.group, id: mrp_property_group_width}:
+ name: width
+-
+ I create a property 'length 4'
+-
+ !record {model: mrp.property, id: mrp_property_length_4}:
+ name: length 4
+ group_id: mrp_property_group_length
+ description: 4
+-
+ I create a property 'width 0.5'
+-
+ !record {model: mrp.property, id: mrp_property_length_width_05}:
+ name: width 0.5
+ group_id: mrp_property_group_width
+ description: 0.5
+-
+ I create the formula surface
+-
+ !record {model: sale.order.line.quantity.formula, id: sale_order_line_quantity_formula_surface}:
+ name: surface
+ formula_text: P['width'] * P['length']
+-
+ Now i create a sale order with an order line that uses properties and formula previously created
+-
+ !record {model: sale.order, id: sale_order_formula}:
+ partner_id: base.res_partner_1
+ order_line:
+ - product_id: product_product_shelf
+ property_ids:
+ - mrp_property_length_4
+ - mrp_property_length_width_05
+ formula_id: sale_order_line_quantity_formula_surface
+ product_uos_qty: 6
+-
+ I verify that the quantity product has been correctly calculated using the formula
+-
+ !assert {model: sale.order, id: sale_order_formula, string: The formula was not correctly calculated}:
+ - order_line[0].product_uom_qty == 4 * 0.5 * 6
Follow ups