[cleanup] [stock entry] [sales order]
diff --git a/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt b/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
index ce45824..8c11d50 100644
--- a/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
+++ b/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
@@ -1,122 +1,122 @@
 [
  {
-  "owner": "Administrator", 
-  "docstatus": 0, 
   "creation": "2010-08-08 17:09:35", 
+  "docstatus": 0, 
+  "modified": "2013-07-03 18:00:40", 
   "modified_by": "Administrator", 
-  "modified": "2012-04-03 12:49:50"
+  "owner": "Administrator"
  }, 
  {
-  "name": "__common__", 
-  "parent": "Purchase Order-Purchase Invoice", 
   "doctype": "Table Mapper Detail", 
-  "parenttype": "DocType Mapper", 
-  "parentfield": "table_mapper_details"
- }, 
- {
   "name": "__common__", 
   "parent": "Purchase Order-Purchase Invoice", 
-  "doctype": "Field Mapper Detail", 
-  "parenttype": "DocType Mapper", 
-  "parentfield": "field_mapper_details"
+  "parentfield": "table_mapper_details", 
+  "parenttype": "DocType Mapper"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
   "name": "__common__", 
-  "to_doctype": "Purchase Invoice", 
-  "module": "Accounts", 
+  "parent": "Purchase Order-Purchase Invoice", 
+  "parentfield": "field_mapper_details", 
+  "parenttype": "DocType Mapper"
+ }, 
+ {
   "doctype": "DocType Mapper", 
+  "from_doctype": "Purchase Order", 
+  "module": "Accounts", 
+  "name": "__common__", 
   "ref_doc_submitted": 1, 
-  "from_doctype": "Purchase Order"
+  "to_doctype": "Purchase Invoice"
  }, 
  {
-  "name": "Purchase Order-Purchase Invoice", 
-  "doctype": "DocType Mapper"
+  "doctype": "DocType Mapper", 
+  "name": "Purchase Order-Purchase Invoice"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / obj.purchase_rate", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "qty", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: flt(obj.qty) - flt(obj.billed_qty)"
+  "to_field": "qty"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "purchase_rate", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "rate", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "purchase_rate"
+  "to_field": "rate"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "eval: flt(obj.amount) - flt(obj.billed_amt)", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "amount", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.qty) - flt(obj.billed_qty)) * flt(obj.purchase_rate)"
+  "to_field": "amount"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / flt(obj.conversion_rate)", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "import_amount", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.qty) - flt(obj.billed_qty)) * flt(obj.import_rate)"
+  "to_field": "import_amount"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "parent", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "purchase_order", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "parent"
+  "to_field": "purchase_order"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "name", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "po_detail", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "name"
+  "to_field": "po_detail"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "naming_series", 
   "map": "No", 
   "match_id": 0, 
-  "to_field": "naming_series", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "naming_series"
+  "to_field": "naming_series"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "total_tax", 
   "map": "Yes", 
   "match_id": 0, 
-  "to_field": "total_tax", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "total_tax"
+  "to_field": "total_tax"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "conversion_rate", 
   "map": "Yes", 
   "match_id": 0, 
-  "to_field": "conversion_rate", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "conversion_rate"
+  "to_field": "conversion_rate"
  }, 
  {
-  "match_id": 0, 
   "doctype": "Table Mapper Detail", 
   "from_table": "Purchase Order", 
+  "match_id": 0, 
   "to_table": "Purchase Invoice", 
   "validation_logic": "docstatus =1"
  }, 
  {
-  "match_id": 1, 
-  "to_field": "entries", 
   "doctype": "Table Mapper Detail", 
   "from_field": "po_details", 
   "from_table": "Purchase Order Item", 
+  "match_id": 1, 
+  "to_field": "entries", 
   "to_table": "Purchase Invoice Item", 
-  "validation_logic": "ifnull(billed_qty,0)  < qty and docstatus = 1"
+  "validation_logic": "ifnull(billed_amt,0)  < amount and docstatus = 1"
  }, 
  {
-  "match_id": 2, 
-  "to_field": "purchase_tax_details", 
   "doctype": "Table Mapper Detail", 
   "from_field": "purchase_tax_details", 
   "from_table": "Purchase Taxes and Charges", 
+  "match_id": 2, 
+  "to_field": "purchase_tax_details", 
   "to_table": "Purchase Taxes and Charges", 
   "validation_logic": "docstatus =1"
  }
