-
outs
-
-
Offline
-
Senior Boarder
-
- Messaggi: 58
-
Karma: 0
-
|
quando si conferma di voler modificare un ordine bisogna eliminare da stock.move, stock.picking, wkf_instance, mrp_procurement, rimettere righe e ordine in draft, mettere sulle righe e sull'ordine modified e mettere 47 su wkf_workitem
def modifica_ordine(self, cr, uid, ids, *args):
order_obj=self.pool.get('sale.order').browse(cr, uid, ids[0])
self.pool.get('sale.order').write(cr, uid, ids, {'x_modified':1, 'state':'draft', 'x_stock_print':0})
event_id=self.pool.get('res.partner.event').search(cr, uid, [('name', '=', 'Ordine Nr.: '+ order_obj.name)])
for i in event_id:
self.pool.get('res.partner.event').unlink(cr, uid, i)
instance=self.pool.get('workflow.instance').search(cr, uid, [('res_id', '=', ids[0]), ('res_type','=','sale.order')])
workitem=self.pool.get('workflow.workitem').search(cr, uid, [('inst_id', '=', instance[0])])
self.pool.get('workflow.workitem').write(cr, uid, workitem[0], {'act_id':47})
pickings=self.pool.get('stock.picking').search(cr, uid, [('sale_id', '=', ids[0])])
for i in pickings:
self.pool.get('stock.picking').unlink(cr, uid, [i])
for s in self.pool.get('workflow.instance').search(cr, uid, [('res_id', '=', i), ('res_type','=','stock.picking')]):
self.pool.get('workflow.instance').unlink(cr, uid, [s])
for i in self.pool.get('sale.order.line').search(cr, uid, [('order_id', '=', ids[0])]):
self.pool.get('sale.order.line').write(cr, uid, i, {'state':'draft'})
for r in self.pool.get('stock.move').search(cr, uid, [('sale_line_id', '=', i)]):
self.pool.get('stock.move').unlink(cr, uid, [r])
for t in self.pool.get('mrp.procurement').search(cr, uid, [('move_id', '=', r)]):
self.pool.get('mrp.procurement').unlink(cr, uid, [t])
for s in self.pool.get('workflow.instance').search(cr, uid, [('res_id', '=', t), ('res_type','=','mrp.procurement')]):
self.pool.get('workflow.instance').unlink(cr, uid, s)
return True
io ho fatto così e mi funziona, considera che x_modified segnala che è un ordine modificate e anche su quali righe mentre x_stock_print è un flag che mi dice se in magazzino lo avevano già stampato (e presumibilmente evaso dice a chi modifica l'ordine di segnalarlo in magazzino per non fare doppioni) considera che nel magazzino vengono evasi circa 250 ordini al giorno e le correzioni sono frequenti.
Quando ri-confermi l'ordine il pack viene ricreato
|