diff --git a/static/src/app/components/navbar/navbar_patch.js b/static/src/app/components/navbar/navbar_patch.js new file mode 100644 index 0000000..574f4fe --- /dev/null +++ b/static/src/app/components/navbar/navbar_patch.js @@ -0,0 +1,28 @@ +/** @odoo-module */ + +import { patch } from "@web/core/utils/patch"; +import { Navbar } from "@point_of_sale/app/components/navbar/navbar"; + +patch(Navbar.prototype, { + async onClickRegister() { + const cashier = await this.pos._selectCashierByPin(); + if (!cashier) { + return; + } + + this.pos.setCashier(cashier); + + let order = this.pos.getOrder(); + if (!order) { + order = this.pos.addNewOrder(); + } + + if (order) { + order.original_employee_id = cashier; + order.employee_id = cashier; + order.uiState.is_authorized = true; + } + + this.pos.navigateToOrderScreen(order); + } +}); diff --git a/static/src/app/components/order_tabs/order_tabs_patch.js b/static/src/app/components/order_tabs/order_tabs_patch.js new file mode 100644 index 0000000..d8a06bf --- /dev/null +++ b/static/src/app/components/order_tabs/order_tabs_patch.js @@ -0,0 +1,51 @@ +/** @odoo-module */ + +import { patch } from "@web/core/utils/patch"; +import { OrderTabs } from "@point_of_sale/app/components/order_tabs/order_tabs"; + +patch(OrderTabs.prototype, { + async newFloatingOrder() { + const cashier = await this.pos._selectCashierByPin(); + if (!cashier) { + return; + } + + this.pos.setCashier(cashier); + + const order = this.pos.addNewOrder(); + if (order) { + order.original_employee_id = cashier; + order.employee_id = cashier; + order.uiState.is_authorized = true; + } + + this.pos.navigate("ProductScreen", { + orderUuid: order.uuid, + }); + + return order; + }, + + async selectFloatingOrder(order) { + const cashier = await this.pos._selectCashierByPin(); + if (!cashier) { + return; + } + + this.pos.setCashier(cashier); + + if (order) { + if (!order.original_employee_id) { + order.original_employee_id = order.employee_id || cashier; + } + order.uiState.is_authorized = true; + } + + this.pos.setOrder(order); + const previousOrderScreen = order.getScreenData(); + this.pos.navigate(previousOrderScreen?.name || "ProductScreen", { + orderUuid: order.uuid, + }); + this.dialog.closeAll(); + } +}); diff --git a/static/src/app/utils/order_payment_validation.js b/static/src/app/utils/order_payment_validation.js index afaf506..aef3a44 100644 --- a/static/src/app/utils/order_payment_validation.js +++ b/static/src/app/utils/order_payment_validation.js @@ -3,12 +3,14 @@ import { patch } from "@web/core/utils/patch"; patch(OrderPaymentValidation.prototype, { async validateOrder(isForceValidate) { - const originalEmployeeId = this.order.original_employee_id || this.order.employee_id; + const originalEmployeeId = this.order?.original_employee_id || this.order?.employee_id; - await super.validateOrder(...arguments); + const result = await super.validateOrder(...arguments); - if (originalEmployeeId) { + if (originalEmployeeId && this.order) { this.order.employee_id = originalEmployeeId; } + + return result; }, });