diff --git a/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt b/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
index f6c87e2..99c74ac 100644
--- a/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
+++ b/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
@@ -1,143 +1,143 @@
 [
  {
-  "owner": "Administrator", 
-  "docstatus": 0, 
   "creation": "2010-08-08 17:09:35", 
+  "docstatus": 0, 
+  "modified": "2013-07-03 17:56:30", 
   "modified_by": "Administrator", 
-  "modified": "2012-04-03 12:49:50"
+  "owner": "Administrator"
  }, 
  {
-  "name": "__common__", 
-  "parent": "Purchase Receipt-Purchase Invoice", 
   "doctype": "Table Mapper Detail", 
-  "parenttype": "DocType Mapper", 
-  "parentfield": "table_mapper_details"
- }, 
- {
   "name": "__common__", 
   "parent": "Purchase Receipt-Purchase Invoice", 
-  "doctype": "Field Mapper Detail", 
-  "parenttype": "DocType Mapper", 
-  "parentfield": "field_mapper_details"
+  "parentfield": "table_mapper_details", 
+  "parenttype": "DocType Mapper"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
   "name": "__common__", 
-  "to_doctype": "Purchase Invoice", 
-  "module": "Accounts", 
+  "parent": "Purchase Receipt-Purchase Invoice", 
+  "parentfield": "field_mapper_details", 
+  "parenttype": "DocType Mapper"
+ }, 
+ {
   "doctype": "DocType Mapper", 
+  "from_doctype": "Purchase Receipt", 
+  "module": "Accounts", 
+  "name": "__common__", 
   "ref_doc_submitted": 1, 
-  "from_doctype": "Purchase Receipt"
+  "to_doctype": "Purchase Invoice"
  }, 
  {
-  "name": "Purchase Receipt-Purchase Invoice", 
-  "doctype": "DocType Mapper"
+  "doctype": "DocType Mapper", 
+  "name": "Purchase Receipt-Purchase Invoice"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / obj.purchase_rate", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "qty", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: flt(obj.qty) - flt(obj.billed_qty)"
+  "to_field": "qty"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "purchase_rate", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "rate", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "purchase_rate"
+  "to_field": "rate"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "eval: flt(obj.amount) - flt(obj.billed_amt)", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "amount", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.qty) - flt(obj.billed_qty)) * flt(obj.purchase_rate)"
+  "to_field": "amount"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "eval: (flt(obj.amount) - flt(obj.billed_amt)) / flt(obj.conversion_rate)", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "import_amount", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "eval: (flt(obj.qty) - flt(obj.billed_qty)) * flt(obj.import_rate)"
+  "to_field": "import_amount"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "parent", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "purchase_receipt", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "parent"
+  "to_field": "purchase_receipt"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "prevdoc_docname", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "purchase_order", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "prevdoc_docname"
+  "to_field": "purchase_order"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "name", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "pr_detail", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "name"
+  "to_field": "pr_detail"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "prevdoc_detail_docname", 
   "map": "Yes", 
   "match_id": 1, 
-  "to_field": "po_detail", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "prevdoc_detail_docname"
+  "to_field": "po_detail"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "naming_series", 
   "map": "No", 
   "match_id": 0, 
-  "to_field": "naming_series", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "naming_series"
+  "to_field": "naming_series"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "net_total", 
   "map": "Yes", 
   "match_id": 0, 
-  "to_field": "net_total", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "net_total"
+  "to_field": "net_total"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "grand_total", 
   "map": "Yes", 
   "match_id": 0, 
-  "to_field": "grand_total", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "grand_total"
+  "to_field": "grand_total"
  }, 
  {
+  "doctype": "Field Mapper Detail", 
+  "from_field": "total_tax", 
   "map": "Yes", 
   "match_id": 0, 
-  "to_field": "total_tax", 
-  "doctype": "Field Mapper Detail", 
-  "from_field": "total_tax"
+  "to_field": "total_tax"
  }, 
  {
-  "match_id": 1, 
-  "to_field": "entries", 
   "doctype": "Table Mapper Detail", 
   "from_field": "purchase_receipt_details", 
   "from_table": "Purchase Receipt Item", 
+  "match_id": 1, 
+  "to_field": "entries", 
   "to_table": "Purchase Invoice Item", 
-  "validation_logic": "ifnull(billed_qty,0)  < qty"
+  "validation_logic": "ifnull(billed_amt,0)  < amount"
  }, 
  {
-  "match_id": 0, 
   "doctype": "Table Mapper Detail", 
   "from_table": "Purchase Receipt", 
+  "match_id": 0, 
   "to_table": "Purchase Invoice", 
   "validation_logic": "docstatus=1"
  }, 
  {
-  "match_id": 2, 
-  "to_field": "purchase_tax_details", 
   "doctype": "Table Mapper Detail", 
   "from_field": "purchase_tax_details", 
   "from_table": "Purchase Taxes and Charges", 
+  "match_id": 2, 
+  "to_field": "purchase_tax_details", 
   "to_table": "Purchase Taxes and Charges", 
   "validation_logic": "docstatus=1"
  }
