Harry (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-uom-usability-tta into
lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-uom-usability-tta/+merge/128626
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-uom-usability-tta/+merge/128626
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-uom-usability-tta.
=== modified file 'product/product.py'
--- product/product.py 2012-10-02 20:40:23 +0000
+++ product/product.py 2012-10-09 05:11:20 +0000
@@ -107,10 +107,18 @@
del(data['factor_inv'])
return super(product_uom, self).create(cr, uid, data, context)
+ def _product_uom_name(self, cr, uid, ids, name, arg, context=None):
+ res = {}
+ if context is None:
+ context = {}
+ for p in self.browse(cr, uid, ids, context=context):
+ res[p.id] = p.name
+ return res
+
_order = "name"
_columns = {
- 'name': fields.char('Name', size=64, required=True, translate=True),
- 'category_id': fields.many2one('product.uom.categ', 'Unit of Measure Category', required=True, ondelete='cascade',
+ 'name': fields.char('Unit of Measure', size=64, required=True, translate=True),
+ 'category_id': fields.many2one('product.uom.categ', 'Category', required=True, ondelete='cascade',
help="Quantity conversions may happen automatically between Units of Measure in the same category, according to their respective ratios."),
'factor': fields.float('Ratio', required=True,digits=(12, 12),
help='How many times this Unit of Measure is smaller than the reference Unit of Measure in this category:\n'\
@@ -120,13 +128,15 @@
string='Ratio',
help='How many times this Unit of Measure is bigger than the reference Unit of Measure in this category:\n'\
'1 * (this unit) = ratio * (reference unit)', required=True),
- 'rounding': fields.float('Rounding Precision', digits_compute=dp.get_precision('Product Unit of Measure'), required=True,
+ 'rounding': fields.float('Rounding precision', digits_compute=dp.get_precision('Product Unit of Measure'), required=True,
help="The computed quantity will be a multiple of this value. "\
"Use 1.0 for a Unit of Measure that cannot be further split, such as a piece."),
'active': fields.boolean('Active', help="By unchecking the active field you can disable a unit of measure without deleting it."),
'uom_type': fields.selection([('bigger','Bigger than the reference Unit of Measure'),
('reference','Reference Unit of Measure for this category'),
- ('smaller','Smaller than the reference Unit of Measure')],'Unit of Measure Type', required=1),
+ ('smaller','Smaller than the reference Unit of Measure')],'Type', required=1),
+ 'reference_uom_id': fields.many2one('product.uom', 'Reference UoM', readonly=True, help='Reference unit'),
+ 'name_ref': fields.function(_product_uom_name, type='char', string='Name'),
}
_defaults = {
@@ -139,6 +149,14 @@
('factor_gt_zero', 'CHECK (factor!=0)', 'The conversion ratio for a unit of measure cannot be 0!')
]
+ def onchange_category_id(self, cr, uid, ids, category_id):
+ reference_uom = False
+ if category_id:
+ uom_ids = self.search(cr, uid, [('category_id', '=',category_id),('uom_type', '=', 'reference')])
+ if uom_ids:
+ reference_uom = uom_ids[0]
+ return {'value':{'reference_uom_id': reference_uom}}
+
def _compute_qty(self, cr, uid, from_uom_id, qty, to_uom_id=False):
if not from_uom_id or not qty or not to_uom_id:
return qty
@@ -177,6 +195,11 @@
amount = amount / to_unit.factor
return amount
+ def onchange_name(self, cursor, user, ids, value):
+ if value:
+ return {'value': {'name_ref': value}}
+ return {}
+
def onchange_type(self, cursor, user, ids, value):
if value == 'reference':
return {'value': {'factor': 1, 'factor_inv': 1}}
=== modified file 'product/product_data.xml'
--- product/product_data.xml 2012-10-03 11:57:32 +0000
+++ product/product_data.xml 2012-10-09 05:11:20 +0000
@@ -42,6 +42,7 @@
<field name="name">Dozen</field>
<field name="factor_inv" eval="12"/>
<field name="uom_type">bigger</field>
+ <field name="reference_uom_id" ref="product_uom_unit"/>
</record>
<record id="product_uom_kgm" model="product.uom">
<field name="category_id" ref="product_uom_categ_kgm"/>
@@ -53,18 +54,20 @@
<field name="name">g</field>
<field name="factor" eval="1000"/>
<field name="uom_type">smaller</field>
+ <field name="reference_uom_id" ref="product_uom_kgm"/>
+ </record>
+ <record id="product_uom_day" model="product.uom">
+ <field name="name">Day</field>
+ <field eval="uom_categ_wtime" name="category_id"/>
+ <field name="factor" eval="1.0"/>
</record>
<record id="product_uom_hour" model="product.uom">
<field name="name">Hour</field>
<field eval="uom_categ_wtime" name="category_id"/>
<field name="factor" eval="8.0"/>
<field name="uom_type">smaller</field>
- </record>
- <record id="product_uom_day" model="product.uom">
- <field name="name">Day</field>
- <field eval="uom_categ_wtime" name="category_id"/>
- <field name="factor" eval="1.0"/>
- </record>
+ <field name="reference_uom_id" ref="product_uom_day"/>
+ </record>
<record id="product_uom_ton" model="product.uom">
<field name="category_id" ref="product_uom_categ_kgm"/>
<!-- 'tonne' is the most common spelling in english-speaking countries,
@@ -72,6 +75,7 @@
<field name="name">t</field>
<field name="factor_inv" eval="1000"/>
<field name="uom_type">bigger</field>
+ <field name="reference_uom_id" ref="product_uom_kgm"/>
</record>
<record id="product_uom_meter" model="product.uom">
<field name="category_id" ref="uom_categ_length"/>
@@ -83,12 +87,14 @@
<field name="name">km</field>
<field name="factor_inv" eval="1000"/>
<field name="uom_type">bigger</field>
+ <field name="reference_uom_id" ref="product_uom_meter"/>
</record>
<record id="product_uom_cm" model="product.uom">
<field name="category_id" ref="uom_categ_length"/>
<field name="name">cm</field>
<field name="factor" eval="100"/>
<field name="uom_type">smaller</field>
+ <field name="reference_uom_id" ref="product_uom_meter"/>
</record>
<record id="product_uom_litre" model="product.uom">
<field name="name">Litre</field>
=== modified file 'product/product_view.xml'
--- product/product_view.xml 2012-09-30 14:16:38 +0000
+++ product/product_view.xml 2012-10-09 05:11:20 +0000
@@ -449,7 +449,6 @@
<tree string="Units of Measure">
<field name="name"/>
<field name="category_id"/>
- <field name="factor"/>
</tree>
</field>
</record>
@@ -461,21 +460,25 @@
<form string="Units of Measure" version="7.0">
<group>
<group>
- <field name="name"/>
- <field name="category_id"/>
+ <field name="name" on_change="onchange_name(name)"/>
+ <field name="category_id" on_change="onchange_category_id(category_id)"/>
<field name="active"/>
</group>
<group>
<field name="uom_type" on_change="onchange_type(uom_type)"/>
- <p attrs="{'invisible':[('uom_type','!=','smaller')]}" colspan="2">
- e.g: 1 * (reference unit) = ratio * (this unit)
- </p>
- <p attrs="{'invisible':[('uom_type','!=','bigger')]}" colspan="2">
- e.g: 1 * (this unit) = ratio * (reference unit)
- </p>
+ <label string="Computation" for="factor" attrs="{'invisible':[('uom_type','=','reference')]}" style="margin: 9px 0 9px 0;"/>
+ <group col="5" attrs="{'invisible':[('uom_type','=','reference')]}">
+ <div style="margin-left: -12px;">
+ <field name="factor_inv" class="oe_inline" attrs="{'invisible':[('uom_type','!=','bigger')]}" String="Computation" nolabel="1"/>
+ <label string="1" attrs="{'invisible':[('uom_type','!=','smaller')]}"/>
+ <field class="oe_inline" name="reference_uom_id" attrs="{'invisible':[('uom_type','=','reference')]}" nolabel="1"/>
+ <label string="="/>
+ <field class="oe_inline" name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}" String="Computation" nolabel="1"/>
+ <label string="1" attrs="{'invisible':[('uom_type','!=','bigger')]}"/>
+ <field class="oe_inline" name="name_ref" nolabel="1" attrs="{'readonly': True}" width="1"/>
+ </div>
+ </group>
<field name="rounding"/>
- <field name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}"/>
- <field name="factor_inv" attrs="{'invisible':[('uom_type','!=','bigger')]}"/>
</group>
</group>
</form>
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp