From 701671b2bdc1e75d3a9483623d1701d32156d7c0 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Sat, 17 Feb 2024 19:50:34 +0100 Subject: [PATCH] refactor: validate_dropship_item --- .../doctype/sales_invoice/sales_invoice.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 857ade7da22..0c530a1208d 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -298,8 +298,9 @@ class SalesInvoice(SellingController): if cint(self.is_pos): self.validate_pos() + self.validate_dropship_item() + if cint(self.update_stock): - self.validate_dropship_item() self.validate_warehouse() self.update_current_stock() @@ -1026,10 +1027,16 @@ class SalesInvoice(SellingController): msgprint(_("Please enter Account for Change Amount"), raise_exception=1) def validate_dropship_item(self): - for item in self.items: - if item.sales_order: - if frappe.db.get_value("Sales Order Item", item.so_detail, "delivered_by_supplier"): - frappe.throw(_("Could not update stock, invoice contains drop shipping item.")) + """If items are drop shipped, stock cannot be updated.""" + if not cint(self.update_stock): + return + + if any(item.delivered_by_supplier for item in self.items): + frappe.throw( + _( + "Stock cannot be updated because the invoice contains a drop shipping item. Please disable 'Update Stock' or remove the drop shipping item." + ), + ) def update_current_stock(self): for item in self.items: