diff --git a/addons/point_of_sale/data/point_of_sale_data.xml b/addons/point_of_sale/data/point_of_sale_data.xml
index 810925e61e3..a1dc7f0e071 100644
--- a/addons/point_of_sale/data/point_of_sale_data.xml
+++ b/addons/point_of_sale/data/point_of_sale_data.xml
@@ -1,23 +1,5 @@
-
-
- Picking POS
- POS
- 5
-
-
-
-
-
- PoS Orders
-
-
-
-
- outgoing
-
-
+
+
PoS
@@ -41,7 +25,6 @@
Shop
-
@@ -72,4 +55,3 @@
-
diff --git a/addons/point_of_sale/models/__init__.py b/addons/point_of_sale/models/__init__.py
index 9023c405f2c..70d1073b2e5 100644
--- a/addons/point_of_sale/models/__init__.py
+++ b/addons/point_of_sale/models/__init__.py
@@ -14,3 +14,4 @@ from . import product
from . import res_partner
from . import res_company
from . import res_config_settings
+from . import stock_warehouse
diff --git a/addons/point_of_sale/models/pos_config.py b/addons/point_of_sale/models/pos_config.py
index 7f634f6cd61..34040fff1c4 100644
--- a/addons/point_of_sale/models/pos_config.py
+++ b/addons/point_of_sale/models/pos_config.py
@@ -39,6 +39,9 @@ class PosConfig(models.Model):
_name = 'pos.config'
_description = 'Point of Sale Configuration'
+ def _default_picking_type_id(self):
+ return self.env['stock.warehouse'].search([('company_id', '=', self.env.user.company_id.id)], limit=1).pos_type_id.id
+
def _default_sale_journal(self):
journal = self.env.ref('point_of_sale.pos_sale_journal', raise_if_not_found=False)
if journal and journal.sudo().company_id == self.env.company:
@@ -70,7 +73,11 @@ class PosConfig(models.Model):
'account.journal', 'pos_config_journal_rel',
'pos_config_id', 'journal_id', string='Available Payment Methods',
domain="[('journal_user', '=', True ), ('type', 'in', ['bank', 'cash'])]",)
- picking_type_id = fields.Many2one('stock.picking.type', string='Operation Type')
+ picking_type_id = fields.Many2one(
+ 'stock.picking.type',
+ string='Operation Type',
+ default=_default_picking_type_id,
+ domain="[('code', '=', 'outgoing'), ('warehouse_id.company_id', '=', company_id)]")
use_existing_lots = fields.Boolean(related='picking_type_id.use_existing_lots', readonly=False)
stock_location_id = fields.Many2one(
'stock.location', string='Stock Location',
diff --git a/addons/point_of_sale/models/stock_warehouse.py b/addons/point_of_sale/models/stock_warehouse.py
new file mode 100644
index 00000000000..c4ba29203eb
--- /dev/null
+++ b/addons/point_of_sale/models/stock_warehouse.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, fields, api, _
+
+
+class Warehouse(models.Model):
+ _inherit = "stock.warehouse"
+
+ pos_type_id = fields.Many2one('stock.picking.type', string="Point of Sale Operation Type")
+
+ def _get_sequence_values(self):
+ sequence_values = super(Warehouse, self)._get_sequence_values()
+ sequence_values.update({
+ 'pos_type_id': {
+ 'name': self.name + ' ' + _('Picking POS'),
+ 'prefix': self.code + '/POS/',
+ 'padding': 5,
+ 'company_id': self.company_id.id,
+ }
+ })
+ return sequence_values
+
+ def _get_picking_type_update_values(self):
+ picking_type_update_values = super(Warehouse, self)._get_picking_type_update_values()
+ picking_type_update_values.update({
+ 'pos_type_id': {'default_location_src_id': self.lot_stock_id.id}
+ })
+ return picking_type_update_values
+
+ def _get_picking_type_create_values(self, max_sequence):
+ picking_type_create_values, max_sequence = super(Warehouse, self)._get_picking_type_create_values(max_sequence)
+ picking_type_create_values.update({
+ 'pos_type_id': {
+ 'name': _('PoS Orders'),
+ 'code': 'outgoing',
+ 'default_location_src_id': self.lot_stock_id.id,
+ 'default_location_dest_id': self.env.ref('stock.stock_location_customers').id,
+ 'sequence': max_sequence + 1,
+ }
+ })
+ return picking_type_create_values, max_sequence + 2
+
+ @api.model
+ def _create_missing_pos_picking_types(self):
+ warehouses = self.env['stock.warehouse'].search([('pos_type_id', '=', False)])
+ for warehouse in warehouses:
+ new_vals = warehouse._create_or_update_sequences_and_picking_types()
+ warehouse.write(new_vals)
diff --git a/addons/pos_restaurant/data/pos_restaurant_demo.xml b/addons/pos_restaurant/data/pos_restaurant_demo.xml
index 1964f5f3d19..4f71aa2c841 100644
--- a/addons/pos_restaurant/data/pos_restaurant_demo.xml
+++ b/addons/pos_restaurant/data/pos_restaurant_demo.xml
@@ -195,7 +195,6 @@
Bar
-
True
True