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
 
