Merge branch 'develop' into ar_billed_cur
diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js
index eff705d..10362db 100644
--- a/erpnext/accounts/report/accounts_payable/accounts_payable.js
+++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js
@@ -145,6 +145,11 @@
"fieldtype": "Check",
},
{
+ "fieldname": "in_party_currency",
+ "label": __("In Party Currency"),
+ "fieldtype": "Check",
+ },
+ {
"fieldname": "ignore_accounts",
"label": __("Group by Voucher"),
"fieldtype": "Check",
diff --git a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
index 9f03d92..b4cb25f 100644
--- a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
+++ b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py
@@ -40,6 +40,7 @@
"range2": 60,
"range3": 90,
"range4": 120,
+ "in_party_currency": 1,
}
data = execute(filters)
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
index 786aad6..d06b259 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
@@ -174,6 +174,11 @@
"fieldtype": "Check",
},
{
+ "fieldname": "in_party_currency",
+ "label": __("In Party Currency"),
+ "fieldtype": "Check",
+ },
+ {
"fieldname": "ignore_accounts",
"label": __("Group by Voucher"),
"fieldtype": "Check",
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
old mode 100755
new mode 100644
index 12e4003..e42d325
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -28,8 +28,8 @@
# 6. Configurable Ageing Groups (0-30, 30-60 etc) can be set via filters
# 7. For overpayment against an invoice with payment terms, there will be an additional row
# 8. Invoice details like Sales Persons, Delivery Notes are also fetched comma separated
-# 9. Report amounts are in "Party Currency" if party is selected, or company currency for multi-party
-# 10. This reports is based on all GL Entries that are made against account_type "Receivable" or "Payable"
+# 9. Report amounts are in party currency if in_party_currency is selected, otherwise company currency
+# 10. This report is based on Payment Ledger Entries
def execute(filters=None):
@@ -84,6 +84,9 @@
self.total_row_map = {}
self.skip_total_row = 1
+ if self.filters.get("in_party_currency"):
+ self.skip_total_row = 1
+
def get_data(self):
self.get_ple_entries()
self.get_sales_invoices_or_customers_based_on_sales_person()
@@ -145,7 +148,7 @@
if self.filters.get("group_by_party"):
self.init_subtotal_row(ple.party)
- if self.filters.get("group_by_party"):
+ if self.filters.get("group_by_party") and not self.filters.get("in_party_currency"):
self.init_subtotal_row("Total")
def get_invoices(self, ple):
@@ -224,8 +227,7 @@
if not row:
return
- # amount in "Party Currency", if its supplied. If not, amount in company currency
- if self.filters.get("party_type") and self.filters.get("party"):
+ if self.filters.get("in_party_currency"):
amount = ple.amount_in_account_currency
else:
amount = ple.amount
@@ -256,8 +258,10 @@
def update_sub_total_row(self, row, party):
total_row = self.total_row_map.get(party)
- for field in self.get_currency_fields():
- total_row[field] += row.get(field, 0.0)
+ if total_row:
+ for field in self.get_currency_fields():
+ total_row[field] += row.get(field, 0.0)
+ total_row["currency"] = row.get("currency", "")
def append_subtotal_row(self, party):
sub_total_row = self.total_row_map.get(party)
@@ -309,7 +313,7 @@
if self.filters.get("group_by_party"):
self.append_subtotal_row(self.previous_party)
if self.data:
- self.data.append(self.total_row_map.get("Total"))
+ self.data.append(self.total_row_map.get("Total", {}))
def append_row(self, row):
self.allocate_future_payments(row)
@@ -440,7 +444,7 @@
party_details = self.get_party_details(row.party) or {}
row.update(party_details)
- if self.filters.get("party_type") and self.filters.get("party"):
+ if self.filters.get("in_party_currency"):
row.currency = row.account_currency
else:
row.currency = self.company_currency
diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
index cbeb6d3..04a4e80 100644
--- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py
@@ -557,6 +557,7 @@
"range2": 60,
"range3": 90,
"range4": 120,
+ "in_party_currency": 1,
}
si = self.create_sales_invoice(no_payment_schedule=True, do_not_submit=True)