Merge pull request #5958 from rohitwaghchaure/minor_fixes_and_cleanups

fixes and cleanups.
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 9f64e07..9643764 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -108,13 +108,14 @@
 
 		item.price_list_rate = frappe.db.get_value('Item Price', {'item_code': item.name,
 									'price_list': doc.selling_price_list}, 'price_list_rate') or 0
-		item.default_warehouse = pos_profile.get('warehouse') or item.default_warehouse or None
+		item.default_warehouse = pos_profile.get('warehouse') or \
+			get_item_warehouse_for_company(doc.company, item.default_warehouse) or None
 		item.expense_account = pos_profile.get('expense_account') or item.expense_account
 		item.income_account = pos_profile.get('income_account') or item_doc.income_account
 		item.cost_center = pos_profile.get('cost_center') or item_doc.selling_cost_center
 		item.actual_qty = frappe.db.get_value('Bin', {'item_code': item.name,
 								'warehouse': item.default_warehouse}, 'actual_qty') or 0
-		item.serial_nos = get_serial_nos(item, pos_profile)
+		item.serial_nos = get_serial_nos(item, pos_profile, doc.company)
 		item.batch_nos = frappe.db.sql_list("""select name from `tabBatch` where ifnull(expiry_date, '4000-10-10') > curdate()
 			and item = %(item_code)s""", {'item_code': item.item_code})
 
@@ -122,13 +123,19 @@
 
 	return item_list
 
