Browse Source

Jul 31 [UPDT] Updated 'pos_kitchen_screen_odoo'

pull/331/head
AjmalCybro 1 year ago
parent
commit
932d8589db
  1. 5
      pos_kitchen_screen_odoo/__manifest__.py
  2. 78
      pos_kitchen_screen_odoo/models/pos_orders.py
  3. 15
      pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js
  4. 6
      pos_kitchen_screen_odoo/static/src/js/order_button.js
  5. 2
      pos_kitchen_screen_odoo/static/src/js/order_payment.js

5
pos_kitchen_screen_odoo/__manifest__.py

@ -21,7 +21,7 @@
############################################################################# #############################################################################
{ {
'name': 'POS Kitchen Screen', 'name': 'POS Kitchen Screen',
'version': '17.0.1.0.0', 'version': '17.0.1.0.1',
'category': 'Point Of Sale', 'category': 'Point Of Sale',
'summary': 'POS Kitchen Screen facilitates sending certain orders ' 'summary': 'POS Kitchen Screen facilitates sending certain orders '
'automatically to the kitchen.The POS Kitchen Screen allows for' 'automatically to the kitchen.The POS Kitchen Screen allows for'
@ -54,8 +54,9 @@
], ],
'assets': { 'assets': {
'point_of_sale._assets_pos': [ 'point_of_sale._assets_pos': [
'pos_kitchen_screen_odoo/static/src/js/order_button.js', '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_payment.js',
'pos_kitchen_screen_odoo/static/src/js/order_button.js',
], ],
'web.assets_backend': [ 'web.assets_backend': [
'pos_kitchen_screen_odoo/static/src/css/kitchen_screen.css', 'pos_kitchen_screen_odoo/static/src/css/kitchen_screen.css',

78
pos_kitchen_screen_odoo/models/pos_orders.py

@ -60,27 +60,6 @@ class PosOrder(models.Model):
vals["name"] = self._compute_order_name() vals["name"] = self._compute_order_name()
return super(PosOrder, self).write(vals) 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 @api.model_create_multi
def create(self, vals_list): def create(self, vals_list):
"""Override create function for the validation of the order""" """Override create function for the validation of the order"""
@ -88,7 +67,6 @@ class PosOrder(models.Model):
'res_model': self._name, 'res_model': self._name,
'message': 'pos_order_created' 'message': 'pos_order_created'
} }
self.env["bus.bus"]._sendone('pos_order_created', self.env["bus.bus"]._sendone('pos_order_created',
"notification", "notification",
message) message)
@ -97,19 +75,11 @@ class PosOrder(models.Model):
[("pos_reference", "=", vals["pos_reference"])]) [("pos_reference", "=", vals["pos_reference"])])
if pos_orders: if pos_orders:
for rec in pos_orders.lines: for rec in pos_orders.lines:
print("L", rec) for lin in vals_list[0]["lines"]:
if "lines" in vals_list[0] and isinstance(vals_list[0]["lines"], list): if lin[2]["product_id"] == rec.product_id.id:
for lin in vals_list[0]["lines"]: lin[2]["order_status"] = rec.order_status
print("P", lin) vals_list[0]["order_status"] = pos_orders.order_status
if lin[2]["product_id"] == rec.product_id.id: return super().create(vals_list)
lin[2]["order_status"] = rec.order_status
else:
# Handle the case where "lines" is not a list
print("Error: vals_list[0]['lines'] is not a list")
vals_list[0]["order_status"] = pos_orders.order_status
print("Val_list", vals_list)
return super().create(vals_list)
else: else:
if vals.get('order_id') and not vals.get('name'): if vals.get('order_id') and not vals.get('name'):
@ -138,7 +108,7 @@ class PosOrder(models.Model):
kitchen_screen = self.env["kitchen.screen"].sudo().search( kitchen_screen = self.env["kitchen.screen"].sudo().search(
[("pos_config_id", "=", shop_id)]) [("pos_config_id", "=", shop_id)])
pos_orders = self.env["pos.order.line"].search( pos_orders = self.env["pos.order.line"].search(
[("is_cooking", "=", True), ["&", ("is_cooking", "=", True),
("product_id.pos_categ_ids", "in", ("product_id.pos_categ_ids", "in",
[rec.id for rec in kitchen_screen.pos_categ_ids])]) [rec.id for rec in kitchen_screen.pos_categ_ids])])
pos = self.env["pos.order"].search( pos = self.env["pos.order"].search(
@ -276,39 +246,3 @@ class PosOrderLine(models.Model):
self.order_status = 'waiting' self.order_status = 'waiting'
else: else:
self.order_status = 'ready' 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 vals in vals_list:
pos_orders = self.env['pos.order'].search([('order_id', '=', vals['order_id'])])
if pos_orders:
for pos_order in pos_orders:
for rec in pos_order.lines:
for lin in vals.get('lines', []):
if lin[2]["product_id"] == rec.product_id.id:
lin[2]["order_status"] = rec.order_status
vals['order_status'] = pos_orders[0].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)

15
pos_kitchen_screen_odoo/static/src/js/kitchen_screen.js

@ -1,7 +1,7 @@
/** @odoo-module */ /** @odoo-module */
import { registry } from "@web/core/registry"; import { registry } from "@web/core/registry";
const { Component, onWillStart, onWillUnmount, useState, onMounted } = owl; const { Component, onWillStart, useState, onMounted } = owl;
import { useService } from "@web/core/utils/hooks"; import { useService } from "@web/core/utils/hooks";
@ -46,7 +46,6 @@ 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.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 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 //Calling the onPosOrderCreation when an order is created or edited on the backend and return the notification
@ -55,12 +54,12 @@ class kitchen_screen_dashboard extends Component {
var self=this var self=this
if(payload.message == "pos_order_created" && payload.res_model == "pos.order"){ if(payload.message == "pos_order_created" && payload.res_model == "pos.order"){
self.orm.call("pos.order", "get_details", ["", self.shop_id,""]).then(function(result) { self.orm.call("pos.order", "get_details", ["", self.shop_id,""]).then(function(result) {
self.state.order_details = result['orders'] self.state.order_details = result['orders']
self.state.lines = result['order_lines'] self.state.lines = result['order_lines']
self.state.shop_id=self.shop_id self.state.shop_id=self.shop_id
self.state.draft_count=self.state.order_details.filter((order) => order.order_status=='draft' && order.config_id[0]==self.state.shop_id).length self.state.draft_count=self.state.order_details.filter((order) => order.order_status=='draft' && order.config_id[0]==self.state.shop_id).length
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.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 self.state.ready_count=self.state.order_details.filter((order) => order.order_status=='ready' && order.config_id[0]==self.state.shop_id).length
}); });
} }
} }

