Browse Source

May 30: [FIX] Bug Fixed 'pos_kitchen_screen_odoo'

pull/346/merge
Cybrosys Technologies 2 months ago
parent
commit
413d96b8dd
  1. 2
      pos_kitchen_screen_odoo/__manifest__.py
  2. 7
      pos_kitchen_screen_odoo/doc/RELEASE_NOTES.md
  3. 34
      pos_kitchen_screen_odoo/models/pos_orders.py
  4. 6
      pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js

2
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 '

7
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.

34
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):

6
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

Loading…
Cancel
Save