#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;
},
});