fix: cannot delete a project if linked with sales order (#27536)
This commit is contained in:
parent
424efd41e5
commit
0b040c7437
@ -144,6 +144,9 @@ class Project(Document):
|
|||||||
if self.sales_order:
|
if self.sales_order:
|
||||||
frappe.db.set_value("Sales Order", self.sales_order, "project", self.name)
|
frappe.db.set_value("Sales Order", self.sales_order, "project", self.name)
|
||||||
|
|
||||||
|
def on_trash(self):
|
||||||
|
frappe.db.set_value("Sales Order", {"project": self.name}, "project", "")
|
||||||
|
|
||||||
def update_percent_complete(self):
|
def update_percent_complete(self):
|
||||||
if self.percent_complete_method == "Manual":
|
if self.percent_complete_method == "Manual":
|
||||||
if self.status == "Completed":
|
if self.status == "Completed":
|
||||||
|
@ -9,6 +9,8 @@ from frappe.utils import add_days, getdate, nowdate
|
|||||||
|
|
||||||
from erpnext.projects.doctype.project_template.test_project_template import make_project_template
|
from erpnext.projects.doctype.project_template.test_project_template import make_project_template
|
||||||
from erpnext.projects.doctype.task.test_task import create_task
|
from erpnext.projects.doctype.task.test_task import create_task
|
||||||
|
from erpnext.selling.doctype.sales_order.sales_order import make_project as make_project_from_so
|
||||||
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||||
|
|
||||||
test_records = frappe.get_test_records('Project')
|
test_records = frappe.get_test_records('Project')
|
||||||
test_ignore = ["Sales Order"]
|
test_ignore = ["Sales Order"]
|
||||||
@ -96,6 +98,21 @@ class TestProject(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual(len(tasks), 2)
|
self.assertEqual(len(tasks), 2)
|
||||||
|
|
||||||
|
def test_project_linking_with_sales_order(self):
|
||||||
|
so = make_sales_order()
|
||||||
|
project = make_project_from_so(so.name)
|
||||||
|
|
||||||
|
project.save()
|
||||||
|
self.assertEqual(project.sales_order, so.name)
|
||||||
|
|
||||||
|
so.reload()
|
||||||
|
self.assertEqual(so.project, project.name)
|
||||||
|
|
||||||
|
project.delete()
|
||||||
|
|
||||||
|
so.reload()
|
||||||
|
self.assertFalse(so.project)
|
||||||
|
|
||||||
def get_project(name, template):
|
def get_project(name, template):
|
||||||
|
|
||||||
project = frappe.get_doc(dict(
|
project = frappe.get_doc(dict(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user