64 lines
3.1 KiB
Python
64 lines
3.1 KiB
Python
from odoo import fields, models
|
|
import logging
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class PosPrepDisplay(models.Model):
|
|
_inherit = 'pos.prep.display'
|
|
|
|
sms_enabled = fields.Boolean("SMS Enabled", default=False)
|
|
sms_order_received_id = fields.Many2one('sms.template', string="Order received (SMS)", default=lambda self: self._get_default_sms_template('received'))
|
|
sms_order_ready_id = fields.Many2one('sms.template', string="Order is ready (SMS)", default=lambda self: self._get_default_sms_template('ready'))
|
|
|
|
whatsapp_enabled = fields.Boolean("WhatsApp Enabled", default=False)
|
|
whatsapp_order_received_id = fields.Many2one('whatsapp.template', string="Order received (wa)", default=lambda self: self._get_default_whatsapp_template('received'))
|
|
whatsapp_order_ready_id = fields.Many2one('whatsapp.template', string="Order is ready (wa)", default=lambda self: self._get_default_whatsapp_template('ready'))
|
|
|
|
def send_order_notifications(self, order, event_type):
|
|
"""Send SMS/WhatsApp notifications using configured templates."""
|
|
self.ensure_one()
|
|
if not order.exists():
|
|
return
|
|
|
|
partner = order.partner_id
|
|
if not partner:
|
|
_logger.info("Order %s has no partner, skipping", order.id)
|
|
return
|
|
|
|
if self.sms_enabled:
|
|
sms_template = self.sms_order_received_id if event_type == 'received' else self.sms_order_ready_id
|
|
if sms_template:
|
|
composer = self.env['sms.composer'].create({
|
|
'composition_mode': 'comment',
|
|
'template_id': sms_template.id,
|
|
'res_model': 'pos.order',
|
|
'res_ids': order.id,
|
|
})
|
|
composer.action_send_sms()
|
|
|
|
if self.whatsapp_enabled:
|
|
whatsapp_template = self.whatsapp_order_received_id if event_type == 'received' else self.whatsapp_order_ready_id
|
|
if whatsapp_template:
|
|
composer = self.env['whatsapp.composer'].create({
|
|
'phone': order.partner_id.phone,
|
|
'res_model': 'pos.order',
|
|
'res_ids': order.id,
|
|
'wa_template_id': whatsapp_template.id,
|
|
})
|
|
composer._send_whatsapp_template()
|
|
|
|
def _get_default_sms_template(self, event_type):
|
|
"""Return the default SMS template based on event type."""
|
|
if event_type == 'received':
|
|
return self.env.ref('pos_enterprise_sms_whatsapp.sms_template_order_received_confirmation_pos', raise_if_not_found=False)
|
|
elif event_type == 'ready':
|
|
return self.env.ref('pos_enterprise_sms_whatsapp.sms_template_order_ready_pos', raise_if_not_found=False)
|
|
|
|
def _get_default_whatsapp_template(self, event_type):
|
|
"""Return the default WhatsApp template based on event type."""
|
|
if event_type == 'received':
|
|
return self.env.ref('pos_enterprise_sms_whatsapp.whatsapp_order_received_confirmation_pos', raise_if_not_found=False)
|
|
elif event_type == 'ready':
|
|
return self.env.ref('pos_enterprise_sms_whatsapp.whatsapp_order_ready_confirmation_pos', raise_if_not_found=False)
|