[fixes] multi-currency via payment request
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index e910f54..f11a16c 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, base_rounded_total=None, rounded_total=None, journal_entry=False, bank_account=None):
+def get_payment_entry_against_order(dt, dn, amount=None, debit_in_account_currency=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 base_rounded_total or not rounded_total:
+ if not amount:
if party_account_currency == ref_doc.company_currency:
amount = flt(ref_doc.base_grand_total) - flt(ref_doc.advance_paid)
else:
@@ -581,8 +581,8 @@
"party_account_currency": party_account_currency,
"amount_field_party": amount_field_party,
"amount_field_bank": amount_field_bank,
- "amount": base_rounded_total or amount,
- "rounded_total": rounded_total,
+ "amount": amount,
+ "debit_in_account_currency": debit_in_account_currency,
"remarks": 'Advance Payment received against {0} {1}'.format(dt, dn),
"is_advance": "Yes",
"bank_account": bank_account,
@@ -590,7 +590,7 @@
})
@frappe.whitelist()
-def get_payment_entry_against_invoice(dt, dn, base_rounded_total=None, rounded_total=None, journal_entry=False, bank_account=None):
+def get_payment_entry_against_invoice(dt, dn, amount=None, debit_in_account_currency=None, journal_entry=False, bank_account=None):
ref_doc = frappe.get_doc(dt, dn)
if dt == "Sales Invoice":
party_type = "Customer"
@@ -614,8 +614,8 @@
"party_account_currency": ref_doc.party_account_currency,
"amount_field_party": amount_field_party,
"amount_field_bank": amount_field_bank,
- "amount": base_rounded_total if base_rounded_total else abs(ref_doc.outstanding_amount),
- "rounded_total": rounded_total,
+ "amount": amount if amount else abs(ref_doc.outstanding_amount),
+ "debit_in_account_currency": debit_in_account_currency,
"remarks": 'Payment received against {0} {1}. {2}'.format(dt, dn, ref_doc.remarks),
"is_advance": "No",
"bank_account": bank_account,
@@ -626,6 +626,8 @@
cost_center = frappe.db.get_value("Company", ref_doc.company, "cost_center")
exchange_rate = 1
if args.get("party_account"):
+ print "here..."
+ print args.get("party_account"), args.get("party_account_currency")
exchange_rate = get_exchange_rate(args.get("party_account"), args.get("party_account_currency"),
ref_doc.company, ref_doc.doctype, ref_doc.name)
@@ -664,7 +666,8 @@
bank_row.cost_center = cost_center
- amount = args.get("rounded_total") or args.get("amount")
+ amount = args.get("debit_in_account_currency") or args.get("amount")
+
if bank_row.account_currency == args.get("party_account_currency"):
bank_row.set(args.get("amount_field_bank"), amount)
else:
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index 55c6524..39330a5 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -62,7 +62,7 @@
"bold": 0,
"collapsible": 0,
"fieldname": "rounded_total",
- "fieldtype": "Data",
+ "fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
@@ -71,7 +71,7 @@
"length": 0,
"no_copy": 0,
"permlevel": 0,
- "precision": "",
+ "precision": "2",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
@@ -603,8 +603,8 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-02-09 21:15:55.153924",
- "modified_by": "Administrator",
+ "modified": "2016-02-16 12:29:45.290729",
+ "modified_by": "saurabh@erpnext.com",
"module": "Accounts",
"name": "Payment Request",
"name_case": "",
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 2faa586..0115072 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_balance_on
+from erpnext.accounts.utils import get_account_currency
from erpnext.accounts.doctype.journal_entry.journal_entry import (get_payment_entry_against_invoice,
get_payment_entry_against_order)
@@ -82,16 +82,31 @@
def create_journal_entry(self):
"""create entry"""
frappe.flags.ignore_account_permission = True
+
+ ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
+
+ 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_rounded_total
+ if self.currency != ref_doc.company_currency:
+ debit_in_account_currency = self.rounded_total
+
+ else:
+ amount = self.rounded_total
if self.reference_doctype == "Sales Order":
- jv = get_payment_entry_against_order(self.reference_doctype, self.reference_name,\
- base_rounded_total=self.base_rounded_total, rounded_total= self.rounded_total,\
- journal_entry=True, bank_account=self.payment_account)
+ 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":
- jv = get_payment_entry_against_invoice(self.reference_doctype, self.reference_name,\
- base_rounded_total=self.base_rounded_total, rounded_total= self.rounded_total, \
- journal_entry=True, bank_account=self.payment_account)
+ 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)
jv.update({
"voucher_type": "Journal Entry",