diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
index 120329b..dcbf354 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.js
@@ -14,7 +14,7 @@
 						${__("Pricing Rule is made to overwrite Price List / define discount percentage, based on some criteria.")}
 					</li>
 					<li>
-						${__("If selected Pricing Rule is made for 'Price', it will overwrite Price List. Pricing Rule price is the final price, so no further discount should be applied. Hence, in transactions like Sales Order, Purchase Order etc, it will be fetched in 'Rate' field, rather than 'Price List Rate' field.")}
+						${__("If selected Pricing Rule is made for 'Rate', it will overwrite Price List. Pricing Rule rate is the final rate, so no further discount should be applied. Hence, in transactions like Sales Order, Purchase Order etc, it will be fetched in 'Rate' field, rather than 'Price List Rate' field.")}
 					</li>
 					<li>
 						${__('Discount Percentage can be applied either against a Price List or for all Price List.')}
@@ -97,8 +97,8 @@
 	cur_frm.set_df_property('margin_rate_or_amount', 'description', doc.margin_type=='Percentage'?'In Percentage %':'In Amount')
 }
 
-frappe.ui.form.on('Pricing Rule', 'price_or_discount', function(frm){
-	if(frm.doc.price_or_discount == 'Price') {
+frappe.ui.form.on('Pricing Rule', 'rate_or_discount', function(frm){
+	if(frm.doc.rate_or_discount == 'Rate') {
 		frm.set_value('for_price_list', "")
 	}
 })
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
index 6fae8f7..1c30fa4 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json
@@ -916,6 +916,38 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "depends_on": "", 
+   "fieldname": "currency", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Currency", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Currency", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
    "depends_on": "eval: doc.selling == 1", 
    "fieldname": "margin", 
    "fieldtype": "Section Break", 
@@ -1070,7 +1102,7 @@
    "collapsible": 0, 
    "columns": 0, 
    "default": "Discount Percentage", 
-   "fieldname": "price_or_discount", 
+   "fieldname": "rate_or_discount", 
    "fieldtype": "Select", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -1079,10 +1111,10 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Price or Discount", 
+   "label": "Rate or Discount", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "\nPrice\nDiscount Percentage", 
+   "options": "\nRate\nDiscount Percentage", 
    "permlevel": 0, 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
@@ -1128,8 +1160,8 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:doc.price_or_discount==\"Price\"", 
-   "fieldname": "price", 
+   "depends_on": "eval:doc.rate_or_discount==\"Rate\"", 
+   "fieldname": "rate", 
    "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
@@ -1138,7 +1170,7 @@
    "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Price", 
+   "label": "Rate", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -1158,7 +1190,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:doc.price_or_discount==\"Discount Percentage\"", 
+   "depends_on": "eval:doc.rate_or_discount==\"Discount Percentage\"", 
    "fieldname": "discount_percentage", 
    "fieldtype": "Float", 
    "hidden": 0, 
@@ -1188,7 +1220,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "eval:doc.price_or_discount==\"Discount Percentage\"", 
+   "depends_on": "eval:doc.rate_or_discount==\"Discount Percentage\"", 
    "fieldname": "for_price_list", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -1284,7 +1316,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2017-09-27 08:31:38.432574", 
+ "modified": "2018-02-12 17:21:22.559996", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Pricing Rule", 
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index 1087878..0479cd8 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -21,7 +21,7 @@
 		self.validate_applicable_for_selling_or_buying()
 		self.validate_min_max_qty()
 		self.cleanup_fields_value()
-		self.validate_price_or_discount()
+		self.validate_rate_or_discount()
 		self.validate_max_discount()
 
 		if not self.margin_type: self.margin_rate_or_amount = 0.0
@@ -50,7 +50,7 @@
 			throw(_("Min Qty can not be greater than Max Qty"))
 
 	def cleanup_fields_value(self):
-		for logic_field in ["apply_on", "applicable_for", "price_or_discount"]:
+		for logic_field in ["apply_on", "applicable_for", "rate_or_discount"]:
 			fieldname = frappe.scrub(self.get(logic_field) or "")
 
 			# reset all values except for the logic field
@@ -62,13 +62,13 @@
 				if f!=fieldname:
 					self.set(f, None)
 
-	def validate_price_or_discount(self):
-		for field in ["Price"]:
+	def validate_rate_or_discount(self):
+		for field in ["Rate"]:
 			if flt(self.get(frappe.scrub(field))) < 0:
 				throw(_("{0} can not be negative").format(field))
 
 	def validate_max_discount(self):
-		if self.price_or_discount == "Discount Percentage" and self.item_code:
+		if self.rate_or_discount == "Discount Percentage" and self.item_code:
 			max_discount = frappe.db.get_value("Item", self.item_code, "max_discount")
 			if max_discount and flt(self.discount_percentage) > flt(max_discount):
 				throw(_("Max discount allowed for item: {0} is {1}%").format(self.item_code, max_discount))
@@ -176,17 +176,34 @@
 
 	if pricing_rule:
 		item_details.pricing_rule = pricing_rule.name
-		item_details.pricing_rule_for = pricing_rule.price_or_discount
-		item_details.margin_type = pricing_rule.margin_type
-		item_details.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
-		if pricing_rule.price_or_discount == "Price":
-			item_details.update({
-				"price_list_rate": (pricing_rule.price/flt(args.conversion_rate)) * args.conversion_factor or 1.0 \
-					if args.conversion_rate else 0.0,
-				"discount_percentage": 0.0
-			})
+		item_details.pricing_rule_for = pricing_rule.rate_or_discount
+
+		if pricing_rule.margin_type == 'Amount' and pricing_rule.currency == args.currency:
+			item_details.margin_type = pricing_rule.margin_type
+			item_details.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
+
+		elif pricing_rule.margin_type == 'Percentage':
+			item_details.margin_type = pricing_rule.margin_type
+			item_details.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
+		else:
+			item_details.margin_type = None
+			item_details.margin_rate_or_amount = 0.0
+
+		if pricing_rule.rate_or_discount == 'Rate':
+			if pricing_rule.currency == args.currency:
+				item_details.update({
+					"price_list_rate": pricing_rule.rate,
+					"discount_percentage": 0.0
+				})
+
+			else:
+				item_details.update({
+					"price_list_rate": 0.0,
+					"discount_percentage": 0.0
+				})
 		else:
 			item_details.discount_percentage = pricing_rule.discount_percentage or args.discount_percentage
+
 	elif args.get('pricing_rule'):
 		item_details = remove_pricing_rule_for_item(args.get("pricing_rule"), item_details)
 
@@ -194,8 +211,8 @@
 
 def remove_pricing_rule_for_item(pricing_rule, item_details):
 	pricing_rule = frappe.db.get_value('Pricing Rule', pricing_rule, 
-		['price_or_discount', 'margin_type'], as_dict=1)
-	if pricing_rule and pricing_rule.price_or_discount == 'Discount Percentage':
+		['rate_or_discount', 'margin_type'], as_dict=1)
+	if pricing_rule and pricing_rule.rate_or_discount == 'Discount Percentage':
 		item_details.discount_percentage = 0.0
 
 	if pricing_rule and pricing_rule.margin_type in ['Percentage', 'Amount']:
@@ -318,8 +335,8 @@
 					break
 
 	if len(pricing_rules) > 1:
-		price_or_discount = list(set([d.price_or_discount for d in pricing_rules]))
-		if len(price_or_discount) == 1 and price_or_discount[0] == "Discount Percentage":
+		rate_or_discount = list(set([d.rate_or_discount for d in pricing_rules]))
+		if len(rate_or_discount) == 1 and rate_or_discount[0] == "Discount Percentage":
 			pricing_rules = filter(lambda x: x.for_price_list==args.price_list, pricing_rules) \
 				or pricing_rules
 
diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
index 3fa34e2..5b4049b 100644
--- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
@@ -22,9 +22,10 @@
 			"title": "_Test Pricing Rule",
 			"apply_on": "Item Code",
 			"item_code": "_Test Item",
+			"currency": "USD",
 			"selling": 1,
-			"price_or_discount": "Discount Percentage",
-			"price": 0,
+			"rate_or_discount": "Discount Percentage",
+			"rate": 0,
 			"discount_percentage": 10,
 			"company": "_Test Company"
 		}
@@ -102,8 +103,9 @@
 			"apply_on": "Item Code",
 			"item_code": "_Test FG Item 2",
 			"selling": 1,
-			"price_or_discount": "Discount Percentage",
-			"price": 0,
+			"currency": "USD",
+			"rate_or_discount": "Discount Percentage",
+			"rate": 0,
 			"margin_type": "Percentage",
 			"margin_rate_or_amount": 10,
 			"company": "_Test Company"
@@ -167,10 +169,11 @@
 			"doctype": "Pricing Rule",
 			"title": "_Test Pricing Rule 1",
 			"apply_on": "Item Code",
+			"currency": "USD",
 			"item_code": "_Test Variant Item",
 			"selling": 1,
-			"price_or_discount": "Discount Percentage",
-			"price": 0,
+			"rate_or_discount": "Discount Percentage",
+			"rate": 0,
 			"discount_percentage": 7.5,
 			"company": "_Test Company"
 		}).insert()
