[production order] [delivery note] fixes, pull
diff --git a/manufacturing/doctype/production_order/production_order.js b/manufacturing/doctype/production_order/production_order.js
index 4c41d94..77dce03 100644
--- a/manufacturing/doctype/production_order/production_order.js
+++ b/manufacturing/doctype/production_order/production_order.js
@@ -28,8 +28,8 @@
 	if(doc.docstatus===0 && !doc.__islocal) {
 		cur_frm.set_intro("Submit this Production Order for further processing.");
 	} else if(doc.docstatus===1) {
-		var percent = flt(doc.produced_qty) / doc.qty * 100;
-		cur_frm.dashboard.add_progress(cint(percent) + "% " + wn._("Complete"));
+		var percent = flt(doc.produced_qty) / flt(doc.qty) * 100;
+		cur_frm.dashboard.add_progress(cint(percent) + "% " + wn._("Complete"), percent);
 
 		if(doc.status === "Stopped") {
 			cur_frm.dashboard.set_headline_alert(wn._("Stopped"), "alert-danger", "icon-stop");
diff --git a/manufacturing/doctype/production_order/production_order.py b/manufacturing/doctype/production_order/production_order.py
index c76a87f..2d5b5fa 100644
--- a/manufacturing/doctype/production_order/production_order.py
+++ b/manufacturing/doctype/production_order/production_order.py
@@ -76,9 +76,9 @@
 			(self.doc.sales_order, self.doc.production_item))[0][0]
 		# total qty in SO
 		so_qty = flt(so_item_qty) + flt(dnpi_qty)
-		
+				
 		if ordered_qty_against_so > so_qty:
-			msgprint("""Total production order qty for item: %s against sales order: %s \
+			webnotes.msgprint("""Total production order qty for item: %s against sales order: %s \
 			 	will be %s, which is greater than sales order qty (%s). 
 				Please reduce qty or remove the item.""" %
 				(self.doc.production_item, self.doc.sales_order, 
diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js
index 8756e83..117e77e 100644
--- a/stock/doctype/delivery_note/delivery_note.js
+++ b/stock/doctype/delivery_note/delivery_note.js
@@ -46,15 +46,27 @@
 		var aii_enabled = cint(sys_defaults.auto_inventory_accounting)
 		cur_frm.fields_dict[cur_frm.cscript.fname].grid.set_column_disp("expense_account", aii_enabled);
 		cur_frm.fields_dict[cur_frm.cscript.fname].grid.set_column_disp("cost_center", aii_enabled);
+
+		if (this.frm.doc.docstatus===0) {
+			cur_frm.add_custom_button(wn._('From Sales Order'), 
+				function() {
+					wn.model.map_current_doc({
+						method: "selling.doctype.sales_order.sales_order.make_delivery_note",
+						source_doctype: "Sales Order",
+						get_query_filters: {
+							docstatus: 1,
+							status: ["!=", "Stopped"],
+							per_delivered: ["<", 99.99],
+							project_name: cur_frm.doc.project_name || undefined,
+							customer: cur_frm.doc.customer || undefined,
+							company: cur_frm.doc.company
+						}
+					})
+				});
+		}
+
 	}, 
 	
-	get_items: function() {
-		wn.model.map_current_doc({
-			method: "selling.doctype.sales_order.sales_order.make_delivery_note",
-			source_name: cur_frm.doc.sales_order_no,
-		})
-	},
-	
 	make_sales_invoice: function() {
 		wn.model.open_mapped_doc({
 			method: "stock.doctype.delivery_note.delivery_note.make_sales_invoice",
@@ -67,7 +79,11 @@
 			method: "stock.doctype.delivery_note.delivery_note.make_installation_note",
 			source_name: cur_frm.doc.name
 		});
-	}
+	},
+
+	tc_name: function() {
+		this.get_terms();
+	},
 	
 });
 
@@ -96,22 +112,6 @@
 		ORDER BY `tabProject`.name ASC LIMIT 50', {cond:cond});
 }
 
-
-// *************** Customized link query for SALES ORDER based on customer and currency***************************** 
-cur_frm.fields_dict['sales_order_no'].get_query = function(doc) {
-	doc = locals[this.doctype][this.docname];
-	var cond = '';
-	
-	if(doc.customer) {
-		cond = '`tabSales Order`.customer = "'+doc.customer+'" and';
-	}
-
-	if(doc.project_name){
-		cond += '`tabSales Order`.project_name ="'+doc.project_name+'"';
-	}
-	return repl('SELECT DISTINCT `tabSales Order`.`name` FROM `tabSales Order` WHERE `tabSales Order`.company = "%(company)s" and `tabSales Order`.`docstatus` = 1 and `tabSales Order`.`status` != "Stopped" and ifnull(`tabSales Order`.per_delivered,0) < 99.99 and %(cond)s `tabSales Order`.%(key)s LIKE "%s" ORDER BY `tabSales Order`.`name` DESC LIMIT 50', {company:doc.company,cond:cond})
-}
-
 cur_frm.cscript.serial_no = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	if (d.serial_no) {
diff --git a/stock/doctype/delivery_note/delivery_note.txt b/stock/doctype/delivery_note/delivery_note.txt
index 3b032ae..1d6072e 100644
--- a/stock/doctype/delivery_note/delivery_note.txt
+++ b/stock/doctype/delivery_note/delivery_note.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-05-24 19:29:09", 
   "docstatus": 0, 
-  "modified": "2013-07-06 19:04:46", 
+  "modified": "2013-07-08 16:34:21", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -34,6 +34,7 @@
   "parent": "Delivery Note", 
   "parentfield": "permissions", 
   "parenttype": "DocType", 
+  "permlevel": 0, 
   "read": 1, 
   "report": 1
  }, 
@@ -375,42 +376,6 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "section_break0", 
-  "fieldtype": "Section Break", 
-  "read_only": 0
- }, 
- {
-  "description": "You can make a delivery note from multiple sales orders. Select sales orders one by one and click on the button below.", 
-  "doctype": "DocField", 
-  "fieldname": "sales_order_no", 
-  "fieldtype": "Link", 
-  "in_list_view": 1, 
-  "label": "Sales Order No", 
-  "no_copy": 0, 
-  "oldfieldname": "sales_order_no", 
-  "oldfieldtype": "Link", 
-  "options": "Sales Order", 
-  "print_hide": 0, 
-  "read_only": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "get_items", 
-  "fieldtype": "Button", 
-  "hidden": 0, 
-  "label": "Get Items", 
-  "oldfieldtype": "Button", 
-  "print_hide": 1, 
-  "read_only": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "col_break24", 
-  "fieldtype": "Column Break", 
-  "read_only": 0
- }, 
- {
-  "doctype": "DocField", 
   "fieldname": "net_total_export", 
   "fieldtype": "Currency", 
   "label": "Net Total (Export)", 
@@ -666,25 +631,6 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "column_break_59", 
-  "fieldtype": "Column Break"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "get_terms", 
-  "fieldtype": "Button", 
-  "label": "Get Terms and Conditions", 
-  "oldfieldtype": "Button", 
-  "print_hide": 1, 
-  "read_only": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "section_break_61", 
-  "fieldtype": "Section Break"
- }, 
- {
-  "doctype": "DocField", 
   "fieldname": "terms", 
   "fieldtype": "Text Editor", 
   "label": "Terms and Conditions Details", 
@@ -1125,83 +1071,39 @@
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
-  "permlevel": 0, 
   "role": "Material User", 
   "submit": 1, 
   "write": 1
  }, 
  {
-  "amend": 0, 
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "role": "Material User", 
-  "submit": 0, 
-  "write": 0
- }, 
- {
   "amend": 1, 
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
-  "permlevel": 0, 
   "role": "Material Manager", 
   "submit": 1, 
   "write": 1
  }, 
  {
-  "amend": 0, 
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "role": "Material Manager", 
-  "submit": 0, 
-  "write": 0
- }, 
- {
   "amend": 1, 
   "cancel": 1, 
   "create": 1, 
   "doctype": "DocPerm", 
-  "permlevel": 0, 
   "role": "Sales User", 
   "submit": 1, 
   "write": 1
  }, 
  {
-  "amend": 0, 
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "role": "Sales User", 
-  "submit": 0, 
-  "write": 0
- }, 
- {
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 0, 
   "role": "Accounts User", 
   "submit": 0, 
   "write": 0
  }, 
  {
-  "amend": 0, 
-  "cancel": 0, 
-  "create": 0, 
-  "doctype": "DocPerm", 
-  "permlevel": 1, 
-  "role": "Accounts User", 
-  "submit": 0
- }, 
- {
   "doctype": "DocPerm", 
   "match": "customer_name", 
-  "permlevel": 0, 
   "role": "Customer"
  }
 ]
\ No newline at end of file
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 4e64089..c8babff 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -464,16 +464,23 @@
 					item_dict = self.get_pending_raw_materials(pro_obj)
 				else:
 					item_dict = self.get_bom_raw_materials(self.doc.fg_completed_qty)
+					for item in item_dict.values():
+						item["from_warehouse"] = pro_obj.doc.wip_warehouse
+						item["to_warehouse"] = ""
 
 				# add raw materials to Stock Entry Detail table
 				self.add_to_stock_entry_detail(item_dict)
 					
 			# add finished good item to Stock Entry Detail table -- along with bom_no
 			if self.doc.production_order and self.doc.purpose == "Manufacture/Repack":
-				self.doc.to_warehouse = pro_obj.doc.fg_warehouse
 				self.add_to_stock_entry_detail({
-					cstr(pro_obj.doc.production_item): 
-						[self.doc.fg_completed_qty, pro_obj.doc.description, pro_obj.doc.stock_uom]
+					cstr(pro_obj.doc.production_item): {
+						"to_warehouse": pro_obj.doc.fg_warehouse,
+						"from_warehouse": "",
+						"qty": self.doc.fg_completed_qty,
+						"description": pro_obj.doc.description,
+						"stock_uom": pro_obj.doc.stock_uom
+					}
 				}, bom_no=pro_obj.doc.bom_no)
 				
 			elif self.doc.purpose in ["Material Receipt", "Manufacture/Repack"]: