Merge pull request #4161 from rmehta/sales-order-status
[fix] Sales Order status for Maintenance
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 7d18867..94cddee 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -34,6 +34,7 @@
["To Bill", "eval:self.per_delivered == 100 and self.per_billed < 100 and self.docstatus == 1"],
["To Deliver", "eval:self.per_delivered < 100 and self.per_billed == 100 and self.docstatus == 1"],
["Completed", "eval:self.per_delivered == 100 and self.per_billed == 100 and self.docstatus == 1"],
+ ["Completed", "eval:self.order_type == 'Maintenance' and self.per_billed == 100 and self.docstatus == 1"],
["Stopped", "eval:self.status=='Stopped'"],
["Cancelled", "eval:self.docstatus==2"],
],
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index efa4906..bf33fb3 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -216,4 +216,5 @@
erpnext.patches.v6_4.fix_journal_entries_due_to_reconciliation
erpnext.patches.v6_4.fix_status_in_sales_and_purchase_order
erpnext.patches.v6_4.fix_modified_in_sales_order_and_purchase_order
-erpnext.patches.v6_4.fix_duplicate_bins
\ No newline at end of file
+erpnext.patches.v6_4.fix_duplicate_bins
+erpnext.patches.v6_4.fix_sales_order_maintenance_status
diff --git a/erpnext/patches/v6_4/fix_sales_order_maintenance_status.py b/erpnext/patches/v6_4/fix_sales_order_maintenance_status.py
new file mode 100644
index 0000000..dbd34d5
--- /dev/null
+++ b/erpnext/patches/v6_4/fix_sales_order_maintenance_status.py
@@ -0,0 +1,7 @@
+import frappe
+
+def execute():
+ for doc in frappe.get_all("Sales Order", filters={"docstatus": 1,
+ "order_type": "Maintenance"}):
+ doc = frappe.get_doc("Sales Order", doc.name)
+ doc.set_status(update=True)
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 8a6acd7..1ec4b52 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -201,7 +201,7 @@
if self.re_order_level or len(self.get("reorder_levels", {"material_request_type": "Purchase"})):
if not (self.is_purchase_item or self.is_pro_applicable):
- frappe.throw(_("""To set reorder level, item must be a Purchase Item or Prodcution Item"""))
+ frappe.throw(_("""To set reorder level, item must be a Purchase Item or Manufacturing Item"""))
def validate_warehouse_for_reorder(self):
warehouse = []