mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-19 13:09:17 +00:00
[fix] cleanup stop-resume code
This commit is contained in:
@@ -17,10 +17,10 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
this.frm.dashboard.reset();
|
||||
var is_delivered_by_supplier = false;
|
||||
var is_delivery_note = false;
|
||||
|
||||
|
||||
if(doc.docstatus==1) {
|
||||
if(doc.status != 'Stopped' && doc.status != 'Closed') {
|
||||
|
||||
|
||||
$.each(cur_frm.doc.items, function(i, item){
|
||||
if(item.delivered_by_supplier == 1 || item.supplier){
|
||||
if(item.qty > item.ordered_qty)
|
||||
@@ -49,8 +49,8 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
if(flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed) < 100) {
|
||||
cur_frm.add_custom_button(__('Stop'), this.stop_sales_order)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
cur_frm.add_custom_button(__('Close'), this.close_sales_order)
|
||||
|
||||
// maintenance
|
||||
@@ -67,14 +67,13 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
if(flt(doc.per_billed, 2) < 100) {
|
||||
cur_frm.add_custom_button(__('Invoice'), this.make_sales_invoice).addClass("btn-primary");
|
||||
}
|
||||
|
||||
|
||||
if(flt(doc.per_delivered, 2) < 100 && is_delivered_by_supplier)
|
||||
cur_frm.add_custom_button(__('Make Purchase Order'), cur_frm.cscript.make_purchase_order).addClass("btn-primary");
|
||||
|
||||
} else {
|
||||
// un-stop
|
||||
if( doc.status != 'Closed')
|
||||
cur_frm.add_custom_button(__('Unstop'), cur_frm.cscript['Unstop Sales Order']);
|
||||
cur_frm.add_custom_button(__('Re-open'), cur_frm.cscript['Unstop Sales Order']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,10 +205,10 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
||||
dialog.show();
|
||||
},
|
||||
stop_sales_order: function(){
|
||||
cur_frm.cscript.update_status("Stop", "Stopped")
|
||||
cur_frm.cscript.update_status("Stop", "Stopped")
|
||||
},
|
||||
close_sales_order: function(){
|
||||
cur_frm.cscript.update_status("Close", "Closed")
|
||||
cur_frm.cscript.update_status("Close", "Closed")
|
||||
}
|
||||
|
||||
});
|
||||
@@ -235,32 +234,27 @@ cur_frm.fields_dict['project_name'].get_query = function(doc, cdt, cdn) {
|
||||
|
||||
cur_frm.cscript.update_status = function(label, status){
|
||||
var doc = cur_frm.doc;
|
||||
var check = confirm(__("Do you really want to {0} {1}",[label, doc.name]));
|
||||
|
||||
if (check) {
|
||||
frappe.call({
|
||||
method: "erpnext.selling.doctype.sales_order.sales_order.update_status",
|
||||
args:{status: status, name: doc.name},
|
||||
callback:function(r){
|
||||
cur_frm.reload_doc();
|
||||
}
|
||||
})
|
||||
}
|
||||
frappe.ui.form.is_saving = true;
|
||||
frappe.call({
|
||||
method: "erpnext.selling.doctype.sales_order.sales_order.update_status",
|
||||
args: {status: status, name: doc.name},
|
||||
callback: function(r){
|
||||
cur_frm.reload_doc();
|
||||
},
|
||||
always: function() {
|
||||
frappe.ui.form.is_saving = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
cur_frm.cscript['Unstop Sales Order'] = function() {
|
||||
var doc = cur_frm.doc;
|
||||
|
||||
var check = confirm(__("Are you sure you want to UNSTOP ") + doc.name);
|
||||
|
||||
if (check) {
|
||||
return $c('runserverobj', {
|
||||
'method':'unstop_sales_order',
|
||||
'docs': doc
|
||||
}, function(r,rt) {
|
||||
cur_frm.refresh();
|
||||
});
|
||||
}
|
||||
return $c('runserverobj', {
|
||||
'method':'unstop_sales_order',
|
||||
'docs': doc
|
||||
}, function(r,rt) {
|
||||
cur_frm.refresh();
|
||||
});
|
||||
}
|
||||
|
||||
cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
|
||||
|
||||
@@ -258,23 +258,23 @@ class SalesOrder(SellingController):
|
||||
|
||||
def on_update(self):
|
||||
pass
|
||||
|
||||
|
||||
def before_update_after_submit(self):
|
||||
self.validate_drop_ship()
|
||||
self.validate_drop_ship()
|
||||
self.validate_po()
|
||||
|
||||
|
||||
def validate_po(self):
|
||||
exc_list = []
|
||||
|
||||
|
||||
for item in self.items:
|
||||
supplier = frappe.db.get_value("Sales Order Item", {"parent": self.name, "item_code": item.item_code},
|
||||
supplier = frappe.db.get_value("Sales Order Item", {"parent": self.name, "item_code": item.item_code},
|
||||
"supplier")
|
||||
if item.ordered_qty > 0.0 and item.supplier != supplier:
|
||||
exc_list.append("Row #{0}: Not allowed to change supplier as Purchase Order already exists".format(item.idx))
|
||||
|
||||
if exc_list:
|
||||
|
||||
if exc_list:
|
||||
frappe.throw('\n'.join(exc_list))
|
||||
|
||||
|
||||
def update_delivery_status(self, po_name):
|
||||
tot_qty, delivered_qty = 0.0, 0.0
|
||||
|
||||
@@ -282,12 +282,12 @@ class SalesOrder(SellingController):
|
||||
if item.delivered_by_supplier:
|
||||
delivered_qty = frappe.db.get_value("Purchase Order Item", {"parent": po_name, "item_code": item.item_code}, "qty")
|
||||
frappe.db.set_value("Sales Order Item", item.name, "delivered_qty", delivered_qty)
|
||||
|
||||
|
||||
delivered_qty += item.delivered_qty
|
||||
tot_qty += item.qty
|
||||
|
||||
|
||||
frappe.db.set_value("Sales Order", self.name, "per_delivered", flt(delivered_qty/tot_qty) * 100)
|
||||
|
||||
|
||||
def get_list_context(context=None):
|
||||
from erpnext.controllers.website_list_for_contact import get_list_context
|
||||
list_context = get_list_context(context)
|
||||
@@ -307,7 +307,7 @@ def stop_or_unstop_sales_orders(names, status):
|
||||
if so.status not in ("Stopped", "Cancelled", "Closed") and (so.per_delivered < 100 or so.per_billed < 100):
|
||||
so.stop_sales_order(status)
|
||||
else:
|
||||
if so.status == "Stopped":
|
||||
if so.status in ("Stopped", "Closed"):
|
||||
so.unstop_sales_order()
|
||||
|
||||
frappe.local.message_log = []
|
||||
@@ -525,14 +525,14 @@ def get_events(start, end, filters=None):
|
||||
return data
|
||||
|
||||
@frappe.whitelist()
|
||||
def make_purchase_order_for_drop_shipment(source_name, for_supplier, target_doc=None):
|
||||
def make_purchase_order_for_drop_shipment(source_name, for_supplier, target_doc=None):
|
||||
def set_missing_values(source, target):
|
||||
target.supplier = for_supplier
|
||||
|
||||
|
||||
default_price_list = frappe.get_value("Supplier", for_supplier, "default_price_list")
|
||||
if default_price_list:
|
||||
target.buying_price_list = default_price_list
|
||||
|
||||
|
||||
target.delivered_by_supplier = 1
|
||||
target.run_method("set_missing_values")
|
||||
target.run_method("calculate_taxes_and_totals")
|
||||
@@ -552,10 +552,10 @@ def make_purchase_order_for_drop_shipment(source_name, for_supplier, target_doc=
|
||||
"contact_person": "customer_contact_person"
|
||||
},
|
||||
"field_no_map": [
|
||||
"address_display",
|
||||
"contact_display",
|
||||
"contact_mobile",
|
||||
"contact_email",
|
||||
"address_display",
|
||||
"contact_display",
|
||||
"contact_mobile",
|
||||
"contact_email",
|
||||
"contact_person"
|
||||
],
|
||||
"validation": {
|
||||
@@ -579,7 +579,7 @@ def make_purchase_order_for_drop_shipment(source_name, for_supplier, target_doc=
|
||||
"condition": lambda doc: doc.ordered_qty < doc.qty and doc.supplier == for_supplier
|
||||
}
|
||||
}, target_doc, set_missing_values)
|
||||
|
||||
|
||||
return doclist
|
||||
|
||||
@frappe.whitelist()
|
||||
@@ -615,4 +615,3 @@ def get_supplier(doctype, txt, searchfield, start, page_len, filters):
|
||||
def update_status(status, name):
|
||||
so = frappe.get_doc("Sales Order", name)
|
||||
so.stop_sales_order(status)
|
||||
|
||||
@@ -7,7 +7,7 @@ frappe.listview_settings['Sales Order'] = {
|
||||
|
||||
} else 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
|
||||
@@ -44,17 +44,17 @@ frappe.listview_settings['Sales Order'] = {
|
||||
onload: function(listview) {
|
||||
var method = "erpnext.selling.doctype.sales_order.sales_order.stop_or_unstop_sales_orders";
|
||||
|
||||
listview.page.add_menu_item(__("Set as Stopped"), function() {
|
||||
listview.call_for_selected_items(method, {"status": "Stoped"});
|
||||
});
|
||||
|
||||
listview.page.add_menu_item(__("Set as Unstopped"), function() {
|
||||
listview.call_for_selected_items(method, {"status": "Unstop"});
|
||||
});
|
||||
|
||||
listview.page.add_menu_item(__("Set as Closed"), function() {
|
||||
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"});
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user