42 lines
1.8 KiB
Python
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
|