[fixes] field renaming, cart checkout fixes, JE fixes for multi-currency payment
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index afb9b85..e910f54 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -551,7 +551,7 @@
 		}
 
 @frappe.whitelist()
-def get_payment_entry_against_order(dt, dn, amount=None, journal_entry=False, bank_account=None):
+def get_payment_entry_against_order(dt, dn, base_rounded_total=None, rounded_total=None, journal_entry=False, bank_account=None):
 	ref_doc = frappe.get_doc(dt, dn)
 
 	if flt(ref_doc.per_billed, 2) > 0:
@@ -569,7 +569,7 @@
 	party_account = get_party_account(party_type, ref_doc.get(party_type.lower()), ref_doc.company)
 	party_account_currency = get_account_currency(party_account)
 
-	if not amount:
+	if not base_rounded_total or not rounded_total:
 		if party_account_currency == ref_doc.company_currency:
 			amount = flt(ref_doc.base_grand_total) - flt(ref_doc.advance_paid)
 		else:
@@ -581,7 +581,8 @@
 		"party_account_currency": party_account_currency,
 		"amount_field_party": amount_field_party,
 		"amount_field_bank": amount_field_bank,
-		"amount": amount,
+		"amount": base_rounded_total or amount,
+		"rounded_total": rounded_total,
 		"remarks": 'Advance Payment received against {0} {1}'.format(dt, dn),
 		"is_advance": "Yes",
 		"bank_account": bank_account,
@@ -589,7 +590,7 @@
 	})
 
 @frappe.whitelist()
-def get_payment_entry_against_invoice(dt, dn, amount=None, journal_entry=False, bank_account=None):
+def get_payment_entry_against_invoice(dt, dn, base_rounded_total=None, rounded_total=None, journal_entry=False, bank_account=None):
 	ref_doc = frappe.get_doc(dt, dn)
 	if dt == "Sales Invoice":
 		party_type = "Customer"
@@ -613,7 +614,8 @@
 		"party_account_currency": ref_doc.party_account_currency,
 		"amount_field_party": amount_field_party,
 		"amount_field_bank": amount_field_bank,
-		"amount": amount if amount else abs(ref_doc.outstanding_amount),
+		"amount": base_rounded_total if base_rounded_total else abs(ref_doc.outstanding_amount),
+		"rounded_total": rounded_total,
 		"remarks": 'Payment received against {0} {1}. {2}'.format(dt, dn, ref_doc.remarks),
 		"is_advance": "No",
 		"bank_account": bank_account,
@@ -662,10 +664,11 @@
 
 	bank_row.cost_center = cost_center
 
+	amount = args.get("rounded_total") or args.get("amount")
 	if bank_row.account_currency == args.get("party_account_currency"):
-		bank_row.set(args.get("amount_field_bank"), args.get("amount"))
+		bank_row.set(args.get("amount_field_bank"), amount)
 	else:
-		bank_row.set(args.get("amount_field_bank"), args.get("amount") * exchange_rate)
+		bank_row.set(args.get("amount_field_bank"), amount * exchange_rate)
 
 	# set multi currency check
 	if party_row.account_currency != ref_doc.company_currency \
diff --git a/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py b/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py
index 468f877..fd213a4 100644
--- a/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py
+++ b/erpnext/accounts/doctype/payment_gateway_account/payment_gateway_account.py
@@ -8,7 +8,7 @@
 
 class PaymentGatewayAccount(Document):
 	def autoname(self):
-		self.name = self.gateway + " - " + self.currency
+		self.name = self.payment_gateway + " - " + self.currency
 		
 	def validate(self):
 		self.currency = frappe.db.get_value("Account", self.payment_account, "account_currency")
@@ -24,4 +24,4 @@
 	def set_as_default_if_not_set(self):
 		if not frappe.db.get_value("Payment Gateway Account", 
 			{"is_default": 1, "name": ("!=", self.name)}, "name"):
-				self.is_default = 1
+			self.is_default = 1
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index bfd6442..55c6524 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -37,13 +37,13 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
-   "fieldname": "amount", 
+   "fieldname": "base_rounded_total", 
    "fieldtype": "Currency", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Amount", 