diff --git a/manufacturing/doctype/production_order/production_order.js b/manufacturing/doctype/production_order/production_order.js
index 5243026..4c41d94 100644
--- a/manufacturing/doctype/production_order/production_order.js
+++ b/manufacturing/doctype/production_order/production_order.js
@@ -20,20 +20,19 @@
 }
 
 cur_frm.cscript.refresh = function(doc, dt, dn) {
+	cur_frm.dashboard.reset();
 	erpnext.hide_naming_series();
 	cur_frm.set_intro("");
 	cfn_set_fields(doc, dt, dn);
+
 	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"));
+
 		if(doc.status === "Stopped") {
-			cur_frm.set_intro("This Production Order is Stopped.");
-		} else {
-			if(doc.produced_qty == doc.qty) {
-				cur_frm.set_intro("This Production Order is Completed.");
-			} else {
-				cur_frm.set_intro("This Production Order is in progress.");
-			}
+			cur_frm.dashboard.set_headline_alert(wn._("Stopped"), "alert-danger", "icon-stop");
 		}
 	}
 }
@@ -88,6 +87,12 @@
 	var se = wn.model.get_new_doc("Stock Entry");
 	se.purpose = purpose;
 	se.production_order = doc.name;
+	if(purpose==="Material Transfer") {
+		se.to_warehouse = doc.wip_warehouse;
+	} else {
+		se.from_warehouse = doc.wip_warehouse;
+		se.to_warehouse = doc.fg_warehouse;
+	}
 	se.company = doc.company;
 	se.fg_completed_qty = doc.qty - doc.produced_qty;
 	se.bom_no = doc.bom_no;
diff --git a/manufacturing/doctype/production_order/production_order.txt b/manufacturing/doctype/production_order/production_order.txt
index 38a98fe..08123e8 100644
--- a/manufacturing/doctype/production_order/production_order.txt
+++ b/manufacturing/doctype/production_order/production_order.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:16", 
   "docstatus": 0, 
-  "modified": "2013-07-02 11:56:54", 
+  "modified": "2013-07-03 17:00:29", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -43,6 +43,13 @@
   "name": "Production Order"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "item", 
