diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 4a67eb4e477..0452132abcc 100755 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -579,3 +579,4 @@ erpnext.patches.v10_0.update_user_image_in_employee erpnext.patches.v11_0.update_delivery_trip_status erpnext.patches.v10_0.repost_gle_for_purchase_receipts_with_rejected_items erpnext.patches.v11_0.set_missing_gst_hsn_code +erpnext.patches.v11_0.update_package_total_in_delivery_trips \ No newline at end of file diff --git a/erpnext/patches/v11_0/update_package_total_in_delivery_trips.py b/erpnext/patches/v11_0/update_package_total_in_delivery_trips.py new file mode 100755 index 00000000000..d609890fb45 --- /dev/null +++ b/erpnext/patches/v11_0/update_package_total_in_delivery_trips.py @@ -0,0 +1,7 @@ +import frappe + +def execute(): + for trip in frappe.get_all("Delivery Trip", {"docstatus" : 1}): + trip_doc = frappe.get_doc("Delivery Trip", trip.name) + total = sum([stop.grand_total for stop in trip_doc.delivery_stops if stop.grand_total]) + frappe.db.set_value("Delivery Trip", trip.name, "package_total", total, update_modified=False) \ 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 01b4734bf58..cafc9380cb6 100644 --- a/erpnext/stock/doctype/delivery_trip/delivery_trip.py +++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.py @@ -25,6 +25,8 @@ class DeliveryTrip(Document): def validate(self): self.validate_stop_addresses() + self.update_status() + self.update_package_total() def on_submit(self): self.update_status() @@ -37,11 +39,6 @@ class DeliveryTrip(Document): self.update_status() self.update_delivery_notes(delete=True) - def validate_stop_addresses(self): - for stop in self.delivery_stops: - if not stop.customer_address: - stop.customer_address = get_address_display(frappe.get_doc("Address", stop.address).as_dict()) - def update_status(self): status = { 0: "Draft", @@ -58,6 +55,14 @@ class DeliveryTrip(Document): self.db_set("status", status) + def update_package_total(self): + self.package_total = sum([stop.grand_total for stop in self.delivery_stops if stop.grand_total]) + + def validate_stop_addresses(self): + for stop in self.delivery_stops: + if not stop.customer_address: + stop.customer_address = get_address_display(frappe.get_doc("Address", stop.address).as_dict()) + def update_delivery_notes(self, delete=False): """ Update all connected Delivery Notes with Delivery Trip details