+   "label": "Base Rounded Total", 
    "length": 0, 
    "no_copy": 0, 
    "permlevel": 0, 
@@ -61,6 +61,30 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "rounded_total", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Rounded Total", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "currency", 
    "fieldtype": "Link", 
    "hidden": 0, 
@@ -579,7 +603,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-01-21 11:44:04.920584", 
+ "modified": "2016-02-09 21:15:55.153924", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Payment Request", 
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index b1af6cc..588e436 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -8,7 +8,7 @@
 from frappe.model.document import Document
 from frappe.utils import flt, nowdate, get_url, cstr
 from erpnext.accounts.party import get_party_account
-from erpnext.accounts.utils import get_account_currency, get_balance_on
+from erpnext.accounts.utils import get_balance_on
 from erpnext.accounts.doctype.journal_entry.journal_entry import (get_payment_entry_against_invoice, 
 get_payment_entry_against_order)
 
@@ -80,29 +80,27 @@
 		
 	def create_journal_entry(self):
 		"""create entry"""
-		payment_details = {
-			"amount": self.amount,
-			"journal_entry": True,
-			"bank_account": self.payment_account
-		}
-		
 		frappe.flags.ignore_account_permission = True
 				
 		if self.reference_doctype == "Sales Order":
 			jv = get_payment_entry_against_order(self.reference_doctype, self.reference_name,\
-			 amount=self.amount, journal_entry=True, bank_account=self.payment_account)
+			 base_rounded_total=self.base_rounded_total, rounded_total= self.rounded_total,\
+			 journal_entry=True, bank_account=self.payment_account)
 			
 		if self.reference_doctype == "Sales Invoice":
 			jv = get_payment_entry_against_invoice(self.reference_doctype, self.reference_name,\
-			 amount=self.amount, journal_entry=True, bank_account=self.payment_account)
+			 base_rounded_total=self.base_rounded_total, rounded_total= self.rounded_total, \
+			 journal_entry=True, bank_account=self.payment_account)
 			
 		jv.update({
 			"voucher_type": "Journal Entry",
 			"posting_date": nowdate()
-		})		
+		})
+		
+		print jv.as_dict()
 		jv.insert(ignore_permissions=True)
 		jv.submit()
-		
+
 		#set status as paid for Payment Request
 		frappe.db.set_value(self.doctype, self.name, "status", "Paid")
 		
@@ -148,20 +146,23 @@
 	ref_doc = frappe.get_doc(args.dt, args.dn)
 	gateway_account = get_gateway_details(args)
 	
+	base_rounded_total, rounded_total = get_amount(ref_doc, args.dt)
 	existing_payment_request = frappe.db.get_value("Payment Request", 
 		{"reference_doctype": args.dt, "reference_name": args.dn})
+	
 	if existing_payment_request:
 		pr = frappe.get_doc("Payment Request", existing_payment_request)
-	else:
+		
+	else:	
 		pr = frappe.new_doc("Payment Request")
