From 413d96b8ddf2421bf3be4c06245f849ee909fada Mon Sep 17 00:00:00 2001 From: Cybrosys Technologies Date: Fri, 30 May 2025 10:45:30 +0530 Subject: [PATCH] May 30: [FIX] Bug Fixed 'pos_kitchen_screen_odoo' --- pos_kitchen_screen_odoo/__manifest__.py | 2 +- pos_kitchen_screen_odoo/doc/RELEASE_NOTES.md | 7 ++++ pos_kitchen_screen_odoo/models/pos_orders.py | 34 +++++++++++-------- .../static/src/js/kitchen_screen.js | 6 ++-- 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/pos_kitchen_screen_odoo/__manifest__.py b/pos_kitchen_screen_odoo/__manifest__.py index 0b3c5938f..e2d4342c7 100644 --- a/pos_kitchen_screen_odoo/__manifest__.py +++ b/pos_kitchen_screen_odoo/__manifest__.py @@ -21,7 +21,7 @@ ############################################################################ { 'name': 'POS Kitchen Screen', - 'version': '1.0', + 'version': '18.0.1.1.0', 'category': 'Point Of Sale', 'summary': 'POS Kitchen Screen facilitates sending certain orders ' 'automatically to the kitchen.The POS Kitchen Screen allows for ' diff --git a/pos_kitchen_screen_odoo/doc/RELEASE_NOTES.md b/pos_kitchen_screen_odoo/doc/RELEASE_NOTES.md index 80317920f..7f5b2cf3c 100644 --- a/pos_kitchen_screen_odoo/doc/RELEASE_NOTES.md +++ b/pos_kitchen_screen_odoo/doc/RELEASE_NOTES.md @@ -4,3 +4,10 @@ #### Version 18.0.1.0.0 #### ADD - Initial commit for Pos Kitchen Screen + +#### 29.05.2025 +#### Version 18.0.1.1.0 +#### BUG FIX +- Fixed issue where orders were not displaying on the kitchen screen. +- Fixed kitchen screen not updating according to POS order changes. +- Fixed completed orders incorrectly reverting to draft or cooking stage in kitchen screen after payment completion. \ No newline at end of file diff --git a/pos_kitchen_screen_odoo/models/pos_orders.py b/pos_kitchen_screen_odoo/models/pos_orders.py index 7497159c1..d2ac60638 100644 --- a/pos_kitchen_screen_odoo/models/pos_orders.py +++ b/pos_kitchen_screen_odoo/models/pos_orders.py @@ -46,6 +46,9 @@ class PosOrder(models.Model): def write(self, vals): """Super the write function for adding order status in vals""" + if vals.get("state") == "paid" and "order_status" in vals: + vals.pop("order_status") + message = { 'res_model': self._name, 'message': 'pos_order_created' @@ -57,8 +60,9 @@ class PosOrder(models.Model): if order.order_status == "waiting" and vals.get( "order_status") != "ready": vals["order_status"] = order.order_status - if order.order_status == "ready": - vals["order_status"] = order.order_status + if vals.get("state") and vals[ + "state"] == "paid" and order.name == "/": + vals["name"] = self._compute_order_name() return super(PosOrder, self).write(vals) @api.model_create_multi @@ -71,16 +75,12 @@ class PosOrder(models.Model): self.env["bus.bus"]._sendone('pos_order_created', "notification", message) - for vals in vals_list: + if not vals["order_status"]: + vals["order_status"] = 'draft' pos_orders = self.search( [("pos_reference", "=", vals["pos_reference"])]) if pos_orders: - for rec in pos_orders.lines: - for lin in vals_list[0]["lines"]: - if lin[2]["product_id"] == rec.product_id.id: - lin[2]["order_status"] = rec.order_status - vals_list[0]["order_status"] = pos_orders.order_status return super().create(vals_list) else: @@ -88,9 +88,12 @@ class PosOrder(models.Model): # set name based on the sequence specified on the config config = self.env['pos.order'].browse( vals['order_id']).session_id.config_id - vals['order_status'] = 'draft' + if config.sequence_line_id: + vals['name'] = config.sequence_line_id._next() if not vals.get('name'): - vals['order_status'] = 'draft' + # fallback on any pos.order sequence + vals['name'] = self.env['ir.sequence'].next_by_code( + 'pos.order.line') return super().create(vals_list) def get_details(self, shop_id, order=None): @@ -99,9 +102,13 @@ class PosOrder(models.Model): if order: orders = self.search( [("pos_reference", "=", order[0]['pos_reference'])]) - if orders: - orders.lines = False - orders.lines = dic[0]['lines'] + if not orders: + self.create(dic) + else: + orders.floor = dic[0]['floor'] + orders.hour = dic[0]['hour'] + orders.minutes = dic[0]['minutes'] + orders.lines.write({'is_cooking': True}) kitchen_screen = self.env["kitchen.screen"].sudo().search( [("pos_config_id", "=", shop_id)]) pos_orders = self.env["pos.order.line"].search( @@ -131,7 +138,6 @@ class PosOrder(models.Model): local_dt = utc_dt.astimezone(user_tz) value['hour'] = local_dt.hour value['minutes'] = local_dt.minute - return values def action_pos_order_paid(self): diff --git a/pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js b/pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js index 98d75739c..494663edc 100644 --- a/pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js +++ b/pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js @@ -10,7 +10,7 @@ class kitchen_screen_dashboard extends Component { this.busService = this.env.services.bus_service; this.busService.addChannel("pos_order_created"); onWillStart(() => { - this.busService.addEventListener('notification', this.onPosOrderCreation.bind(this));}) + this.busService.subscribe('notification', this.onPosOrderCreation.bind(this));}) this.action = useService("action"); this.rpc = this.env.services.rpc; this.action = useService("action"); @@ -49,10 +49,10 @@ class kitchen_screen_dashboard extends Component { //Calling the onPosOrderCreation when an order is created or edited on the backend and return the notification onPosOrderCreation(message){ - let payload = message.detail[0].payload var self=this - if(payload.message == "pos_order_created" && payload.res_model == "pos.order"){ + if(message.message == "pos_order_created" && message.res_model == "pos.order"){ self.orm.call("pos.order", "get_details", ["", self.shop_id,""]).then(function(result) { + console.log('orm call result', result) self.state.order_details = result['orders'] self.state.lines = result['order_lines'] self.state.shop_id=self.shop_id