mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-09 15:29:30 +00:00
Merge pull request #58920 from frappe/mergify/bp/version-15-hotfix/pr-58896
fix(stock): remove empty delivery stops after mapping (backport #58896)
This commit is contained in:
@@ -50,6 +50,11 @@ class DeliveryTrip(Document):
|
||||
"UOM Conversion Factor", {"from_uom": "Meter", "to_uom": self.default_distance_uom}, "value"
|
||||
)
|
||||
|
||||
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."))
|
||||
@@ -69,7 +74,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 update_status(self):
|
||||
|
||||
@@ -7,6 +7,7 @@ from frappe.tests.utils import FrappeTestCase
|
||||
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,
|
||||
@@ -100,6 +101,32 @@ class TestDeliveryTrip(FrappeTestCase):
|
||||
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