Merge pull request #19266 from rohitwaghchaure/fixed_imponibileimporto_for_the_previous_row_total_develop

fix: ImponibileImporto not getting calculated properly
diff --git a/erpnext/stock/doctype/quick_stock_balance/__init__.py b/erpnext/stock/doctype/quick_stock_balance/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/stock/doctype/quick_stock_balance/__init__.py
diff --git a/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.js b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.js
new file mode 100644
index 0000000..a6f7343
--- /dev/null
+++ b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.js
@@ -0,0 +1,91 @@
+// Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Quick Stock Balance', {
+
+	setup: (frm) => {
+		frm.set_query('item', () => {
+			if (!(frm.doc.warehouse && frm.doc.date)) {
+				frm.trigger('check_warehouse_and_date');
+			}
+		});
+	},
+
+	make_custom_stock_report_button: (frm) => {
+		if (frm.doc.item) {
+			frm.add_custom_button(__('Stock Balance Report'), () => {
+				frappe.set_route('query-report', 'Stock Balance',
+					{ 'item_code': frm.doc.item, 'warehouse': frm.doc.warehouse });
+			}).addClass("btn-primary");
+		}
+	},
+
+	refresh: (frm) => {
+		frm.disable_save();
+		frm.trigger('make_custom_stock_report_button');
+	},
+
+	check_warehouse_and_date: (frm) => {
+		frappe.msgprint(__('Please enter Warehouse and Date'));
+		frm.doc.item = '';
+		frm.refresh();
+	},
+
+	warehouse: (frm) => {
+		if (frm.doc.item || frm.doc.item_barcode) {
+			frm.trigger('get_stock_and_item_details');
+		}
+	},
+
+	date: (frm) => {
+		if (frm.doc.item || frm.doc.item_barcode) {
+			frm.trigger('get_stock_and_item_details');
+		}
+	},
+
+	item: (frm) => {
+		frappe.flags.last_updated_element = 'item';
+		frm.trigger('get_stock_and_item_details');
+		frm.trigger('make_custom_stock_report_button');
+	},
+
+	item_barcode: (frm) => {
+		frappe.flags.last_updated_element = 'item_barcode';
+		frm.trigger('get_stock_and_item_details');
+		frm.trigger('make_custom_stock_report_button');
+	},
+
+	get_stock_and_item_details: (frm) => {
+		if (!(frm.doc.warehouse && frm.doc.date)) {
+			frm.trigger('check_warehouse_and_date');
+		}
+		else if (frm.doc.item || frm.doc.item_barcode) {
+			let filters = {
+				warehouse: frm.doc.warehouse,
+				date: frm.doc.date,
+			};
+			if (frappe.flags.last_updated_element === 'item') {
+				filters = { ...filters, ...{ item: frm.doc.item }};
+			}
+			else {
+				filters = { ...filters, ...{ barcode: frm.doc.item_barcode }};
+			}
+			frappe.call({
+				method: 'erpnext.stock.doctype.quick_stock_balance.quick_stock_balance.get_stock_item_details',
+				args: filters,
+				callback: (r) => {
+					if (r.message) {
+						let fields = ['item', 'qty', 'value', 'image'];
+						if (!r.message['barcodes'].includes(frm.doc.item_barcode)) {
+							frm.doc.item_barcode = '';
+							frm.refresh();
+						}
+						fields.forEach(function (field) {
+							frm.set_value(field, r.message[field]);
+						});
+					}
+				}
+			});
+		}
+	}
+});
diff --git a/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.json b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.json
new file mode 100644
index 0000000..34ae7e6
--- /dev/null
+++ b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.json
@@ -0,0 +1,137 @@
+{
+ "_comments": "[]",
+ "allow_copy": 1,
+ "creation": "2019-09-06 12:01:33.933063",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "warehouse",
+  "date",
+  "item_barcode",
+  "item",
+  "col_break",
+  "item_name",
+  "item_description",
+  "image",
+  "sec_break",
+  "qty",
+  "col_break2",
+  "value"
+ ],
+ "fields": [
+  {
+   "fieldname": "warehouse",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Warehouse",
+   "options": "Warehouse",
+   "reqd": 1
+  },
+  {
+   "fieldname": "item",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Item Code",
+   "options": "Item",
+   "reqd": 1
+  },
+  {
+   "fieldname": "col_break",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "item_barcode",
+   "fieldtype": "Data",
+   "label": "Item Barcode"
+  },
+  {
+   "fetch_from": "item.item_name",
+   "fieldname": "item_name",
+   "fieldtype": "Data",
+   "label": "Item Name",
+   "read_only": 1
+  },
+  {
+   "default": "  ",
+   "fetch_from": "item.description",
+   "fieldname": "item_description",
+   "fieldtype": "Small Text",
+   "label": "Item Description",
+   "read_only": 1
+  },
+  {
+   "fieldname": "sec_break",
+   "fieldtype": "Section Break"
+  },
+  {
+   "fieldname": "qty",
+   "fieldtype": "Float",
+   "label": "Available Quantity",
+   "read_only": 1
+  },
+  {
+   "fieldname": "col_break2",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "value",
+   "fieldtype": "Currency",
+   "label": "Stock Value",
+   "read_only": 1
+  },
+  {
+   "fieldname": "image",
+   "fieldtype": "Image",
+   "label": "Image View",
+   "options": "image",
+   "print_hide": 1
+  },
+  {
+   "default": "Today",
+   "fieldname": "date",
+   "fieldtype": "Date",
+   "in_list_view": 1,
+   "label": "Date",
+   "reqd": 1
+  }
+ ],
+ "hide_toolbar": 1,
+ "issingle": 1,
+ "modified": "2019-10-04 21:59:48.597497",
+ "modified_by": "Administrator",
+ "module": "Stock",
+ "name": "Quick Stock Balance",
+ "owner": "Administrator",
+ "permissions": [
+  {
+   "create": 1,
+   "delete": 1,
+   "read": 1,
+   "role": "System Manager",
+   "share": 1,
+   "write": 1
+  },
+  {
+   "create": 1,
+   "delete": 1,
+   "read": 1,
+   "role": "Stock User",
+   "share": 1,
+   "write": 1
+  },
+  {
+   "create": 1,
+   "delete": 1,
+   "read": 1,
+   "role": "Stock Manager",
+   "share": 1,
+   "write": 1
+  }
+ ],
+ "quick_entry": 1,
+ "show_name_in_global_search": 1,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.py b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.py
new file mode 100644
index 0000000..efa9519
--- /dev/null
+++ b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+from frappe.model.document import Document
+from erpnext.stock.utils import get_stock_balance, get_stock_value_on
+
+class QuickStockBalance(Document):
+	pass
+
+@frappe.whitelist()
+def get_stock_item_details(warehouse, date, item=None, barcode=None):
+	out = {}
+	if barcode:
+		out["item"] = frappe.db.get_value(
+			"Item Barcode", filters={"barcode": barcode}, fieldname=["parent"])
+		if not out["item"]:
+			frappe.throw(
+				_("Invalid Barcode. There is no Item attached to this barcode."))
+	else:
+		out["item"] = item
+
+	barcodes = frappe.db.get_values("Item Barcode", filters={"parent": out["item"]},
+		fieldname=["barcode"])
+
+	out["barcodes"] = [x[0] for x in barcodes]
+	out["qty"] = get_stock_balance(out["item"], warehouse, date)
+	out["value"] = get_stock_value_on(warehouse, date, out["item"])
+	out["image"] = frappe.db.get_value("Item",
+		filters={"name": out["item"]}, fieldname=["image"])
+	return out