diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/pos_restaurant/models/pos_config.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/pos_restaurant/models/pos_config.py')
| -rw-r--r-- | addons/pos_restaurant/models/pos_config.py | 64 |
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) |
