From f69b0ba0688eaf12ab3994a644fe692fb22d963f Mon Sep 17 00:00:00 2001 From: RisvanaCybro Date: Mon, 29 Apr 2024 15:09:44 +0530 Subject: [PATCH] Apr 29: [FIX] Bug Fixed 'product_return_pos' --- product_return_pos/__manifest__.py | 2 +- product_return_pos/doc/RELEASE_NOTES.md | 4 + product_return_pos/static/src/js/models.js | 17 +- .../static/src/js/order_list_screen.js | 151 +++++++++--------- .../static/src/js/pos_return.js | 3 - product_return_pos/static/src/js/return.js | 2 - .../static/src/xml/pos_return.xml | 8 +- 7 files changed, 93 insertions(+), 94 deletions(-) diff --git a/product_return_pos/__manifest__.py b/product_return_pos/__manifest__.py index 1159f81f6..e7933b088 100644 --- a/product_return_pos/__manifest__.py +++ b/product_return_pos/__manifest__.py @@ -21,7 +21,7 @@ ############################################################################# { 'name': 'Product Return In POS', - 'version': '14.0.1.0.0', + 'version': '14.0.1.0.1', 'category': 'Point of Sale', 'summary': 'POS Order Return', 'author': 'Cybrosys Techno Solutions', diff --git a/product_return_pos/doc/RELEASE_NOTES.md b/product_return_pos/doc/RELEASE_NOTES.md index 4d32546ff..8fb14c336 100644 --- a/product_return_pos/doc/RELEASE_NOTES.md +++ b/product_return_pos/doc/RELEASE_NOTES.md @@ -5,4 +5,8 @@ ##### ADD - Initial Commit. +#### 23.04.2024 +#### Version 14.0.1.0.1 +#### UPDATE + - Add current datetime and pagination in return page. diff --git a/product_return_pos/static/src/js/models.js b/product_return_pos/static/src/js/models.js index 230bf155f..ed31c722e 100644 --- a/product_return_pos/static/src/js/models.js +++ b/product_return_pos/static/src/js/models.js @@ -18,7 +18,9 @@ models.load_models({ fields: ['name', 'partner_id','date_order','amount_total', 'amount_tax', 'pos_reference','lines','state','session_id','company_id','return_ref','return_status'], loaded: function(self, orders){ - + orders.forEach(function(order) { + order.date_order = moment.utc(order.date_order).local().format('YYYY-MM-DD HH:mm:ss'); + }); self.orders = orders; } }, @@ -34,13 +36,6 @@ models.load_models({ } }); - - - - - - - var _super_orderline = models.Orderline; models.Orderline = models.Orderline.extend({ @@ -63,7 +58,6 @@ models.Order = models.Order.extend({ add_product: function (product, options) { - var order = this.pos.get_order(); _super.prototype.add_product.call(this, product, options); if (options !== undefined) { @@ -170,9 +164,4 @@ models.PosModel.extend({ }); }, }); - - - - - }); \ No newline at end of file diff --git a/product_return_pos/static/src/js/order_list_screen.js b/product_return_pos/static/src/js/order_list_screen.js index 379d767fd..c990bd6ff 100644 --- a/product_return_pos/static/src/js/order_list_screen.js +++ b/product_return_pos/static/src/js/order_list_screen.js @@ -3,51 +3,67 @@ odoo.define('product_return_pos.order_list_screen',function(require) { var models = require('point_of_sale.models'); - var gui = require('point_of_sale.Gui'); var core = require('web.core'); var QWeb = core.qweb; var rpc = require('web.rpc'); var _t = require('web.core')._t; var session = require('web.session'); - const ControlButtonsMixin = require('point_of_sale.ControlButtonsMixin'); - const NumberBuffer = require('point_of_sale.NumberBuffer'); - const { onChangeOrder, useBarcodeReader } = require('point_of_sale.custom_hooks'); - const { useState , useRef} = owl.hooks; - const PosComponent = require('point_of_sale.PosComponent'); - const Registries = require('point_of_sale.Registries'); - const ProductScreen = require('point_of_sale.ProductScreen'); - const { useListener } = require('web.custom_hooks'); - const OrderManagementScreen = require('point_of_sale.OrderManagementScreen'); - const AbstractAwaitablePopup = require('point_of_sale.AbstractAwaitablePopup'); - const IndependentToOrderScreen = require('point_of_sale.IndependentToOrderScreen'); - const { posbus } = require('point_of_sale.utils'); - const { Gui } = require('point_of_sale.Gui'); - - - - +const ControlButtonsMixin = require('point_of_sale.ControlButtonsMixin'); +const NumberBuffer = require('point_of_sale.NumberBuffer'); +const { onChangeOrder, useBarcodeReader } = require('point_of_sale.custom_hooks'); +const { useState , useRef} = owl.hooks; +const PosComponent = require('point_of_sale.PosComponent'); +const Registries = require('point_of_sale.Registries'); +const ProductScreen = require('point_of_sale.ProductScreen'); +const { useListener } = require('web.custom_hooks'); +const OrderManagementScreen = require('point_of_sale.OrderManagementScreen'); +const AbstractAwaitablePopup = require('point_of_sale.AbstractAwaitablePopup'); +const IndependentToOrderScreen = require('point_of_sale.IndependentToOrderScreen'); +const { posbus } = require('point_of_sale.utils'); +const { Gui } = require('point_of_sale.Gui'); class OrderListScreenWidget extends IndependentToOrderScreen { - - constructor() { - super(...arguments); - useListener('filter-selected', this._onFilterSelected); + super(...arguments); + useListener('filter-selected', this._onFilterSelected); + useListener('search', this._onSearch); + this.searchDetails = {}; + this.filter = null; + this._initializeSearchFieldConstants(); + this.state = useState({ + pagedOrders: [], + }); + this.ordersPerPage = 12; + this.currentPage = 1; + this.orders = this.env.pos.orders; + } - useListener('search', this._onSearch); - this.searchDetails = {}; - this.filter = null; - this._initializeSearchFieldConstants(); + mounted() { + this.updatePagedOrders(); + this.render(); + } + updatePagedOrders(orders=this.orders) { + const startIndex = (this.currentPage - 1) * this.ordersPerPage; + const endIndex = startIndex + this.ordersPerPage; + this.currentOrders = orders; + this.state.pagedOrders = [...orders.slice(startIndex, endIndex)]; + } - } + button_prev() { + if (this.currentPage > 1) { + this.currentPage -= 1; + this.updatePagedOrders(); + } + } - mounted() { - var self = this; - this.render(); - var orders = this.env.pos.orders; - var search_timeout = null; + button_next() { + const maxPage = Math.ceil(this.currentOrders.length / this.ordersPerPage); + if (this.currentPage < maxPage) { + this.currentPage += 1; + this.updatePagedOrders(); + } } back() { @@ -62,35 +78,14 @@ class OrderListScreenWidget extends IndependentToOrderScreen { this.return_order(order); } - get ordersList() { - const filterCheck = (order) => { - return true; - }; - const { fieldValue, searchTerm } = this.searchDetails; - const fieldAccessor = this._searchFields[fieldValue]; - const searchCheck = (order) => { - if (!fieldAccessor) return true; - const fieldValue = fieldAccessor(order); - if (fieldValue === null) return true; - if (!searchTerm) return true; - return fieldValue && fieldValue.toString().toLowerCase().includes(searchTerm.toLowerCase()); - }; - const predicate = (order) => { - return searchCheck(order); - }; - - return this.orderList.filter(predicate); - } - _onFilterSelected(event) { - this.filter = event.detail.filter; - this.render(); - } + this.filter = event.detail.filter; + this.render(); + } get orderList() { - return this.env.pos.orders; - } - + return this.env.pos.orders; + } get _searchFields() { var fields = { @@ -103,10 +98,30 @@ class OrderListScreenWidget extends IndependentToOrderScreen { } _onSearch(event) { - const searchDetails = event.detail; - Object.assign(this.searchDetails, searchDetails); - this.render(); + this.currentPage = 1; + const searchDetails = event.detail; + const { fieldValue, searchTerm } = searchDetails; + if (fieldValue === 'Receipt Number') { + const filteredOrders = this.orders.filter(order => { + return order.pos_reference && order.pos_reference.includes(searchTerm); + }); + this.updatePagedOrders(filteredOrders); + } else { + const fieldAccessor = this._searchFields[fieldValue]; + const searchCheck = (order) => { + if (!fieldAccessor) return true; + const fieldValue = fieldAccessor(order); + if (fieldValue === null) return true; + if (!searchTerm) return true; + return fieldValue && fieldValue.toString().toLowerCase().includes(searchTerm.toLowerCase()); + }; + const predicate = (order) => { + return searchCheck(order); + }; + this.updatePagedOrders(this.orders.filter(predicate)); } + this.render(); + } get searchBarConfig() { return { @@ -114,6 +129,7 @@ class OrderListScreenWidget extends IndependentToOrderScreen { filter: { show: true, options: this.filterOptions }, }; } + get filterOptions() { return ['All Orders']; } @@ -125,7 +141,6 @@ class OrderListScreenWidget extends IndependentToOrderScreen { ReceiptScreen: 'Receipt', }; } - _initializeSearchFieldConstants() { this.constants = {}; Object.assign(this.constants, { @@ -134,8 +149,6 @@ class OrderListScreenWidget extends IndependentToOrderScreen { }); } - - render_list(orders){ var contents = this.el.querySelector('.order-list-contents'); contents.innerHTML = ""; @@ -149,7 +162,6 @@ class OrderListScreenWidget extends IndependentToOrderScreen { } } - return_order(order_id){ var self = this; var client = '' @@ -162,24 +174,17 @@ class OrderListScreenWidget extends IndependentToOrderScreen { 'body': "This is a fully returned order",}); } else if (order_id && order_id.return_ref) { - Gui.showPopup('ErrorPopup',{ 'title': "ERROR", 'body': "This is a returned order",}); } else{ Gui.showPopup('ReturnWidget',{ref: order_id.pos_reference,client:client}); - } - } - - } - OrderListScreenWidget.template = 'OrderListScreenWidget'; + OrderListScreenWidget.template = 'OrderListScreenWidget'; Registries.Component.add(OrderListScreenWidget); - return OrderListScreenWidget; - }); \ No newline at end of file diff --git a/product_return_pos/static/src/js/pos_return.js b/product_return_pos/static/src/js/pos_return.js index 38685c8db..9d0314a52 100644 --- a/product_return_pos/static/src/js/pos_return.js +++ b/product_return_pos/static/src/js/pos_return.js @@ -152,7 +152,4 @@ class ReturnWidget extends AbstractAwaitablePopup { Registries.Component.add(ReturnWidget); return ReturnWidget; - - - }); \ No newline at end of file diff --git a/product_return_pos/static/src/js/return.js b/product_return_pos/static/src/js/return.js index 03e15480d..8f2ee9abd 100644 --- a/product_return_pos/static/src/js/return.js +++ b/product_return_pos/static/src/js/return.js @@ -51,6 +51,4 @@ ProductScreen.addControlButton({ Registries.Component.add(ReturnButton); return ReturnButton; - - }); \ No newline at end of file diff --git a/product_return_pos/static/src/xml/pos_return.xml b/product_return_pos/static/src/xml/pos_return.xml index db2ef6651..173c92c8c 100644 --- a/product_return_pos/static/src/xml/pos_return.xml +++ b/product_return_pos/static/src/xml/pos_return.xml @@ -26,6 +26,9 @@
+ + + Cancel @@ -37,6 +40,9 @@ Refresh + + +
@@ -46,7 +52,7 @@
Customer
Return Ref
- +