You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

55 lines
2.4 KiB

/** @odoo-module */
import { patch } from "@web/core/utils/patch";
import { NumberPopup } from "@point_of_sale/app/utils/input_popups/number_popup";
import { TicketScreen } from "@point_of_sale/app/screens/ticket_screen/ticket_screen";
import { _t } from "@web/core/l10n/translation";
import { useService } from "@web/core/utils/hooks";
// Refund password validation and popup
patch(TicketScreen.prototype, {
setup() {
// Initialize necessary services
super.setup(...arguments);
this.notification = useService("notification");
},
async onDoRefund() {
try {
// Fetch global and session refund passwords
const globalRefundPassword = await this.pos.barcodeReader.orm.call("pos.config", "fetch_global_refund_security", []);
const sessionRefundPassword = globalRefundPassword || this.pos.config.refund_security;
// Determine the error message for invalid password
const errorMessage = globalRefundPassword
? _t('Invalid Password, Enter your global password')
: _t('Incorrect Password');
// Trigger popup for password validation if sessionRefundPassword exists
if (sessionRefundPassword) {
this.dialog.add(NumberPopup, {
title: _t("Confirm ?"),
placeholder: _t("Enter Password"),
formatDisplayedValue: (input) => input.replace(/./g, "•"),
getPayload: (inputPassword) => {
if (inputPassword == sessionRefundPassword) {
// Proceed with refund if password is correct
super.onDoRefund(...arguments);
} else {
// Show notification if the password is incorrect
this.notification.add(errorMessage, {
type: "warning",
title: _t("Error"),
});
}
},
});
} else {
// Proceed with refund without password validation
super.onDoRefund(...arguments);
}
} catch (error) {
// Handle any potential errors during the async process
console.error("Error during refund password validation:", error);
}
},
});