mirror of
https://github.com/bringout/oca-ocb-pos.git
synced 2026-04-24 16:42:02 +02:00
Initial commit: Pos packages
This commit is contained in:
commit
95dfb9edb0
1301 changed files with 264148 additions and 0 deletions
|
|
@ -0,0 +1,64 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models
|
||||
from itertools import groupby
|
||||
from odoo.osv.expression import AND
|
||||
|
||||
class PosSession(models.Model):
|
||||
_inherit = 'pos.session'
|
||||
|
||||
def _pos_ui_models_to_load(self):
|
||||
result = super()._pos_ui_models_to_load()
|
||||
if self.config_id.module_pos_restaurant:
|
||||
result.append('restaurant.printer')
|
||||
if self.config_id.is_table_management:
|
||||
result.append('restaurant.floor')
|
||||
return result
|
||||
|
||||
def _loader_params_restaurant_floor(self):
|
||||
return {
|
||||
'search_params': {
|
||||
'domain': [('pos_config_id', '=', self.config_id.id)],
|
||||
'fields': ['name', 'background_color', 'table_ids', 'sequence'],
|
||||
'order': 'sequence',
|
||||
},
|
||||
}
|
||||
|
||||
def _loader_params_restaurant_table(self):
|
||||
return {
|
||||
'search_params': {
|
||||
'domain': [('active', '=', True)],
|
||||
'fields': [
|
||||
'name', 'width', 'height', 'position_h', 'position_v',
|
||||
'shape', 'floor_id', 'color', 'seats', 'active'
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
def _get_pos_ui_restaurant_floor(self, params):
|
||||
floors = self.env['restaurant.floor'].search_read(**params['search_params'])
|
||||
floor_ids = [floor['id'] for floor in floors]
|
||||
|
||||
table_params = self._loader_params_restaurant_table()
|
||||
table_params['search_params']['domain'] = AND([table_params['search_params']['domain'], [('floor_id', 'in', floor_ids)]])
|
||||
tables = self.env['restaurant.table'].search(table_params['search_params']['domain'], order='floor_id')
|
||||
tables_by_floor_id = {}
|
||||
for floor_id, table_group in groupby(tables, key=lambda table: table.floor_id):
|
||||
floor_tables = self.env['restaurant.table'].concat(*table_group)
|
||||
tables_by_floor_id[floor_id.id] = floor_tables.read(table_params['search_params']['fields'])
|
||||
|
||||
for floor in floors:
|
||||
floor['tables'] = tables_by_floor_id.get(floor['id'], [])
|
||||
|
||||
return floors
|
||||
|
||||
def _loader_params_restaurant_printer(self):
|
||||
return {
|
||||
'search_params': {
|
||||
'domain': [('id', 'in', self.config_id.printer_ids.ids)],
|
||||
'fields': ['name', 'proxy_ip', 'product_categories_ids', 'printer_type'],
|
||||
},
|
||||
}
|
||||
def _get_pos_ui_restaurant_printer(self, params):
|
||||
return self.env['restaurant.printer'].search_read(**params['search_params'])
|
||||
Loading…
Add table
Add a link
Reference in a new issue