[Fix] PDC amount, PDC print layout issue (#13062)
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
index b622ab4..d96fc99 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
@@ -1,10 +1,15 @@
-<style>
-@media screen {
- .print-format {
- padding: 8mm;
- }
-}
-</style>
+{% if(filters.show_pdc_in_print) { %}
+ <style>
+ @media screen {
+ .print-format {
+ padding: 8mm;
+ margin:4mm;
+ font-size:10px;
+ font-family: Tahoma, sans-serif;
+ }
+ }
+ </style>
+{% } %}
<h2 class="text-center">{%= __(report.report_name) %}</h2>
<h4 class="text-center">{%= filters.customer || filters.supplier %} </h4>
@@ -82,21 +87,24 @@
<tr>
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
<th style="width: 10%">{%= __("Date") %}</th>
- <th style="width: 10%">{%= __("Ref") %}</th>
+ <th style="width: 15%">{%= __("Ref") %}</th>
+ {% if(!filters.show_pdc_in_print) { %}
<th style="width: 20%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
+ {% } %}
<th style="width: 10%">{%= __("Invoiced Amount") %}</th>
{% if(!filters.show_pdc_in_print) { %}
<th style="width: 10%">{%= __("Paid Amount") %}</th>
<th style="width: 10%">{%= report.report_name === "Accounts Receivable" ? __('Credit Note') : __('Debit Note') %}</th>
{% } %}
- <th style="width: 6%">{%= __("Outstanding Amount") %}</th>
+ <th style="width: 15%">{%= __("Outstanding Amount") %}</th>
{% if(filters.show_pdc_in_print) { %}
{% if(report.report_name === "Accounts Receivable") { %}
- <th style="width: 6%">{%= __("Customer LPO No.") %}</th>
+ <th style="width: 10%">{%= __("Customer LPO No.") %}</th>
{% } %}
- <th style="width: 6%">{%= __("PDC/LC Date") %}</th>
- <th style="width: 6%">{%= __("PDC/LC Ref") %}</th>
- <th style="width: 6%">{%= __("PDC/LC Amount") %}</th>
+ <th style="width: 10%">{%= __("PDC/LC Date") %}</th>
+ <th style="width: 10%">{%= __("PDC/LC Ref") %}</th>
+ <th style="width: 10%">{%= __("PDC/LC Amount") %}</th>
+ <th style="width: 10%">{%= __("Remaining Balance") %}</th>
{% } %}
{% } else { %}
<th style="width: 40%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
@@ -115,6 +123,7 @@
<td>{%= dateutil.str_to_user(data[i][__("Posting Date")]) %}</td>
<td>{%= data[i][__("Voucher Type")] %}
<br>{%= data[i][__("Voucher No")] %}</td>
+ {% if(!filters.show_pdc_in_print) { %}
<td>
{% if(!(filters.customer || filters.supplier)) { %}
{%= data[i][__("Customer")] || data[i][__("Supplier")] %}
@@ -127,6 +136,7 @@
<br>{%= __("Remarks") %}:
{%= data[i][__("Remarks")] %}
</td>
+ {% } %}
<td style="text-align: right">
{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"]) %}</td>
@@ -147,10 +157,13 @@
<td style="text-align: right">{%= frappe.datetime.str_to_user(data[i][__("PDC/LC Date")]) %}</td>
<td style="text-align: right">{%= data[i][__("PDC/LC Ref")] %}</td>
<td style="text-align: right">{%= format_currency(data[i][__("PDC/LC Amount")], data[i]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i][__("Remaining Balance")], data[i]["currency"]) %}</td>
{% } %}
{% } else { %}
<td></td>
+ {% if(!filters.show_pdc_in_print) { %}
<td></td>
+ {% } %}
<td><b>{%= __("Total") %}</b></td>
<td style="text-align: right">
{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"] ) %}</td>
@@ -171,6 +184,7 @@
<td style="text-align: right">{%= frappe.datetime.str_to_user(data[i][__("PDC/LC Date")]) %}</td>
<td style="text-align: right">{%= data[i][__("PDC/LC Ref")] %}</td>
<td style="text-align: right">{%= format_currency(data[i][__("PDC/LC Amount")], data[i]["currency"]) %}</td>
+ <td style="text-align: right">{%= format_currency(data[i][__("Remaining Balance")], data[i]["currency"]) %}</td>
{% } %}
{% } %}
{% } else { %}
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index 4f83db1..02f247b 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -159,7 +159,7 @@
else:
row.append(company_currency)
- pdc = pdc_details.get(gle.voucher_no, {})
+ pdc = pdc_details.get((gle.voucher_no, gle.party), {})
remaining_balance = outstanding_amount - flt(pdc.get("pdc_amount"))
row += [pdc.get("pdc_date"), pdc.get("pdc_ref"),
flt(pdc.get("pdc_amount")), remaining_balance]
@@ -389,25 +389,33 @@
on
(pref.parent = pent.name)
where
- pent.docstatus = 0 and pent.reference_date > pent.posting_date
+ pent.docstatus < 2 and pent.reference_date >= pent.posting_date
and pent.party_type = %s
- group by pref.reference_name""", party_type, as_dict=1):
- pdc_details.setdefault(pdc.invoice_no, pdc)
+ group by pent.party, pref.reference_name""", party_type, as_dict=1):
+ pdc_details.setdefault((pdc.invoice_no, pdc.party), pdc)
+
+ if scrub(party_type):
+ amount_field = "jea.debit_in_account_currency + jea.credit_in_account_currency"
+ else:
+ amount_field = "jea.debit + jea.credit"
for pdc in frappe.db.sql("""
select
jea.reference_name as invoice_no, jea.party, jea.party_type,
- max(je.cheque_date) as pdc_date, sum(ifnull(je.total_amount,0)) as pdc_amount,
+ max(je.cheque_date) as pdc_date, sum(ifnull({0},0)) as pdc_amount,
GROUP_CONCAT(je.cheque_no SEPARATOR ', ') as pdc_ref
from
`tabJournal Entry` as je inner join `tabJournal Entry Account` as jea
on
(jea.parent = je.name)
where
- je.docstatus = 0 and je.cheque_date > je.posting_date
+ je.docstatus < 2 and je.cheque_date >= je.posting_date
and jea.party_type = %s
- group by jea.reference_name""", party_type, as_dict=1):
- pdc_details.setdefault(pdc.invoice_no, pdc)
+ group by jea.party, jea.reference_name""".format(amount_field), party_type, as_dict=1):
+ if (pdc.invoice_no, pdc.party) in pdc_details:
+ pdc_details[(pdc.invoice_no, pdc.party)]["pdc_amount"] += pdc.pdc_amount
+ else:
+ pdc_details.setdefault((pdc.invoice_no, pdc.party), pdc)
return pdc_details