@@ -198,9 +201,10 @@
 			"title": "_Test Pricing Rule 2",
 			"apply_on": "Item Code",
 			"item_code": "Test Variant PRT",
+			"currency": "USD",
 			"selling": 1,
-			"price_or_discount": "Discount Percentage",
-			"price": 0,
+			"rate_or_discount": "Discount Percentage",
+			"rate": 0,
 			"discount_percentage": 17.5,
 			"company": "_Test Company"
 		}).insert()
@@ -215,10 +219,11 @@
 			"doctype": "Pricing Rule",
 			"title": "_Test Pricing Rule",
 			"apply_on": "Item Code",
+			"currency": "USD",
 			"item_code": "_Test Item",
 			"selling": 1,
-			"price_or_discount": "Discount Percentage",
-			"price": 0,
+			"rate_or_discount": "Discount Percentage",
+			"rate": 0,
 			"min_qty": 5,
 			"max_qty": 7,
 			"discount_percentage": 17.5,
@@ -283,12 +288,13 @@
 		"item_code": args.item_code or "_Test Item",
 		"applicable_for": args.applicable_for,
 		"selling": args.selling or 0,
+		"currency": "USD",
 		"buying": args.buying or 0,
 		"min_qty": args.min_qty or 0.0,
 		"max_qty": args.max_qty or 0.0,