6
pos_kitchen_screen_odoo/static/src/js/order_button.js

@ -36,13 +36,13 @@ setup() {
if (!this.clicked) { if (!this.clicked) {
this.clicked = true; this.clicked = true;
try { try {
var order_name=this.currentOrder.name var order_name=this.pos.selectedOrder.uid
await this.orm.call("pos.order", "check_order_status", ["", order_name]).then(function(result){ await this.orm.call("pos.order", "check_order_status", ["", order_name]).then(function(result){
if (result==false){ if (result==false){
self.kitchen_order_status=false self.kitchen_order_status=false
self.popup.add(ErrorPopup, { self.popup.add(ErrorPopup, {
title: _t("Order is Completed"), title: _t("Order is Completed"),
body: _t("This Order is Completed please create a new Order"), body: _t("There Order is Completed please create a new Order"),
}); });
} }
else{ else{
@ -72,7 +72,7 @@ setup() {
}]) }])
} }
var orders = [{ var orders = [{
'pos_reference': this.pos.get_order().name, 'pos_reference': this.pos.get_order().uid,
'session_id':1, 'session_id':1,
'amount_total': 0, 'amount_total': 0,
'amount_paid': 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. * Override of the pay method to handle payment logic.
*/ */
async pay() { async pay() {
var order_name = this.pos.selectedOrder.name; var order_name = this.pos.selectedOrder.uid;
var self = this; var self = this;
await this.orm.call("pos.order", "check_order", ["", order_name]).then(function (result) { await this.orm.call("pos.order", "check_order", ["", order_name]).then(function (result) {
if (result.category) { if (result.category) {

Loading…
Cancel
Save