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

Reply via email to