From f9677e4806f6360948dc41bafb08d12ddf187c9b Mon Sep 17 00:00:00 2001 From: Pierrick Brun Date: Thu, 26 Jan 2023 18:13:35 +0100 Subject: [PATCH] [FIX] send receipt by email from pos --- pos_sale_order/models/sale_order.py | 2 ++ pos_sale_order/static/src/js/ReceiptScreen.js | 33 +++++++++++++++++++ pos_sale_order/templates/assets.xml | 4 +++ 3 files changed, 39 insertions(+) create mode 100644 pos_sale_order/static/src/js/ReceiptScreen.js diff --git a/pos_sale_order/models/sale_order.py b/pos_sale_order/models/sale_order.py index 8fa22b4..015bb69 100644 --- a/pos_sale_order/models/sale_order.py +++ b/pos_sale_order/models/sale_order.py @@ -27,6 +27,8 @@ class SaleOrderPatched(models.Model): SaleOrderPatched._payment_fields = PosOrder._payment_fields SaleOrderPatched._get_valid_session = PosOrder._get_valid_session SaleOrderPatched._process_payment_lines = PosOrder._process_payment_lines +SaleOrderPatched.action_receipt_to_customer = PosOrder.action_receipt_to_customer +SaleOrderPatched._prepare_mail_values = PosOrder._prepare_mail_values class SaleOrder(models.Model): diff --git a/pos_sale_order/static/src/js/ReceiptScreen.js b/pos_sale_order/static/src/js/ReceiptScreen.js new file mode 100644 index 0000000..1a79237 --- /dev/null +++ b/pos_sale_order/static/src/js/ReceiptScreen.js @@ -0,0 +1,33 @@ +odoo.define("pos_sale_order.ReceiptScreen", function (require) { + "use strict"; + + const { Printer } = require('point_of_sale.Printer'); + var ReceiptScreen = require("point_of_sale.ReceiptScreen"); + var Registries = require("point_of_sale.Registries"); + + var PSOReceiptScreen = (ReceiptScreen) => + class PSOReceiptScreen extends ReceiptScreen { + // copy entire function from odoo + // because there is no way to inherit it properly + async _sendReceiptToCustomer() { + const printer = new Printer(null, this.env.pos); + const receiptString = this.orderReceipt.comp.el.outerHTML; + const ticketImage = await printer.htmlToImg(receiptString); + const order = this.currentOrder; + const client = order.get_client(); + const orderName = order.get_name(); + const orderClient = { email: this.orderUiState.inputEmail, name: client ? client.name : this.orderUiState.inputEmail }; + const order_server_id = this.env.pos.validated_orders_name_server_id_map[orderName]; + await this.rpc({ + // CHANGE: pos.order -> sale.order + model: 'sale.order', + // END CHANGE + method: 'action_receipt_to_customer', + args: [[order_server_id], orderName, orderClient, ticketImage], + }); + } + }; + + Registries.Component.extend(ReceiptScreen, PSOReceiptScreen); + return PSOReceiptScreen; +}); diff --git a/pos_sale_order/templates/assets.xml b/pos_sale_order/templates/assets.xml index 0c926e8..7715040 100644 --- a/pos_sale_order/templates/assets.xml +++ b/pos_sale_order/templates/assets.xml @@ -19,6 +19,10 @@ type="text/javascript" src="/pos_sale_order/static/src/js/SaleOrderButton.js" /> +