From edef08eeee688912040839dd073c1852b2d5219f Mon Sep 17 00:00:00 2001 From: Jinal Patel Date: Fri, 15 Feb 2019 08:44:22 +0000 Subject: [PATCH] [IMP] stock: assign someone to picking purpose is allow to assign picking to users - add field responsible on the picking that allows to select a user - Now we assign responsible to several picking at once - add default filter 'My Transfers' and 'Unassigned Transfers' Related task : 1938107 closes odoo/odoo#31138 Signed-off-by: Simon Lejeune (sle) --- addons/point_of_sale/models/pos_order.py | 1 + addons/purchase_stock/models/purchase.py | 1 + addons/stock/__manifest__.py | 1 + addons/stock/data/stock_demo2.xml | 20 ++++++++++++ addons/stock/models/stock_move.py | 1 + addons/stock/models/stock_picking.py | 4 +++ addons/stock/views/stock_picking_views.xml | 19 ++++++++++++ addons/stock/wizard/__init__.py | 1 + .../stock/wizard/stock_picking_responsible.py | 19 ++++++++++++ .../wizard/stock_picking_responsible.xml | 31 +++++++++++++++++++ 10 files changed, 98 insertions(+) create mode 100644 addons/stock/wizard/stock_picking_responsible.py create mode 100644 addons/stock/wizard/stock_picking_responsible.xml diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index 9fb3de41127..1c1a4bbe840 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -807,6 +807,7 @@ class PosOrder(models.Model): picking_vals = { 'origin': order.name, 'partner_id': address.get('delivery', False), + 'user_id': False, 'date_done': order.date_order, 'picking_type_id': picking_type.id, 'company_id': order.company_id.id, diff --git a/addons/purchase_stock/models/purchase.py b/addons/purchase_stock/models/purchase.py index 968bcffef67..2a3a4f54492 100644 --- a/addons/purchase_stock/models/purchase.py +++ b/addons/purchase_stock/models/purchase.py @@ -187,6 +187,7 @@ class PurchaseOrder(models.Model): return { 'picking_type_id': self.picking_type_id.id, 'partner_id': self.partner_id.id, + 'user_id': False, 'date': self.date_order, 'origin': self.name, 'location_dest_id': self._get_destination_location(), diff --git a/addons/stock/__manifest__.py b/addons/stock/__manifest__.py index 28f044b1072..4d2c6409137 100644 --- a/addons/stock/__manifest__.py +++ b/addons/stock/__manifest__.py @@ -52,6 +52,7 @@ 'wizard/product_replenish_views.xml', 'wizard/stock_track_confirmation_views.xml', 'wizard/stock_package_destination_views.xml', + 'wizard/stock_picking_responsible.xml', 'views/res_partner_views.xml', 'views/product_strategy_views.xml', diff --git a/addons/stock/data/stock_demo2.xml b/addons/stock/data/stock_demo2.xml index 54666982dd2..e8910052159 100644 --- a/addons/stock/data/stock_demo2.xml +++ b/addons/stock/data/stock_demo2.xml @@ -69,6 +69,7 @@ outgoing shipment main_warehouse + @@ -87,6 +88,7 @@ outgoing shipment + @@ -112,6 +114,7 @@ outgoing shipment your_company warehouse + @@ -129,6 +132,7 @@ + your company warehouse @@ -148,6 +152,7 @@ outgoing shipment + @@ -173,6 +178,7 @@ outgoing shipment + @@ -198,6 +204,7 @@ outgoing shipment + @@ -222,6 +229,7 @@ + @@ -237,6 +245,7 @@ + @@ -254,6 +263,7 @@ + @@ -270,6 +280,7 @@ + @@ -286,6 +297,7 @@ + @@ -305,6 +317,7 @@ incoming_chicago_warehouse + @@ -321,6 +334,7 @@ + @@ -345,6 +359,7 @@ + @@ -361,6 +376,7 @@ + chicago_warehouse @@ -381,6 +397,7 @@ + outgoing_chicago_warehouse @@ -398,6 +415,7 @@ + outgoing_shipment_chicago_warehouse @@ -423,6 +441,7 @@ + chicago_warehouse @@ -441,6 +460,7 @@ + outgoing chicago warehouse diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index 2cc264a9058..19da209adfb 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -735,6 +735,7 @@ class StockMove(models.Model): return { 'origin': origin, 'company_id': self.mapped('company_id').id, + 'user_id': False, 'move_type': self.mapped('group_id').move_type or 'direct', 'partner_id': partner, 'picking_type_id': self.mapped('picking_type_id').id, diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index cdb05ca127b..b5245e34dcd 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -265,6 +265,10 @@ class Picking(models.Model): default=lambda self: self.env['res.company']._company_default_get('stock.picking'), index=True, required=True, states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}) + user_id = fields.Many2one( + 'res.users', 'Responsible', tracking=True, + domain=lambda self: [('groups_id', 'in', self.env.ref('stock.group_stock_user').id)], + default=lambda self: self.env.user) move_line_ids = fields.One2many('stock.move.line', 'picking_id', 'Operations') move_line_ids_without_package = fields.One2many('stock.move.line', 'picking_id', 'Operations without package', domain=['|',('package_level_id', '=', False), ('picking_type_entire_packs', '=', False)]) diff --git a/addons/stock/views/stock_picking_views.xml b/addons/stock/views/stock_picking_views.xml index 3ebc396a834..5b36be67aff 100644 --- a/addons/stock/views/stock_picking_views.xml +++ b/addons/stock/views/stock_picking_views.xml @@ -330,6 +330,7 @@ + @@ -355,6 +356,9 @@ + + + @@ -391,6 +395,21 @@ + + + Assign a Responsible + + + code + +action_values = env.ref('stock.stock_assign_responsible_action').read()[0] +action_values.update({'context': env.context}) +action = action_values + + + Transfers stock.picking diff --git a/addons/stock/wizard/__init__.py b/addons/stock/wizard/__init__.py index fd4115a1bfc..8a139729a06 100644 --- a/addons/stock/wizard/__init__.py +++ b/addons/stock/wizard/__init__.py @@ -13,3 +13,4 @@ from . import stock_warn_insufficient_qty from . import product_replenish from . import stock_track_confirmation from . import stock_package_destination +from . import stock_picking_responsible diff --git a/addons/stock/wizard/stock_picking_responsible.py b/addons/stock/wizard/stock_picking_responsible.py new file mode 100644 index 00000000000..ac2832df9c9 --- /dev/null +++ b/addons/stock/wizard/stock_picking_responsible.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class StockPickingResponsible(models.TransientModel): + _name = 'stock.picking.responsible' + _description = 'Assign Responsible' + + user_id = fields.Many2one( + 'res.users', 'Responsible', + domain=lambda self: [('groups_id', 'in', self.env.ref('stock.group_stock_user').id)], + default=lambda self: self.env.user) + + def assign_responsible(self): + self.ensure_one() + pickings = self.env['stock.picking'].browse(self.env.context.get('active_ids')) + pickings.write({'user_id': self.user_id.id}) diff --git a/addons/stock/wizard/stock_picking_responsible.xml b/addons/stock/wizard/stock_picking_responsible.xml new file mode 100644 index 00000000000..0ee9d23500e --- /dev/null +++ b/addons/stock/wizard/stock_picking_responsible.xml @@ -0,0 +1,31 @@ + + + stock.picking.responsible.form + stock.picking.responsible + +
+ + + +
+
+
+
+
+ + + Assign a Responsible + ir.actions.act_window + stock.picking.responsible + form + + new + +
\ No newline at end of file