Merge branch 'hotfix'
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index 7f8dde3..85e3403 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -5,7 +5,7 @@
from erpnext.hooks import regional_overrides
from frappe.utils import getdate
-__version__ = '10.1.19'
+__version__ = '10.1.20'
def get_default_company(user=None):
'''Get default company for user'''
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
index 3d8aedc..5b68f1d 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html
@@ -2,9 +2,8 @@
<style>
@media screen {
.print-format {
- padding: 8mm;
- margin:4mm;
- font-size: 10.0pt !important;
+ padding: 4mm;
+ font-size: 8.0pt !important;
font-family: Tahoma, sans-serif;
}
}
@@ -12,9 +11,8 @@
{% } %}
<style>
.print-format {
- padding: 8mm;
- margin:4mm;
- font-size: 10.0pt !important;
+ padding: 4mm;
+ font-size: 8.0pt !important;
font-family: Tahoma, sans-serif;
}
</style>
@@ -41,7 +39,7 @@
var range4 = report.columns[14].label;
%}
{% if(balance_row) { %}
- <table class="table table-bordered table-condensed table-sm small">
+ <table class="table table-bordered table-condensed">
<caption class="text-right">(Amount in {%= data[0][__("currency")] || "" %})</caption>
<colgroup>
<col style="width: 30mm;">
@@ -100,8 +98,8 @@
<thead>
<tr>
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
- <th style="width: 15%">{%= __("Date") %}</th>
- <th style="width: 20%">{%= __("Reference") %}</th>
+ <th style="width: 18%">{%= __("Date") %}</th>
+ <th style="width: 17%">{%= __("Reference") %}</th>
{% if(!filters.show_pdc_in_print) { %}
<th style="width: 20%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
{% } %}
@@ -234,4 +232,4 @@
{% } %}
</tbody>
</table>
-<p class="text-right text-muted">{{ __("Printed On") }}{%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
\ No newline at end of file
+<p class="text-right text-muted">{{ __("Printed On ") }}{%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
\ No newline at end of file
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip.py b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
index 45de5e7..77e79df 100644
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip.py
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
@@ -9,7 +9,7 @@
from frappe import _
from frappe.model.document import Document
from frappe.utils.user import get_user_fullname
-from frappe.utils import getdate
+from frappe.utils import getdate, cstr
from frappe.integrations.doctype.google_maps.google_maps import round_timedelta
from frappe.integrations.doctype.google_maps.google_maps import format_address
@@ -152,17 +152,18 @@
delivery_stops = frappe.get_all('Delivery Stop', {"parent": docname})
attachments = []
- for delivery_stop in delivery_stops:
- delivery_stop_info = frappe.db.get_value(
- "Delivery Stop",
- delivery_stop.name,
- ["notified_by_email", "estimated_arrival", "details", "contact", "delivery_notes"],
- as_dict=1)
- contact_info = frappe.db.get_value("Contact", delivery_stop_info.contact,
+ parent_doc = frappe.get_doc('Delivery Trip', docname)
+ args = parent_doc.as_dict()
+
+ for delivery_stop in parent_doc.delivery_stops:
+ contact_info = frappe.db.get_value("Contact", delivery_stop.contact,
["first_name", "last_name", "email_id", "gender"], as_dict=1)
- if delivery_stop_info.delivery_notes:
- delivery_notes = (delivery_stop_info.delivery_notes).split(",")
+ args.update(delivery_stop.as_dict())
+ args.update(contact_info)
+
+ if delivery_stop.delivery_notes:
+ delivery_notes = (delivery_stop.delivery_notes).split(",")
default_print_format = frappe.get_meta('Delivery Note').default_print_format
attachments = []
for delivery_note in delivery_notes:
@@ -172,21 +173,14 @@
file_name="Delivery Note",
print_format=default_print_format or "Standard"))
- if not delivery_stop_info.notified_by_email and contact_info.email_id:
+ if not delivery_stop.notified_by_email and contact_info.email_id:
driver_info = frappe.db.get_value("Driver", driver, ["full_name", "cell_number"], as_dict=1)
sender_designation = frappe.db.get_value("Employee", sender_email, ["designation"])
- estimated_arrival = str(delivery_stop_info.estimated_arrival)[:-3]
+ estimated_arrival = cstr(delivery_stop.estimated_arrival)[:-3]
email_template = frappe.get_doc("Standard Reply", delivery_notification)
- message = frappe.render_template(
- email_template.response,
- dict(contact_info=contact_info, sender_name=sender_name,
- details=delivery_stop_info.details,
- estimated_arrival=estimated_arrival,
- date=getdate(date).strftime('%d.%m.%y'), vehicle=vehicle,
- driver_info=driver_info,
- sender_designation=sender_designation)
- )
+ message = frappe.render_template(email_template.response, args)
+
frappe.sendmail(
recipients=contact_info.email_id,
sender=sender_email,
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 9ead587..ab99eaf 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -506,7 +506,7 @@
def on_trash(self):
super(Item, self).on_trash()
- frappe.db.sql("""delete from tabBin where item_code=%s""", self.item_code)
+ frappe.db.sql("""delete from tabBin where item_code=%s""", self.name)
frappe.db.sql("delete from `tabItem Price` where item_code=%s", self.name)
for variant_of in frappe.get_all("Item", filters={"variant_of": self.name}):
frappe.delete_doc("Item", variant_of.name)
diff --git a/erpnext/stock/report/item_variant_details/item_variant_details.py b/erpnext/stock/report/item_variant_details/item_variant_details.py
index 7379eb4..c7ca388 100644
--- a/erpnext/stock/report/item_variant_details/item_variant_details.py
+++ b/erpnext/stock/report/item_variant_details/item_variant_details.py
@@ -40,7 +40,9 @@
name = item_dict["variant_name"]
for d in attribute_list:
- item_dict[d] = attr_val_map[name][d]
+ attr_dict = attr_val_map[name]
+ if attr_dict and attr_dict.get(d):
+ item_dict[d] = attr_val_map[name][d]
item_dict["Open Orders"] = order_count_map.get(name) or 0