mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-31 18:59:08 +00:00
fix: validation for delivery schedule
This commit is contained in:
@@ -58,6 +58,12 @@ frappe.ui.form.on("Sales Order", {
|
||||
},
|
||||
|
||||
refresh: function (frm) {
|
||||
frm.fields_dict["items"].grid.update_docfield_property(
|
||||
"add_schedule",
|
||||
"hidden",
|
||||
frm.is_new() || frm.doc.docstatus === 1 ? true : false
|
||||
);
|
||||
|
||||
if (frm.doc.docstatus === 1) {
|
||||
if (
|
||||
frm.doc.status !== "Closed" &&
|
||||
@@ -849,6 +855,10 @@ frappe.ui.form.on("Sales Order Item", {
|
||||
add_schedule(frm, cdt, cdn) {
|
||||
let row = locals[cdt][cdn];
|
||||
|
||||
if (row.__islocal) {
|
||||
frappe.throw(__("Please save the Sales Order before adding a delivery schedule."));
|
||||
}
|
||||
|
||||
frappe.call({
|
||||
method: "get_delivery_schedule",
|
||||
doc: frm.doc,
|
||||
|
||||
@@ -481,6 +481,7 @@ class SalesOrder(SellingController):
|
||||
def on_submit(self):
|
||||
self.check_credit_limit()
|
||||
self.update_reserved_qty()
|
||||
self.delete_removed_delivery_schedule_items()
|
||||
|
||||
frappe.get_cached_doc("Authorization Control").validate_approving_authority(
|
||||
self.doctype, self.company, self.base_grand_total, self
|
||||
@@ -499,6 +500,13 @@ class SalesOrder(SellingController):
|
||||
if self.get("reserve_stock") and not self.get("is_subcontracted"):
|
||||
self.create_stock_reservation_entries()
|
||||
|
||||
def delete_removed_delivery_schedule_items(self):
|
||||
items = [d.name for d in self.get("items")]
|
||||
doctype = frappe.qb.DocType("Delivery Schedule Item")
|
||||
frappe.qb.from_(doctype).delete().where(
|
||||
(doctype.sales_order == self.name) & (doctype.sales_order_item.notin(items))
|
||||
).run()
|
||||
|
||||
def on_cancel(self):
|
||||
self.ignore_linked_doctypes = (
|
||||
"GL Entry",
|
||||
@@ -901,7 +909,7 @@ class SalesOrder(SellingController):
|
||||
names.append(doc.name)
|
||||
|
||||
if names:
|
||||
self.delete_delivery_schedule_items(names)
|
||||
self.delete_delivery_schedule_items(child_row.name, names)
|
||||
|
||||
if first_delivery_date:
|
||||
self.update_delivery_date_based_on_schedule(child_row, first_delivery_date)
|
||||
@@ -915,7 +923,7 @@ class SalesOrder(SellingController):
|
||||
|
||||
self.save()
|
||||
|
||||
def delete_delivery_schedule_items(self, ignore_names=None):
|
||||
def delete_delivery_schedule_items(self, sales_order_item=None, ignore_names=None):
|
||||
"""Delete delivery schedule items."""
|
||||
doctype = frappe.qb.DocType("Delivery Schedule Item")
|
||||
|
||||
@@ -924,6 +932,9 @@ class SalesOrder(SellingController):
|
||||
if ignore_names:
|
||||
query = query.where(doctype.name.notin(ignore_names))
|
||||
|
||||
if sales_order_item:
|
||||
query = query.where(doctype.sales_order_item == sales_order_item)
|
||||
|
||||
query.run()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user