[fixes] currency exchange rate and payment gateway account fixes for multicurrency
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 5b76907..86aeba3 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -83,23 +83,23 @@
party_account = get_party_account("Customer", ref_doc.get("customer"), ref_doc.company)
party_account_currency = get_account_currency(party_account)
-
+
debit_in_account_currency = 0.0
-
+
if party_account_currency == ref_doc.company_currency:
amount = self.base_grand_total
if self.currency != ref_doc.company_currency:
debit_in_account_currency = self.grand_total
else:
- amount = self.grand_total
+ amount = debit_in_account_currency = self.grand_total
if self.reference_doctype == "Sales Order":
jv = get_payment_entry_against_order(self.reference_doctype, self.reference_name,
amount=amount, debit_in_account_currency=debit_in_account_currency , journal_entry=True,
bank_account=self.payment_account)
- if self.reference_doctype == "Sales Invoice":
+ if self.reference_doctype == "Sales Invoice":
jv = get_payment_entry_against_invoice(self.reference_doctype, self.reference_name,
amount=amount, debit_in_account_currency=debit_in_account_currency, journal_entry=True,
bank_account=self.payment_account)
@@ -211,8 +211,8 @@
if dt == "Sales Invoice":
base_grand_total = flt(ref_doc.base_grand_total)
- grand_total = (flt(ref_doc.base_grand_total) - flt(ref_doc.outstanding_amount)) / flt(ref_doc.conversion_rate, 2)
-
+ grand_total = flt(ref_doc.outstanding_amount)
+
if base_grand_total > 0 and grand_total > 0 :
return base_grand_total, grand_total
@@ -221,8 +221,8 @@
def get_gateway_details(args):
"""return gateway and payment account of default payment gateway"""
- if args.payemnt_gateway:
- return get_payment_gateway_account(args.payemnt_gateway)
+ if args.get("payment_gateway"):
+ return get_payment_gateway_account(args.get("payment_gateway"))
if args.cart:
payment_gateway_account = frappe.get_doc("Shopping Cart Settings").payment_gateway_account
diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py
index b041aa1..eb8e558 100644
--- a/erpnext/accounts/doctype/payment_request/test_payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py
@@ -8,6 +8,7 @@
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request, get_gateway_details
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
+from erpnext.setup.utils import get_exchange_rate
# test_records = frappe.get_test_records('Payment Request')
test_dependencies = ["Currency Exchange", "Journal Entry", "Contact", "Address"]
@@ -44,48 +45,44 @@
frappe.get_doc(method).insert(ignore_permissions=True)
def test_payment_request_linkings(self):
- SO_INR = make_sales_order(currency="INR")
- pr = make_payment_request(dt="Sales Order", dn=SO_INR.name, recipient_id="saurabh@erpnext.com")
-
+ so_inr = make_sales_order(currency="INR")
+ pr = make_payment_request(dt="Sales Order", dn=so_inr.name, recipient_id="saurabh@erpnext.com")
+
self.assertEquals(pr.reference_doctype, "Sales Order")
- self.assertEquals(pr.reference_name, SO_INR.name)
+ self.assertEquals(pr.reference_name, so_inr.name)
self.assertEquals(pr.currency, "INR")
-
- SI_USD = create_sales_invoice(currency="USD", conversion_rate=50)
- pr = make_payment_request(dt="Sales Invoice", dn=SI_USD.name, recipient_id="saurabh@erpnext.com")
+
+ conversion_rate = get_exchange_rate("USD", "INR")
+
+ si_usd = create_sales_invoice(currency="USD", conversion_rate=conversion_rate)
+ pr = make_payment_request(dt="Sales Invoice", dn=si_usd.name, recipient_id="saurabh@erpnext.com")
self.assertEquals(pr.reference_doctype, "Sales Invoice")
- self.assertEquals(pr.reference_name, SI_USD.name)
+ self.assertEquals(pr.reference_name, si_usd.name)
self.assertEquals(pr.currency, "USD")
-
- def test_payment_entry(self):
- SO_INR = make_sales_order(currency="INR")
- pr = make_payment_request(dt="Sales Order", dn=SO_INR.name, recipient_id="saurabh@erpnext.com",
- mute_email=1, submit_doc=1)
- jv = pr.set_as_paid()
-
- SO_INR = frappe.get_doc("Sales Order", SO_INR.name)
-
- self.assertEquals(SO_INR.advance_paid, jv.total_debit)
-
- SI_USD = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
- currency="USD", conversion_rate=50)
- pr = make_payment_request(dt="Sales Invoice", dn=SI_USD.name, recipient_id="saurabh@erpnext.com",
- mute_email=1, return_doc=1, payemnt_gateway="_Test Gateway - USD")
-
+ def test_payment_entry(self):
+ so_inr = make_sales_order(currency="INR")
+ pr = make_payment_request(dt="Sales Order", dn=so_inr.name, recipient_id="saurabh@erpnext.com",
+ mute_email=1, submit_doc=1)
jv = pr.set_as_paid()
-
- payemnt_gateway_details = get_gateway_details({"payemnt_gateway": "_Test Gateway - USD"})
-
- accounts = jv.accounts.as_dict()
-
- self.assertEquals(accounts[0].account, "_Test Receivable USD - _TC")
- self.assertEquals(accounts[0].account, payemnt_gateway_details.payment_account)
-
-
-
-
-
-
-
+
+ so_inr = frappe.get_doc("Sales Order", so_inr.name)
+
+ self.assertEquals(so_inr.advance_paid, jv.total_debit)
+
+ conversion_rate = get_exchange_rate("USD", "INR")
+
+ si_usd = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
+ currency="USD", conversion_rate=conversion_rate)
+
+ pr = make_payment_request(dt="Sales Invoice", dn=si_usd.name, recipient_id="saurabh@erpnext.com",
+ mute_email=1, return_doc=1, payment_gateway="_Test Gateway - USD")
+
+ jv = pr.set_as_paid()
+
+ payment_gateway_details = get_gateway_details({"payment_gateway": "_Test Gateway - USD"})
+
+ self.assertEquals(jv.accounts[0].account, "_Test Receivable USD - _TC")
+ self.assertEquals(jv.accounts[1].account, payment_gateway_details.payment_account)
+
\ No newline at end of file