diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 7f8dde3fc3..85e34036fe 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe 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 3d8aedcdcc..5b68f1d2ab 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html @@ -2,9 +2,8 @@ @@ -41,7 +39,7 @@ var range4 = report.columns[14].label; %} {% if(balance_row) { %} - +
@@ -100,8 +98,8 @@ {% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %} - - + + {% if(!filters.show_pdc_in_print) { %} {% } %} @@ -234,4 +232,4 @@ {% } %}
(Amount in {%= data[0][__("currency")] || "" %})
{%= __("Date") %}{%= __("Reference") %}{%= __("Date") %}{%= __("Reference") %}{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}
-

{{ __("Printed On") }}{%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}

\ No newline at end of file +

{{ __("Printed On ") }}{%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}

\ 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 471e1a3f58..f1551c9428 100644 --- a/erpnext/stock/doctype/delivery_trip/delivery_trip.py +++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.py @@ -9,7 +9,7 @@ import googlemaps 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 @@ -141,40 +141,33 @@ def calculate_time_matrix(name): @frappe.whitelist() def notify_customers(docname, date, driver, vehicle, sender_email, delivery_notification): sender_name = get_user_fullname(sender_email) - 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_note"], - 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_note: + args.update(delivery_stop.as_dict()) + args.update(contact_info) + + if delivery_stop.delivery_note: default_print_format = frappe.get_meta('Delivery Note').default_print_format attachments = frappe.attach_print('Delivery Note', - delivery_stop_info.delivery_note, + delivery_stop.delivery_note, 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 b4b28a7e13..123e73f652 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -532,7 +532,7 @@ class Item(WebsiteGenerator): 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 7379eb4e50..c7ca388ada 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 @@ def get_data(item): 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