Merge branch 'finbyz-develop' into develop
diff --git a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py
index 0cad0cc..64c3b2d 100644
--- a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py
+++ b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py
@@ -50,7 +50,7 @@
 		deleted_webhooks = []
 
 		for d in self.webhooks:
-			url = get_shopify_url('admin/api/2019-04/webhooks.json'.format(d.webhook_id), self)
+			url = get_shopify_url('admin/api/2019-04/webhooks/{0}.json'.format(d.webhook_id), self)
 			try:
 				res = session.delete(url, headers=get_header(self))
 				res.raise_for_status()
diff --git a/erpnext/regional/turkey/__init__.py b/erpnext/regional/turkey/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/regional/turkey/__init__.py
diff --git a/erpnext/setup/doctype/currency_exchange/currency_exchange.py b/erpnext/setup/doctype/currency_exchange/currency_exchange.py
index 4effb5a..60d367a 100644
--- a/erpnext/setup/doctype/currency_exchange/currency_exchange.py
+++ b/erpnext/setup/doctype/currency_exchange/currency_exchange.py
@@ -11,10 +11,15 @@
 
 class CurrencyExchange(Document):
 	def autoname(self):
+		purpose = ""
 		if not self.date:
 			self.date = nowdate()
-		self.name = '{0}-{1}-{2}'.format(formatdate(get_datetime_str(self.date), "yyyy-MM-dd"),
-			self.from_currency, self.to_currency)
+		if cint(self.for_buying)==0 and cint(self.for_selling)==1:
+			purpose = "Selling"
+		if cint(self.for_buying)==1 and cint(self.for_selling)==0:
+			purpose = "Buying"
+		self.name = '{0}-{1}-{2}{3}'.format(formatdate(get_datetime_str(self.date), "yyyy-MM-dd"),
+			self.from_currency, self.to_currency, ("-" + purpose) if purpose else "")
 
 	def validate(self):
 		self.validate_value("exchange_rate", ">", 0)
@@ -23,4 +28,4 @@
 			throw(_("From Currency and To Currency cannot be same"))
 
 		if not cint(self.for_buying) and not cint(self.for_selling):
-			throw(_("Currency Exchange must be applicable for Buying or for Selling."))
\ No newline at end of file
+			throw(_("Currency Exchange must be applicable for Buying or for Selling."))
diff --git a/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py b/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py
index c488b99..857f666 100644
--- a/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py
+++ b/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py
@@ -4,15 +4,21 @@
 import frappe, unittest
 from frappe.utils import flt
 from erpnext.setup.utils import get_exchange_rate
+from frappe.utils import cint
 
 test_records = frappe.get_test_records('Currency Exchange')
 
 
 def save_new_records(test_records):
 	for record in test_records:
+		purpose = str("")
+		if cint(record.get("for_buying"))==0 and cint(record.get("for_selling"))==1:
+			purpose = "Selling"
+		if cint(record.get("for_buying"))==1 and cint(record.get("for_selling"))==0:
+			purpose = "Buying"
 		kwargs = dict(
 			doctype=record.get("doctype"),
-			docname=record.get("date") + '-' + record.get("from_currency") + '-' + record.get("to_currency"),
+			docname=record.get("date") + '-' + record.get("from_currency") + '-' + record.get("to_currency") + '-' + purpose,
 			fieldname="exchange_rate",
 			value=record.get("exchange_rate"),
 		)
@@ -25,6 +31,8 @@
 			curr_exchange.from_currency = record["from_currency"]
 			curr_exchange.to_currency = record["to_currency"]
 			curr_exchange.exchange_rate = record["exchange_rate"]
+			curr_exchange.for_buying = record["for_buying"]
+			curr_exchange.for_selling = record["for_selling"]
 			curr_exchange.insert()
 
 
@@ -44,18 +52,18 @@
 		frappe.db.set_value("Accounts Settings", None, "allow_stale", 1)
 
 		# Start with allow_stale is True
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-01")
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-01", "for_buying")
 		self.assertEqual(flt(exchange_rate, 3), 60.0)
 
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15")
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying")
 		self.assertEqual(exchange_rate, 65.1)
 
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-30")
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-30", "for_selling")
 		self.assertEqual(exchange_rate, 62.9)
 		
 		# Exchange rate as on 15th Dec, 2015, should be fetched from fixer.io
 		self.clear_cache()
-		exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15")
+		exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15", "for_selling")
 		self.assertFalse(exchange_rate == 60)
 		self.assertEqual(flt(exchange_rate, 3), 66.894)
 
@@ -64,35 +72,35 @@
 		frappe.db.set_value("Accounts Settings", None, "allow_stale", 0)
 		frappe.db.set_value("Accounts Settings", None, "stale_days", 1)
 
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-01")
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-01", "for_buying")
 		self.assertEqual(exchange_rate, 60.0)
 
 		# Will fetch from fixer.io
 		self.clear_cache()
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15")
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying")
 		self.assertEqual(flt(exchange_rate, 3), 67.79)
 
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-30")
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-30", "for_selling")
 		self.assertEqual(exchange_rate, 62.9)
 
 		# Exchange rate as on 15th Dec, 2015, should be fetched from fixer.io
 		self.clear_cache()
