From 98b287565a5781a1d4dfc8c7a22eb9e1b269d261 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Mon, 19 Oct 2015 15:16:17 +0530 Subject: [PATCH] [enhance] close purchase order --- .../doctype/purchase_order/purchase_order.js | 16 +++++++++- .../purchase_order/purchase_order.json | 4 +-- .../purchase_order/purchase_order_list.js | 2 ++ erpnext/controllers/status_updater.py | 1 + .../doctype/sales_order/sales_order.js | 30 +++++++++---------- erpnext/stock/stock_balance.py | 2 +- 6 files changed, 36 insertions(+), 19 deletions(-) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js index 6ae83d0f00..9a701595c5 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order.js @@ -19,11 +19,13 @@ erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend( this._super(); // this.frm.dashboard.reset(); - if(doc.docstatus == 1 && doc.status != 'Stopped') { + if(doc.docstatus == 1 && doc.status != 'Stopped' && doc.status != 'Closed') { if(flt(doc.per_billed, 2) < 100 || doc.per_received < 100) cur_frm.add_custom_button(__('Stop'), cur_frm.cscript['Stop Purchase Order']); + cur_frm.add_custom_button(__('Close'), cur_frm.cscript['Close Purchase Order']); + if(flt(doc.per_billed)==0) { cur_frm.add_custom_button(__('Payment'), cur_frm.cscript.make_bank_entry); } @@ -223,6 +225,18 @@ cur_frm.cscript['Unstop Purchase Order'] = function() { } } +cur_frm.cscript['Close Purchase Order'] = function() { + var doc = cur_frm.doc; + var check = confirm(__("Do you really want to Close ") + doc.name); + + if (check) { + return $c('runserverobj', args={'method':'update_status', 'arg': 'Closed', 'docs':doc}, function(r,rt) { + cur_frm.refresh(); + }); + } +} + + cur_frm.pformat.indent_no = function(doc, cdt, cdn){ //function to make row of table diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.json b/erpnext/buying/doctype/purchase_order/purchase_order.json index 98dbfbe116..5f15675de7 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.json +++ b/erpnext/buying/doctype/purchase_order/purchase_order.json @@ -1684,7 +1684,7 @@ "no_copy": 1, "oldfieldname": "status", "oldfieldtype": "Select", - "options": "\nDraft\nTo Receive and Bill\nTo Bill\nTo Receive\nCompleted\nStopped\nCancelled", + "options": "\nDraft\nTo Receive and Bill\nTo Bill\nTo Receive\nCompleted\nStopped\nCancelled\nClosed", "permlevel": 0, "print_hide": 1, "read_only": 1, @@ -2238,7 +2238,7 @@ "is_submittable": 1, "issingle": 0, "istable": 0, - "modified": "2015-10-16 06:13:50.058318", + "modified": "2015-10-19 14:23:14.190768", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order", diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_list.js b/erpnext/buying/doctype/purchase_order/purchase_order_list.js index 7f0ab658ef..ad83fb2f27 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order_list.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order_list.js @@ -4,6 +4,8 @@ frappe.listview_settings['Purchase Order'] = { get_indicator: function(doc) { if(doc.status==="Stopped") { return [__("Stopped"), "darkgrey", "status,=,Stopped"]; + } else if(doc.status==="Closed"){ + return [__("Closed"), "green", "status,=,Closed"]; } else if(flt(doc.per_received, 2) < 100 && doc.status!=="Stopped") { if(flt(doc.per_billed, 2) < 100) { return [__("To Receive and Bill"), "orange", diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index f666eedf4e..69e2d3e7b2 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -47,6 +47,7 @@ status_map = { ["Completed", "eval:self.per_received == 100 and self.per_billed == 100 and self.docstatus == 1"], ["Stopped", "eval:self.status=='Stopped'"], ["Cancelled", "eval:self.docstatus==2"], + ["Closed", "eval:self.status=='Closed'"], ], "Delivery Note": [ ["Draft", None], diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 57162a1edb..7a2bdb0fa0 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -236,6 +236,21 @@ cur_frm.cscript['Stop Sales Order'] = function() { } } +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(); + }); + } +} + cur_frm.cscript['Close Sales Order'] = function(){ var doc = cur_frm.doc; @@ -252,21 +267,6 @@ cur_frm.cscript['Close Sales Order'] = function(){ } } -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(); - }); - } -} - cur_frm.cscript.on_submit = function(doc, cdt, cdn) { if(cint(frappe.boot.notification_settings.sales_order)) { cur_frm.email_doc(frappe.boot.notification_settings.sales_order_message); diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py index b0654e28ae..b1e8b22063 100644 --- a/erpnext/stock/stock_balance.py +++ b/erpnext/stock/stock_balance.py @@ -122,7 +122,7 @@ def get_ordered_qty(item_code, warehouse): from `tabPurchase Order Item` po_item, `tabPurchase Order` po where po_item.item_code=%s and po_item.warehouse=%s and po_item.qty > ifnull(po_item.received_qty, 0) and po_item.parent=po.name - and po.status!='Stopped' and po.docstatus=1""", (item_code, warehouse)) + and po.status not in ('Stopped', 'Closed') and po.docstatus=1""", (item_code, warehouse)) return flt(ordered_qty[0][0]) if ordered_qty else 0