-		"price_or_discount": args.price_or_discount or "Discount Percentage",
+		"rate_or_discount": args.rate_or_discount or "Discount Percentage",
 		"discount_percentage": args.discount_percentage or 0.0,
-		"price": args.price or 0.0,
+		"rate": args.rate or 0.0,
 		"margin_type": args.margin_type,
 		"margin_rate_or_amount": args.margin_rate_or_amount or 0.0
 	}).insert(ignore_permissions=True)
diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js b/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule.js
similarity index 88%
rename from erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js
rename to erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule.js
index 4d34033..8155e7d 100644
--- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js
+++ b/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule.js
@@ -1,4 +1,4 @@
-QUnit.module('Pricing Rule"');
+QUnit.module('Pricing Rule');
 
 QUnit.test("test pricing rule", function(assert) {
 	assert.expect(2);
@@ -11,6 +11,7 @@
 				{selling:1},
 				{applicable_for:'Customer'},
 				{customer:'Test Customer 3'},
+				{currency: frappe.defaults.get_default("currency")}
 				{min_qty:1},
 				{max_qty:20},
 				{valid_upto: frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
diff --git a/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_different_currency.js b/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_different_currency.js
new file mode 100644
index 0000000..4a29956
--- /dev/null
+++ b/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_different_currency.js
@@ -0,0 +1,58 @@
+QUnit.module('Pricing Rule');
+
+QUnit.test("test pricing rule with different currency", function(assert) {
+	assert.expect(3);
+	let done = assert.async();
+	frappe.run_serially([
+		() => {
+			return frappe.tests.make("Pricing Rule", [
+				{title: 'Test Pricing Rule 2'},
+				{apply_on: 'Item Code'},
+				{item_code:'Test Product 4'},
+				{selling:1},
+				{priority: 1},
+				{min_qty:1},
+				{max_qty:20},
+				{valid_upto: frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+				{margin_type: 'Amount'},
+				{margin_rate_or_amount: 20},
+				{rate_or_discount: 'Rate'},
+				{rate:200},
+				{currency:'USD'}
+
+			]);
+		},
+		() => cur_frm.save(),
+		() => frappe.timeout(0.3),
+		() => {
+			assert.ok(cur_frm.doc.item_code=='Test Product 4');
+		},
+
+		() => {
+			return frappe.tests.make('Sales Order', [
+				{customer: 'Test Customer 1'},
+				{currency: 'INR'},
+				{items: [
+					[
+						{'delivery_date': frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+						{'qty': 5},
+						{'item_code': "Test Product 4"}
+					]
+				]}
+			]);
+		},
+		() => cur_frm.save(),
+		() => frappe.timeout(0.3),
+		() => {
+			// get_item_details
+			assert.ok(cur_frm.doc.items[0].pricing_rule=='Test Pricing Rule 2', "Pricing rule correct");
+			// margin not applied because different currency in pricing rule
+			assert.ok(cur_frm.doc.items[0].margin_type==null, "Margin correct");
+		},
+		() => frappe.timeout(0.3),
+		() => frappe.tests.click_button('Submit'),
+		() => frappe.tests.click_button('Yes'),
+		() => frappe.timeout(0.3),
+		() => done()
+	]);
+});
diff --git a/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_same_currency.js b/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_same_currency.js
new file mode 100644
index 0000000..601ff6b
--- /dev/null
+++ b/erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_same_currency.js
@@ -0,0 +1,56 @@
+QUnit.module('Pricing Rule');
+
+QUnit.test("test pricing rule with same currency", function(assert) {
+	assert.expect(4);
+	let done = assert.async();
+	frappe.run_serially([
+		() => {
+			return frappe.tests.make("Pricing Rule", [
+				{title: 'Test Pricing Rule 1'},
+				{apply_on: 'Item Code'},
+				{item_code:'Test Product 4'},
+				{selling:1},
+				{min_qty:1},
+				{max_qty:20},
+				{valid_upto: frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+				{rate_or_discount: 'Rate'},
+				{rate:200},
+				{currency:'USD'}
+
+			]);
+		},
+		() => cur_frm.save(),
+		() => frappe.timeout(0.3),
+		() => {
+			assert.ok(cur_frm.doc.item_code=='Test Product 4');
+		},
+
+		() => {
+			return frappe.tests.make('Sales Order', [
+				{customer: 'Test Customer 1'},
+				{currency: 'USD'},
+				{items: [
+					[
+						{'delivery_date': frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+						{'qty': 5},
+						{'item_code': "Test Product 4"}
+					]
+				]}
+			]);
+		},
+		() => cur_frm.save(),
+		() => frappe.timeout(0.3),
+		() => {
+			// get_item_details
+			assert.ok(cur_frm.doc.items[0].pricing_rule=='Test Pricing Rule 1', "Pricing rule correct");
+			assert.ok(cur_frm.doc.items[0].price_list_rate==200, "Item rate correct");
+			// get_total
+			assert.ok(cur_frm.doc.total== 1000, "Total correct");
+		},
+		() => frappe.timeout(0.3),
+		() => frappe.tests.click_button('Submit'),
+		() => frappe.tests.click_button('Yes'),
+		() => frappe.timeout(0.3),
+		() => done()
+	]);
+});
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index 699e1c6..008ce6e 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -510,13 +510,22 @@
 				self.doc.precision("base_write_off_amount"))
 
 	def calculate_margin(self, item):
+
 		rate_with_margin = 0.0
 		base_rate_with_margin = 0.0
 		if item.price_list_rate:
 			if item.pricing_rule and not self.doc.ignore_pricing_rule:
 				pricing_rule = frappe.get_doc('Pricing Rule', item.pricing_rule)
-				item.margin_type = pricing_rule.margin_type
-				item.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
+
+				if pricing_rule.margin_type == 'Amount' and pricing_rule.currency == self.doc.currency:
+					item.margin_type = pricing_rule.margin_type
+					item.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
+				elif pricing_rule.margin_type == 'Percentage':
+					item.margin_type = pricing_rule.margin_type
+					item.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
+				else:
+					item.margin_type = None
+					item.margin_rate_or_amount = 0.0
 
 			if item.margin_type and item.margin_rate_or_amount:
 				margin_value = item.margin_rate_or_amount if item.margin_type == 'Amount' else flt(item.price_list_rate) * flt(item.margin_rate_or_amount) / 100
diff --git a/erpnext/docs/user/manual/en/accounts/pricing-rule.md b/erpnext/docs/user/manual/en/accounts/pricing-rule.md
index 6048fea..ad68b0f 100644
--- a/erpnext/docs/user/manual/en/accounts/pricing-rule.md
+++ b/erpnext/docs/user/manual/en/accounts/pricing-rule.md
@@ -21,7 +21,7 @@
 
 ### 1. Applicability Section:
 
-In this section, conditions are set for the application of Pricing Rule. When transaction meets condition as specified in this section, Price or Discount as specified in the Pricing Rule will be applied. You can set condition on following values.
+In this section, conditions are set for the application of Pricing Rule. When transaction meets condition as specified in this section, Rate or Discount as specified in the Pricing Rule will be applied. You can set condition on following values.
 
 ####1.1 Applicable On:
 
@@ -43,15 +43,16 @@
 
 ###2. Application:
 
-Using Price List Rule, you can ultimately define price or %discount to be applied on an item.
+Using Price List Rule, you can ultimately define rate or %discount to be applied on an item.
 
 <img alt="Applicable" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-application.png">
 
-####2.1 Price
+####2.1 Rate
 
-Price or Discount specified in the Pricing Rule will be applied only if above applicability rules are matched with values in the transaction. Price mentioned in Pricing Rule will be given priority over item's Price List rate.
+Rate or Discount specified in the Pricing Rule will be applied only if above applicability rules are matched with values in the transaction. Rate mentioned in Pricing Rule will be given priority over item's Price List rate.
 
-<img alt="Applicable Price" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-price.png">
+<img alt="Applicable Rate" class="screenshot" src="/docs/assets/img/articles/pricing-rule-price.png">
+>>>>>>> Renamed price to rate in pricing rule
 
 #### 2.2 Discount Percentage
 
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 8f9a392..243158c 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -494,6 +494,8 @@
 erpnext.patches.v10_0.update_sales_order_link_to_purchase_order
 erpnext.patches.v10_0.added_extra_gst_custom_field_in_gstr2 #2018-02-13
 erpnext.patches.v10_0.item_barcode_childtable_migrate
+erpnext.patches.v10_0.rename_price_to_rate_in_pricing_rule
+erpnext.patches.v10_0.set_currency_in_pricing_rule
 erpnext.patches.v10_0.workflow_expense_claim
 erpnext.patches.v10_0.set_b2c_limit
 erpnext.patches.v10_0.update_translatable_fields
diff --git a/erpnext/patches/v10_0/rename_price_to_rate_in_pricing_rule.py b/erpnext/patches/v10_0/rename_price_to_rate_in_pricing_rule.py
new file mode 100644
index 0000000..48fa222
--- /dev/null
+++ b/erpnext/patches/v10_0/rename_price_to_rate_in_pricing_rule.py
@@ -0,0 +1,14 @@
+from __future__ import unicode_literals
+import frappe
+from frappe.model.utils.rename_field import rename_field
+
+def execute():
+	frappe.reload_doc("accounts", "doctype", "pricing_rule")
+
+	try:
+		rename_field("Pricing Rule", "price_or_discount", "rate_or_discount")
+		rename_field("Pricing Rule", "price", "rate")
+
+	except Exception as e:
+		if e.args[0]!=1054:
+			raise
\ No newline at end of file
diff --git a/erpnext/patches/v10_0/set_currency_in_pricing_rule.py b/erpnext/patches/v10_0/set_currency_in_pricing_rule.py
new file mode 100644
index 0000000..c01b2af
--- /dev/null
+++ b/erpnext/patches/v10_0/set_currency_in_pricing_rule.py
@@ -0,0 +1,12 @@
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+	frappe.reload_doctype("Pricing Rule")
+
+	currency = frappe.db.get_default("currency")
+	for doc in frappe.get_all('Pricing Rule', fields = ["company", "name"]):
+		if doc.company:
+			currency = frappe.db.get_value("Company", doc.company, "default_currency")
+
+		frappe.db.sql("""update `tabPricing Rule` set currency = %s where name = %s""",(currency, doc.name))
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index dfec178..37885f3 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -2,7 +2,7 @@
 erpnext/accounts/doctype/account/tests/test_account.js
 erpnext/accounts/doctype/account/tests/test_make_tax_account.js
 erpnext/accounts/doctype/account/tests/test_account_with_number.js
-erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js
+erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule.js
 erpnext/accounts/doctype/sales_taxes_and_charges_template/test_sales_taxes_and_charges_template.js
 erpnext/accounts/doctype/purchase_taxes_and_charges_template/test_purchase_taxes_and_charges_template.js
 erpnext/accounts/doctype/shipping_rule/test_shipping_rule.js
@@ -106,3 +106,5 @@
 erpnext/accounts/doctype/sales_invoice/tests/test_sales_invoice_with_margin.js
 erpnext/hr/doctype/payroll_entry/test_set_salary_components.js
 erpnext/hr/doctype/payroll_entry/test_payroll_entry.js
+erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_same_currency.js
+erpnext/accounts/doctype/pricing_rule/tests/test_pricing_rule_with_different_currency.js
\ No newline at end of file
