Изменить платежные линии pos odoo 8 - PullRequest
0 голосов
/ 30 апреля 2018

у кого-то есть идеи, как мне изменить строки оплаты в POS, я хочу добавить тип кредитной карты (как, например, many2one, я это сделал), но каждый раз, когда я добавляю строку, моя опция меняется на первую а также когда заказ завершен, не сохраняйте значение в pos.order -> Statement_id. введите описание изображения здесь

вот мой код:

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 голосов
/ 01 мая 2018

Вы также можете создать 2 журнала здесь. Один для визы, другой для мастера, если вы не хотите, чтобы это там. Другой способ - сохранить выбранную опцию в переменной, а затем распечатать эту переменную впереди.

Чтобы сохранить выбранную опцию, изначально присваивали идентификаторы каждому значению опции, а затем, во время проверки заказа, вы можете получить этот идентификатор этого поля, а из этого идентификатора вы можете получить свое значение. Таким образом, вы также можете сделать это.

...