+  "fieldtype": "Section Break", 
+  "label": "Item", 
+  "options": "icon-gift"
+ }, 
+ {
   "default": "PRO", 
   "doctype": "DocField", 
   "fieldname": "naming_series", 
@@ -52,22 +59,6 @@
   "reqd": 1
  }, 
  {
-  "depends_on": "eval:!doc.__islocal", 
-  "doctype": "DocField", 
-  "fieldname": "status", 
-  "fieldtype": "Select", 
-  "in_filter": 1, 
-  "in_list_view": 1, 
-  "label": "Status", 
-  "no_copy": 1, 
-  "oldfieldname": "status", 
-  "oldfieldtype": "Select", 
-  "options": "\nDraft\nSubmitted\nStopped\nIn Process\nCompleted\nCancelled", 
-  "read_only": 1, 
-  "reqd": 1, 
-  "search_index": 1
- }, 
- {
   "doctype": "DocField", 
   "fieldname": "production_item", 
   "fieldtype": "Link", 
@@ -95,24 +86,12 @@
   "reqd": 1
  }, 
  {
-  "depends_on": "production_item", 
-  "description": "Manufactured quantity will be updated in this warehouse", 
+  "default": "1", 
+  "description": "If checked, BOM for sub-assembly items will be considered for getting raw materials. Otherwise, all sub-assembly items will be treated as a raw material.", 
   "doctype": "DocField", 
-  "fieldname": "fg_warehouse", 
-  "fieldtype": "Link", 
-  "in_list_view": 1, 
-  "label": "For Warehouse", 
-  "options": "Warehouse", 
-  "read_only": 0, 
-  "reqd": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "wip_warehouse", 
-  "fieldtype": "Link", 
-  "label": "Work-in-Progress Warehouse", 
-  "options": "Warehouse", 
-  "reqd": 1
+  "fieldname": "use_multi_level_bom", 
+  "fieldtype": "Check", 
+  "label": "Use Multi-Level BOM"
  }, 
  {
   "doctype": "DocField", 
@@ -123,6 +102,15 @@
   "width": "50%"
  }, 
  {
+  "description": "Manufacture against Sales Order", 
+  "doctype": "DocField", 
+  "fieldname": "sales_order", 
+  "fieldtype": "Link", 
+  "label": "Sales Order", 
+  "options": "Sales Order", 
+  "read_only": 0
+ }, 
+ {
   "depends_on": "production_item", 
   "doctype": "DocField", 
   "fieldname": "qty", 
@@ -147,38 +135,60 @@
   "read_only": 1
  }, 
  {
-  "depends_on": "production_item", 
   "doctype": "DocField", 
-  "fieldname": "stock_uom", 
-  "fieldtype": "Data", 
-  "label": "Stock UOM", 
-  "oldfieldname": "stock_uom", 
-  "oldfieldtype": "Data", 
-  "read_only": 1
+  "fieldname": "warehouses", 
+  "fieldtype": "Section Break", 
+  "label": "Warehouses", 
+  "options": "icon-building"
  }, 
  {
-  "default": "1", 
-  "description": "If checked, BOM for sub-assembly items will be considered for getting raw materials. Otherwise, all sub-assembly items will be treated as a raw material.", 
+  "depends_on": "production_item", 
+  "description": "Manufactured quantity will be updated in this warehouse", 
   "doctype": "DocField", 
-  "fieldname": "use_multi_level_bom", 
-  "fieldtype": "Check", 
-  "label": "Use Multi-Level BOM"
+  "fieldname": "fg_warehouse", 
+  "fieldtype": "Link", 
+  "in_list_view": 1, 
+  "label": "For Warehouse", 
+  "options": "Warehouse", 
+  "read_only": 0, 
+  "reqd": 1
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "column_break_12", 
+  "fieldtype": "Column Break"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "wip_warehouse", 
+  "fieldtype": "Link", 
+  "label": "Work-in-Progress Warehouse", 
+  "options": "Warehouse", 
+  "reqd": 1
  }, 
  {
   "doctype": "DocField", 
   "fieldname": "more_info", 
   "fieldtype": "Section Break", 
   "label": "More Info", 
+  "options": "icon-file-text", 
   "read_only": 0
  }, 
  {
-  "description": "Manufacture against Sales Order", 
+  "depends_on": "eval:!doc.__islocal", 
   "doctype": "DocField", 
-  "fieldname": "sales_order", 
-  "fieldtype": "Link", 
-  "label": "Sales Order", 
-  "options": "Sales Order", 
-  "read_only": 0
+  "fieldname": "status", 
+  "fieldtype": "Select", 
+  "in_filter": 1, 
+  "in_list_view": 1, 
+  "label": "Status", 
+  "no_copy": 1, 
+  "oldfieldname": "status", 
+  "oldfieldtype": "Select", 
+  "options": "\nDraft\nSubmitted\nStopped\nIn Process\nCompleted\nCancelled", 
+  "read_only": 1, 
+  "reqd": 1, 
+  "search_index": 1
  }, 
  {
   "doctype": "DocField", 
@@ -206,6 +216,16 @@
   "width": "50%"
  }, 
  {
+  "depends_on": "production_item", 
+  "doctype": "DocField", 
+  "fieldname": "stock_uom", 
+  "fieldtype": "Data", 
+  "label": "Stock UOM", 
+  "oldfieldname": "stock_uom", 
+  "oldfieldtype": "Data", 
+  "read_only": 1
+ }, 
+ {
   "doctype": "DocField", 
   "fieldname": "company", 
   "fieldtype": "Link", 
diff --git a/projects/doctype/task/task.py b/projects/doctype/task/task.py
index a76dc9b..1df8547 100644
--- a/projects/doctype/task/task.py
+++ b/projects/doctype/task/task.py
@@ -63,7 +63,8 @@
 	def on_update(self):
 		"""update percent complete in project"""
 		if self.doc.project:
-			webnotes.bean("Project", self.doc.project).controller.update_percent_complete()
+			project = webnotes.bean("Project", self.doc.project)
+			project.run_method("update_percent_complete")
 
 @webnotes.whitelist()
 def get_events(start, end, filters=None):
diff --git a/selling/doctype/opportunity/opportunity.js b/selling/doctype/opportunity/opportunity.js
index 72afeea..583f25a 100644
--- a/selling/doctype/opportunity/opportunity.js
+++ b/selling/doctype/opportunity/opportunity.js
@@ -25,8 +25,6 @@
 			cur_frm.dashboard.set_headline_alert(wn._(doc.status), "alert-success", "icon-ok-sign");
 		} else if(doc.status=="Opportunity Lost") {
 			cur_frm.dashboard.set_headline_alert(wn._(doc.status), "alert-danger", "icon-exclamation-sign");
-		} else {
-			cur_frm.dashboard.set_headline_alert(wn._(doc.status), "alert-info", "icon-exclamation-sign");
 		}
 	}
 	
