Merge branch 'develop'
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index be4c111..3fe011f 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1 +1 @@
-__version__ = '4.9.2'
+__version__ = '4.9.3'
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js b/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
index 9174873..4ba4dff 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.js
@@ -213,10 +213,11 @@
return;
var update_jv_details = function(doc, r) {
- $.each(r.message, function(i, d) {
- var jvdetail = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
- jvdetail.account = d.account;
- jvdetail.balance = d.balance;
+ var jvdetail = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
+ $.each(r, function(i, d) {
+ var row = frappe.model.add_child(doc, "Journal Voucher Detail", "entries");
+ row.account = d.account;
+ row.balance = d.balance;
});
refresh_field("entries");
}
@@ -231,7 +232,7 @@
},
callback: function(r) {
if(r.message) {
- update_jv_details(doc, r);
+ update_jv_details(doc, [r.message]);
}
}
})
@@ -245,7 +246,7 @@
callback: function(r) {
frappe.model.clear_table(doc, "entries");
if(r.message) {
- update_jv_details(doc, r);
+ update_jv_details(doc, r.message);
}
cur_frm.set_value("is_opening", "Yes")
}
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index c6299ed..7a833f7 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -385,7 +385,7 @@
for d in self.get("entries"):
master_type, master_name = frappe.db.get_value("Account", d.account,
["master_type", "master_name"])
- if master_type == "Customer" and master_name:
+ if master_type == "Customer" and master_name and flt(d.debit) > 0:
super(JournalVoucher, self).check_credit_limit(d.account)
def get_balance(self):
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 0f8eca4..0a9adc0 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -175,7 +175,7 @@
_(self.doctype), self.name, item.get("item_code")))
def get_sl_entries(self, d, args):
- sl_dict = {
+ sl_dict = frappe._dict({
"item_code": d.get("item_code", None),
"warehouse": d.get("warehouse", None),
"posting_date": self.posting_date,
@@ -192,7 +192,7 @@
"serial_no": d.get("serial_no"),
"project": d.get("project_name"),
"is_cancelled": self.docstatus==2 and "Yes" or "No"
- }
+ })
sl_dict.update(args)
return sl_dict
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 9a70110..25be39d 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -4,7 +4,7 @@
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
app_icon = "icon-th"
app_color = "#e74c3c"
-app_version = "4.9.2"
+app_version = "4.9.3"
error_report_email = "support@erpnext.com"
diff --git a/erpnext/public/js/stock_analytics.js b/erpnext/public/js/stock_analytics.js
index a86d7ad..091836f 100644
--- a/erpnext/public/js/stock_analytics.js
+++ b/erpnext/public/js/stock_analytics.js
@@ -131,6 +131,7 @@
if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
var item = me.item_by_name[sl.item_code];
+ if(item.closing_qty_value==undefined) item.closing_qty_value = 0;
if(me.value_or_qty!="Quantity") {
var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 079b7fc..e87a233 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -52,11 +52,15 @@
else:
df.delete_key("__print_hide")
- toggle_print_hide(self.meta, "currency")
-
item_meta = frappe.get_meta("Delivery Note Item")
- for fieldname in ("rate", "amount", "price_list_rate", "discount_percentage"):
- toggle_print_hide(item_meta, fieldname)
+ print_hide_fields = {
+ "parent": ["grand_total_export", "rounded_total_export", "in_words_export", "currency", "net_total_export"],
+ "items": ["rate", "amount", "price_list_rate", "discount_percentage"]
+ }
+
+ for key, fieldname in print_hide_fields.items():
+ for f in fieldname:
+ toggle_print_hide(self.meta if key == "parent" else item_meta, f)
def get_portal_page(self):
return "shipment" if self.docstatus==1 else None
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index edbdb1a..eae1bf6 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -27,7 +27,7 @@
if sle.get('is_cancelled') == 'Yes':
sle['actual_qty'] = -flt(sle['actual_qty'])
- if sle.get("actual_qty") or sle.voucher_type=="Stock Reconciliation":
+ if sle.get("actual_qty") or sle.get("voucher_type")=="Stock Reconciliation":
sle_id = make_entry(sle)
args = sle.copy()
diff --git a/setup.py b/setup.py
index 4abed79..0e13a53 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
import os
-version = "4.9.2"
+version = "4.9.3"
with open("requirements.txt", "r") as f:
install_requires = f.readlines()