-		exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15")
+		exchange_rate = get_exchange_rate("USD", "INR", "2015-12-15", "for_buying")
 		self.assertEqual(flt(exchange_rate, 3), 66.894)
 
-		exchange_rate = get_exchange_rate("INR", "NGN", "2016-01-10")
+		exchange_rate = get_exchange_rate("INR", "NGN", "2016-01-10", "for_selling")
 		self.assertEqual(exchange_rate, 65.1)
 
 		# NGN is not available on fixer.io so these should return 0
-		exchange_rate = get_exchange_rate("INR", "NGN", "2016-01-09")
+		exchange_rate = get_exchange_rate("INR", "NGN", "2016-01-09", "for_selling")
 		self.assertEqual(exchange_rate, 0)
 
-		exchange_rate = get_exchange_rate("INR", "NGN", "2016-01-11")
+		exchange_rate = get_exchange_rate("INR", "NGN", "2016-01-11", "for_selling")
 		self.assertEqual(exchange_rate, 0)
 
 	def test_exchange_rate_strict_switched(self):
 		# Start with allow_stale is True
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15")
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying")
 		self.assertEqual(exchange_rate, 65.1)
 
 		frappe.db.set_value("Accounts Settings", None, "allow_stale", 0)
@@ -100,5 +108,5 @@
 
 		# Will fetch from fixer.io
 		self.clear_cache()
-		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15")
-		self.assertEqual(flt(exchange_rate, 3), 67.79)
\ No newline at end of file
+		exchange_rate = get_exchange_rate("USD", "INR", "2016-01-15", "for_buying")
+		self.assertEqual(flt(exchange_rate, 3), 67.79)
diff --git a/erpnext/setup/doctype/currency_exchange/test_records.json b/erpnext/setup/doctype/currency_exchange/test_records.json
index 0c9cfbb..152060e 100644
--- a/erpnext/setup/doctype/currency_exchange/test_records.json
+++ b/erpnext/setup/doctype/currency_exchange/test_records.json
@@ -1,44 +1,56 @@
 [
- {
-  "doctype": "Currency Exchange", 
-  "date": "2016-01-01",
-  "exchange_rate": 60.0, 
-  "from_currency": "USD", 
-  "to_currency": "INR"
- }, 
- {
-  "doctype": "Currency Exchange", 
-  "date": "2016-01-01",
-  "exchange_rate": 0.773, 
-  "from_currency": "USD", 
-  "to_currency": "EUR"
- }, 
- {
-  "doctype": "Currency Exchange", 
-  "date": "2016-01-01",
-  "exchange_rate": 0.0167, 
-  "from_currency": "INR", 
-  "to_currency": "USD"
- },
- {
-  "doctype": "Currency Exchange",
-  "date": "2016-01-10",
-  "exchange_rate": 65.1,
-  "from_currency": "USD",
-  "to_currency": "INR"
- },
+	{
+		"doctype": "Currency Exchange",
+		"date": "2016-01-01",
+		"exchange_rate": 60.0,
+		"from_currency": "USD",
+		"to_currency": "INR",
+		"for_buying": 1,
+		"for_selling": 0
+  },
   {
-  "doctype": "Currency Exchange",
-  "date": "2016-01-30",
-  "exchange_rate": 62.9,
-  "from_currency": "USD",
-  "to_currency": "INR"
- },
- {
-  "doctype": "Currency Exchange",
-  "date": "2016-01-10",
-  "exchange_rate": 65.1,
-  "from_currency": "INR",
-  "to_currency": "NGN"
- }
-]
\ No newline at end of file
+		"doctype": "Currency Exchange",
+		"date": "2016-01-01",
+		"exchange_rate": 0.773,
+		"from_currency": "USD",
+		"to_currency": "EUR",
+		"for_buying": 0,
+		"for_selling": 1
+  },
+  {
+		"doctype": "Currency Exchange",
+		"date": "2016-01-01",
+		"exchange_rate": 0.0167,
+		"from_currency": "INR",
+		"to_currency": "USD",
+		"for_buying": 1,
+		"for_selling": 0
+  },
+  {
+    "doctype": "Currency Exchange",
+		"date": "2016-01-10",
+		"exchange_rate": 65.1,
+		"from_currency": "USD",
+		"to_currency": "INR",
+		"for_buying": 1,
+		"for_selling": 0
+  },
+  {
+		"doctype": "Currency Exchange",
+		"date": "2016-01-30",
+		"exchange_rate": 62.9,
+		"from_currency": "USD",
+		"to_currency": "INR",
+		"for_buying": 1,
+		"for_selling": 1
+  },
+  {
+		"doctype": "Currency Exchange",
+		"date": "2016-01-10",
+		"exchange_rate": 65.1,
+		"from_currency": "INR",
+		"to_currency": "NGN",
+		"for_buying": 1,
+		"for_selling": 1
+  }
+]