Files
enterprise-addons/pos_enterprise/models/pos_prep_order.py
T

42 lines
1.8 KiB
Python

from odoo import fields, models, api
from datetime import timedelta
class PosPrepOrder(models.Model):
_name = 'pos.prep.order'
_description = 'Pos Preparation Order'
_inherit = ['pos.load.mixin']
pos_order_id = fields.Many2one('pos.order', string='Order', ondelete='cascade')
prep_line_ids = fields.One2many('pos.prep.line', 'prep_order_id', string='Preparation Lines')
order_name = fields.Char(compute='_compute_order_name')
pdis_general_customer_note = fields.Text("General Customer Note", help="Current general-customer-note displayed on preparation display")
pdis_internal_note = fields.Text("General Note", help="Current general-note displayed on preparation display")
completion_time = fields.Integer("Completion Time", help="Time in minutes to complete the order (preparation + service time)")
@api.depends('pos_order_id.floating_order_name')
def _compute_order_name(self):
for order in self:
order.order_name = order.pos_order_id.floating_order_name if order.pos_order_id.floating_order_name else order.pos_order_id.tracking_number
@api.model
def process_order(self, order_id, options={}):
if not order_id or not self.env['pos.order'].browse(order_id).exists():
return
order = self.env['pos.order'].browse(order_id)
data = order._process_preparation_changes(options)
if not data['change']:
return
for p_dis in self.env['pos.prep.display']._get_preparation_displays(order, data['category_ids']):
p_dis._send_load_orders_message(data['sound'], data.get('notification'), order_id)
return True
@api.model
def _clean_preparation_data(self):
orders = self.env['pos.prep.order'].search([('write_date', '<=', fields.Datetime.now() - timedelta(days=1))])
orders.unlink()
return True