mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-09 15:29:30 +00:00
fix(stock): remove empty delivery stops after mapping (#58896)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
(cherry picked from commit 4b23cee2ea)
This commit is contained in:
@@ -54,6 +54,11 @@ class DeliveryTrip(Document):
|
||||
self.update_status()
|
||||
self.update_delivery_notes(delete=True)
|
||||
|
||||
def after_mapping(self, source_doc):
|
||||
for stop in self.delivery_stops[:]:
|
||||
if not any(stop.get(df.fieldname) for df in stop.meta.fields):
|
||||
self.remove(stop)
|
||||
|
||||
def validate(self):
|
||||
if self._action == "submit" and not self.driver:
|
||||
frappe.throw(_("A driver must be set to submit."))
|
||||
@@ -80,7 +85,7 @@ class DeliveryTrip(Document):
|
||||
|
||||
def validate_stop_addresses(self):
|
||||
for stop in self.delivery_stops:
|
||||
if not stop.customer_address:
|
||||
if stop.address and not stop.customer_address:
|
||||
stop.customer_address = get_address_display(frappe.get_doc("Address", stop.address).as_dict())
|
||||
|
||||
def validate_delivery_note_not_draft(self):
|
||||
|
||||
@@ -6,6 +6,7 @@ import frappe
|
||||
from frappe.utils import add_days, flt, now_datetime, nowdate
|
||||
|
||||
import erpnext
|
||||
from erpnext.stock.doctype.delivery_note.delivery_note import make_delivery_trip
|
||||
from erpnext.stock.doctype.delivery_trip.delivery_trip import (
|
||||
get_contact_and_address,
|
||||
notify_customers,
|
||||
@@ -108,6 +109,32 @@ class TestDeliveryTrip(ERPNextTestSuite):
|
||||
self.delivery_trip.save()
|
||||
self.assertEqual(self.delivery_trip.status, "Completed")
|
||||
|
||||
def map_delivery_note_onto_trip(self, existing_stop):
|
||||
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||
|
||||
delivery_note = create_delivery_note()
|
||||
trip = frappe.new_doc("Delivery Trip")
|
||||
trip.append("delivery_stops", existing_stop)
|
||||
|
||||
return delivery_note, make_delivery_trip(delivery_note.name, trip)
|
||||
|
||||
def test_mapping_drops_placeholder_stop(self):
|
||||
delivery_note, trip = self.map_delivery_note_onto_trip({})
|
||||
|
||||
self.assertEqual(len(trip.delivery_stops), 1)
|
||||
self.assertEqual(trip.delivery_stops[0].delivery_note, delivery_note.name)
|
||||
|
||||
def test_mapping_keeps_partially_filled_stop(self):
|
||||
_, trip = self.map_delivery_note_onto_trip({"customer": "_Test Customer"})
|
||||
|
||||
self.assertEqual(len(trip.delivery_stops), 2)
|
||||
self.assertIsNone(trip.delivery_stops[0].delivery_note)
|
||||
|
||||
def test_stop_without_address_throws_mandatory_error(self):
|
||||
self.delivery_trip.append("delivery_stops", {"customer": "_Test Customer"})
|
||||
|
||||
self.assertRaises(frappe.MandatoryError, self.delivery_trip.save)
|
||||
|
||||
|
||||
def create_address(driver):
|
||||
if not frappe.db.exists("Address", {"address_title": "_Test Address for Driver"}):
|
||||
|
||||
Reference in New Issue
Block a user