Merge branch 'develop'
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 5ba4160..7a36695 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
import frappe
-__version__ = '8.3.3'
+__version__ = '8.3.4'
def get_default_company(user=None):
'''Get default company for user'''
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 282425d..2dd4e7a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -803,9 +803,10 @@
continue
for serial_no in item.serial_no.split("\n"):
- sno = frappe.get_doc('Serial No', serial_no)
- sno.sales_invoice = invoice
- sno.db_update()
+ if serial_no and frappe.db.exists('Serial No', serial_no):
+ sno = frappe.get_doc('Serial No', serial_no)
+ sno.sales_invoice = invoice
+ sno.db_update()
def validate_serial_numbers(self):
"""
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index b2f3212..a988112 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -151,26 +151,28 @@
},
production_item: function(frm) {
- frappe.call({
- method: "erpnext.manufacturing.doctype.production_order.production_order.get_item_details",
- args: {
- item: frm.doc.production_item,
- project: frm.doc.project
- },
- callback: function(r) {
- if(r.message) {
- erpnext.in_production_item_onchange = true;
- $.each(["description", "stock_uom", "project", "bom_no"], function(i, field) {
- frm.set_value(field, r.message[field]);
- });
+ if (frm.doc.production_item) {
+ frappe.call({
+ method: "erpnext.manufacturing.doctype.production_order.production_order.get_item_details",
+ args: {
+ item: frm.doc.production_item,
+ project: frm.doc.project
+ },
+ callback: function(r) {
+ if(r.message) {
+ erpnext.in_production_item_onchange = true;
+ $.each(["description", "stock_uom", "project", "bom_no"], function(i, field) {
+ frm.set_value(field, r.message[field]);
+ });
- if(r.message["set_scrap_wh_mandatory"]){
- frm.toggle_reqd("scrap_warehouse", true);
+ if(r.message["set_scrap_wh_mandatory"]){
+ frm.toggle_reqd("scrap_warehouse", true);
+ }
+ erpnext.in_production_item_onchange = false;
}
- erpnext.in_production_item_onchange = false;
}
- }
- });
+ });
+ }
},
project: function(frm) {
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/erpnext/selling/doctype/installation_note/installation_note.js
index ab35574..9f0c050 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.js
+++ b/erpnext/selling/doctype/installation_note/installation_note.js
@@ -30,12 +30,8 @@
setup_queries: function() {
var me = this;
- this.frm.set_query("customer_address", function() {
- return {
- filters: {'customer': me.frm.doc.customer }
- }
- });
-
+ frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
+ frm.set_query('customer_address', erpnext.queries.address_query);
this.frm.set_query('contact_person', erpnext.queries.contact_query);
this.frm.set_query("customer", function() {