feat: add automatic cash drawer triggers for opening and closing popups and enforce explicit action strings for all manual cashbox requests
This commit is contained in:
parent
85692e2fec
commit
3fbccec8e3
@ -5,6 +5,45 @@ import { PosStore } from "@point_of_sale/app/services/pos_store";
|
||||
import OrderPaymentValidation from "@point_of_sale/app/utils/order_payment_validation";
|
||||
import { patch } from "@web/core/utils/patch";
|
||||
import { getBluetoothPrintingServices } from "./pos_receipt_printer";
|
||||
import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment_screen";
|
||||
import { OpeningControlPopup } from "@point_of_sale/app/components/popups/opening_control_popup/opening_control_popup";
|
||||
import { ClosingPopup } from "@point_of_sale/app/components/popups/closing_popup/closing_popup";
|
||||
import { onMounted } from "@odoo/owl";
|
||||
|
||||
// Patch OpeningControlPopup to open cash drawer automatically upon loading
|
||||
patch(OpeningControlPopup.prototype, {
|
||||
setup() {
|
||||
super.setup(...arguments);
|
||||
onMounted(() => {
|
||||
if (this.hardwareProxy) {
|
||||
this.hardwareProxy.openCashbox('OpeningControl_Auto');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Patch ClosingPopup to open cash drawer automatically upon loading
|
||||
patch(ClosingPopup.prototype, {
|
||||
setup() {
|
||||
super.setup(...arguments);
|
||||
onMounted(() => {
|
||||
if (this.hardwareProxy) {
|
||||
this.hardwareProxy.openCashbox('ClosingControl_Auto');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Patch PaymentScreen to explicitly mark manual cashbox opens
|
||||
patch(PaymentScreen.prototype, {
|
||||
openCashbox() {
|
||||
if (this.hardwareProxy) {
|
||||
this.hardwareProxy.openCashbox('PaymentScreen_Manual');
|
||||
} else {
|
||||
super.openCashbox(...arguments);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Patch OrderPaymentValidation to track validation context
|
||||
patch(OrderPaymentValidation.prototype, {
|
||||
@ -93,10 +132,10 @@ patch(HardwareProxy.prototype, {
|
||||
console.log(`[CashDrawer] Blocking — print context: printType=${printType}, cash=${order?.isPaidWithCash()}`);
|
||||
}
|
||||
}
|
||||
// (B) No context at all — manual button (e.g. payment screen Open Cashbox button)
|
||||
// (B) No context at all — strictly block to prevent rogue triggers
|
||||
else {
|
||||
console.log("[CashDrawer] No context — allowing as manual trigger.");
|
||||
allowOpen = true;
|
||||
console.log("[CashDrawer] No context — BLOCKING! Manual triggers must provide an action string.");
|
||||
allowOpen = false;
|
||||
}
|
||||
|
||||
if (allowOpen) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user