[fix] show formatted currency value in advance paid validation
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 25b05cb..55e846b 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -209,9 +209,7 @@
account = self.reference_accounts[reference_name]
if reference_type in ("Sales Order", "Purchase Order"):
- order = frappe.db.get_value(reference_type, reference_name,
- ["docstatus", "per_billed", "status", "advance_paid",
- "base_grand_total", "grand_total", "currency"], as_dict=1)
+ order = frappe.get_doc(reference_type, reference_name)
if order.docstatus != 1:
frappe.throw(_("{0} {1} is not submitted").format(reference_type, reference_name))
@@ -225,12 +223,16 @@
account_currency = get_account_currency(account)
if account_currency == self.company_currency:
voucher_total = order.base_grand_total
+ formatted_voucher_total = fmt_money(voucher_total, order.precision("base_grand_total"),
+ currency=account_currency)
else:
voucher_total = order.grand_total
+ formatted_voucher_total = fmt_money(voucher_total, order.precision("grand_total"),
+ currency=account_currency)
if flt(voucher_total) < (flt(order.advance_paid) + total):
frappe.throw(_("Advance paid against {0} {1} cannot be greater \
- than Grand Total {2}").format(reference_type, reference_name, voucher_total))
+ than Grand Total {2}").format(reference_type, reference_name, formatted_voucher_total))
def validate_invoices(self):
"""Validate totals and docstatus for invoices"""
@@ -797,7 +799,7 @@
company_currency = get_company_currency(company)
if account_currency != company_currency:
- if reference_type in ("Sales Invoice", "Purchase Invoice") and reference_name:
+ if reference_type and reference_name and frappe.get_meta(reference_type).get_field("conversion_rate"):
exchange_rate = frappe.db.get_value(reference_type, reference_name, "conversion_rate")
elif account_details and account_details.account_type == "Bank" and \
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 69e5185..2cf67c1 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -1601,30 +1601,6 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
- "fieldname": "advance_paid",
- "fieldtype": "Currency",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Advance Paid",
- "length": 0,
- "no_copy": 1,
- "options": "party_account_currency",
- "permlevel": 0,
- "print_hide": 1,
- "print_hide_if_no_value": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
- {
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
"fieldname": "column_break4",
"fieldtype": "Column Break",
"hidden": 0,
@@ -1698,6 +1674,30 @@
{
"allow_on_submit": 0,
"bold": 0,
+ "collapsible": 0,
+ "fieldname": "advance_paid",
+ "fieldtype": "Currency",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Advance Paid",
+ "length": 0,
+ "no_copy": 1,
+ "options": "party_account_currency",
+ "permlevel": 0,
+ "print_hide": 1,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
"collapsible": 1,
"collapsible_depends_on": "terms",
"fieldname": "terms_section_break",
@@ -2534,7 +2534,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-01-27 15:15:05.213016",
+ "modified": "2016-01-29 01:41:08.478575",
"modified_by": "Administrator",
"module": "Buying",
"name": "Purchase Order",
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index b8acf68..9916613 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
from frappe import _, throw
-from frappe.utils import today, flt, cint
+from frappe.utils import today, flt, cint, fmt_money
from erpnext.setup.utils import get_company_currency, get_exchange_rate
from erpnext.accounts.utils import get_fiscal_year, validate_fiscal_year, get_account_currency
from erpnext.utilities.transaction_base import TransactionBase
@@ -402,21 +402,28 @@
""".format(dr_or_cr=dr_or_cr), (self.doctype, self.name, party), as_dict=1)
if advance:
- advance_paid = flt(advance[0].amount, self.precision("advance_paid"))
-
- frappe.db.set_value(self.doctype, self.name, "party_account_currency",
- advance[0].account_currency)
-
- if advance[0].account_currency == self.currency:
+ advance = advance[0]
+ advance_paid = flt(advance.amount, self.precision("advance_paid"))
+ formatted_advance_paid = fmt_money(advance_paid, precision=self.precision("advance_paid"),
+ currency=advance.account_currency)
+
+ frappe.db.set_value(self.doctype, self.name, "party_account_currency",
+ advance.account_currency)
+
+ if advance.account_currency == self.currency:
order_total = self.grand_total
+ formatted_order_total = fmt_money(order_total, precision=self.precision("grand_total"),
+ currency=advance.account_currency)
else:
order_total = self.base_grand_total
-
+ formatted_order_total = fmt_money(order_total, precision=self.precision("base_grand_total"),
+ currency=advance.account_currency)
+
if order_total >= advance_paid:
frappe.db.set_value(self.doctype, self.name, "advance_paid", advance_paid)
else:
frappe.throw(_("Total advance ({0}) against Order {1} cannot be greater than the Grand Total ({2})")
- .format(advance_paid, self.name, order_total))
+ .format(formatted_advance_paid, self.name, formatted_order_total))
@property
def company_abbr(self):