Files
enterprise-addons/pos_enterprise_sms_whatsapp/models/pos_prep_display.py
T

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)