summaryrefslogtreecommitdiff
path: root/addons/pos_restaurant/models/pos_config.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/pos_restaurant/models/pos_config.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/pos_restaurant/models/pos_config.py')
-rw-r--r--addons/pos_restaurant/models/pos_config.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/addons/pos_restaurant/models/pos_config.py b/addons/pos_restaurant/models/pos_config.py
new file mode 100644
index 00000000..a80dde70
--- /dev/null
+++ b/addons/pos_restaurant/models/pos_config.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class PosConfig(models.Model):
+ _inherit = 'pos.config'
+
+ iface_splitbill = fields.Boolean(string='Bill Splitting', help='Enables Bill Splitting in the Point of Sale.')
+ iface_printbill = fields.Boolean(string='Bill Printing', help='Allows to print the Bill before payment.')
+ iface_orderline_notes = fields.Boolean(string='Notes', help='Allow custom notes on Orderlines.')
+ floor_ids = fields.One2many('restaurant.floor', 'pos_config_id', string='Restaurant Floors', help='The restaurant floors served by this point of sale.')
+ printer_ids = fields.Many2many('restaurant.printer', 'pos_config_printer_rel', 'config_id', 'printer_id', string='Order Printers')
+ is_table_management = fields.Boolean('Floors & Tables')
+ is_order_printer = fields.Boolean('Order Printer')
+ set_tip_after_payment = fields.Boolean('Set Tip After Payment', help="Adjust the amount authorized by payment terminals to add a tip after the customers left or at the end of the day.")
+ module_pos_restaurant = fields.Boolean(default=True)
+
+ @api.onchange('module_pos_restaurant')
+ def _onchange_module_pos_restaurant(self):
+ if not self.module_pos_restaurant:
+ self.update({'iface_printbill': False,
+ 'iface_splitbill': False,
+ 'is_order_printer': False,
+ 'is_table_management': False,
+ 'iface_orderline_notes': False})
+
+ @api.onchange('iface_tipproduct')
+ def _onchange_iface_tipproduct(self):
+ if not self.iface_tipproduct:
+ self.set_tip_after_payment = False
+
+ def _force_http(self):
+ if self.printer_ids.filtered(lambda pt: pt.printer_type == 'epson_epos'):
+ return True
+ return super(PosConfig, self)._force_http()
+
+ def get_tables_order_count(self):
+ """ """
+ self.ensure_one()
+ tables = self.env['restaurant.table'].search([('floor_id.pos_config_id', 'in', self.ids)])
+ domain = [('state', '=', 'draft'), ('table_id', 'in', tables.ids)]
+
+ order_stats = self.env['pos.order'].read_group(domain, ['table_id'], 'table_id')
+ orders_map = dict((s['table_id'][0], s['table_id_count']) for s in order_stats)
+
+ result = []
+ for table in tables:
+ result.append({'id': table.id, 'orders': orders_map.get(table.id, 0)})
+ return result
+
+ def _get_forbidden_change_fields(self):
+ forbidden_keys = super(PosConfig, self)._get_forbidden_change_fields()
+ forbidden_keys.append('is_table_management')
+ forbidden_keys.append('floor_ids')
+ return forbidden_keys
+
+ def write(self, vals):
+ if ('is_table_management' in vals and vals['is_table_management'] == False):
+ vals['floor_ids'] = [(5, 0, 0)]
+ if ('is_order_printer' in vals and vals['is_order_printer'] == False):
+ vals['printer_ids'] = [(5, 0, 0)]
+ return super(PosConfig, self).write(vals)