Ciao,
purtroppo è una rigidità inserita in queste ultime versioni per impedire che le due unità di misura (di acquisto e utilizzo interno) non appartengano alla stessa categoria e quindi si creino dei problemi nei calcoli delle quantità effettivamente consumate. Purtroppo questa funzionalità è inserita nel write dell'oggetto product_template e quindi una volta che salvi il tuo prodotto non è più possibile variare le uom.. Dovresti quindi togliere la spunta Attivo nel prodotto in questione (lo trovi nel secondo tab Procurement & Locations), quindi duplicare il prodotto e cambiare opportunamente le uom come desideri.
Oppure ti crei un moduletto con questa funzionalità ereditata da product_template:
from osv import osv, fields
from product.product import product_template
class product_template_update(osv.osv):
_name = "product.template"
_inherit = "product.template"
def write(self, cr, uid, ids, vals, context=None):
if 'uom_po_id' in vals:
new_uom = self.pool.get('product.uom').browse(cr, uid, vals['uom_po_id'], context=context)
stock_move_obj = self.pool.get('stock.move')
for product in self.browse(cr, uid, ids, context=context):
stock_move_ids = stock_move_obj.search(cr, uid, [('product_id','=',product.id),('state','!=','cancel'),])
if len(stock_move_ids):
old_uom = product.uom_po_id
if old_uom.category_id.id != new_uom.category_id.id:
raise osv.except_osv(_('UoM categories Mismatch!'), _("New UoM '%s' must belong to same UoM category '%s' as of old UoM '%s'. If you need to change the unit of measure, you may desactivate this product from the 'Procurement & Locations' tab and create a new one.") % (new_uom.name, old_uom.category_id.name, old_uom.name,))
return super(product_template, self).write(cr, uid, ids, vals, context=context)
product_template_update()
Così se non ci sono movimenti associati al prodotto è ancora possibile modificare la uom, bisogna fare sempre attenzione però affinchè non ci siano ordini di acquisto o vendita già impostati, in quel caso è necessario modificare l'ordine prima di confermarlo
R.