ODOO 18
I’m working on a POS module where I’m trying to apply a patch. The component is invoice_button. The issue is that when I run the POS to test it, the patch doesn’t take effect: if I add a console.log inside the onWillInvoiceOrder function, it doesn’t run. However, the console.log does run if I load it before the patch.
Could you guide me on what might be going wrong? I’m attaching some code and the module’s structure.
point_of_sale [invoice_button] -> l10n_mx_edi_pos [invoice_button] -> my_module [invoice_button]
All the other POS assets (JS included) are working as expected.
# Code
import { InvoiceButton } from "@point_of_sale/app/screens/ticket_screen/invoice_button/invoice_button";
import { AddInfoPopup } from "@l10n_mx_edi_pos/app/add_info_popup/add_info_popup";
import { makeAwaitable } from "@point_of_sale/app/store/make_awaitable_dialog";
import { patch } from "@web/core/utils/patch";
patch(InvoiceButton.prototype, {
async onWillInvoiceOrder(order, newPartner) {
if (this.pos.company.country_id?.code !== "MX") {
return true;
}
const payload = await makeAwaitable(this.dialog, AddInfoPopup, {
order,
newPartner,
});
if (payload) {
order.l10n_mx_edi_cfdi_to_public =
payload.l10n_mx_edi_cfdi_to_public === true ||
payload.l10n_mx_edi_cfdi_to_public === "1";
order.l10n_mx_edi_usage = payload.l10n_mx_edi_usage;
// Add new field for payment term
order.payment_term_id = payload.clientPaymentTerm || 0;
await this.pos.data.ormWrite("pos.order", [order.id], {
l10n_mx_edi_cfdi_to_public: order.l10n_mx_edi_cfdi_to_public,
l10n_mx_edi_usage: order.l10n_mx_edi_usage,
payment_term_id: order.payment_term_id,
});
}
return Boolean(payload);
},
});
# Manifest
"depends": [
"point_of_sale",
"pos_settle_due",
"l10n_mx_edi_pos",
],
"assets": {
"point_of_sale._assets_pos": [
"bck_pos_uso_cfdi/static/src/**/*",
],
},