1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from typing import Dict
from odoo import models, fields, api
class PosOrderLine(models.Model):
_inherit = "pos.order.line"
combo_id = fields.Many2one('product.combo', string='Combo reference')
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
if (vals.get('combo_parent_uuid')):
vals.update([
('combo_parent_id', self.search([('uuid', '=', vals.get('combo_parent_uuid'))]).id)
])
if 'combo_parent_uuid' in vals:
del vals['combo_parent_uuid']
return super().create(vals_list)
def write(self, vals):
if (vals.get('combo_parent_uuid')):
vals.update([
('combo_parent_id', self.search([('uuid', '=', vals.get('combo_parent_uuid'))]).id)
])
if 'combo_parent_uuid' in vals:
del vals['combo_parent_uuid']
return super().write(vals)
class PosOrder(models.Model):
_inherit = "pos.order"
table_stand_number = fields.Char(string="Table Stand Number")
@api.model
def _load_pos_self_data_domain(self, data):
return [('id', '=', False)]
@api.model
def sync_from_ui(self, orders):
for order in orders:
if order.get('id'):
order_id = order['id']
if isinstance(order_id, int):
old_order = self.env['pos.order'].browse(order_id)
if old_order.takeaway:
order['takeaway'] = old_order.takeaway
return super().sync_from_ui(orders)
def _process_saved_order(self, draft):
res = super()._process_saved_order(draft)
if self.env.context.get('from_self') is not True:
self._send_notification(self)
return res
@api.model
def remove_from_ui(self, server_ids):
order_ids = self.env['pos.order'].browse(server_ids)
order_ids.state = 'cancel'
self._send_notification(order_ids)
return super().remove_from_ui(server_ids)
def _send_notification(self, order_ids):
for order in order_ids:
order._notify('ORDER_STATE_CHANGED', {
'pos.order': order.read(order._load_pos_self_data_fields(order.config_id.id), load=False),
'pos.order.line': order.lines.read(order._load_pos_self_data_fields(order.config_id.id), load=False),
'pos.payment': order.payment_ids.read(order.payment_ids._load_pos_data_fields(order.config_id.id), load=False),
'pos.payment.method': order.payment_ids.mapped('payment_method_id').read(self.env['pos.payment.method']._load_pos_data_fields(order.config_id.id), load=False),
'product.attribute.custom.value': order.lines.custom_attribute_value_ids.read(order.lines.custom_attribute_value_ids._load_pos_data_fields(order.config_id.id), load=False),
})
|