From 823e88d5bd893c87ac029bba09f1ff7358d92915 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 20 Jul 2015 10:56:39 +0530 Subject: [PATCH] [minor] close button for task and item not found error fix --- erpnext/projects/doctype/task/task.js | 69 ++++++++++++------- .../stock_ledger_entry/stock_ledger_entry.py | 9 ++- 2 files changed, 50 insertions(+), 28 deletions(-) diff --git a/erpnext/projects/doctype/task/task.js b/erpnext/projects/doctype/task/task.js index d9a611eed6..4e870fa59b 100644 --- a/erpnext/projects/doctype/task/task.js +++ b/erpnext/projects/doctype/task/task.js @@ -5,42 +5,59 @@ frappe.provide("erpnext.projects"); cur_frm.add_fetch("project", "company", "company"); -erpnext.projects.Task = frappe.ui.form.Controller.extend({ - setup: function() { - this.frm.fields_dict.project.get_query = function() { +frappe.ui.form.on("Task", { + refresh: function(frm) { + var doc = frm.doc; + if(!doc.__islocal) { + if(frappe.model.can_read("Time Log")) { + frm.add_custom_button(__("Time Logs"), function() { + frappe.route_options = {"project": doc.project, "task": doc.name} + frappe.set_route("List", "Time Log"); + }, "icon-list", true); + } + if(frappe.model.can_read("Expense Claim")) { + frm.add_custom_button(__("Expense Claims"), function() { + frappe.route_options = {"project": doc.project, "task": doc.name} + frappe.set_route("List", "Expense Claim"); + }, "icon-list", true); + } + + if(frm.perm[0].write) { + if(frm.doc.status==="Open") { + frm.add_custom_button("Close", function() { + frm.set_value("status", "Closed"); + frm.save(); + }); + } else { + frm.add_custom_button("Reopen", function() { + frm.set_value("status", "Open"); + frm.save(); + }); + } + } + } + }, + + setup: function(frm) { + frm.fields_dict.project.get_query = function() { return { query: "erpnext.projects.doctype.task.task.get_project" } }; }, - project: function() { - if(this.frm.doc.project) { - return get_server_fields('get_project_details', '','', this.frm.doc, this.frm.doc.doctype, - this.frm.doc.name, 1); + project: function(frm) { + if(frm.doc.project) { + return get_server_fields('get_project_details', '','', frm.doc, frm.doc.doctype, + frm.doc.name, 1); } }, - validate: function() { - this.frm.doc.project && frappe.model.remove_from_locals("Project", - this.frm.doc.project); + validate: function(frm) { + frm.doc.project && frappe.model.remove_from_locals("Project", + frm.doc.project); }, - - refresh: function(doc) { - if(!doc.__islocal) { - cur_frm.add_custom_button(__("Time Logs"), function() { - frappe.route_options = {"project": doc.project, "task": doc.name} - frappe.set_route("List", "Time Log"); - }, "icon-list", true); - cur_frm.add_custom_button(__("Expense Claims"), function() { - frappe.route_options = {"project": doc.project, "task": doc.name} - frappe.set_route("List", "Expense Claim"); - }, "icon-list", true); - } - } + }); cur_frm.add_fetch('task', 'subject', 'subject'); - -cur_frm.cscript = new erpnext.projects.Task({frm: cur_frm}); - diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py index ff027d7d0b..010f5ead2a 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -57,7 +57,12 @@ class StockLedgerEntry(Document): def validate_item(self): item_det = frappe.db.sql("""select name, has_batch_no, docstatus, is_stock_item, has_variants, stock_uom - from tabItem where name=%s""", self.item_code, as_dict=True)[0] + from tabItem where name=%s""", self.item_code, as_dict=True) + + if not item_det: + frappe.throw(_("Item {0} not found").format(self.item_code)) + + item_det = item_det[0] if item_det.is_stock_item != 'Yes': frappe.throw(_("Item {0} must be a stock Item").format(self.item_code)) @@ -97,7 +102,7 @@ class StockLedgerEntry(Document): def scrub_posting_time(self): if not self.posting_time or self.posting_time == '00:0': self.posting_time = '00:00' - + def validate_batch(self): if self.batch_no and self.voucher_type != "Stock Entry": expiry_date = frappe.db.get_value("Batch", self.batch_no, "expiry_date")