30 lines
1.4 KiB
Python
30 lines
1.4 KiB
Python
from odoo import models, api
|
|
|
|
|
|
class PosPrepOrder(models.Model):
|
|
_inherit = 'pos.prep.order'
|
|
|
|
@api.model
|
|
def process_order(self, order_id, options={}):
|
|
"""Override to send order received notification via SMS/WhatsApp."""
|
|
if not order_id or not self.env['pos.order'].browse(order_id).exists():
|
|
return
|
|
|
|
order = self.env['pos.order'].browse(order_id)
|
|
existing_prep_orders = self.env['pos.prep.order'].search([('pos_order_id', '=', order.id)])
|
|
|
|
result = super().process_order(order_id, options)
|
|
|
|
new_prep_orders = self.env['pos.prep.order'].search([('pos_order_id', '=', order.id)])
|
|
prep_orders_added = new_prep_orders and not existing_prep_orders
|
|
|
|
# Send notification ONLY when prep orders are first created, not on subsequent calls.
|
|
# prep_orders_added is True when the prep orders are created for the first time to avoid sending multiple notifications to user phone number.
|
|
# it can be called two times with an online pm set.
|
|
if prep_orders_added and not options.get('cancelled') and order.partner_id and order.partner_id.phone:
|
|
category_ids = new_prep_orders.prep_line_ids.product_id.pos_categ_ids.ids
|
|
for p_dis in self.env['pos.prep.display']._get_preparation_displays(order, category_ids):
|
|
p_dis.send_order_notifications(order, 'received')
|
|
|
|
return result
|