POS квитанция пользовательский экран Odoo 8 - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь перенести квитанцию ​​POS с V12 на V8:

Код: pos.js

openerp.pos_dotmatrix_printer = function(instance){

    console.log("log 0");
    'use strict';
    var models = instance.point_of_sale;
    var QWeb = instance.web.qweb;
    var _t = instance.web._t;
    console.log("1");

    models.ReceiptScreenWidget.include({
        render_receipt: function(){
            console.log("1.1");
            var self = this;
            this._super();
            if(self.pos.config.allow_dotmatrix_printer){
                var order = this.pos.get_order();
                $(".pos-receipt-container").html(QWeb.render('PosTicket2',{
                    widget:this,
                    order: order,
                    receipt: order.export_for_printing(),
                    orderlines: order.get_orderlines(),
                    paymentlines: order.get_paymentlines(),
                }));
            }
            else{
                this._super();
            }
        },
        renderElement: function(){
            var self = this;
            this._super();
            this.$('.text-receipt').click(function(){
                var order = self.pos.get_order();
                var p_data = QWeb.render('PosTicketFormat',{
                        widget:self,
                        order: order,
                        receipt: order.export_for_printing(),
                        orderlines: order.get_orderlines(),
                        paymentlines: order.get_paymentlines(),
                    })
                var url = self.pos.config.dotmatrix_printers_ip+"dotmatrix/print";
                if (!p_data){
                    alert('No data to print. Please click Update Printer Data');
                    return;
                }
                console.log(p_data);
                $.ajax({
                    type: "POST",
                    url: url,
                    data: {
                        printer_data : p_data
                    },
                    success: function(data) {
                        alert('Success');
                        console.log(data);
                    },
                    error: function(data) {
                        alert('Failed');
                        console.log(data);
                    },
                });
            });
        },
    });

    console.log("2");

    var Order = models.Order;
    models.Order = models.Order.extend({
        text_format: function(text,size){
            var text_name = text.toString();
            var text_len = size - text_name.length
            for(var i=0;i<text_len;i++){
                text_name+=" ";
            }
            return text_name;
        },
        text_format_left: function(text,size){
            var text_name = "";
            var text_len = size - text.toString().length
            for(var i=0;i<text_len;i++){
                text_name+=" ";
            }
            text_name = text_name +''+ text.toString();
            return text_name;
        },
    }); 
    console.log("3");
};

Внешние журналы, записываемые на консоли, например, внутри console.log("1.1"); это не так, что я здесь скучаю?

Код: pos.xml

<code><?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
    <t t-extend="ReceiptScreenWidget">
        <t t-jquery=".button.print" t-operation="replace">
            <t t-if='widget.pos.config.allow_dotmatrix_printer'>
                <div class="button text-receipt">
                    <i class='fa fa-print'></i> Print Receipt
                </div>
            </t>
            <t t-if='! widget.pos.config.allow_dotmatrix_printer'>
                <div class="button print">
                    <i class='fa fa-print'></i> Print Receipt
                </div>
            </t>
        </t>
    </t>
    <t t-name="PosTicketFormat">
                           SALE <t t-esc="order.name"/>
--------------------------------------------------------------------------------
           Customer:<t t-esc='order.text_format(receipt.company.name,20)'/>Order Date: <t t-esc="order.formatted_validation_date"/>
                Tel:<t t-esc='order.text_format(receipt.company.phone,20)'/>Served by: <t t-esc='receipt.cashier'/>


--------------------------------------------------------------------------------
Product                   Qty     Price Unit       Discount             Subtotal
--------------------------------------------------------------------------------
        <t t-foreach="receipt.orderlines" t-as="orderline">
            <t t-esc="order.text_format(orderline.product_name_wrapped[0],25)"/><t t-esc="order.text_format(orderline.quantity+' '+orderline.unit_name,15)"/><t t-esc="order.text_format(orderline.price,15)"/><t t-esc="order.text_format(orderline.discount+'%',5)"/><t t-esc='order.text_format_left(orderline.price_display,20)'/>
--------------------------------------------------------------------------------
        </t>

                                            Untaxed Amount:<t t-esc='order.text_format_left(widget.format_currency(order.get_total_without_tax()),20)' />
                                                     Taxes:<t t-esc='order.text_format_left(receipt.total_tax,20)' />
                                                     Total:<t t-esc='order.text_format_left(widget.format_currency(order.get_total_with_tax()),20)' />
        <t t-if="widget.pos.config.footnote">
            <t t-esc="widget.pos.config.footnote"/>
        </t>
    </t>
    <t t-name="PosTicket2">
        <style>
    .screen .centered-content {
        left: 0%;
        right: 0%;

    }
        </style>
        <pre style="font-size: 13px;margin-left: 230px;text-align: left;">
            <t t-call="PosTicketFormat"/>
        

вывод на V12:

enter image description here

Выход на V8 (неправильный вывод) Я хочу быть похожим на изображение выше:

enter image description here

Приведенный выше код не дает мне никакой ошибки на консоли или Odoo, но не работает. Любое решение моей проблемы?

Заранее спасибо.

...