[FIX] stock: do_new_transfer callable in xml-rpc
When returning None, the XML-RPC can trigger an error, making the api unusable in certain cases. So, we added return True and if the context is None we use an empty dict, so if the context is returned in a dict, it is not returning None either. Tests were adapted too. Closes #22264
This commit is contained in:
committed by
Josse Colpaert
parent
ea7bddcc3e
commit
ef444da57a
@@ -51,7 +51,7 @@ class TestSaleStock(TestSale):
|
||||
pick_2 = self.so.picking_ids[0]
|
||||
pick_2.force_assign()
|
||||
pick_2.pack_operation_product_ids.write({'qty_done': 1})
|
||||
self.assertIsNone(pick_2.do_new_transfer(), 'Sale Stock: second picking should be final without need for a backorder')
|
||||
self.assertTrue(pick_2.do_new_transfer(), 'Sale Stock: second picking should be final without need for a backorder')
|
||||
self.assertEqual(self.so.invoice_status, 'to invoice', 'Sale Stock: so invoice_status should be "to invoice" after complete delivery')
|
||||
del_qties = [sol.qty_delivered for sol in self.so.order_line]
|
||||
del_qties_truth = [2.0 if sol.product_id.type in ['product', 'consu'] else 0.0 for sol in self.so.order_line]
|
||||
@@ -98,7 +98,7 @@ class TestSaleStock(TestSale):
|
||||
pick = self.so.picking_ids
|
||||
pick.force_assign()
|
||||
pick.pack_operation_product_ids.write({'qty_done': 2})
|
||||
self.assertIsNone(pick.do_new_transfer(), 'Sale Stock: complete delivery should not need a backorder')
|
||||
self.assertTrue(pick.do_new_transfer(), 'Sale Stock: complete delivery should not need a backorder')
|
||||
del_qties = [sol.qty_delivered for sol in self.so.order_line]
|
||||
del_qties_truth = [2.0 if sol.product_id.type in ['product', 'consu'] else 0.0 for sol in self.so.order_line]
|
||||
self.assertEqual(del_qties, del_qties_truth, 'Sale Stock: delivered quantities are wrong after partial delivery')
|
||||
|
||||
@@ -1589,6 +1589,8 @@ class stock_picking(models.Model):
|
||||
def do_new_transfer(self, cr, uid, ids, context=None):
|
||||
pack_op_obj = self.pool['stock.pack.operation']
|
||||
data_obj = self.pool['ir.model.data']
|
||||
if not context:
|
||||
context = {}
|
||||
for pick in self.browse(cr, uid, ids, context=context):
|
||||
to_delete = []
|
||||
if not pick.move_lines and not pick.pack_operation_ids:
|
||||
@@ -1642,7 +1644,7 @@ class stock_picking(models.Model):
|
||||
if to_delete:
|
||||
pack_op_obj.unlink(cr, uid, to_delete, context=context)
|
||||
self.do_transfer(cr, uid, ids, context=context)
|
||||
return
|
||||
return True
|
||||
|
||||
def check_backorder(self, cr, uid, picking, context=None):
|
||||
need_rereserve, all_op_processed = self.picking_recompute_remaining_quantities(cr, uid, picking, done_qtys=True, context=context)
|
||||
|
||||
Reference in New Issue
Block a user