mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-16 02:11:39 +00:00
Merge pull request #4854 from patilsangram/develop
Removed Stop Button from SO and PO
This commit is contained in:
@@ -19,7 +19,7 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
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 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
}
|
||||
|
||||
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 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
|
||||
} 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 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
});
|
||||
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.update_status = function(label, status){
|
||||
});
|
||||
}
|
||||
|
||||
cur_frm.cscript['Unstop Sales Order'] = function() {
|
||||
cur_frm.cscript['Unclose Sales Order'] = function() {
|
||||
cur_frm.cscript.update_status('Re-open', 'Draft')
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -160,9 +160,9 @@ class SalesOrder(SellingController):
|
||||
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 @@ def get_list_context(context=None):
|
||||
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 @@ def stop_or_unstop_sales_orders(names, status):
|
||||
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 = []
|
||||
|
||||
@@ -32,7 +32,7 @@ frappe.views.calendar["Sales Order"] = {
|
||||
],
|
||||
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";
|
||||
|
||||
@@ -2,58 +2,51 @@ frappe.listview_settings['Sales Order'] = {
|
||||
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": "Submitted"});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@@ -93,12 +93,12 @@ class TestSalesOrder(unittest.TestCase):
|
||||
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 @@ class TestSalesOrder(unittest.TestCase):
|
||||
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')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user