forked from alaguraj/odoo-testing-addons
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from odoo import models, fields, api, _
|
|
import werkzeug.urls
|
|
import logging
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class RestaurantTable(models.Model):
|
|
_inherit = 'restaurant.table'
|
|
|
|
self_order_url = fields.Char(
|
|
string='Self-Order URL',
|
|
compute='_compute_self_order_url',
|
|
help='The unique URL for this table to open the ordering menu'
|
|
)
|
|
|
|
@api.depends('floor_id', 'name')
|
|
def _compute_self_order_url(self):
|
|
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
|
|
for table in self:
|
|
# We use a unique access token if we want more security, but for now ID is fine for the flow
|
|
params = {
|
|
'table_id': table.id,
|
|
'floor_id': table.floor_id.id,
|
|
}
|
|
# The public URL that the QR will point to
|
|
url = f"{base_url}/dine360/menu?{werkzeug.urls.url_encode(params)}"
|
|
table.self_order_url = url
|
|
|
|
def action_generate_qr_code(self):
|
|
"""Action to generate or print the QR code for this table"""
|
|
# In a full implementation, we'd use report logic to print a PDF with the QR
|
|
# For now, we'll expose the URL for testing
|
|
return {
|
|
'type': 'ir.actions.act_url',
|
|
'url': self.self_order_url,
|
|
'target': 'new',
|
|
}
|