diff options
| author | Simon Lejeune <sle@openerp.com> | 2019-10-24 09:18:34 +0000 |
|---|---|---|
| committer | Simon Lejeune <sle@openerp.com> | 2019-10-25 08:10:40 +0000 |
| commit | f1972c21309a23394736e2684b0a175300a822bf (patch) | |
| tree | 3ec5cec78f671a64645d3b1e204b997b99c0952d /addons | |
| parent | 6ab4b0d4967490ed1ee0559ec296da6637705125 (diff) | |
[REF] stock_picking_batch: use picking button_validate multi
Diffstat (limited to 'addons')
4 files changed, 8 insertions, 64 deletions
diff --git a/addons/stock_picking_batch/models/stock_picking_batch.py b/addons/stock_picking_batch/models/stock_picking_batch.py index accf7fa0fda..ad8b77c0c71 100644 --- a/addons/stock_picking_batch/models/stock_picking_batch.py +++ b/addons/stock_picking_batch/models/stock_picking_batch.py @@ -67,43 +67,8 @@ class StockPickingBatch(models.Model): picking.batch_id.id, picking.batch_id.name)) - picking_to_backorder = self.env['stock.picking'] - picking_without_qty_done = self.env['stock.picking'] - for picking in pickings: - if all([x.qty_done == 0.0 for x in picking.move_line_ids]): - # If no lots when needed, raise error - picking_type = picking.picking_type_id - if (picking_type.use_create_lots or picking_type.use_existing_lots): - for ml in picking.move_line_ids: - if ml.product_id.tracking != 'none': - raise UserError(_('Some products require lots/serial numbers.')) - # Check if we need to set some qty done. - picking_without_qty_done |= picking - elif picking._check_backorder(): - picking_to_backorder |= picking - else: - picking._action_done() self.write({'state': 'done'}) - if picking_without_qty_done: - view = self.env.ref('stock.view_immediate_transfer') - wiz = self.env['stock.immediate.transfer'].create({ - 'pick_ids': [(4, p.id) for p in picking_without_qty_done], - 'pick_to_backorder_ids': [(4, p.id) for p in picking_to_backorder], - }) - return { - 'name': _('Immediate Transfer?'), - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'res_model': 'stock.immediate.transfer', - 'views': [(view.id, 'form')], - 'view_id': view.id, - 'target': 'new', - 'res_id': wiz.id, - 'context': self.env.context, - } - if picking_to_backorder: - return picking_to_backorder.action_generate_backorder_wizard() - return True + return self.picking_ids.button_validate() def _track_subtype(self, init_values): if 'state' in init_values: diff --git a/addons/stock_picking_batch/tests/test_batch_picking.py b/addons/stock_picking_batch/tests/test_batch_picking.py index 0c477f88dc0..286e029d5ea 100644 --- a/addons/stock_picking_batch/tests/test_batch_picking.py +++ b/addons/stock_picking_batch/tests/test_batch_picking.py @@ -102,7 +102,7 @@ class TestBatchPicking(TransactionCase): # There should be a wizard asking to process picking without quantity done immediate_transfer_wizard_dict = self.batch.done() self.assertTrue(immediate_transfer_wizard_dict) - immediate_transfer_wizard = self.env[(immediate_transfer_wizard_dict.get('res_model'))].browse(immediate_transfer_wizard_dict.get('res_id')) + immediate_transfer_wizard = self.env[(immediate_transfer_wizard_dict.get('res_model'))].browse(immediate_transfer_wizard_dict.get('res_id')).with_context(immediate_transfer_wizard_dict['context']) self.assertEqual(len(immediate_transfer_wizard.pick_ids), 2) immediate_transfer_wizard.process() @@ -135,11 +135,11 @@ class TestBatchPicking(TransactionCase): # There should be a wizard asking to process picking without quantity done back_order_wizard_dict = self.batch.done() self.assertTrue(back_order_wizard_dict) - back_order_wizard = self.env[(back_order_wizard_dict.get('res_model'))].browse(back_order_wizard_dict.get('res_id')) + back_order_wizard = self.env[(back_order_wizard_dict.get('res_model'))].browse(back_order_wizard_dict.get('res_id')).with_context(back_order_wizard_dict['context']) self.assertEqual(len(back_order_wizard.pick_ids), 1) - self.assertEqual(self.picking_client_2.state, 'done', 'Picking 2 should be done') back_order_wizard.process() + self.assertEqual(self.picking_client_2.state, 'done', 'Picking 2 should be done') self.assertEqual(self.picking_client_1.state, 'done', 'Picking 1 should be done') self.assertEqual(self.picking_client_1.move_lines.product_uom_qty, 5, 'initial demand should be 5 after picking split') self.assertTrue(self.env['stock.picking'].search([('backorder_id', '=', self.picking_client_1.id)]), 'no back order created') @@ -168,11 +168,11 @@ class TestBatchPicking(TransactionCase): # There should be a wizard asking to process picking without quantity done immediate_transfer_wizard_dict = self.batch.done() self.assertTrue(immediate_transfer_wizard_dict) - immediate_transfer_wizard = self.env[(immediate_transfer_wizard_dict.get('res_model'))].browse(immediate_transfer_wizard_dict.get('res_id')) + immediate_transfer_wizard = self.env[(immediate_transfer_wizard_dict.get('res_model'))].browse(immediate_transfer_wizard_dict.get('res_id')).with_context(immediate_transfer_wizard_dict['context']) self.assertEqual(len(immediate_transfer_wizard.pick_ids), 2) back_order_wizard_dict = immediate_transfer_wizard.process() self.assertTrue(back_order_wizard_dict) - back_order_wizard = self.env[(back_order_wizard_dict.get('res_model'))].browse(back_order_wizard_dict.get('res_id')) + back_order_wizard = self.env[(back_order_wizard_dict.get('res_model'))].browse(back_order_wizard_dict.get('res_id')).with_context(back_order_wizard_dict['context']) self.assertEqual(len(back_order_wizard.pick_ids), 1) back_order_wizard.process() @@ -205,11 +205,11 @@ class TestBatchPicking(TransactionCase): # There should be a wizard asking to process picking without quantity done immediate_transfer_wizard_dict = self.batch.done() self.assertTrue(immediate_transfer_wizard_dict) - immediate_transfer_wizard = self.env[(immediate_transfer_wizard_dict.get('res_model'))].browse(immediate_transfer_wizard_dict.get('res_id')) + immediate_transfer_wizard = self.env[(immediate_transfer_wizard_dict.get('res_model'))].browse(immediate_transfer_wizard_dict.get('res_id')).with_context(immediate_transfer_wizard_dict['context']) self.assertEqual(len(immediate_transfer_wizard.pick_ids), 1) back_order_wizard_dict = immediate_transfer_wizard.process() self.assertTrue(back_order_wizard_dict) - back_order_wizard = self.env[(back_order_wizard_dict.get('res_model'))].browse(back_order_wizard_dict.get('res_id')) + back_order_wizard = self.env[(back_order_wizard_dict.get('res_model'))].browse(back_order_wizard_dict.get('res_id')).with_context(back_order_wizard_dict['context']) self.assertEqual(len(back_order_wizard.pick_ids), 1) back_order_wizard.process() diff --git a/addons/stock_picking_batch/wizard/__init__.py b/addons/stock_picking_batch/wizard/__init__.py index 92e3d6e014e..063ece3795c 100644 --- a/addons/stock_picking_batch/wizard/__init__.py +++ b/addons/stock_picking_batch/wizard/__init__.py @@ -2,4 +2,3 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import stock_picking_to_batch -from . import stock_immediate_transfer diff --git a/addons/stock_picking_batch/wizard/stock_immediate_transfer.py b/addons/stock_picking_batch/wizard/stock_immediate_transfer.py deleted file mode 100644 index 9997800934f..00000000000 --- a/addons/stock_picking_batch/wizard/stock_immediate_transfer.py +++ /dev/null @@ -1,20 +0,0 @@ -from odoo import models, fields, api - - -class StockImmediateTransfer(models.TransientModel): - _inherit = 'stock.immediate.transfer' - _description = 'Immediate Transfer' - - pick_to_backorder_ids = fields.Many2many('stock.picking', help='Picking to backorder') - - def process(self): - backorder_wizard_dict = super(StockImmediateTransfer, self).process() - # If the immediate transfer wizard process all our picking but with some back order maybe needed we want to add the backorder already passed to the wizard. - if backorder_wizard_dict: - backorder_wizard = self.env['stock.backorder.confirmation'].browse(backorder_wizard_dict.get('res_id', False)) - backorder_wizard.write({'pick_ids': [(4, p.id) for p in self.pick_to_backorder_ids]}) - return backorder_wizard_dict - # If there is no backorder returned by the immediate transfer basic function we still wanted to process those manually given - elif self.pick_to_backorder_ids: - return self.pick_to_backorder_ids.action_generate_backorder_wizard() - return False |
