diff --git a/addons/pos_restaurant/static/src/js/multiprint.js b/addons/pos_restaurant/static/src/js/multiprint.js index 17e7c1b27bcfefd05f425979a6197de8b06c7bba..1178a5e147e1b57528a5b5322c5f5c7ef4b09c89 100644 --- a/addons/pos_restaurant/static/src/js/multiprint.js +++ b/addons/pos_restaurant/static/src/js/multiprint.js @@ -122,6 +122,16 @@ models.Orderline = models.Orderline.extend({ return '' + this.id; } }, + getProductResumeKey: function(){ + return this.get_product().id + " - " + this.get_full_product_name(); + }, + getLineResume: function(){ + return { + pid: this.get_product().id, + product_name_wrapped: this.generate_wrapped_product_name(), + qties: {}, + }; + }, }); var _super_order = models.Order.prototype; @@ -134,20 +144,23 @@ models.Order = models.Order.extend({ } var qty = Number(line.get_quantity()); var note = line.get_note(); - var product_id = line.get_product().id; - var product_name = line.get_full_product_name(); - var p_key = product_id + " - " + product_name; - var product_resume = p_key in resume ? resume[p_key] : { - pid: product_id, - product_name_wrapped: line.generate_wrapped_product_name(), - qties: {}, - }; + const p_key = line.getProductResumeKey() + let product_resume = p_key in resume ? resume[p_key] : line.getLineResume(); if (note in product_resume['qties']) product_resume['qties'][note] += qty; else product_resume['qties'][note] = qty; resume[p_key] = product_resume; }); return resume; }, + getResumeInfo: function(pid, curr, note, qty){ + return { + 'id': pid, + 'name': this.pos.db.get_product_by_id(pid).display_name, + 'name_wrapped': curr.product_name_wrapped, + 'note': note, + 'qty': qty, + } + }, saveChanges: function(){ this.saved_resume = this.build_line_resume(); this.orderlines.each(function(line){ @@ -176,31 +189,12 @@ models.Order = models.Order.extend({ var old = old_res[p_key] || {}; var pid = curr.pid; var found = p_key in old_res && note in old_res[p_key]['qties']; - if (!found) { - add.push({ - 'id': pid, - 'name': this.pos.db.get_product_by_id(pid).display_name, - 'name_wrapped': curr.product_name_wrapped, - 'note': note, - 'qty': curr['qties'][note], - }); + add.push(this.getResumeInfo(pid, curr, note, curr['qties'][note])); } else if (old['qties'][note] < curr['qties'][note]) { - add.push({ - 'id': pid, - 'name': this.pos.db.get_product_by_id(pid).display_name, - 'name_wrapped': curr.product_name_wrapped, - 'note': note, - 'qty': curr['qties'][note] - old['qties'][note], - }); + add.push(this.getResumeInfo(pid, curr, note, curr['qties'][note] - old['qties'][note])); } else if (old['qties'][note] > curr['qties'][note]) { - rem.push({ - 'id': pid, - 'name': this.pos.db.get_product_by_id(pid).display_name, - 'name_wrapped': curr.product_name_wrapped, - 'note': note, - 'qty': old['qties'][note] - curr['qties'][note], - }); + rem.push(this.getResumeInfo(pid, curr, note, old['qties'][note] - curr['qties'][note])); } } } @@ -211,13 +205,7 @@ models.Order = models.Order.extend({ if (!found) { var old = old_res[p_key]; var pid = old.pid; - rem.push({ - 'id': pid, - 'name': this.pos.db.get_product_by_id(pid).display_name, - 'name_wrapped': old.product_name_wrapped, - 'note': note, - 'qty': old['qties'][note], - }); + rem.push(this.getResumeInfo(pid, old, note, old['qties'][note])); } } }