diff --git a/erpnext/setup/doctype/driver/driver.py b/erpnext/setup/doctype/driver/driver.py index 4faa8e3fdcf..5403d317d7e 100644 --- a/erpnext/setup/doctype/driver/driver.py +++ b/erpnext/setup/doctype/driver/driver.py @@ -2,7 +2,10 @@ # For license information, please see license.txt +import frappe +from frappe import _ from frappe.model.document import Document +from frappe.utils import getdate class Driver(Document): @@ -31,4 +34,6 @@ class Driver(Document): transporter: DF.Link | None # end: auto-generated types - pass + def validate(self): + if self.issuing_date and self.expiry_date and getdate(self.expiry_date) < getdate(self.issuing_date): + frappe.throw(_("The licence expiry date cannot precede its issuing date.")) diff --git a/erpnext/setup/doctype/driver/test_driver.py b/erpnext/setup/doctype/driver/test_driver.py index 22707293a05..628acbb64f8 100644 --- a/erpnext/setup/doctype/driver/test_driver.py +++ b/erpnext/setup/doctype/driver/test_driver.py @@ -3,6 +3,19 @@ import unittest +import frappe + class TestDriver(unittest.TestCase): - pass + def test_expiry_cannot_precede_issuing_date(self): + driver = frappe.get_doc( + { + "doctype": "Driver", + "full_name": "Test Driver", + "status": "Active", + "issuing_date": "2025-01-01", + "expiry_date": "2020-01-01", + } + ) + with self.assertRaises(frappe.ValidationError): + driver.insert()