test: Inter company stock transfer for serialised items
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 491ddeb..8a797c3 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -139,7 +139,7 @@
 			order by posting_date desc, posting_time desc, name desc""",
 			("%%%s%%" % self.name, self.item_code), as_dict=1):
 				if self.name.upper() in get_serial_nos(sle.serial_no):
-					if cint(sle.actual_qty) > 0:
+					if sle.actual_qty > 0:
 						sle_dict.setdefault("incoming", []).append(sle)
 					else:
 						sle_dict.setdefault("outgoing", []).append(sle)
@@ -218,7 +218,7 @@
 							frappe.throw(_("Serial No {0} does not belong to Item {1}").format(serial_no,
 								sle.item_code), SerialNoItemError)
 
-					if cint(sle.actual_qty) > 0 and has_duplicate_serial_no(sr, sle):
+					if sle.actual_qty > 0 and has_duplicate_serial_no(sr, sle):
 						frappe.throw(_("Serial No {0} has already been received").format(serial_no),
 							SerialNoDuplicateError)
 
@@ -228,7 +228,7 @@
 						if return_against and return_against != sr.delivery_document_no:
 							frappe.throw(_("Serial no {0} has been already returned").format(sr.name))
 
-					if cint(sle.actual_qty) < 0:
+					if sle.actual_qty < 0:
 						if sr.warehouse!=sle.warehouse:
 							frappe.throw(_("Serial No {0} does not belong to Warehouse {1}").format(serial_no,
 								sle.warehouse), SerialNoWarehouseError)
@@ -279,16 +279,16 @@
 											"parent": sales_invoice, "item_code": sle.item_code}, "sales_order")
 										if sales_order and get_reserved_qty_for_so(sales_order, sle.item_code):
 											validate_so_serial_no(sr, sales_order)
-				elif cint(sle.actual_qty) < 0:
+				elif sle.actual_qty < 0:
 					# transfer out
 					frappe.throw(_("Serial No {0} not in stock").format(serial_no), SerialNoNotExistsError)
-		elif cint(sle.actual_qty) < 0 or not item_det.serial_no_series:
+		elif sle.actual_qty < 0 or not item_det.serial_no_series:
 			frappe.throw(_("Serial Nos Required for Serialized Item {0}").format(sle.item_code),
 				SerialNoRequiredError)
 	elif serial_nos:
 		for serial_no in serial_nos:
 			sr = frappe.db.get_value("Serial No", serial_no, ["name", "warehouse"], as_dict=1)
-			if sr and cint(sle.actual_qty) < 0 and sr.warehouse != sle.warehouse:
+			if sr and sle.actual_qty < 0 and sr.warehouse != sle.warehouse:
 				frappe.throw(_("Cannot cancel {0} {1} because Serial No {2} does not belong to the warehouse {3}")
 					.format(sle.voucher_type, sle.voucher_no, serial_no, sle.warehouse))
 
@@ -323,7 +323,7 @@
 		in Manufacture / Repack type Stock Entry
 	"""
 	allow_serial_nos = False
-	if sle.voucher_type=="Stock Entry" and cint(sle.actual_qty) > 0:
+	if sle.voucher_type=="Stock Entry" and sle.actual_qty > 0:
 		stock_entry = frappe.get_doc("Stock Entry", sle.voucher_no)
 		if stock_entry.purpose in ("Repack", "Manufacture"):
 			for d in stock_entry.get("items"):
@@ -335,7 +335,7 @@
 	return allow_serial_nos
 
 def update_serial_nos(sle, item_det):
-	if sle.is_cancelled == "No" and not sle.serial_no and cint(sle.actual_qty) > 0 \
+	if sle.is_cancelled == "No" and not sle.serial_no and sle.actual_qty > 0 \
 			and item_det.has_serial_no == 1 and item_det.serial_no_series:
 		serial_nos = get_auto_serial_nos(item_det.serial_no_series, sle.actual_qty)
 		frappe.db.set(sle, "serial_no", serial_nos)
diff --git a/erpnext/stock/doctype/serial_no/test_serial_no.py b/erpnext/stock/doctype/serial_no/test_serial_no.py
index 89062f9..ed70790 100644
--- a/erpnext/stock/doctype/serial_no/test_serial_no.py
+++ b/erpnext/stock/doctype/serial_no/test_serial_no.py
@@ -7,6 +7,12 @@
 from __future__ import unicode_literals
 import frappe, unittest
 
+from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
+from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
+from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
+from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
+from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
+
 test_dependencies = ["Item"]
 test_records = frappe.get_test_records('Serial No')
 
@@ -29,3 +35,21 @@
 
 		sr.warehouse = "_Test Warehouse - _TC"
 		self.assertTrue(SerialNoCannotCannotChangeError, sr.save)
+
+	def test_inter_company_transfer(self):
+		se = make_serialized_item(target_warehouse="_Test Warehouse - _TC")
+		serial_nos = get_serial_nos(se.get("items")[0].serial_no)
+
+		create_delivery_note(item_code="_Test Serialized Item With Series", qty=1, serial_no=serial_nos[0])
+
+		wh = create_warehouse("_Test Warehouse", company="_Test Company 1")
+		make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1, serial_no=serial_nos[0],
+			company="_Test Company 1", warehouse=wh)
+
+		serial_no = frappe.db.get_value("Serial No", serial_nos[0], ["warehouse", "company"], as_dict=1)
+
+		self.assertEqual(serial_no.warehouse, wh)
+		self.assertEqual(serial_no.company, "_Test Company 1")
+
+	def tearDown(self):
+		frappe.db.rollback()
\ No newline at end of file
diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.py b/erpnext/stock/doctype/warehouse/test_warehouse.py
index b033f86..dc39e10 100644
--- a/erpnext/stock/doctype/warehouse/test_warehouse.py
+++ b/erpnext/stock/doctype/warehouse/test_warehouse.py
@@ -8,6 +8,7 @@
 from frappe.test_runner import make_test_records
 from erpnext.accounts.doctype.account.test_account import get_inventory_account, create_account
 
+import erpnext
 import frappe
 import unittest
 test_records = frappe.get_test_records('Warehouse')
@@ -90,17 +91,24 @@
 		self.assertTrue(frappe.db.get_value("Warehouse",
 			filters={"account": "Test Warehouse for Merging 2 - _TC"}))
 
-def create_warehouse(warehouse_name, properties=None):
-	if not frappe.db.exists("Warehouse", warehouse_name + " - _TC"):
+def create_warehouse(warehouse_name, properties=None, company=None):
+	if not company:
+		company = "_Test Company"
+
+	warehouse_id = erpnext.encode_company_abbr(warehouse_name, company)
+	if not frappe.db.exists("Warehouse", warehouse_id):
 		w = frappe.new_doc("Warehouse")
 		w.warehouse_name = warehouse_name
 		w.parent_warehouse = "_Test Warehouse Group - _TC"
-		w.company = "_Test Company"
+		w.company = company
 		make_account_for_warehouse(warehouse_name, w)
-		w.account = warehouse_name + " - _TC"
+		w.account = warehouse_id
 		if properties:
 			w.update(properties)
 		w.save()
+		return w.name
+	else:
+		return warehouse_id
 
 def make_account_for_warehouse(warehouse_name, warehouse_obj):
 	if not frappe.db.exists("Account", warehouse_name + " - _TC"):