[Removed Stop Button from SO and PO]
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 4b5ce43..afb9b85 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -203,7 +203,7 @@
self.validate_invoices()
def validate_orders(self):
- """Validate totals, stopped and docstatus for orders"""
+ """Validate totals, closed and docstatus for orders"""
for reference_name, total in self.reference_totals.iteritems():
reference_type = self.reference_types[reference_name]
account = self.reference_accounts[reference_name]
@@ -217,8 +217,8 @@
if flt(order.per_billed) >= 100:
frappe.throw(_("{0} {1} is fully billed").format(reference_type, reference_name))
- if cstr(order.status) == "Stopped":
- frappe.throw(_("{0} {1} is stopped").format(reference_type, reference_name))
+ if cstr(order.status) == "Closed":
+ frappe.throw(_("{0} {1} is closed").format(reference_type, reference_name))
account_currency = get_account_currency(account)
if account_currency == self.company_currency:
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.py b/erpnext/accounts/doctype/payment_tool/payment_tool.py
index 3648306..ef8ffb1 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.py
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.py
@@ -133,7 +133,7 @@
where
{party_type} = %s
and docstatus = 1
- and ifnull(status, "") != "Stopped"
+ and ifnull(status, "") != "Closed"
and {ref_field} > advance_paid
and abs(100 - per_billed) > 0.01
""".format(**{
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index d3a72d6..2de9993 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -39,7 +39,7 @@
get_query_filters: {
supplier: cur_frm.doc.supplier || undefined,
docstatus: 1,
- status: ["not in", ["Stopped", "Closed"]],
+ status: ["!=", "Closed"],
per_billed: ["<", 99.99],
company: cur_frm.doc.company
}
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 6d61abe..d88a11e 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -49,7 +49,7 @@
self.check_conversion_rate()
self.validate_credit_to_acc()
self.clear_unallocated_advances("Purchase Invoice Advance", "advances")
- self.check_for_stopped_or_closed_status()
+ self.check_for_closed_status()
self.validate_with_previous_doc()
self.validate_uom_is_integer("uom", "qty")
self.set_against_expense_account()
@@ -104,14 +104,14 @@
self.party_account_currency = account.account_currency
- def check_for_stopped_or_closed_status(self):
+ def check_for_closed_status(self):
check_list = []
pc_obj = frappe.get_doc('Purchase Common')
for d in self.get('items'):
if d.purchase_order and not d.purchase_order in check_list and not d.purchase_receipt:
check_list.append(d.purchase_order)
- pc_obj.check_for_stopped_or_closed_status('Purchase Order', d.purchase_order)
+ pc_obj.check_for_closed_status('Purchase Order', d.purchase_order)
def validate_with_previous_doc(self):
super(PurchaseInvoice, self).validate_with_previous_doc({
@@ -405,7 +405,7 @@
make_gl_entries(gl_entries, cancel=(self.docstatus == 2))
def on_cancel(self):
- self.check_for_stopped_or_closed_status()
+ self.check_for_closed_status()
if not self.is_return:
from erpnext.accounts.utils import remove_against_link_from_jv
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 26a9fa6..e717089 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -114,7 +114,7 @@
source_doctype: "Sales Order",
get_query_filters: {
docstatus: 1,
- status: ["not in", ["Stopped", "Closed"]],
+ status: ["!=", "Closed"],
per_billed: ["<", 99.99],
customer: cur_frm.doc.customer || undefined,
company: cur_frm.doc.company
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 3c60bfb..e120f18 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -53,7 +53,7 @@
self.validate_proj_cust()
self.validate_with_previous_doc()
self.validate_uom_is_integer("stock_uom", "qty")
- self.check_stop_or_close_sales_order("sales_order")
+ self.check_close_sales_order("sales_order")
self.validate_debit_to_acc()
self.validate_fixed_asset_account()
self.clear_unallocated_advances("Sales Invoice Advance", "advances")
@@ -121,7 +121,7 @@
if cint(self.update_stock) == 1:
self.update_stock_ledger()
- self.check_stop_or_close_sales_order("sales_order")
+ self.check_close_sales_order("sales_order")
from erpnext.accounts.utils import remove_against_link_from_jv
remove_against_link_from_jv(self.doctype, self.name)
diff --git a/erpnext/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.json b/erpnext/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.json
index cdbd5c1..f50d334 100644
--- a/erpnext/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.json
+++ b/erpnext/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.json
@@ -12,7 +12,7 @@
"module": "Accounts",
"name": "Ordered Items To Be Billed",
"owner": "Administrator",
- "query": "select \n `tabSales Order`.`name` as \"Sales Order:Link/Sales Order:120\",\n `tabSales Order`.`customer` as \"Customer:Link/Customer:120\",\n `tabSales Order`.`status` as \"Status\",\n `tabSales Order`.`transaction_date` as \"Date:Date\",\n `tabSales Order`.`project_name` as \"Project\",\n `tabSales Order Item`.item_code as \"Item:Link/Item:120\",\n `tabSales Order Item`.base_amount as \"Amount:Currency:110\",\n (`tabSales Order Item`.billed_amt * ifnull(`tabSales Order`.conversion_rate, 1)) as \"Billed Amount:Currency:110\",\n (ifnull(`tabSales Order Item`.base_amount, 0) - (ifnull(`tabSales Order Item`.billed_amt, 0) * ifnull(`tabSales Order`.conversion_rate, 1))) as \"Pending Amount:Currency:120\",\n `tabSales Order Item`.item_name as \"Item Name::150\",\n `tabSales Order Item`.description as \"Description::200\",\n `tabSales Order`.`company` as \"Company:Link/Company:\"\nfrom\n `tabSales Order`, `tabSales Order Item`\nwhere\n `tabSales Order Item`.`parent` = `tabSales Order`.`name`\n and `tabSales Order`.docstatus = 1\n and `tabSales Order`.status not in (\"Stopped\", \"Closed\")\n and ifnull(`tabSales Order Item`.billed_amt,0) < ifnull(`tabSales Order Item`.amount,0)\norder by `tabSales Order`.transaction_date asc",
+ "query": "select \n `tabSales Order`.`name` as \"Sales Order:Link/Sales Order:120\",\n `tabSales Order`.`customer` as \"Customer:Link/Customer:120\",\n `tabSales Order`.`status` as \"Status\",\n `tabSales Order`.`transaction_date` as \"Date:Date\",\n `tabSales Order`.`project_name` as \"Project\",\n `tabSales Order Item`.item_code as \"Item:Link/Item:120\",\n `tabSales Order Item`.base_amount as \"Amount:Currency:110\",\n (`tabSales Order Item`.billed_amt * ifnull(`tabSales Order`.conversion_rate, 1)) as \"Billed Amount:Currency:110\",\n (ifnull(`tabSales Order Item`.base_amount, 0) - (ifnull(`tabSales Order Item`.billed_amt, 0) * ifnull(`tabSales Order`.conversion_rate, 1))) as \"Pending Amount:Currency:120\",\n `tabSales Order Item`.item_name as \"Item Name::150\",\n `tabSales Order Item`.description as \"Description::200\",\n `tabSales Order`.`company` as \"Company:Link/Company:\"\nfrom\n `tabSales Order`, `tabSales Order Item`\nwhere\n `tabSales Order Item`.`parent` = `tabSales Order`.`name`\n and `tabSales Order`.docstatus = 1\n and `tabSales Order`.status not in (\"Closed\")\n and ifnull(`tabSales Order Item`.billed_amt,0) < ifnull(`tabSales Order Item`.amount,0)\norder by `tabSales Order`.transaction_date asc",
"ref_doctype": "Sales Invoice",
"report_name": "Ordered Items To Be Billed",
"report_type": "Query Report"
diff --git a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.json b/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.json
index 38361fb..991e599 100644
--- a/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.json
+++ b/erpnext/accounts/report/purchase_order_items_to_be_billed/purchase_order_items_to_be_billed.json
@@ -12,7 +12,7 @@
"module": "Accounts",
"name": "Purchase Order Items To Be Billed",
"owner": "Administrator",
- "query": "select \n `tabPurchase Order`.`name` as \"Purchase Order:Link/Purchase Order:120\",\n `tabPurchase Order`.`transaction_date` as \"Date:Date:100\",\n\t`tabPurchase Order`.`supplier` as \"Supplier:Link/Supplier:120\",\n\t`tabPurchase Order Item`.`project_name` as \"Project\",\n\t`tabPurchase Order Item`.item_code as \"Item Code:Link/Item:120\",\n\t`tabPurchase Order Item`.base_amount as \"Amount:Currency:100\",\n\t(`tabPurchase Order Item`.billed_amt * ifnull(`tabPurchase Order`.conversion_rate, 1)) as \"Billed Amount:Currency:100\", \n\t(`tabPurchase Order Item`.base_amount - (ifnull(`tabPurchase Order Item`.billed_amt, 0) * ifnull(`tabPurchase Order`.conversion_rate, 1))) as \"Amount to Bill:Currency:100\",\n\t`tabPurchase Order Item`.item_name as \"Item Name::150\",\n\t`tabPurchase Order Item`.description as \"Description::200\",\n\t`tabPurchase Order`.company as \"Company:Link/Company:\"\nfrom\n\t`tabPurchase Order`, `tabPurchase Order Item`\nwhere\n\t`tabPurchase Order Item`.`parent` = `tabPurchase Order`.`name`\n\tand `tabPurchase Order`.docstatus = 1\n\tand `tabPurchase Order`.status not in (\"Stopped\", \"Closed\")\n\tand (ifnull(`tabPurchase Order Item`.billed_amt, 0) * ifnull(`tabPurchase Order`.conversion_rate, 1)) < ifnull(`tabPurchase Order Item`.base_amount, 0)\norder by `tabPurchase Order`.transaction_date asc",
+ "query": "select \n `tabPurchase Order`.`name` as \"Purchase Order:Link/Purchase Order:120\",\n `tabPurchase Order`.`transaction_date` as \"Date:Date:100\",\n\t`tabPurchase Order`.`supplier` as \"Supplier:Link/Supplier:120\",\n\t`tabPurchase Order Item`.`project_name` as \"Project\",\n\t`tabPurchase Order Item`.item_code as \"Item Code:Link/Item:120\",\n\t`tabPurchase Order Item`.base_amount as \"Amount:Currency:100\",\n\t(`tabPurchase Order Item`.billed_amt * ifnull(`tabPurchase Order`.conversion_rate, 1)) as \"Billed Amount:Currency:100\", \n\t(`tabPurchase Order Item`.base_amount - (ifnull(`tabPurchase Order Item`.billed_amt, 0) * ifnull(`tabPurchase Order`.conversion_rate, 1))) as \"Amount to Bill:Currency:100\",\n\t`tabPurchase Order Item`.item_name as \"Item Name::150\",\n\t`tabPurchase Order Item`.description as \"Description::200\",\n\t`tabPurchase Order`.company as \"Company:Link/Company:\"\nfrom\n\t`tabPurchase Order`, `tabPurchase Order Item`\nwhere\n\t`tabPurchase Order Item`.`parent` = `tabPurchase Order`.`name`\n\tand `tabPurchase Order`.docstatus = 1\n\tand `tabPurchase Order`.status not in (\"Closed\")\n\tand (ifnull(`tabPurchase Order Item`.billed_amt, 0) * ifnull(`tabPurchase Order`.conversion_rate, 1)) < ifnull(`tabPurchase Order Item`.base_amount, 0)\norder by `tabPurchase Order`.transaction_date asc",
"ref_doctype": "Purchase Invoice",
"report_name": "Purchase Order Items To Be Billed",
"report_type": "Query Report"
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/erpnext/buying/doctype/purchase_common/purchase_common.py
index a86b330..df63e29 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/erpnext/buying/doctype/purchase_common/purchase_common.py
@@ -80,10 +80,10 @@
frappe.msgprint(_("Warning: Same item has been entered multiple times."))
- def check_for_stopped_or_closed_status(self, doctype, docname):
+ def check_for_closed_status(self, doctype, docname):
status = frappe.db.get_value(doctype, docname, "status")
- if status in ("Stopped", "Closed"):
+ if status == "Closed":
frappe.throw(_("{0} {1} status is {2}").format(doctype, docname, status), frappe.InvalidStatusError)
def check_docstatus(self, check, doctype, docname, detail_doctype = ''):
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index e23b0d4..2c1d709 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -38,13 +38,13 @@
cur_frm.set_df_property("drop_ship", "hidden", !is_drop_ship);
- if(doc.docstatus == 1 && !in_list(["Stopped", "Closed", "Delivered"], doc.status)) {
+ if(doc.docstatus == 1 && !in_list(["Closed", "Delivered"], doc.status)) {
if (this.frm.has_perm("submit")) {
if(flt(doc.per_billed, 2) < 100 || doc.per_received < 100) {
- cur_frm.add_custom_button(__('Stop'), this.stop_purchase_order, __("Status"));
+ cur_frm.add_custom_button(__('Close'), this.close_purchase_order, __("Status"));
}
- cur_frm.add_custom_button(__('Close'), this.close_purchase_order, __("Status"));
+
}
@@ -58,13 +58,13 @@
cur_frm.cscript.add_from_mappers();
}
- if(doc.docstatus == 1 && in_list(["Stopped", "Closed", "Delivered"], doc.status)) {
+ if(doc.docstatus == 1 && in_list(["Closed", "Delivered"], doc.status)) {
if (this.frm.has_perm("submit")) {
- cur_frm.add_custom_button(__('Re-open'), this.unstop_purchase_order, __("Status"));
+ cur_frm.add_custom_button(__('Re-open'), this.unclose_purchase_order, __("Status"));
}
}
- if(doc.docstatus == 1 && !in_list(["Stopped", "Closed"], doc.status)) {
+ if(doc.docstatus == 1 && !in_list(["Closed"], doc.status)) {
if(flt(doc.per_received, 2) < 100 && allow_receipt) {
cur_frm.add_custom_button(__('Receive'), this.make_purchase_receipt, __("Make"));
@@ -192,11 +192,7 @@
});
},
- stop_purchase_order: function(){
- cur_frm.cscript.update_status('Stop', 'Stopped')
- },
-
- unstop_purchase_order: function(){
+ unclose_purchase_order: function(){
cur_frm.cscript.update_status('Re-open', 'Submitted')
},
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json
index 70070cc..a3628be 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.json
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.json
@@ -1907,7 +1907,7 @@
"no_copy": 1,
"oldfieldname": "status",
"oldfieldtype": "Select",
- "options": "\nDraft\nTo Receive and Bill\nTo Bill\nTo Receive\nCompleted\nStopped\nCancelled\nClosed\nDelivered",
+ "options": "\nDraft\nTo Receive and Bill\nTo Bill\nTo Receive\nCompleted\nCancelled\nClosed\nDelivered",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index caefe53..d4474b6 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -39,7 +39,7 @@
self.set_status()
pc_obj = frappe.get_doc('Purchase Common')
pc_obj.validate_for_items(self)
- self.check_for_stopped_or_closed_status(pc_obj)
+ self.check_for_closed_status(pc_obj)
self.validate_uom_is_integer("uom", "qty")
self.validate_uom_is_integer("stock_uom", ["qty", "required_qty"])
@@ -113,13 +113,13 @@
d.base_price_list_rate = d.base_rate = d.price_list_rate \
= d.rate = item_last_purchase_rate
- # Check for Stopped status
- def check_for_stopped_or_closed_status(self, pc_obj):
+ # Check for Closed status
+ def check_for_closed_status(self, pc_obj):
check_list =[]
for d in self.get('items'):
if d.meta.get_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
check_list.append(d.prevdoc_docname)
- pc_obj.check_for_stopped_or_closed_status( d.prevdoc_doctype, d.prevdoc_docname)
+ pc_obj.check_for_closed_status( d.prevdoc_doctype, d.prevdoc_docname)
def update_requested_qty(self):
material_request_map = {}
@@ -193,7 +193,7 @@
self.update_delivered_qty_in_sales_order()
pc_obj = frappe.get_doc('Purchase Common')
- self.check_for_stopped_or_closed_status(pc_obj)
+ self.check_for_closed_status(pc_obj)
# Check if Purchase Receipt has been submitted against current Purchase Order
pc_obj.check_docstatus(check = 'Next', doctype = 'Purchase Receipt', docname = self.name, detail_doctype = 'Purchase Receipt Item')
@@ -253,7 +253,7 @@
item.received_qty = item.qty
@frappe.whitelist()
-def stop_or_unstop_purchase_orders(names, status):
+def close_or_unclose_purchase_orders(names, status):
if not frappe.has_permission("Purchase Order", "write"):
frappe.throw(_("Not permitted"), frappe.PermissionError)
@@ -261,11 +261,11 @@
for name in names:
po = frappe.get_doc("Purchase Order", name)
if po.docstatus == 1:
- if status in ("Stopped", "Closed"):
- if po.status not in ("Stopped", "Cancelled", "Closed") and (po.per_received < 100 or po.per_billed < 100):
+ if status == "Closed":
+ if po.status not in ( "Cancelled", "Closed") and (po.per_received < 100 or po.per_billed < 100):
po.update_status(status)
else:
- if po.status in ("Stopped", "Closed"):
+ if po.status == "Closed":
po.update_status("Draft")
frappe.local.message_log = []
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_list.js b/erpnext/buying/doctype/purchase_order/purchase_order_list.js
index 253eb4b..f6e7eeb 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order_list.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order_list.js
@@ -2,37 +2,31 @@
add_fields: ["base_grand_total", "company", "currency", "supplier",
"supplier_name", "per_received", "per_billed", "status"],
get_indicator: function(doc) {
- if(doc.status==="Stopped") {
- return [__("Stopped"), "darkgrey", "status,=,Stopped"];
- } else if(doc.status==="Closed"){
+ if(doc.status==="Closed"){
return [__("Closed"), "green", "status,=,Closed"];
} else if (doc.status==="Delivered") {
return [__("Delivered"), "green", "status,=,Closed"];
- }else if(flt(doc.per_received, 2) < 100 && doc.status!=="Stopped") {
+ }else if(flt(doc.per_received, 2) < 100 && doc.status!=="Closed") {
if(flt(doc.per_billed, 2) < 100) {
return [__("To Receive and Bill"), "orange",
- "per_received,<,100|per_billed,<,100|status,!=,Stopped"];
+ "per_received,<,100|per_billed,<,100|status,!=,Closed"];
} else {
return [__("To Receive"), "orange",
- "per_received,<,100|per_billed,=,100|status,!=,Stopped"];
+ "per_received,<,100|per_billed,=,100|status,!=,Closed"];
}
- } else if(flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) < 100 && doc.status!=="Stopped") {
- return [__("To Bill"), "orange", "per_received,=,100|per_billed,<,100|status,!=,Stopped"];
- } else if(flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) == 100 && doc.status!=="Stopped") {
- return [__("Completed"), "green", "per_received,=,100|per_billed,=,100|status,!=,Stopped"];
+ } else if(flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) < 100 && doc.status!=="Closed") {
+ return [__("To Bill"), "orange", "per_received,=,100|per_billed,<,100|status,!=,Closed"];
+ } else if(flt(doc.per_received, 2) == 100 && flt(doc.per_billed, 2) == 100 && doc.status!=="Closed") {
+ return [__("Completed"), "green", "per_received,=,100|per_billed,=,100|status,!=,Closed"];
}
},
onload: function(listview) {
- var method = "erpnext.buying.doctype.purchase_order.purchase_order.stop_or_unstop_purchase_orders";
+ var method = "erpnext.buying.doctype.purchase_order.purchase_order.close_or_unclose_purchase_orders";
listview.page.add_menu_item(__("Close"), function() {
listview.call_for_selected_items(method, {"status": "Closed"});
});
- listview.page.add_menu_item(__("Stop"), function() {
- listview.call_for_selected_items(method, {"status": "Stopped"});
- });
-
listview.page.add_menu_item(__("Re-open"), function() {
listview.call_for_selected_items(method, {"status": "Submitted"});
});
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index 013a70e..3ecbe5f 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -34,7 +34,7 @@
date_field = date_field_map[doctype]
- condition = " and ifnull(status, '') != 'Stopped'" if doctype in ("Sales Order", "Purchase Order") else ""
+ condition = " and ifnull(status, '') != 'Closed'" if doctype in ("Sales Order", "Purchase Order") else ""
recurring_documents = frappe.db.sql("""select name, recurring_id
from `tab{0}` where is_recurring=1
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index f340f91..09a8c94 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -219,11 +219,11 @@
so_warehouse = so_item and so_item[0]["warehouse"] or ""
return so_qty, so_warehouse
- def check_stop_or_close_sales_order(self, ref_fieldname):
+ def check_close_sales_order(self, ref_fieldname):
for d in self.get("items"):
if d.get(ref_fieldname):
status = frappe.db.get_value("Sales Order", d.get(ref_fieldname), "status")
- if status in ("Stopped", "Closed"):
+ if status == "Closed":
frappe.throw(_("Sales Order {0} is {1}").format(d.get(ref_fieldname), status))
def check_active_sales_items(obj):
diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py
index 32724a9..5c5719e 100644
--- a/erpnext/controllers/status_updater.py
+++ b/erpnext/controllers/status_updater.py
@@ -35,7 +35,6 @@
["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"],
["Closed", "eval:self.status=='Closed'"],
],
@@ -46,7 +45,6 @@
["To Receive", "eval:self.per_received < 100 and self.per_billed == 100 and self.docstatus == 1"],
["Completed", "eval:self.per_received == 100 and self.per_billed == 100 and self.docstatus == 1"],
["Delivered", "eval:self.status=='Delivered'"],
- ["Stopped", "eval:self.status=='Stopped'"],
["Cancelled", "eval:self.docstatus==2"],
["Closed", "eval:self.status=='Closed'"],
],
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 4c6a320..10bf2f2 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -243,8 +243,8 @@
if so and so_item_rows:
sales_order = frappe.get_doc("Sales Order", so)
- if sales_order.status in ["Stopped", "Cancelled"]:
- frappe.throw(_("{0} {1} is cancelled or stopped").format(_("Sales Order"), so),
+ if sales_order.status in ["Closed", "Cancelled"]:
+ frappe.throw(_("{0} {1} is cancelled or closed").format(_("Sales Order"), so),
frappe.InvalidStatusError)
sales_order.update_reserved_qty(so_item_rows)
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 9dae2b9..b7dff77 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -19,7 +19,7 @@
var allow_delivery = false;
if(doc.docstatus==1) {
- if(doc.status != 'Stopped' && doc.status != 'Closed') {
+ if(doc.status != 'Closed') {
for (var i in cur_frm.doc.items) {
var item = cur_frm.doc.items[i];
@@ -42,13 +42,10 @@
}
if (this.frm.has_perm("submit")) {
- // stop
+ // close
if(flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed) < 100) {
- cur_frm.add_custom_button(__('Stop'), this.stop_sales_order, __("Status"))
+ cur_frm.add_custom_button(__('Close'), this.close_sales_order, __("Status"))
}
-
-
- cur_frm.add_custom_button(__('Close'), this.close_sales_order, __("Status"))
}
// delivery note
@@ -87,8 +84,8 @@
} else {
if (this.frm.has_perm("submit")) {
- // un-stop
- cur_frm.add_custom_button(__('Re-open'), cur_frm.cscript['Unstop Sales Order'], __("Status"));
+ // un-close
+ cur_frm.add_custom_button(__('Re-open'), cur_frm.cscript['Unclose Sales Order'], __("Status"));
}
}
}
@@ -220,9 +217,6 @@
});
dialog.show();
},
- stop_sales_order: function(){
- cur_frm.cscript.update_status("Stop", "Stopped")
- },
close_sales_order: function(){
cur_frm.cscript.update_status("Close", "Closed")
}
@@ -263,7 +257,7 @@
});
}
-cur_frm.cscript['Unstop Sales Order'] = function() {
+cur_frm.cscript['Unclose Sales Order'] = function() {
cur_frm.cscript.update_status('Re-open', 'Draft')
}
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index 8049a67..5c57f45 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -2201,7 +2201,7 @@
"no_copy": 1,
"oldfieldname": "status",
"oldfieldtype": "Select",
- "options": "\nDraft\nTo Deliver and Bill\nTo Bill\nTo Deliver\nCompleted\nStopped\nCancelled\nClosed",
+ "options": "\nDraft\nTo Deliver and Bill\nTo Bill\nTo Deliver\nCompleted\nCancelled\nClosed",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index e692d6b..d735bea 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -160,9 +160,9 @@
self.update_prevdoc_status('submit')
def on_cancel(self):
- # Cannot cancel stopped SO
- if self.status == 'Stopped':
- frappe.throw(_("Stopped order cannot be cancelled. Unstop to cancel."))
+ # Cannot cancel closed SO
+ if self.status == 'Closed':
+ frappe.throw(_("Closed order cannot be cancelled. Unclose to cancel."))
self.check_nextdoc_docstatus()
self.update_reserved_qty()
@@ -317,7 +317,7 @@
return list_context
@frappe.whitelist()
-def stop_or_unstop_sales_orders(names, status):
+def close_or_unclose_sales_orders(names, status):
if not frappe.has_permission("Sales Order", "write"):
frappe.throw(_("Not permitted"), frappe.PermissionError)
@@ -325,11 +325,11 @@
for name in names:
so = frappe.get_doc("Sales Order", name)
if so.docstatus == 1:
- if status in ("Stopped", "Closed"):
- if so.status not in ("Stopped", "Cancelled", "Closed") and (so.per_delivered < 100 or so.per_billed < 100):
+ if status == "Closed":
+ if so.status not in ("Cancelled", "Closed") and (so.per_delivered < 100 or so.per_billed < 100):
so.update_status(status)
else:
- if so.status in ("Stopped", "Closed"):
+ if so.status == "Closed":
so.update_status('Draft')
frappe.local.message_log = []
diff --git a/erpnext/selling/doctype/sales_order/sales_order_calendar.js b/erpnext/selling/doctype/sales_order/sales_order_calendar.js
index 8724daa..7a38f90 100644
--- a/erpnext/selling/doctype/sales_order/sales_order_calendar.js
+++ b/erpnext/selling/doctype/sales_order/sales_order_calendar.js
@@ -32,7 +32,7 @@
],
get_events_method: "erpnext.selling.doctype.sales_order.sales_order.get_events",
get_css_class: function(data) {
- if(data.status=="Stopped") {
+ if(data.status=="Closed") {
return "";
} if(data.delivery_status=="Not Delivered") {
return "danger";
diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.js b/erpnext/selling/doctype/sales_order/sales_order_list.js
index ff9ff91..3b60af4 100644
--- a/erpnext/selling/doctype/sales_order/sales_order_list.js
+++ b/erpnext/selling/doctype/sales_order/sales_order_list.js
@@ -2,58 +2,51 @@
add_fields: ["base_grand_total", "customer_name", "currency", "delivery_date", "per_delivered", "per_billed",
"status", "order_type"],
get_indicator: function(doc) {
- if(doc.status==="Stopped") {
- return [__("Stopped"), "darkgrey", "status,=,Stopped"];
-
- } else if(doc.status==="Closed"){
+ if(doc.status==="Closed"){
return [__("Closed"), "green", "status,=,Closed"];
} else if (doc.order_type !== "Maintenance"
&& flt(doc.per_delivered, 2) < 100 && frappe.datetime.get_diff(doc.delivery_date) < 0) {
// to bill & overdue
- return [__("Overdue"), "red", "per_delivered,<,100|delivery_date,<,Today|status,!=,Stopped"];
+ return [__("Overdue"), "red", "per_delivered,<,100|delivery_date,<,Today|status,!=,Closed"];
} else if (doc.order_type !== "Maintenance"
- && flt(doc.per_delivered, 2) < 100 && doc.status!=="Stopped") {
+ && flt(doc.per_delivered, 2) < 100 && doc.status!=="Closed") {
// not delivered
if(flt(doc.per_billed, 2) < 100) {
// not delivered & not billed
return [__("To Deliver and Bill"), "orange",
- "per_delivered,<,100|per_billed,<,100|status,!=,Stopped"];
+ "per_delivered,<,100|per_billed,<,100|status,!=,Closed"];
} else {
// not billed
return [__("To Deliver"), "orange",
- "per_delivered,<,100|per_billed,=,100|status,!=,Stopped"];
+ "per_delivered,<,100|per_billed,=,100|status,!=,Closed"];
}
} else if ((doc.order_type === "Maintenance" || flt(doc.per_delivered, 2) == 100)
- && flt(doc.per_billed, 2) < 100 && doc.status!=="Stopped") {
+ && flt(doc.per_billed, 2) < 100 && doc.status!=="Closed") {
// to bill
- return [__("To Bill"), "orange", "per_delivered,=,100|per_billed,<,100|status,!=,Stopped"];
+ return [__("To Bill"), "orange", "per_delivered,=,100|per_billed,<,100|status,!=,Closed"];
} else if((doc.order_type === "Maintenance" || flt(doc.per_delivered, 2) == 100)
- && flt(doc.per_billed, 2) == 100 && doc.status!=="Stopped") {
+ && flt(doc.per_billed, 2) == 100 && doc.status!=="Closed") {
- return [__("Completed"), "green", "per_delivered,=,100|per_billed,=,100|status,!=,Stopped"];
+ return [__("Completed"), "green", "per_delivered,=,100|per_billed,=,100|status,!=,Closed"];
}
},
onload: function(listview) {
- var method = "erpnext.selling.doctype.sales_order.sales_order.stop_or_unstop_sales_orders";
+ var method = "erpnext.selling.doctype.sales_order.sales_order.close_or_unclose_sales_orders";
listview.page.add_menu_item(__("Close"), function() {
listview.call_for_selected_items(method, {"status": "Closed"});
});
- listview.page.add_menu_item(__("Stop"), function() {
- listview.call_for_selected_items(method, {"status": "Stoped"});
- });
-
listview.page.add_menu_item(__("Re-open"), function() {
- listview.call_for_selected_items(method, {"status": "Unstop"});
+ listview.call_for_selected_items(method, {"status": "Unclose"});
});
}
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index c6ea618..edd7cdf 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -93,12 +93,12 @@
dn = create_dn_against_so(so.name)
self.assertEqual(get_reserved_qty(), existing_reserved_qty + 5)
- # stop so
+ # close so
so.load_from_db()
- so.update_status("Stopped")
+ so.update_status("Closed")
self.assertEqual(get_reserved_qty(), existing_reserved_qty)
- # unstop so
+ # unclose so
so.load_from_db()
so.update_status('Draft')
self.assertEqual(get_reserved_qty(), existing_reserved_qty + 5)
@@ -143,14 +143,14 @@
self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"),
existing_reserved_qty_item2 + 10)
- # stop so
+ # close so
so.load_from_db()
- so.update_status("Stopped")
+ so.update_status("Closed")
self.assertEqual(get_reserved_qty("_Test Item"), existing_reserved_qty_item1)
self.assertEqual(get_reserved_qty("_Test Item Home Desktop 100"), existing_reserved_qty_item2)
- # unstop so
+ # unclose so
so.load_from_db()
so.update_status('Draft')
diff --git a/erpnext/startup/notifications.py b/erpnext/startup/notifications.py
index 3acf63c..181a969 100644
--- a/erpnext/startup/notifications.py
+++ b/erpnext/startup/notifications.py
@@ -15,7 +15,7 @@
"Opportunity": {"status": "Open"},
"Quotation": {"docstatus": 0},
"Sales Order": {
- "status": ("not in", ("Stopped", "Completed", "Closed")),
+ "status": ("not in", ("Completed", "Closed")),
"docstatus": ("<", 2)
},
"Journal Entry": {"docstatus": 0},
@@ -29,7 +29,7 @@
"Stock Entry": {"docstatus": 0},
"Material Request": {"docstatus": 0},
"Purchase Order": {
- "status": ("not in", ("Stopped", "Completed", "Closed")),
+ "status": ("not in", ("Completed", "Closed")),
"docstatus": ("<", 2)
},
"Production Order": { "status": "In Process" },
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 0b6f47e..679d910 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -34,7 +34,7 @@
source_doctype: "Sales Order",
get_query_filters: {
docstatus: 1,
- status: ["not in", ["Stopped", "Closed"]],
+ status: ["!=", "Closed"],
per_delivered: ["<", 99.99],
project_name: cur_frm.doc.project_name || undefined,
customer: cur_frm.doc.customer || undefined,
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 0dabfa1..2db3509 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -98,7 +98,7 @@
self.set_status()
self.so_required()
self.validate_proj_cust()
- self.check_stop_or_close_sales_order("against_sales_order")
+ self.check_close_sales_order("against_sales_order")
self.validate_for_items()
self.validate_warehouse()
self.validate_uom_is_integer("stock_uom", "qty")
@@ -195,7 +195,7 @@
self.make_gl_entries()
def on_cancel(self):
- self.check_stop_or_close_sales_order("against_sales_order")
+ self.check_close_sales_order("against_sales_order")
self.check_next_docstatus()
self.update_prevdoc_status()
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index 922eb5a..e22e3cd 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -70,7 +70,7 @@
source_doctype: "Sales Order",
get_query_filters: {
docstatus: 1,
- status: ["!=", "Stopped"],
+ status: ["!=", "Closed"],
per_delivered: ["<", 99.99],
company: cur_frm.doc.company
}
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index 6f6f78e..60bfb8c 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -101,7 +101,7 @@
def on_cancel(self):
pc_obj = frappe.get_doc('Purchase Common')
- pc_obj.check_for_stopped_or_closed_status(self.doctype, self.name)
+ pc_obj.check_for_closed_status(self.doctype, self.name)
pc_obj.check_docstatus(check = 'Next', doctype = 'Purchase Order', docname = self.name, detail_doctype = 'Purchase Order Item')
self.update_requested_qty()
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
index 7cf7ae9..a4df2d8 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -46,7 +46,7 @@
get_query_filters: {
supplier: cur_frm.doc.supplier || undefined,
docstatus: 1,
- status: ["not in", ["Stopped", "Closed"]],
+ status: ["!=", "Closed"],
per_received: ["<", 99.99],
company: cur_frm.doc.company
}
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 1d87238..454b386 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -61,7 +61,7 @@
pc_obj = frappe.get_doc('Purchase Common')
pc_obj.validate_for_items(self)
- self.check_for_stopped_or_closed_status(pc_obj)
+ self.check_for_closed_status(pc_obj)
# sub-contracting
self.validate_for_subcontracting()
@@ -177,8 +177,8 @@
if po and po_item_rows:
po_obj = frappe.get_doc("Purchase Order", po)
- if po_obj.status in ["Stopped", "Cancelled"]:
- frappe.throw(_("{0} {1} is cancelled or stopped").format(_("Purchase Order"), po),
+ if po_obj.status in ["Closed", "Cancelled"]:
+ frappe.throw(_("{0} {1} is cancelled or closed").format(_("Purchase Order"), po),
frappe.InvalidStatusError)
po_obj.update_ordered_qty(po_item_rows)
@@ -212,13 +212,13 @@
if self.docstatus==1:
raise frappe.ValidationError
- # Check for Stopped status
- def check_for_stopped_or_closed_status(self, pc_obj):
+ # Check for Closed status
+ def check_for_closed_status(self, pc_obj):
check_list =[]
for d in self.get('items'):
if d.meta.get_field('prevdoc_docname') and d.prevdoc_docname and d.prevdoc_docname not in check_list:
check_list.append(d.prevdoc_docname)
- pc_obj.check_for_stopped_or_closed_status(d.prevdoc_doctype, d.prevdoc_docname)
+ pc_obj.check_for_closed_status(d.prevdoc_doctype, d.prevdoc_docname)
# on submit
def on_submit(self):
@@ -256,7 +256,7 @@
def on_cancel(self):
pc_obj = frappe.get_doc('Purchase Common')
- self.check_for_stopped_or_closed_status(pc_obj)
+ self.check_for_closed_status(pc_obj)
# Check if Purchase Invoice has been submitted against current Purchase Order
submitted = frappe.db.sql("""select t1.name
from `tabPurchase Invoice` t1,`tabPurchase Invoice Item` t2
diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py
index b9e3cd2..24c23d4 100644
--- a/erpnext/stock/stock_balance.py
+++ b/erpnext/stock/stock_balance.py
@@ -92,7 +92,7 @@
and parenttype="Sales Order"
and item_code != parent_item
and exists (select * from `tabSales Order` so
- where name = dnpi_in.parent and docstatus = 1 and status not in ('Stopped','Closed'))
+ where name = dnpi_in.parent and docstatus = 1 and status not in ('Closed'))
) dnpi)
union
(select qty as dnpi_qty, qty as so_item_qty,
@@ -102,7 +102,7 @@
and (so_item.delivered_by_supplier is null or so_item.delivered_by_supplier = 0)
and exists(select * from `tabSales Order` so
where so.name = so_item.parent and so.docstatus = 1
- and so.status not in ('Stopped','Closed')))
+ and so.status not in ('Closed')))
) tab
where
so_item_qty >= so_item_delivered_qty
@@ -125,7 +125,7 @@
from `tabPurchase Order Item` po_item, `tabPurchase Order` po
where po_item.item_code=%s and po_item.warehouse=%s
and po_item.qty > po_item.received_qty and po_item.parent=po.name
- and po.status not in ('Stopped', 'Closed', 'Delivered') and po.docstatus=1
+ and po.status not in ('Closed', 'Delivered') and po.docstatus=1
and po_item.delivered_by_supplier = 0""", (item_code, warehouse))
return flt(ordered_qty[0][0]) if ordered_qty else 0