-
 		pr.update({
-			"payment_gateway": gateway_account.name,
-			"gateway": gateway_account.gateway,
+			"payment_gateway_account": gateway_account.name,
+			"payment_gateway": gateway_account.payment_gateway,
 			"payment_account": gateway_account.payment_account,
 			"currency": ref_doc.currency,
 			"make_sales_invoice": args.cart or 0,
-			"amount": get_amount(ref_doc, args.dt),
+			"base_rounded_total": base_rounded_total,
+			"rounded_total": rounded_total,
 			"mute_email": args.mute_email or 0,
 			"email_to": args.recipient_id or "",
 			"subject": "Payment Request for %s"%args.dn,
@@ -178,11 +179,12 @@
 		if args.submit_doc:
 			pr.insert(ignore_permissions=True)
 			pr.submit()
-	
+
+		
 	if args.cart:
 		generate_payment_request(pr.name)
 		frappe.db.commit()
-	
+		
 	if not args.cart:	
 		return pr
 			
@@ -191,13 +193,16 @@
 def get_amount(ref_doc, dt):
 	"""get amount based on doctype"""
 	if dt == "Sales Order":
-		amount = flt(ref_doc.base_grand_total) - flt(ref_doc.advance_paid)
+		base_rounded_total = flt(ref_doc.base_grand_total)
+		rounded_total = flt(ref_doc.grand_total) - flt(ref_doc.advance_paid)
 
 	if dt == "Sales Invoice":
-		amount = abs(ref_doc.outstanding_amount)
+		base_rounded_total = flt(ref_doc.base_grand_total)
+		rounded_total = flt(ref_doc.grand_total) - flt(ref_doc.advance_paid)
 	
-	if amount > 0:
-		return amount
+	if base_rounded_total > 0 and rounded_total > 0 :
+		return base_rounded_total, rounded_total
+		
 	else:
 		frappe.throw(_("Payment Entry is already created"))
 		
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index e5ec454..76bffc2 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -246,6 +246,6 @@
 erpnext.patches.v6_16.create_manufacturer_records
 execute:frappe.db.sql("update `tabPricing Rule` set title=name where title='' or title is null") #2016-01-27
 erpnext.patches.v6_20.set_party_account_currency_in_orders
-erpnext.patches.v6_19.comment_feed_communication
+#erpnext.patches.v6_19.comment_feed_communication
 erpnext.patches.v6_21.fix_reorder_level
 erpnext.patches.v6_21.rename_material_request_fields
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
index 5b9dc32..4c462c2 100644
--- a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
@@ -226,6 +226,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "default": "Orders", 
+   "description": "After payment completion redirect user to selected page.", 
    "fieldname": "payment_success_url", 
    "fieldtype": "Select", 
    "hidden": 0, 
@@ -246,6 +247,54 @@
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "column_break_11", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "payment_gateway_account", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Payment Gateway Account", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Payment Gateway Account", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
   }
  ], 
  "hide_heading": 0, 
@@ -258,7 +307,7 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-02-01 11:58:39.741582", 
+ "modified": "2016-02-09 15:45:03.389220", 
  "modified_by": "Administrator", 
  "module": "Shopping Cart", 
  "name": "Shopping Cart Settings", 
diff --git a/erpnext/templates/includes/cart/cart_address.html b/erpnext/templates/includes/cart/cart_address.html
index 44964da..1af8f0b 100644
--- a/erpnext/templates/includes/cart/cart_address.html
+++ b/erpnext/templates/includes/cart/cart_address.html
@@ -1,12 +1,15 @@
 {% from "erpnext/templates/includes/cart/cart_macros.html"
     import show_address %}
 <div class="row">
+	{% if addresses|length == 1%}
+		{% set select_address = True %}
+	{% endif %}
 	<div class="col-sm-6">
 		<h4>{{ _("Shipping Address") }}</h4>
 		<div id="cart-shipping-address" class="panel-group"
 			data-fieldname="shipping_address_name">
             {% for address in addresses %}
-                {{ show_address(address, doc, "shipping_address_name") }}
+                {{ show_address(address, doc, "shipping_address_name", select_address) }}
             {% endfor %}
         </div>
 		<a class="btn btn-default btn-sm" href="/addresses">
@@ -17,7 +20,7 @@
 		<div id="cart-billing-address" class="panel-group"
 			data-fieldname="customer_address">
             {% for address in addresses %}
-                {{ show_address(address, doc, "customer_address") }}
+                {{ show_address(address, doc, "customer_address", select_address) }}
             {% endfor %}
         </div>
 	</div>
diff --git a/erpnext/templates/includes/cart/cart_macros.html b/erpnext/templates/includes/cart/cart_macros.html
index 250b487..c77aa6a 100644
--- a/erpnext/templates/includes/cart/cart_macros.html
+++ b/erpnext/templates/includes/cart/cart_macros.html
@@ -1,5 +1,10 @@
-{% macro show_address(address, doc, fieldname) %}
-{% set selected=address.name==doc.get(fieldname) %}
+{% macro show_address(address, doc, fieldname, select_address=False) %}
+{% if select_address %}
+	{% set selected=True %}
+{% else %}
+	{% set selected=address.name==doc.get(fieldname) %}
+{% endif %}
+
 <div class="panel panel-default">
 	<div class="panel-heading">
 		<div class="row">