From 5aaaf172eecd6d53a2b1cb4fb1bf88cf90d8d184 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 6 Jun 2014 11:44:51 +0530 Subject: [PATCH] added qty updating option multi-item selector: --- frappe/public/js/frappe/form/grid.js | 3 ++- frappe/public/js/frappe/form/link_selector.js | 23 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index 5c444b6415..daefe582ac 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -183,7 +183,7 @@ frappe.ui.form.Grid = Class.extend({ can_add_rows: function() { return this.is_editable() && !this.cannot_add_rows }, - set_multiple_add: function(link) { + set_multiple_add: function(link, qty) { var me = this; var link_field = frappe.meta.get_docfield(this.df.options, link); $(this.wrapper).find(".grid-add-multiple-rows") @@ -192,6 +192,7 @@ frappe.ui.form.Grid = Class.extend({ new frappe.ui.form.LinkSelector({ doctype: link_field.options, fieldname: link, + qty_fieldname: qty, target: me, txt: "" }); diff --git a/frappe/public/js/frappe/form/link_selector.js b/frappe/public/js/frappe/form/link_selector.js index ec98630936..2a0a15320e 100644 --- a/frappe/public/js/frappe/form/link_selector.js +++ b/frappe/public/js/frappe/form/link_selector.js @@ -83,9 +83,8 @@ frappe.ui.form.LinkSelector = Class.extend({ var value = $(this).attr("data-value"); var $link = this; if(me.target.is_grid) { - var d = me.target.add_new_row(); - frappe.model.set_value(d.doctype, d.name, me.fieldname, value); - show_alert(__("{0} added", [value])); + // set in grid + me.set_in_grid(value); } else { if(me.target.doctype) me.target.parse_validate_and_set_in_model(value); @@ -110,5 +109,23 @@ frappe.ui.form.LinkSelector = Class.extend({ }, btn: this.dialog.get_primary_btn() }); + }, + set_in_grid: function(value) { + var me = this, updated = false; + if(this.qty_fieldname) { + $.each(this.target.frm.doc[this.target.df.fieldname] || [], function(i, d) { + if(d[me.fieldname]===value) { + frappe.model.set_value(d.doctype, d.name, me.qty_fieldname, d[me.qty_fieldname] + 1); + show_alert(__("Added {0} ({1})", [value, d[me.qty_fieldname]])); + updated = true; + return false; + } + }); + } + if(!updated) { + var d = this.target.add_new_row(); + frappe.model.set_value(d.doctype, d.name, me.fieldname, value); + show_alert(__("{0} added", [value])); + } } })