diff --git a/selling/doctype/quotation/quotation.js b/selling/doctype/quotation/quotation.js
index fd8c706..66d4d0b 100644
--- a/selling/doctype/quotation/quotation.js
+++ b/selling/doctype/quotation/quotation.js
@@ -43,8 +43,6 @@
 				cur_frm.dashboard.set_headline_alert(wn._(doc.status), "alert-success", "icon-ok-sign");
 			} else if(doc.status==="Order Lost") {
 				cur_frm.dashboard.set_headline_alert(wn._(doc.status), "alert-danger", "icon-exclamation-sign");
-			} else {
-				cur_frm.dashboard.set_headline_alert(wn._(doc.status), "alert-info", "icon-exclamation-sign");
 			}
 		}
 		
diff --git a/selling/doctype/quotation/quotation.txt b/selling/doctype/quotation/quotation.txt
index f583dbe..cfe0881 100644
--- a/selling/doctype/quotation/quotation.txt
+++ b/selling/doctype/quotation/quotation.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-05-24 19:29:08", 
   "docstatus": 0, 
-  "modified": "2013-07-03 11:54:11", 
+  "modified": "2013-07-03 16:12:44", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -237,7 +237,7 @@
   "fieldname": "section_break0", 
   "fieldtype": "Section Break", 
   "label": "Price List and Currency", 
