修改付款行pos odoo 8

时间:2018-04-30 16:45:35

标签: javascript odoo-8

有人知道我应该如何修改POS中的支付线,我想添加一种信用卡(比如很多人,我做了)但是每次我添加一行我的选项改为第一并且当订单完成时不将值保存在pos.order - > statement_id。 enter image description here

这是我的代码:

function POS_CashRegister (instance, local) {
var pos = instance.point_of_sale;
var _t = instance.web._t;
var QWeb = instance.web.qweb;
var round_pr = instance.web.round_precision
const ParentOrder = pos.Order;

pos.PosModel.prototype.models.push({ //loaded model
model:  'pos.credit.card',
    fields: ['id', 'name'],
    domain: [['pos_active','=',true]],
    loaded: function(self,credit_cards){ //pass parameters
        self.credit_cards = credit_cards;
    },
});

pos.PaymentScreenWidget = pos.PaymentScreenWidget.extend({
    validate_order: function(options) {
        var self = this;
        var currentOrder = self.pos.get('selectedOrder');
        var plines = currentOrder.get('paymentLines').models;
        for (var i = 0; i < plines.length; i++) {
            if(plines[i].cashregister.journal_id[1] === 'Tarjeta de Credito (PEN)')
            {
                var value = plines[i].node.firstElementChild.nextElementSibling.nextElementSibling.firstElementChild.value;
                plines[i].set_credit_card(parseInt(value));
                //console.log(plines[i].node.firstElementChild.nextElementSibling.nextElementSibling.firstElementChild.value);
                //plines[i].node
            }

        }
        console.log(currentOrder);
        self._super(options);
    },
    render_paymentline: function (line) {
        var self = this;

        if(line.cashregister.journal_id[1] !== 'Tarjeta de Credito (PEN)'){
            if (line.cashregister.currency[1] !== 'USD') {
                return this._super(line);
            } else {
                var el_html  = openerp.qweb.render('Paymentline', {widget: this, line: line});
                el_html  = _.str.trim(el_html);

                var el_node  = document.createElement('tbody');

                el_node.innerHTML = el_html;
                el_node = el_node.childNodes[0];
                el_node.line = line;
                el_node.querySelector('.paymentline-delete')
                    .addEventListener('click', this.line_delete_handler);

                el_node.addEventListener('click', this.line_click_handler);
                var sourceInput = el_node.querySelector('.source-input');
                var convertedInput = el_node.querySelector('.converted-input');
                sourceInput.addEventListener('keyup', function (event) {
                    el_node.line.set_usd_amount(event.target.value);
                    convertedInput.value = el_node.line.get_amount_str();
                });
                line.node = el_node;
                return el_node;
            }
        }else {
            return this._super(line);
        }
    },
});

pos.Paymentline = pos.Paymentline.extend({
    initialize: function(attributes, options) {
        this.amount = 0;
        this.cashregister = options.cashregister;
        this.name = this.cashregister.journal_id[1];
        this.selected = false;
        this.credit_card = false;
        this.pos = options.pos;
    },
    set_credit_card: function(value){
        this.credit_card = value;
        this.trigger('change:credit_card',this);
    },
    get_credit_card: function(){
        return this.credit_card;
    },
    export_as_JSON: function(){
        return {
            name: instance.web.datetime_to_str(new Date()),
            statement_id: this.cashregister.id,
            account_id: this.cashregister.account_id[0],
            journal_id: this.cashregister.journal_id[0],
            amount: this.get_amount(),
            credit_card_id: this.get_credit_card(),
        };
    },
});

}

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您也可以在这里创建2种期刊。一个用于签证,另一个用于大师如果你不想那个下降那里。另一种方法是您必须将所选选项存储在变量中,然后在前面打印该变量。

要将所选选项最初分配的ID存储到选项的每个值,然后在验证订单时,您可以获得该字段的ID,并从该ID获取您的值。通过这种方式,你也可以做到这一点。