Merge pull request #4854 from patilsangram/develop

Removed Stop Button from SO and PO
This commit is contained in:
Nabin Hait
2016-02-24 11:21:17 +05:30
31 changed files with 99 additions and 124 deletions

View File

@@ -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')
}

View File

@@ -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,

View File

@@ -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 = []

View File

@@ -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";

View File

@@ -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"});
});
}

View File

@@ -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')