diff --git a/stock_barcodes/wizard/stock_barcodes_read.py b/stock_barcodes/wizard/stock_barcodes_read.py
index 2eaba8c36f90..10a57a5ce449 100644
--- a/stock_barcodes/wizard/stock_barcodes_read.py
+++ b/stock_barcodes/wizard/stock_barcodes_read.py
@@ -64,15 +64,6 @@ class WizStockBarcodesRead(models.AbstractModel):
message = fields.Char(readonly=True)
manual_entry_message = fields.Char(readonly=True)
- # @api.onchange('product_id')
- # def onchange_product_id(self):
- # if self.product_id:
- # if not self.barcode or \
- # (self.barcode and self.product_id.barcode != self.barcode):
- # raise UserError(
- # _('You need to be in Manual entry data mode to be able '
- # 'to change the product. Please, remove entered product'))
-
@api.onchange('location_id')
def onchange_location_id(self):
self.packaging_id = False
diff --git a/stock_barcodes/wizard/stock_barcodes_read_picking.py b/stock_barcodes/wizard/stock_barcodes_read_picking.py
index 0e237d5f6913..62ccb4549a4a 100644
--- a/stock_barcodes/wizard/stock_barcodes_read_picking.py
+++ b/stock_barcodes/wizard/stock_barcodes_read_picking.py
@@ -69,6 +69,10 @@ class WizStockBarcodesReadPicking(models.TransientModel):
readonly=True,
)
scan_count = fields.Integer()
+ pack_operation_ids = fields.Many2many(
+ 'stock.pack.operation', string="Operations",
+ readonly=True,
+ )
@api.depends('picking_id', 'scan_count')
def _compute_picking_quantity(self):
@@ -107,27 +111,15 @@ def onchange_product_id(self):
('id', 'in', candidate_picking_ids.ids)]}}
return
- # def _set_default_picking(self):
- # picking_id = self.env.context.get('default_picking_id', False)
- # if picking_id:
- # self._set_candidate_pickings(
- # self.env['stock.picking'].browse(picking_id))
-
- # @api.model
- # def create(self, vals):
- # # When user click any view button the wizard record is create and the
- # # picking candidates have been lost, so we need set it.
- # wiz = super(WizStockBarcodesReadPicking, self).create(vals)
- # if wiz.picking_id:
- # wiz._set_candidate_pickings(wiz.picking_id)
- # return wiz
-
- # @api.onchange('picking_id')
- # def onchange_picking_id(self):
- # # Add to candidate pickings the default picking. We are in a wizard
- # # view, so for create a candidate picking with the same default picking
- # # we need create it in this onchange
- # self._set_default_picking()
+ @api.onchange('picking_id')
+ def onchange_picking_id(self):
+ if self.picking_id:
+ self.pack_operation_ids = [
+ (6, 0, self.picking_id.pack_operation_ids.ids)]
+ products_in_picking = self.picking_id.pack_operation_ids.mapped(
+ 'product_id')
+ return {'domain': {'product_id': [
+ ('id', 'in', products_in_picking.ids)]}}
def action_done(self):
if self.check_done_conditions():
@@ -142,6 +134,17 @@ def action_manual_entry(self):
self.action_done()
return result
+ def action_picking_validate(self):
+ if self.product_qty_done != self.product_uom_qty:
+ raise ValidationError(_(
+ "Please complete the picking before validating it"))
+ self.picking_id.do_new_transfer()
+ self.barcode = False
+ self._set_message_info(
+ 'success',
+ _('Picking has been validated successfully'))
+ return {'type': 'ir.actions.client', 'tag': 'history_back'}
+
def _prepare_pack_operation_values(self, candidate_move, available_qty):
pack_lot_ids = self.env['stock.pack.operation.lot'].search(
[('lot_id', '=', self.lot_id.id)]).ids
@@ -171,34 +174,6 @@ def _prepare_stock_pack_operation_domain(self):
domain.append(('picking_id', '=', self.picking_id.id))
return domain
- # def _set_candidate_pickings(self, candidate_pickings):
- # # vals = [(5, 0, 0)]
- # # vals.extend([(0, 0, {
- # # 'picking_id': p.id,
- # # }) for p in candidate_pickings])
- # # self.candidate_picking_ids = vals
- # self.env['wiz.candidate.picking'].search([]).unlink()
- # for picking in candidate_pickings:
- # self.env['wiz.candidate.picking'].create({
- # 'picking_id': picking.id,
- # })
-
- # def _search_candidate_pickings(self, operations=False):
- # if not operations:
- # operations = self.env['stock.pack.operation'].search(
- # self._prepare_stock_pack_operation_domain())
- # if not self.picking_id:
- # candidate_pickings = operations.mapped('picking_id')
- # candidate_pickings_count = len(candidate_pickings)
- # if candidate_pickings_count > 1:
- # self._set_candidate_pickings(candidate_pickings)
- # return False
- # if candidate_pickings_count == 1:
- # self.picking_id = candidate_pickings
- # self._set_candidate_pickings(candidate_pickings)
- # _logger.info('No picking assigned')
- # return True
-
def _process_stock_move_line(self):
"""
Search assigned or confirmed stock moves from a picking operation type
@@ -272,12 +247,6 @@ def _process_stock_move_line(self):
self.picking_product_qty = sum(operations.mapped('qty_done'))
return move_lines_dic
- # def _candidate_picking_selected(self):
- # if self.candidate_picking_id:
- # return self.candidate_picking_id.picking_id
- # else:
- # return self.env['stock.picking'].browse()
-
def check_done_conditions(self):
res = super(WizStockBarcodesReadPicking, self).check_done_conditions()
if self.product_id.tracking != 'none' and not self.lot_id:
@@ -287,14 +256,6 @@ def check_done_conditions(self):
self._set_message_info(
'info', _('Please, select the picking'))
return False
- # if not self._search_candidate_pickings():
- # self._set_message_info(
- # 'info', _('Click on picking pushpin to lock it'))
- # return False
- # if self.picking_id != self._candidate_picking_selected():
- # self._set_message_info(
- # 'info', _('Click on picking pushpin to lock it'))
- # return False
return res
def _prepare_scan_log_values(self, log_detail=False):
@@ -330,4 +291,6 @@ def action_undo_last_scan(self):
log_scan = first(self.scan_log_ids.filtered(
lambda x: x.create_uid == self.env.user))
self.remove_scanning_log(log_scan)
+ self.pack_operation_ids = [
+ (6, 0, self.picking_id.pack_operation_ids.ids)]
return res
diff --git a/stock_barcodes/wizard/stock_barcodes_read_picking_views.xml b/stock_barcodes/wizard/stock_barcodes_read_picking_views.xml
index d00aed6b16ed..a28021bc08fd 100644
--- a/stock_barcodes/wizard/stock_barcodes_read_picking_views.xml
+++ b/stock_barcodes/wizard/stock_barcodes_read_picking_views.xml
@@ -96,23 +96,62 @@
wiz.stock.barcodes.read.picking
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/stock_barcodes/wizard/stock_barcodes_read_views.xml b/stock_barcodes/wizard/stock_barcodes_read_views.xml
index 420c4933cd52..9614479b39c4 100644
--- a/stock_barcodes/wizard/stock_barcodes_read_views.xml
+++ b/stock_barcodes/wizard/stock_barcodes_read_views.xml
@@ -32,7 +32,7 @@
-
+
@@ -50,16 +50,16 @@
-
+
+ force_save="1" widget="selection"/>
-
+