From 61d576451e7639dfd38daa3722291eebf39d8506 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 19 Jul 2017 15:16:28 +0200 Subject: [PATCH] Add modules stock_user_default_warehouse_base, stock_user_default_warehouse_purchase and stock_user_default_warehouse_sale --- stock_user_default_warehouse_base/__init__.py | 4 +++ .../__manifest__.py | 30 +++++++++++++++++++ stock_user_default_warehouse_base/users.py | 16 ++++++++++ .../users_view.xml | 28 +++++++++++++++++ .../wizard/__init__.py | 3 ++ .../wizard/stock_change_product_qty.py | 18 +++++++++++ .../__init__.py | 3 ++ .../__manifest__.py | 25 ++++++++++++++++ .../purchase.py | 19 ++++++++++++ stock_user_default_warehouse_sale/__init__.py | 3 ++ .../__manifest__.py | 25 ++++++++++++++++ stock_user_default_warehouse_sale/sale.py | 20 +++++++++++++ 12 files changed, 194 insertions(+) create mode 100644 stock_user_default_warehouse_base/__init__.py create mode 100644 stock_user_default_warehouse_base/__manifest__.py create mode 100644 stock_user_default_warehouse_base/users.py create mode 100644 stock_user_default_warehouse_base/users_view.xml create mode 100644 stock_user_default_warehouse_base/wizard/__init__.py create mode 100644 stock_user_default_warehouse_base/wizard/stock_change_product_qty.py create mode 100644 stock_user_default_warehouse_purchase/__init__.py create mode 100644 stock_user_default_warehouse_purchase/__manifest__.py create mode 100644 stock_user_default_warehouse_purchase/purchase.py create mode 100644 stock_user_default_warehouse_sale/__init__.py create mode 100644 stock_user_default_warehouse_sale/__manifest__.py create mode 100644 stock_user_default_warehouse_sale/sale.py diff --git a/stock_user_default_warehouse_base/__init__.py b/stock_user_default_warehouse_base/__init__.py new file mode 100644 index 0000000..8bf9ff2 --- /dev/null +++ b/stock_user_default_warehouse_base/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import users +from . import wizard diff --git a/stock_user_default_warehouse_base/__manifest__.py b/stock_user_default_warehouse_base/__manifest__.py new file mode 100644 index 0000000..17ca388 --- /dev/null +++ b/stock_user_default_warehouse_base/__manifest__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Default Stock Warehouse on User', + 'version': '10.0.1.0.0', + 'category': 'Inventory, Logistics, Warehousing', + 'license': 'AGPL-3', + 'summary': 'Configure a default warehouse on user', + 'description': """ +Default Warehouse on User +========================= + +With this module, you will be able to configure a default warehouse in the preferences of the user. + +This module doesn't do anything by itself. It should be used together with stock_user_default_warehouse_sale and/or stock_user_default_warehouse_purchase. + +This module has been written by Alexis de Lattre from Akretion +. + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': ['stock'], + 'data': [ + 'users_view.xml', + ], + 'installable': True, +} diff --git a/stock_user_default_warehouse_base/users.py b/stock_user_default_warehouse_base/users.py new file mode 100644 index 0000000..9211b33 --- /dev/null +++ b/stock_user_default_warehouse_base/users.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields + + +class ResUsers(models.Model): + _inherit = 'res.users' + + context_default_warehouse_id = fields.Many2one( + 'stock.warehouse', string='Default Warehouse', company_dependent=True, + help=u"Default warehouse for sale orders (if the module " + "stock_user_default_warehouse_sale is installed) and purchase orders " + "(if the module stock_user_default_warehouse_purchase is installed).") diff --git a/stock_user_default_warehouse_base/users_view.xml b/stock_user_default_warehouse_base/users_view.xml new file mode 100644 index 0000000..f870044 --- /dev/null +++ b/stock_user_default_warehouse_base/users_view.xml @@ -0,0 +1,28 @@ + + + + + + default_stock_warehouse.res.users.form + res.users + + + + + + + + + + default_stock_warehouse.preferences.res.users.form + res.users + + + + + + + + + + diff --git a/stock_user_default_warehouse_base/wizard/__init__.py b/stock_user_default_warehouse_base/wizard/__init__.py new file mode 100644 index 0000000..f3b7fa5 --- /dev/null +++ b/stock_user_default_warehouse_base/wizard/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import stock_change_product_qty diff --git a/stock_user_default_warehouse_base/wizard/stock_change_product_qty.py b/stock_user_default_warehouse_base/wizard/stock_change_product_qty.py new file mode 100644 index 0000000..2ec84f9 --- /dev/null +++ b/stock_user_default_warehouse_base/wizard/stock_change_product_qty.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, api + + +class StockChangeProductQty(models.TransientModel): + _inherit = 'stock.change.product.qty' + + @api.model + def default_get(self, fields_list): + res = super(StockChangeProductQty, self).default_get(fields_list) + if self.env.user.context_default_warehouse_id: + res['location_id'] = self.env.user.context_default_warehouse_id.\ + lot_stock_id.id + return res diff --git a/stock_user_default_warehouse_purchase/__init__.py b/stock_user_default_warehouse_purchase/__init__.py new file mode 100644 index 0000000..b46d7f4 --- /dev/null +++ b/stock_user_default_warehouse_purchase/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import purchase diff --git a/stock_user_default_warehouse_purchase/__manifest__.py b/stock_user_default_warehouse_purchase/__manifest__.py new file mode 100644 index 0000000..c25ec72 --- /dev/null +++ b/stock_user_default_warehouse_purchase/__manifest__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Default Warehouse on User (Purchase)', + 'version': '10.0.1.0.0', + 'category': 'Purchases', + 'license': 'AGPL-3', + 'summary': "Use the users's default warehouse on purchase orders", + 'description': """ +Default Warehouse on User (Purchase) +==================================== + +The default warehouse configured in the preferences of the user will be used by default for the picking type on purchase orders. + +This module has been written by Alexis de Lattre from Akretion +. + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': ['purchase', 'stock_user_default_warehouse_base'], + 'installable': True, +} diff --git a/stock_user_default_warehouse_purchase/purchase.py b/stock_user_default_warehouse_purchase/purchase.py new file mode 100644 index 0000000..b9b0d44 --- /dev/null +++ b/stock_user_default_warehouse_purchase/purchase.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields, api + + +class PurchaseOrder(models.Model): + _inherit = 'purchase.order' + + @api.model + def _default_pref_picking_type(self): + default_in_type = self.env.user.context_default_warehouse_id.in_type_id + if default_in_type: + return default_in_type.id + return self._default_picking_type + + picking_type_id = fields.Many2one(default=_default_pref_picking_type) diff --git a/stock_user_default_warehouse_sale/__init__.py b/stock_user_default_warehouse_sale/__init__.py new file mode 100644 index 0000000..78a9604 --- /dev/null +++ b/stock_user_default_warehouse_sale/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import sale diff --git a/stock_user_default_warehouse_sale/__manifest__.py b/stock_user_default_warehouse_sale/__manifest__.py new file mode 100644 index 0000000..7b38046 --- /dev/null +++ b/stock_user_default_warehouse_sale/__manifest__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Default Warehouse on User (Sale)', + 'version': '10.0.1.0.0', + 'category': 'Sale Management', + 'license': 'AGPL-3', + 'summary': "Use the users's default warehouse on sale orders", + 'description': """ +Default Warehouse on User (Sale) +================================ + +The default warehouse configured in the preferences of the user will be used by default on sale orders. + +This module has been written by Alexis de Lattre from Akretion +. + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': ['sale_stock', 'stock_user_default_warehouse_base'], + 'installable': True, +} diff --git a/stock_user_default_warehouse_sale/sale.py b/stock_user_default_warehouse_sale/sale.py new file mode 100644 index 0000000..a449224 --- /dev/null +++ b/stock_user_default_warehouse_sale/sale.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields, api + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + @api.model + def _default_warehouse_id(self): + warehouse = self.env.user.context_default_warehouse_id + if not warehouse: + warehouse = self.env['stock.warehouse'].search( + [('company_id', '=', self.env.user.company_id.id)], limit=1) + return warehouse + + warehouse_id = fields.Many2one(default=_default_warehouse_id)