diff options
| author | Pierre Masereel <pim@odoo.com> | 2019-09-17 07:02:51 +0000 |
|---|---|---|
| committer | Pierre Masereel <pim@odoo.com> | 2019-10-01 10:02:49 +0000 |
| commit | b213c9ee3c8204fef2ddb4c377c59d7e3c6a0464 (patch) | |
| tree | 6da43dfa9e2b02063d57fcccd77ae85d9316d35f /addons | |
| parent | 69dc97c6986dbe363ed8c9cd1934cfd56cee8814 (diff) | |
[FIX] point_of_sale, pos_restaurant: print bill with correct template
Until now, the ticket printed from the web or to the printer were
different because one was using the OrderReceipt template and removed
some fields, and the other was using the BillReceipt.
We are now using only the bill receipt, to avoid to maintain multiple
template showing the same thing.
TASK-ID: 47990
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/point_of_sale/static/src/xml/pos.xml | 2 | ||||
| -rw-r--r-- | addons/pos_restaurant/static/src/js/printbill.js | 31 | ||||
| -rw-r--r-- | addons/pos_restaurant/static/src/xml/printbill.xml | 133 |
3 files changed, 19 insertions, 147 deletions
diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml index d693c3f15cb..3a6353991ab 100644 --- a/addons/point_of_sale/static/src/xml/pos.xml +++ b/addons/point_of_sale/static/src/xml/pos.xml @@ -1003,7 +1003,7 @@ </t> <br/> - <div class="pos-receipt-amount"> + <div class="pos-receipt-amount receipt-change"> CHANGE <span t-esc='widget.format_currency_no_symbol(receipt.change)' class="pos-receipt-right-align"/> </div> diff --git a/addons/pos_restaurant/static/src/js/printbill.js b/addons/pos_restaurant/static/src/js/printbill.js index 233e25c757f..88966c72ec1 100644 --- a/addons/pos_restaurant/static/src/js/printbill.js +++ b/addons/pos_restaurant/static/src/js/printbill.js @@ -15,35 +15,30 @@ var BillScreenWidget = screens.ReceiptScreenWidget.extend({ click_back: function(){ this.gui.show_screen('products'); }, + get_receipt_render_env: function(){ + var render_env = this._super(); + render_env.receipt.bill = true; + return render_env; + }, render_receipt: function(){ this._super(); - this.$('.receipt-paymentlines').remove(); this.$('.receipt-change').remove(); }, - print_web: function(){ - window.print(); - }, }); gui.define_screen({name:'bill', widget: BillScreenWidget}); var PrintBillButton = screens.ActionButtonWidget.extend({ template: 'PrintBillButton', - print_html: function(){ - var order = this.pos.get('selectedOrder'); - if(order.get_orderlines().length > 0){ - var receipt = order.export_for_printing(); - receipt.bill = true; - this.pos.proxy.printer.print_receipt(QWeb.render('BillReceipt',{ - receipt: receipt, widget: this, pos: this.pos, order: order, - })); - } - }, button_click: function(){ - if (!this.pos.config.iface_print_via_proxy) { + var order = this.pos.get('selectedOrder'); + if(order.get_orderlines().length > 0) { this.gui.show_screen('bill'); } else { - this.print_html(); + this.gui.show_popup('error', { + 'title': _t('Nothing to Print'), + 'body': _t('There is no order lines'), + }); } }, }); @@ -51,12 +46,12 @@ var PrintBillButton = screens.ActionButtonWidget.extend({ screens.define_action_button({ 'name': 'print_bill', 'widget': PrintBillButton, - 'condition': function(){ + 'condition': function(){ return this.pos.config.iface_printbill; }, }); return { BillScreenWidget: BillScreenWidget, PrintBillButton: PrintBillButton, -} +}; }); diff --git a/addons/pos_restaurant/static/src/xml/printbill.xml b/addons/pos_restaurant/static/src/xml/printbill.xml index 3e64f249bf3..47fe78fd44f 100644 --- a/addons/pos_restaurant/static/src/xml/printbill.xml +++ b/addons/pos_restaurant/static/src/xml/printbill.xml @@ -33,135 +33,12 @@ </span> </t> - <t t-name="BillReceipt"> - <div class="pos-receipt"> - <t t-if='receipt.company.logo'> - <img class="pos-receipt-logo" t-att-src='receipt.company.logo' alt="Logo"/> - <br/> + <t t-extend="OrderReceipt"> + <t t-jquery='.pos-receipt-order-data' t-operation='append'> + <t t-if='receipt.bill === true'> + <div>PRO FORMA</div> </t> - <t t-if='!receipt.company.logo'> - <h1 class="pos-receipt-center-align"> - <t t-esc='receipt.company.name' /> - </h1> - <br/> - </t> - <div class="pos-receipt-contact"> - <t t-if='receipt.company.contact_address'> - <div><t t-esc='receipt.company.contact_address' /></div> - </t> - <t t-if='receipt.company.phone'> - <div>Tel:<t t-esc='receipt.company.phone' /></div> - </t> - <t t-if='receipt.company.vat'> - <div><t t-esc="receipt.company.vat_label or 'Tax ID'"/>:<t t-esc='receipt.company.vat' /></div> - </t> - <t t-if='receipt.company.email'> - <div><t t-esc='receipt.company.email' /></div> - </t> - <t t-if='receipt.company.website'> - <div><t t-esc='receipt.company.website' /></div> - </t> - <t t-if='receipt.header'> - <div><t t-esc='receipt.header' /></div> - </t> - <t t-if='receipt.cashier'> - <div class='cashier'> - <div>--------------------------------</div> - <div>Served by <t t-esc='receipt.cashier' /></div> - </div> - </t> - </div> - <br /><br /> - - <!-- Orderlines --> - - <div class='orderlines'> - <t t-foreach='receipt.orderlines' t-as='line'> - <t t-set='simple' t-value='line.discount === 0 and line.unit_name === "Units" and line.quantity === 1' /> - <t t-if='simple'> - <div> - <t t-esc='line.product_name' /> - <span t-esc='widget.format_currency_no_symbol(line.price_display)' class="pos-receipt-right-align"/> - </div> - </t> - <t t-if='!simple'> - <div><t t-esc='line.product_name' /></div> - <t t-if='line.discount !== 0'> - <div class="pos-receipt-left-padding">Discount: <t t-esc='line.discount'/>%</div> - </t> - <div class="pos-receipt-left-padding"> - <t t-esc='Math.round(line.quantity * 1000) / 1000' /> - <t t-if='line.unit_name !== "Units"'> - <t t-esc='line.unit_name' /> - </t> - x - <t t-esc='widget.format_currency_no_symbol(line.price)'/> - <span t-esc='widget.format_currency_no_symbol(line.price_display)' class="price-display pos-receipt-right-align"/> - </div> - </t> - </t> - </div> - - <!-- Subtotal --> - <t t-set='taxincluded' t-value='Math.abs(receipt.subtotal - receipt.total_with_tax) <= 0.000001' /> - <t t-if='!taxincluded'> - <div class="pos-receipt-right-align">--------</div> - <br/> - <div>Subtotal<span t-esc='widget.format_currency_no_symbol(receipt.subtotal)' class="pos-receipt-right-align"/></div> - <t t-foreach='receipt.tax_details' t-as='tax'> - <div> - <t t-esc='tax.name' /> - <span t-esc='widget.format_currency_no_symbol(tax.amount)' class="pos-receipt-right-align"/> - </div> - </t> - </t> - - <!-- Total --> - - <div class="pos-receipt-right-align">--------</div> - <br/> - <div class="pos-receipt-amount"> - TOTAL - <span t-esc='widget.format_currency_no_symbol(receipt.total_with_tax)' class="pos-receipt-right-align"/> - </div> - <br/><br/> - - <!-- Extra Payment Info --> - - <t t-if='receipt.total_discount'> - <div> - Discounts - <span t-esc='widget.format_currency_no_symbol(receipt.total_discount)' class="pos-receipt-right-align"/> - </div> - </t> - <t t-if='taxincluded'> - <t t-foreach='receipt.tax_details' t-as='tax'> - <div> - <t t-esc='tax.name' /> - <span t-esc='widget.format_currency_no_symbol(tax.amount)' class="pos-receipt-right-align"/> - </div> - </t> - </t> - - <!-- Footer --> - <t t-if='receipt.footer_html'> - <t t-raw='receipt.footer_html' class="pos-receipt-center-align"/> - </t> - - <t t-if='!receipt.footer_html and receipt.footer'> - <br/> - <t t-esc='receipt.footer' class="pos-receipt-center-align"/> - <br/> - <br/> - </t> - - <br/> - <div class="pos-receipt-order-data"> - <div><t t-esc='receipt.name' /></div> - <div><t t-esc='receipt.date.localestring' /></div> - </div> - - </div> + </t> </t> </templates> |