-  "options": "icon-globe", 
+  "options": "icon-tag", 
   "read_only": 0
  }, 
  {
diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
index d9e2d7b..c4d50cc 100644
--- a/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -29,9 +29,16 @@
 erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend({
 	refresh: function(doc, dt, dn) {
 		this._super();
+		this.frm.dashboard.reset();
 		
 		if(doc.docstatus==1) {
 			if(doc.status != 'Stopped') {
+				
+				cur_frm.dashboard.add_progress(cint(doc.per_delivered) + wn._("% Delivered"), 
+					doc.per_delivered);
+				cur_frm.dashboard.add_progress(cint(doc.per_delivered) + wn._("% Billed"), 
+					doc.per_billed);
+
 				cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
 				// delivery note
 				if(flt(doc.per_delivered, 2) < 100 && doc.order_type=='Sales')
@@ -56,6 +63,7 @@
 					cur_frm.add_custom_button('Stop!', cur_frm.cscript['Stop Sales Order']);
 			} else {	
 				// un-stop
+				cur_frm.dashboard.set_headline_alert("Stopped", "alert-danger", "icon-stop");
 				cur_frm.add_custom_button('Unstop', cur_frm.cscript['Unstop Sales Order']);
 			}
 		}
diff --git a/selling/doctype/sales_order/sales_order.txt b/selling/doctype/sales_order/sales_order.txt
index 6bb1d26..2a78bf7 100644
--- a/selling/doctype/sales_order/sales_order.txt
+++ b/selling/doctype/sales_order/sales_order.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-06-18 12:39:59", 
   "docstatus": 0, 
-  "modified": "2013-06-27 11:31:02", 
+  "modified": "2013-07-03 16:12:26", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -41,6 +41,13 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "customer_section", 
+  "fieldtype": "Section Break", 
+  "label": "Customer", 
+  "options": "icon-user"
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "column_break0", 
   "fieldtype": "Column Break", 
   "in_filter": 0, 
@@ -86,38 +93,34 @@
   "read_only": 1
  }, 
  {
-  "depends_on": "customer", 
   "doctype": "DocField", 
   "fieldname": "address_display", 
   "fieldtype": "Small Text", 
-  "hidden": 0, 
+  "hidden": 1, 
   "label": "Address", 
   "read_only": 1
  }, 
  {
-  "depends_on": "customer", 
   "doctype": "DocField", 
   "fieldname": "contact_display", 
   "fieldtype": "Small Text", 
-  "hidden": 0, 
+  "hidden": 1, 
   "label": "Contact", 
   "read_only": 1
  }, 
  {
-  "depends_on": "customer", 
   "doctype": "DocField", 
   "fieldname": "contact_mobile", 
   "fieldtype": "Text", 
-  "hidden": 0, 
+  "hidden": 1, 
   "label": "Mobile No", 
   "read_only": 1
  }, 
  {
-  "depends_on": "customer", 
   "doctype": "DocField", 
   "fieldname": "contact_email", 
   "fieldtype": "Text", 
-  "hidden": 0, 
+  "hidden": 1, 
   "label": "Contact Email", 
   "print_hide": 1, 
   "read_only": 1
@@ -252,7 +255,8 @@
   "doctype": "DocField", 
   "fieldname": "sec_break45", 
   "fieldtype": "Section Break", 
-  "label": "Price List and Currency"
+  "label": "Price List and Currency", 
+  "options": "icon-tag"
  }, 
  {
   "description": "Customer's currency", 
@@ -323,7 +327,8 @@
   "fieldname": "items", 
   "fieldtype": "Section Break", 
   "label": "Items", 
-  "oldfieldtype": "Section Break"
+  "oldfieldtype": "Section Break", 
+  "options": "icon-shopping-cart"
  }, 
  {
   "allow_on_submit": 1, 
@@ -345,6 +350,7 @@
   "hidden": 0, 
   "label": "Packing List", 
   "oldfieldtype": "Section Break", 
+  "options": "icon-suitcase", 
   "print_hide": 1
  }, 
  {
@@ -444,6 +450,7 @@
   "fieldtype": "Section Break", 
   "label": "Taxes", 
   "oldfieldtype": "Section Break", 
+  "options": "icon-money", 
   "print_hide": 0
  }, 
  {
@@ -537,6 +544,7 @@
   "fieldtype": "Section Break", 
   "label": "Totals", 
   "oldfieldtype": "Section Break", 
+  "options": "icon-money", 
   "print_hide": 1
  }, 
  {
@@ -626,6 +634,7 @@
   "fieldtype": "Section Break", 
   "label": "Terms and Conditions", 
   "oldfieldtype": "Section Break", 
+  "options": "icon-legal", 
   "print_hide": 0
  }, 
  {
@@ -671,7 +680,8 @@
   "doctype": "DocField", 
   "fieldname": "contact_info", 
   "fieldtype": "Section Break", 
-  "label": "Contact Info"
+  "label": "Contact Info", 
+  "options": "icon-bullhorn"
  }, 
  {
   "doctype": "DocField", 
@@ -734,6 +744,7 @@
   "fieldtype": "Section Break", 
   "label": "More Info", 
   "oldfieldtype": "Section Break", 
+  "options": "icon-file-text", 
   "print_hide": 1
  }, 
  {
@@ -904,6 +915,7 @@
   "fieldtype": "Section Break", 
   "label": "Sales Team", 
   "oldfieldtype": "Section Break", 
+  "options": "icon-group", 
   "print_hide": 1
  }, 
  {
@@ -951,7 +963,6 @@
   "doctype": "DocField", 
   "fieldname": "section_break1", 
   "fieldtype": "Section Break", 
-  "options": "Simple", 
   "print_hide": 1
  }, 
  {
diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py
index 295bff3..dc4fde8 100644
--- a/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -204,7 +204,7 @@
 			
 			if vals and ((self.doc.is_stock_item == "No" and vals.is_stock_item == "Yes") or 
 				vals.has_serial_no != self.doc.has_serial_no or 
-				vals.valuation_method != self.doc.valuation_method):
+				cstr(vals.valuation_method) != cstr(self.doc.valuation_method)):
 					if self.check_if_sle_exists() == "exists":
 						webnotes.msgprint(_("As there are existing stock transactions for this \
 							item, you can not change the values of 'Has Serial No', \
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index d2f25f0..4e64089 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -466,20 +466,23 @@
 					item_dict = self.get_bom_raw_materials(self.doc.fg_completed_qty)
 
 				# add raw materials to Stock Entry Detail table
-				self.add_to_stock_entry_detail(self.doc.from_warehouse, self.doc.to_warehouse,
-					item_dict)
+				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.add_to_stock_entry_detail(None, pro_obj.doc.fg_warehouse, {
+				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]
 				}, bom_no=pro_obj.doc.bom_no)
 				
 			elif self.doc.purpose in ["Material Receipt", "Manufacture/Repack"]:
+				if self.doc.purpose=="Material Receipt":
+					self.doc.from_warehouse = ""
+					
 				item = webnotes.conn.sql("""select item, description, uom from `tabBOM`
 					where name=%s""", (self.doc.bom_no,), as_dict=1)
-				self.add_to_stock_entry_detail(None, self.doc.to_warehouse, {
+				self.add_to_stock_entry_detail({
 					item[0]["item"] :
 						[self.doc.fg_completed_qty, item[0]["description"], item[0]["uom"]]
 				}, bom_no=self.doc.bom_no)
@@ -492,36 +495,56 @@
 			child items of sub-contracted and sub assembly items 
 			and sub assembly items itself.
 		"""
-		# item dict = { item_code: [qty, description, stock_uom] }
+		# item dict = { item_code: {qty, description, stock_uom} }
 		item_dict = {}
 		
 		def _make_items_dict(items_list):
 			"""makes dict of unique items with it's qty"""
 			for item in items_list:
 				if item_dict.has_key(item.item_code):
-					item_dict[item.item_code][0] += flt(item.qty)
+					item_dict[item.item_code]["qty"] += flt(item.qty)
 				else:
-					item_dict[item.item_code] = [flt(item.qty), item.description, item.stock_uom]
+					item_dict[item.item_code] = {
+						"qty": flt(item.qty), 
+						"description": item.description, 
+						"stock_uom": item.stock_uom,
+						"from_warehouse": item.default_warehouse
+					}
 		
 		if self.doc.use_multi_level_bom:
 			# get all raw materials with sub assembly childs					
-			fl_bom_sa_child_item = sql("""select fb.item_code, 
-				ifnull(sum(fb.qty_consumed_per_unit),0)*%s as qty, fb.description, fb.stock_uom 
-				from `tabBOM Explosion Item` fb,`tabItem` it 
-				where it.name = fb.item_code and ifnull(it.is_pro_applicable, 'No') = 'No'
-				and ifnull(it.is_sub_contracted_item, 'No') = 'No' and fb.docstatus < 2 
-				and fb.parent=%s group by item_code, stock_uom""", 
+			fl_bom_sa_child_item = sql("""select 
+					fb.item_code, 
+					ifnull(sum(fb.qty_consumed_per_unit),0)*%s as qty, 
+					fb.description, 
+					fb.stock_uom,
+					it.default_warehouse
+				from 
+					`tabBOM Explosion Item` fb,`tabItem` it 
+				where 
+					it.name = fb.item_code 
+					and ifnull(it.is_pro_applicable, 'No') = 'No'
+					and ifnull(it.is_sub_contracted_item, 'No') = 'No' 
+					and fb.docstatus < 2 
+					and fb.parent=%s group by item_code, stock_uom""", 
 				(qty, self.doc.bom_no), as_dict=1)
 			
 			if fl_bom_sa_child_item:
 				_make_items_dict(fl_bom_sa_child_item)
 		else:
-			# Get all raw materials considering multi level BOM, 
-			# if multi level bom consider childs of Sub-Assembly items
-			fl_bom_sa_items = sql("""select item_code,
-				ifnull(sum(qty_consumed_per_unit), 0) *%s as qty,
-				description, stock_uom from `tabBOM Item` 
-				where parent = %s and docstatus < 2 
+			# get only BOM items
+			fl_bom_sa_items = sql("""select 
+					`tabItem`.item_code,
+					ifnull(sum(`tabBOM Item`.qty_consumed_per_unit), 0) *%s as qty,
+					`tabItem`.description, 
+					`tabItem`.stock_uom,
+					`tabItem`.default_warehouse
+				from 
+					`tabBOM Item`, `tabItem`
+				where 
+					`tabBOM Item`.parent = %s and 
+					`tabBOM Item`.item_code = tabItem.name
+					`tabBOM Item`.docstatus < 2 
 				group by item_code""", (qty, self.doc.bom_no), as_dict=1)
 			
 			if fl_bom_sa_items:
@@ -534,30 +557,30 @@
 			issue (item quantity) that is pending to issue or desire to transfer,
 			whichever is less
 		"""
-		item_qty = self.get_bom_raw_materials(1)
+		item_dict = self.get_bom_raw_materials(1)
 		issued_item_qty = self.get_issued_qty()
 		
 		max_qty = flt(pro_obj.doc.qty)
 		only_pending_fetched = []
 		
-		for item in item_qty:
-			pending_to_issue = (max_qty * item_qty[item][0]) - issued_item_qty.get(item, 0)
-			desire_to_transfer = flt(self.doc.fg_completed_qty) * item_qty[item][0]
+		for item in item_dict:
+			pending_to_issue = (max_qty * item_dict[item]["qty"]) - issued_item_qty.get(item, 0)
+			desire_to_transfer = flt(self.doc.fg_completed_qty) * item_dict[item]["qty"]
 			
 			if desire_to_transfer <= pending_to_issue:
-				item_qty[item][0] = desire_to_transfer
+				item_dict[item]["qty"] = desire_to_transfer
 			else:
-				item_qty[item][0] = pending_to_issue
+				item_dict[item]["qty"] = pending_to_issue
 				if pending_to_issue:
 					only_pending_fetched.append(item)
 		
 		# delete items with 0 qty
-		for item in item_qty.keys():
-			if not item_qty[item][0]:
-				del item_qty[item]
+		for item in item_dict.keys():
+			if not item_dict[item]["qty"]:
+				del item_dict[item]
 		
 		# show some message
-		if not len(item_qty):
+		if not len(item_dict):
 			webnotes.msgprint(_("""All items have already been transferred \
 				for this Production Order."""))
 			
@@ -565,7 +588,7 @@
 			webnotes.msgprint(_("""Only quantities pending to be transferred \
 				were fetched for the following items:\n""" + "\n".join(only_pending_fetched)))
 
-		return item_qty
+		return item_dict
 
 	def get_issued_qty(self):
 		issued_item_qty = {}
@@ -579,18 +602,20 @@
 		
 		return issued_item_qty
 
-	def add_to_stock_entry_detail(self, source_wh, target_wh, item_dict, bom_no=None):
+	def add_to_stock_entry_detail(self, item_dict, bom_no=None):
 		for d in item_dict:
 			se_child = addchild(self.doc, 'mtn_details', 'Stock Entry Detail', 
 				self.doclist)
-			se_child.s_warehouse = source_wh
-			se_child.t_warehouse = target_wh
+			se_child.s_warehouse = item_dict[d].get("from_warehouse", self.doc.from_warehouse) 
+			se_child.t_warehouse = item_dict[d].get("to_warehouse", self.doc.to_warehouse)
 			se_child.item_code = cstr(d)
-			se_child.description = item_dict[d][1]
-			se_child.uom = item_dict[d][2]
-			se_child.stock_uom = item_dict[d][2]
-			se_child.qty = flt(item_dict[d][0])
-			se_child.transfer_qty = flt(item_dict[d][0])
+			se_child.description = item_dict[d]["description"]
+			se_child.uom = item_dict[d]["stock_uom"]
+			se_child.stock_uom = item_dict[d]["stock_uom"]
+			se_child.qty = flt(item_dict[d]["qty"])
+			
+			# in stock uom
+			se_child.transfer_qty = flt(item_dict[d]["qty"])
 			se_child.conversion_factor = 1.00
 			
 			# to be assigned for finished item
diff --git a/stock/doctype/stock_entry/test_stock_entry.py b/stock/doctype/stock_entry/test_stock_entry.py
index 345e73c..7b058be 100644
--- a/stock/doctype/stock_entry/test_stock_entry.py
+++ b/stock/doctype/stock_entry/test_stock_entry.py
@@ -6,6 +6,11 @@
 from webnotes.utils import flt
 
 class TestStockEntry(unittest.TestCase):
+	def tearDown(self):
+		webnotes.defaults.set_global_default("auto_inventory_accounting", 0)
+		if hasattr(self, "old_default_company"):
+			webnotes.conn.set_default("company", self.old_default_company)
+
 	def test_auto_material_request(self):
 		webnotes.conn.sql("""delete from `tabMaterial Request Item`""")
 		webnotes.conn.sql("""delete from `tabMaterial Request`""")
@@ -72,8 +77,6 @@
 				["Stock Adjustment - _TC", 5000.0, 0.0]
 			])
 		)
-		
-		webnotes.defaults.set_global_default("auto_inventory_accounting", 0)
 
 	def test_material_issue_gl_entry(self):
 		self._clear_stock()
@@ -115,9 +118,6 @@
 			])
 		)
 		
-		webnotes.defaults.set_global_default("auto_inventory_accounting", 0)
-		webnotes.conn.set_default("company", self.old_default_company)
-		
 	def test_material_transfer_gl_entry(self):
 		self._clear_stock()
 		webnotes.defaults.set_global_default("auto_inventory_accounting", 1)
@@ -149,10 +149,7 @@
 		gl_entries = webnotes.conn.sql("""select * from `tabGL Entry` 
 			where voucher_type = 'Stock Entry' and voucher_no=%s""", mtn.doc.name)
 		self.assertFalse(gl_entries)
-		
-		webnotes.defaults.set_global_default("auto_inventory_accounting", 0)
-		webnotes.conn.set_default("company", self.old_default_company)
-	
+			
 	def check_stock_ledger_entries(self, voucher_type, voucher_no, expected_sle):
 		# check stock ledger entries
 		sle = webnotes.conn.sql("""select * from `tabStock Ledger Entry` where voucher_type = %s