Browse Source

Jun 04: [FIX] Bug Fixed 'pos_kitchen_screen_odoo'

pull/331/head
RisvanaCybro 1 year ago
parent
commit
1b0f0a0781
  1. 8
      pos_kitchen_screen_odoo/__manifest__.py
  2. 59
      pos_kitchen_screen_odoo/models/pos_orders.py
  3. 20
      pos_kitchen_screen_odoo/static/src/js/fields_load.js
  4. 8
      pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js
  5. 8
      pos_kitchen_screen_odoo/static/src/js/order_button.js
  6. 2
      pos_kitchen_screen_odoo/static/src/js/order_payment.js

8
pos_kitchen_screen_odoo/__manifest__.py

@ -23,7 +23,10 @@
'name': 'POS Kitchen Screen',
'version': '17.0.1.0.0',
'category': 'Point Of Sale',
'summary': 'Kitchen Screen, POS Kitchen, Odoo Kitchen Screen, POS Screen, Customer Screen, Odoo Apps, Odoo17, POS Dashboard, Kitchen',
'summary': 'POS Kitchen Screen facilitates sending certain orders '
'automatically to the kitchen.The POS Kitchen Screen allows for'
'the customization of order views, so that staff can see the '
'information that is most important to them.',
'description': 'The POS Kitchen Screen in Odoo 17 is a feature that '
'allows restaurant staff to view and manage orders in '
'real-time from the kitchen. This screen provides a clear '
@ -51,9 +54,8 @@
],
'assets': {
'point_of_sale._assets_pos': [
'pos_kitchen_screen_odoo/static/src/js/fields_load.js',
'pos_kitchen_screen_odoo/static/src/js/order_payment.js',
'pos_kitchen_screen_odoo/static/src/js/order_button.js',
'pos_kitchen_screen_odoo/static/src/js/order_payment.js',
],
'web.assets_backend': [
'pos_kitchen_screen_odoo/static/src/css/kitchen_screen.css',

59
pos_kitchen_screen_odoo/models/pos_orders.py

@ -31,6 +31,7 @@ class PosOrder(models.Model):
("waiting", "Cooking"),
("ready", "Ready"),
("cancel", "Cancel")],
default='draft',
help='To know the status of order')
order_ref = fields.Char(string="Order Reference",
help='Reference of the order')
@ -59,6 +60,27 @@ class PosOrder(models.Model):
vals["name"] = self._compute_order_name()
return super(PosOrder, self).write(vals)
# @api.model_create_multi
# def create(self, vals_list):
# """Override create function with notification (replace 'your_model.name' with your actual model name)"""
#
# # 1. Notification on creation
# message = {
# 'res_model': self._name,
# 'message': 'pos_order_created'
# }
# self.env["bus.bus"]._sendone('pos_order_created', "notification",
# message)
#
# for vals in vals_list:
# for order in self:
# if order.name == '/':
# vals['name'] = self._compute_order_name()
# session = self.env['pos.session'].browse(vals['session_id'])
# vals = self._complete_values_from_session(session, vals)
#
# return super().create(vals_list)
@api.model_create_multi
def create(self, vals_list):
"""Override create function for the validation of the order"""
@ -66,6 +88,7 @@ class PosOrder(models.Model):
'res_model': self._name,
'message': 'pos_order_created'
}
self.env["bus.bus"]._sendone('pos_order_created',
"notification",
message)
@ -107,7 +130,7 @@ class PosOrder(models.Model):
kitchen_screen = self.env["kitchen.screen"].sudo().search(
[("pos_config_id", "=", shop_id)])
pos_orders = self.env["pos.order.line"].search(
["&", ("is_cooking", "=", True),
[("is_cooking", "=", True),
("product_id.pos_categ_ids", "in",
[rec.id for rec in kitchen_screen.pos_categ_ids])])
pos = self.env["pos.order"].search(
@ -245,3 +268,37 @@ class PosOrderLine(models.Model):
self.order_status = 'waiting'
else:
self.order_status = 'ready'
@api.model_create_multi
def create(self, vals_list):
"""Override create function for the validation of the order"""
message = {
'res_model': self._name,
'message': 'pos_order_created'
}
self.env["bus.bus"]._sendone('pos_order_created',
"notification",
message)
for vals in vals_list:
pos_orders = self.search(
[("order_id", "=", vals["order_id"])])
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:
if vals.get('order_id') and not vals.get('name'):
# set name based on the sequence specified on the config
config = self.env['pos.order'].browse(
vals['order_id']).session_id.config_id
if config.sequence_line_id:
vals['name'] = config.sequence_line_id._next()
if not vals.get('name'):
# fallback on any pos.order sequence
vals['name'] = self.env['ir.sequence'].next_by_code(
'pos.order.line')
return super().create(vals_list)

20
pos_kitchen_screen_odoo/static/src/js/fields_load.js

@ -1,20 +0,0 @@
/** @odoo-module */
import { patch } from "@web/core/utils/patch";
import { PosStore } from "@point_of_sale/app/store/pos_store";
patch(PosStore.prototype, {
/**
* Processes loaded data for the Point of Sale store.
*
* @param {Object} loadedData - The data loaded for the Point of Sale.
* @returns {Promise} A promise that resolves when the data is processed.
*/
async _processData(loadedData) {
await super._processData(...arguments);
this.pos_orders = loadedData['pos.order'];
this.pos_order_lines = loadedData['pos.order.line'];
},
});

8
pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js

@ -1,17 +1,18 @@
/** @odoo-module */
import { registry } from "@web/core/registry";
const { Component, useState } = owl;
const { Component, onWillStart, onWillUnmount, useState, onMounted } = owl;
import { useService } from "@web/core/utils/hooks";
class kitchen_screen_dashboard extends Component {
setup() {
super.setup();
this.busService = this.env.services.bus_service;
this.busService.addChannel("pos_order_created");
this.busService.addEventListener('notification', this.onPosOrderCreation.bind(this));
onWillStart(() => {
this.busService.addEventListener('notification', this.onPosOrderCreation.bind(this));})
this.action = useService("action");
this.rpc = this.env.services.rpc;
this.action = useService("action");
@ -45,6 +46,7 @@ class kitchen_screen_dashboard extends Component {
self.state.waiting_count=self.state.order_details.filter((order) => order.order_status=='waiting' && order.config_id[0]==self.state.shop_id).length
self.state.ready_count=self.state.order_details.filter((order) => order.order_status=='ready' && order.config_id[0]==self.state.shop_id).length
});
}
//Calling the onPosOrderCreation when an order is created or edited on the backend and return the notification

8
pos_kitchen_screen_odoo/static/src/js/order_button.js

@ -33,18 +33,16 @@ setup() {
async submitOrder() {
var line = []
var self = this;
if (!this.clicked) {
this.clicked = true;
try {
var order_name=this.pos.selectedOrder.uid
var order_name=this.currentOrder.name
await this.orm.call("pos.order", "check_order_status", ["", order_name]).then(function(result){
if (result==false){
self.kitchen_order_status=false
self.popup.add(ErrorPopup, {
title: _t("Order is Completed"),
body: _t("There Order is Completed please create a new Order"),
body: _t("This Order is Completed please create a new Order"),
});
}
else{
@ -74,7 +72,7 @@ setup() {
}])
}
var orders = [{
'pos_reference': this.pos.get_order().uid,
'pos_reference': this.pos.get_order().name,
'session_id':1,
'amount_total': 0,
'amount_paid': 0,

2
pos_kitchen_screen_odoo/static/src/js/order_payment.js

@ -22,7 +22,7 @@ patch(Order.prototype, {
* Override of the pay method to handle payment logic.
*/
async pay() {
var order_name = this.pos.selectedOrder.uid;
var order_name = this.pos.selectedOrder.name;
var self = this;
await this.orm.call("pos.order", "check_order", ["", order_name]).then(function (result) {
if (result.category) {

Loading…
Cancel
Save