-def get_serial_nos(item, pos_profile):
+def get_item_warehouse_for_company(company, warehouse):
+	if frappe.db.get_value('Warehouse', warehouse, 'company') != company:
+		warehouse = None
+	return warehouse
+
+def get_serial_nos(item, pos_profile, company):
 	cond = "1=1"
 	if pos_profile.get('update_stock') and pos_profile.get('warehouse'):
 		cond = "warehouse = '{0}'".format(pos_profile.get('warehouse'))
 
 	serial_nos = frappe.db.sql("""select name, warehouse from `tabSerial No` where {0}
-				and item_code = %(item_code)s""".format(cond), {'item_code': item.item_code}, as_dict=1)
+				and item_code = %(item_code)s and company = %(company)s
+				""".format(cond), {'item_code': item.item_code, 'company': company}, as_dict=1)
 
 	serial_no_list = {}
 	for serial_no in serial_nos:
@@ -214,9 +221,9 @@
 		save_invoice(e, si_doc, name)
 
 def save_invoice(e, si_doc, name):
-		si_doc.docstatus = 0
-		si_doc.name = ''
-		si_doc.save(ignore_permissions=True)
+	if not frappe.db.exists('Sales Invoice', {'offline_pos_name': name}):
+		si_doc.flags.ignore_mandatory = True
+		si_doc.insert()
 		make_scheduler_log(e, si_doc.name)
 
 def make_scheduler_log(e, sales_invoice):
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index 1830103..8444dbe 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -177,6 +177,7 @@
 		doc = JSON.parse(localStorage.getItem('doc'))
 		if(this.frm.doc.payments.length == 0){
 			this.frm.doc.payments = doc.payments;
+			this.calculate_outstanding_amount();
 		}
 
 		if(this.frm.doc.customer){
@@ -869,6 +870,7 @@
 				for(key in data){
 					if(data[key].docstatus == 1 && index < 50){
 						index++
+						data[key].docstatus = 0;
 						return data
 					}
 				}
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 5eafb81..d126eb0 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -30,7 +30,7 @@
 	},
 
 	onload: function(frm) {
-		frm.add_fetch('standard_reply', 'response', 'response');
+		frm.add_fetch('standard_reply', 'response', 'message_for_supplier');
 
 		if(!frm.doc.message_for_supplier) {
 			frm.set_value("message_for_supplier", __("Please supply the specified items at the best possible rates"))
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
index 2ce5c5c..e48e1dc 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
@@ -9,6 +9,7 @@
  "docstatus": 0, 
  "doctype": "DocType", 
  "document_type": "Document", 
+ "editable_grid": 0, 
  "fields": [
   {
    "allow_on_submit": 0, 
@@ -296,7 +297,7 @@
    "options": "Standard Reply", 
    "permlevel": 0, 
    "precision": "", 
-   "print_hide": 0, 
+   "print_hide": 1, 
    "print_hide_if_no_value": 0, 
    "read_only": 0, 
    "report_hide": 0, 
@@ -638,7 +639,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-06-30 01:57:49.233065", 
+ "modified": "2016-08-01 08:45:39.777405", 
  "modified_by": "Administrator", 
  "module": "Buying", 
  "name": "Request for Quotation", 
diff --git a/erpnext/projects/doctype/timesheet/timesheet.js b/erpnext/projects/doctype/timesheet/timesheet.js
index e2e6459..a780ab4 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.js
+++ b/erpnext/projects/doctype/timesheet/timesheet.js
@@ -6,15 +6,17 @@
 	setup: function(frm) {
 		frm.get_field('time_logs').grid.editable_fields = [
 			{fieldname: 'billable', columns: 1},
+			{fieldname: 'project', columns: 3},
 			{fieldname: 'activity_type', columns: 2},
 			{fieldname: 'from_time', columns: 3},
-			{fieldname: 'hours', columns: 1},
-			{fieldname: 'project', columns: 3}
+			{fieldname: 'hours', columns: 1}
 		];
 
 		frm.fields_dict.employee.get_query = function() {
 			return {
-				query:"erpnext.projects.doctype.timesheet.timesheet.get_employee_list"
+				filters:{
+					'status': 'Active'
+				}
 			}
 		}
 
diff --git a/erpnext/projects/doctype/timesheet/timesheet.json b/erpnext/projects/doctype/timesheet/timesheet.json
index c035cd3..16d71d8 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.json
+++ b/erpnext/projects/doctype/timesheet/timesheet.json
@@ -1,6 +1,6 @@
 {
  "allow_copy": 0, 
- "allow_import": 0, 
+ "allow_import": 1, 
  "allow_rename": 0, 
  "autoname": "naming_series:", 
  "beta": 0, 
@@ -662,7 +662,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-07-26 00:01:56.055046", 
+ "modified": "2016-08-01 08:54:31.840829", 
  "modified_by": "Administrator", 
  "module": "Projects", 
  "name": "Timesheet", 
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py
index a1b757c..abcffad 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/erpnext/projects/doctype/timesheet/timesheet.py
@@ -94,7 +94,7 @@
 			if self.production_order and flt(data.completed_qty) == 0:
 				frappe.throw(_("Row {0}: Completed Qty must be greater than zero.").format(data.idx))
 
-			if self.production_order and flt(pending_qty) < flt(data.completed_qty):
+			if self.production_order and flt(pending_qty) < flt(data.completed_qty) and flt(pending_qty) > 0:
 				frappe.throw(_("Row {0}: Completed Qty cannot be more than {1} for operation {2}").format(data.idx, pending_qty, data.operation),
 					OverProductionLoggedError)
 
@@ -290,10 +290,3 @@
 			["costing_rate", "billing_rate"], as_dict=True)
 
 	return rate[0] if rate else {}
-
-@frappe.whitelist()
-def get_employee_list(doctype, txt, searchfield, start, page_len, filters):
-	return frappe.db.sql("""select distinct employee, employee_name
-		from `tabSalary Structure` where salary_slip_based_on_timesheet=1
-		and employee like %(txt)s or employee_name like %(txt)s limit %(start)s, %(page_len)s""", 
-		{'txt': "%%%s%%"% txt, 'start': start, 'page_len': page_len})
diff --git a/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json b/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json
index 7604ded..f847e64 100644
--- a/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json
+++ b/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json
@@ -22,7 +22,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Billable", 
+   "label": "Bill", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -121,7 +121,7 @@
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Hours", 
+   "label": "Hrs", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -532,7 +532,7 @@
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-07-26 00:07:58.267131", 
+ "modified": "2016-08-06 03:14:31.691605", 
  "modified_by": "Administrator", 
  "module": "Projects", 
  "name": "Timesheet Detail",