Merge pull request #2942 from sbktechnology/develop
Added Actual Batch Qty for item in DN & SI
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index a50d69e..1cb26fd 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -244,7 +244,7 @@
cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_normal, true);
}
- item_flds_stock = ['serial_no', 'batch_no', 'actual_qty', 'expense_account', 'warehouse']
+ item_flds_stock = ['serial_no', 'batch_no', 'actual_qty', 'actual_batch_qty', 'expense_account', 'warehouse']
cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_stock,
(cint(doc.update_stock)==1 ? true : false));
diff --git a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json
index 2baa06a..d545f37 100644
--- a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json
+++ b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json
@@ -341,6 +341,19 @@
},
{
"allow_on_submit": 1,
+ "fieldname": "actual_batch_qty",
+ "fieldtype": "Float",
+ "label": "Available Batch Qty at Warehouse",
+ "no_copy": 1,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1,
+ "print_width": "150px",
+ "read_only": 1,
+ "width": "150px"
+ },
+ {
+ "allow_on_submit": 1,
"fieldname": "actual_qty",
"fieldtype": "Float",
"label": "Available Qty at Warehouse",
@@ -439,7 +452,7 @@
],
"idx": 1,
"istable": 1,
- "modified": "2014-09-09 05:35:36.019576",
+ "modified": "2015-03-10 14:56:45.641026",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice Item",
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 5a7ed08..1c5df6e 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -215,6 +215,8 @@
},
warehouse: function(doc, cdt, cdn) {
+ var me = this;
+ this.batch_no(doc, cdt, cdn);
var item = frappe.get_doc(cdt, cdn);
if(item.item_code && item.warehouse) {
return this.frm.call({
@@ -476,6 +478,21 @@
}
},
+ batch_no: function(doc, cdt, cdn) {
+ var me = this;
+ var item = frappe.get_doc(cdt, cdn);
+ return this.frm.call({
+ method: "erpnext.stock.get_item_details.get_batch_qty",
+ child: item,
+ args: {
+ "batch_no": item.batch_no,
+ "warehouse": item.warehouse,
+ "item_code": item.item_code
+ },
+ "fieldname": "actual_batch_qty"
+ });
+ },
+
set_dynamic_labels: function() {
this._super();
this.set_sales_bom_help(this.frm.doc);
diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
index a5fe469..e2385f5 100644
--- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
+++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
@@ -316,6 +316,19 @@
},
{
"allow_on_submit": 1,
+ "fieldname": "actual_batch_qty",
+ "fieldtype": "Float",
+ "label": "Available Batch Qty at Warehouse",
+ "no_copy": 1,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1,
+ "print_width": "150px",
+ "read_only": 1,
+ "width": "150px"
+ },
+ {
+ "allow_on_submit": 1,
"fieldname": "actual_qty",
"fieldtype": "Float",
"label": "Available Qty at Warehouse",
@@ -426,7 +439,7 @@
],
"idx": 1,
"istable": 1,
- "modified": "2014-09-09 05:35:37.460939",
+ "modified": "2015-03-10 12:21:17.028911",
"modified_by": "Administrator",
"module": "Stock",
"name": "Delivery Note Item",
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 6f9839d..6d01c33 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -278,6 +278,15 @@
"qty": cint(args.qty)
}))
+def get_actual_batch_qty(batch_no,warehouse,item_code):
+ actual_batch_qty = 0
+ if batch_no:
+ actual_batch_qty = flt(frappe.db.sql("""select sum(actual_qty)
+ from `tabStock Ledger Entry`
+ where warehouse=%s and item_code=%s and batch_no=%s""",
+ (warehouse, item_code, batch_no))[0][0])
+ return actual_batch_qty
+
@frappe.whitelist()
def get_conversion_factor(item_code, uom):
return {"conversion_factor": frappe.db.get_value("UOM Conversion Detail",
@@ -294,6 +303,12 @@
["projected_qty", "actual_qty"], as_dict=True) or {}
@frappe.whitelist()
+def get_batch_qty(batch_no,warehouse,item_code):
+ actual_batch_qty = get_actual_batch_qty(batch_no,warehouse,item_code)
+ if batch_no:
+ return {'actual_batch_qty': actual_batch_qty}
+
+@frappe.whitelist()
def apply_price_list(args):
"""
args = {