Строка заказа повторно инициализируется в управлении таблицами

#javascript #python #odoo-13

Вопрос:

Я перенес свой модуль с версии 12 на версию 13, но все еще не могу понять концепцию двух функций (init_from_json) и (export_as_json). У меня есть модуль комбинированного пакета. Когда я впервые выбираю сделку с комбинированным пакетом, она отлично работает в строке заказа POS, но когда я меняю таблицу 1 на таблицу 2 и возвращаюсь к таблице 1 из таблицы 2, продукт сделки с комбинированным пакетом отображается как отдельный продукт или отдельный продукт, и он отлично работает в v12. Если я вижу это в консоли, строка заказа POS повторно инициализируется каждый раз, когда я нажимаю на таблицу POS. Я застрял на этом этапе. Ваш ответ будет оценен по достоинству. Вот мой код строки заказа.

 var _super_order_line = models.Orderline.prototype;
    models.Orderline = models.Orderline.extend({
        init_from_JSON: function(json) {
           _super_order_line.init_from_JSON.call(this, json);
           var self = this
           if(json.is_pack){
              this.pack_data = []
              _.each(json.combo_ids, function(item){
                 item = item[2]
                 self.pack_data.push({
                  'product_id':self.pos.db.get_product_by_id(item.product_id),
                   'qty':item.qty * json.qty,
                      });
                })
           }
           if(json.is_extra){
              this.order_menu = json.order_menu
           }
        },
        export_as_JSON: function(){
            var self = this;
            var own_line = [];
            var total_price = 0;
            var json = _super_order_line.export_as_JSON.apply(this,                                                                 arguments);
            console.log('EXPORT AS JSON: ', json);
            if(this.product.is_extra amp;amp; this.own_data){
                _.each(this.own_data, function(item){
                    own_line.push([0, 0, {'product_id':item.product_id.id,
                                          'name':item.product_id,
                                          'qty':self.get_quantity(),
                                          'price':item.price,
                                          'price_subtotal_incl':0.0,
                                          'price_subtotal':0.0,
                                        }]);
                    total_price  = item.price;
                });
                json.order_menu = this.order_menu
            }
            if (this.product.is_extra){
                json.price_unit = total_price;
            }
            json.price_unit = this.price;
            json.is_extra = this.product.is_extra;
            json.own_ids = this.product.is_extra ? own_line : [];
            var combo_line = []
            if(self.product.is_pack amp;amp; self.pack_data){
                console.log('self.pack_data', self.pack_data)
                _.each(self.pack_data, function(item){
                    combo_line.push([0, 0, {
                                            'product_id':item.product_id.id,
                                            'name':item.product_id,
                                            'qty':item.qty *                                                     self.get_quantity(),
                                            'price_subtotal_incl':0.0,
                                            'price_subtotal':0.0,
                                    }]);
                })
            }
            console.log(combo_line);
            json.is_pack = this.product.is_pack;
            json.combo_ids = this.product.is_pack ? combo_line : [];
            return json;
        },
    });