Comment 21 for bug 707287

Revision history for this message
Raphaƫl Valyi - http://www.akretion.com (rvalyi) wrote : Re: [Bug 707287] Re: Manufacturing orders broken UOM

Hello Amit and all, so how does it behave if you apply my patch and restart
the scheduler? I could reproduce the bug without magentoerpconnect and my
patch fixed it (well it detected the offending procurements and put them in
error so you can fix them).

If I understand right Kyle right, he said that if you change a product
purchase UOM after some usage, then even if you sale in MTO with the same
unit, you can have such an MRP UOM bug. In that case that would be worth a
check: does he UOM exception shows up only if you have open procurements in
both units? Then does my patch catch he offending procurement properly (I
expect so). If yes, that would be just about updating the unit of the
offending open procurement again (the old ones then). What do you think
Kyle? Any better suggestion?

On Wed, Jun 1, 2011 at 2:35 AM, Amit Parik (OpenERP) <email address hidden>wrote:

> Hello Kyle,
>
> I have have the same traceback at my end without magento connect with
> latest trunk So I am confirming this issue.
>
> Traceback (most recent call last):
> File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
> self.run()
> File "/usr/lib/python2.6/threading.py", line 484, in run
> self.__target(*self.__args, **self.__kwargs)
> File
> "/home/tiny/workspace/openobject-addons/procurement/wizard/schedulers_all.py",
> line 49, in _procure_calculation_all
> context=context)
> File "/home/tiny/workspace/openobject-addons/procurement/procurement.py",
> line 473, in run_scheduler
> self._procure_confirm(cr, uid, use_new_cursor=use_new_cursor,
> context=context)
> File "/home/tiny/workspace/openobject-addons/procurement/schedulers.py",
> line 74, in _procure_confirm
> wf_service.trg_validate(uid, 'procurement.order', proc.id,
> 'button_check', cr)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/wkf_service.py",
> line 80, in trg_validate
> res2 = instance.validate(cr, id, ident, signal)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/instance.py", line
> 48, in validate
> workitem.process(cr, witem, ident, signal, force_running, stack=stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 61, in process
> ok = _split_test(cr, workitem, activity['split_mode'], ident, signal,
> stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 174, in _split_test
> _join_test(cr, t[0], t[1], ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 182, in _join_test
> create(cr,[activity], inst_id, ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 41, in create
> process(cr, res, ident, stack=stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 61, in process
> ok = _split_test(cr, workitem, activity['split_mode'], ident, signal,
> stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 174, in _split_test
> _join_test(cr, t[0], t[1], ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 182, in _join_test
> create(cr,[activity], inst_id, ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 41, in create
> process(cr, res, ident, stack=stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 61, in process
> ok = _split_test(cr, workitem, activity['split_mode'], ident, signal,
> stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 174, in _split_test
> _join_test(cr, t[0], t[1], ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 182, in _join_test
> create(cr,[activity], inst_id, ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 41, in create
> process(cr, res, ident, stack=stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 61, in process
> ok = _split_test(cr, workitem, activity['split_mode'], ident, signal,
> stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 174, in _split_test
> _join_test(cr, t[0], t[1], ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 182, in _join_test
> create(cr,[activity], inst_id, ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 41, in create
> process(cr, res, ident, stack=stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 53, in process
> result = _execute(cr, workitem, activity, ident, stack)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/workitem.py", line
> 126, in _execute
> id_new = wkf_expr.execute(cr, ident, workitem, activity)
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/wkf_expr.py", line
> 68, in execute
> return _eval_expr(cr, ident, workitem, activity['action'])
> File
> "/home/tiny/workspace/openobject-server/openerp/workflow/wkf_expr.py", line
> 58, in _eval_expr
> ret = eval(line, env, nocopy=True)
> File "/home/tiny/workspace/openobject-server/openerp/tools/safe_eval.py",
> line 284, in safe_eval
> return eval(test_expr(expr,_SAFE_OPCODES, mode=mode), globals_dict,
> locals_dict)
> File "", line 1, in <module>
> File "/home/tiny/workspace/openobject-server/openerp/osv/orm.py", line
> 214, in <lambda>
> return lambda *args, **argv: attr(self._cr, self._uid, [self._id],
> *args, **argv)
> File "/home/tiny/workspace/openobject-addons/mrp/procurement.py", line
> 66, in action_produce_assign_product
> res = procurement_obj.make_mo(cr, uid, ids, context=context)
> File "/home/tiny/workspace/openobject-addons/mrp/procurement.py", line
> 101, in make_mo
> [produce_id], properties=[x.id for x in procurement.property_ids])
> File "/home/tiny/workspace/openobject-addons/mrp/mrp.py", line 616, in
> action_compute
> factor = uom_obj._compute_qty(cr, uid, production.product_uom.id,
> production.product_qty, bom_point.product_uom.id)
> File "/home/tiny/workspace/openobject-addons/product/product.py", line
> 136, in _compute_qty
> return self._compute_qty_obj(cr, uid, from_unit, qty, to_unit)
> File "/home/tiny/workspace/openobject-addons/product/product.py", line
> 143, in _compute_qty_obj
> raise osv.except_osv(_('Error !'), _('Conversion from Product UoM %s to
> Default UoM %s is not possible as they both belong to different Category!.')
> % (from_unit.name,to_unit.name,))
> except_osv: ('warning', 'Error !')
>
> Thanks.
>
> ** Changed in: openobject-addons
> Importance: Undecided => Medium
>
> ** Changed in: openobject-addons
> Assignee: (unassigned) => OpenERP R&D Addons Team 2
> (openerp-dev-addons2)
>
> --
> You received this bug notification because you are a member of OpenERP
> Drivers, which is subscribed to OpenERP Addons.
> https://bugs.launchpad.net/bugs/707287
>
> Title:
> Manufacturing orders broken UOM
>
> Status in OpenERP Modules (addons):
> Confirmed
>
> Bug description:
> We have around 5,000 products. We have custom UOM like ft, OZ and
> Pound. On certain products we cannot make manufacturing orders with
> this error
>
> Conversion from Product UoM m to Default UoM PCE is not possible as
> they both belong to different Category!.
>
> It is extremely frustrating because it doesnt make sense. We do not
> have a single product with UoM 'm'. The error only happens with
> certain products, not in any specific instance except that mabe the
> category UoM but not every item in that category. If we created new
> products then we dont have the issue.
>
> I discovered many of the products were having problems base on an
> inventory we did with the stock_move table. Deleting entries fixed
> many of the issues but we still have this problem and it makes no
> sense to us.
>