diff --git a/erpnext/accounts/doctype/asset/asset.js b/erpnext/accounts/doctype/asset/asset.js index 2cd800a2b8c..38be2637a2c 100644 --- a/erpnext/accounts/doctype/asset/asset.js +++ b/erpnext/accounts/doctype/asset/asset.js @@ -27,7 +27,7 @@ frappe.ui.form.on('Asset', { refresh: function(frm) { frappe.ui.form.trigger("Asset", "is_existing_asset"); frm.toggle_display("next_depreciation_date", frm.doc.docstatus < 1); - + if (frm.doc.docstatus==1) { if (frm.doc.status=='Submitted' && !frm.doc.is_existing_asset && !frm.doc.purchase_invoice) { frm.add_custom_button("Make Purchase Invoice", function() { @@ -105,7 +105,10 @@ frappe.ui.form.on('Asset', { }, axis: { x: { - type: 'category' + type: 'timeseries', + tick: { + format: "%d-%m-%Y" + } }, y: { min: 0, @@ -136,9 +139,28 @@ frappe.ui.form.on('Asset', { is_existing_asset: function(frm) { frm.toggle_enable("supplier", frm.doc.is_existing_asset); frm.toggle_reqd("next_depreciation_date", !frm.doc.is_existing_asset); - } + }, }); +frappe.ui.form.on('Depreciation Schedule', { + make_depreciation_entry: function(frm, cdt, cdn) { + var row = locals[cdt][cdn]; + if (!row.journal_entry) { + frappe.call({ + method: "erpnext.accounts.doctype.asset.depreciation.make_depreciation_entry", + args: { + "asset_name": frm.doc.name, + "date": row.schedule_date + }, + callback: function(r) { + frappe.model.sync(r.message); + frm.refresh(); + } + }) + } + } +}) + erpnext.asset.make_purchase_invoice = function(frm) { frappe.call({ args: { diff --git a/erpnext/accounts/doctype/asset/depreciation.py b/erpnext/accounts/doctype/asset/depreciation.py index 06e1d1a4f52..6cf09d30d6e 100644 --- a/erpnext/accounts/doctype/asset/depreciation.py +++ b/erpnext/accounts/doctype/asset/depreciation.py @@ -21,7 +21,10 @@ def get_depreciable_assets(date): and a.status in ('Submitted', 'Partially Depreciated') and ifnull(ds.journal_entry, '')=''""", date) +@frappe.whitelist() def make_depreciation_entry(asset_name, date=None): + frappe.has_permission('Journal Entry', throw=True) + if not date: date = today() @@ -62,6 +65,8 @@ def make_depreciation_entry(asset_name, date=None): asset.db_set("value_after_depreciation", asset.value_after_depreciation) asset.set_status() + + return asset def get_depreciation_accounts(asset): fixed_asset_account = accumulated_depreciation_account = depreciation_expense_account = None diff --git a/erpnext/accounts/doctype/depreciation_schedule/depreciation_schedule.json b/erpnext/accounts/doctype/depreciation_schedule/depreciation_schedule.json index dc854b219ea..68ce53fdec4 100644 --- a/erpnext/accounts/doctype/depreciation_schedule/depreciation_schedule.json +++ b/erpnext/accounts/doctype/depreciation_schedule/depreciation_schedule.json @@ -3,6 +3,7 @@ "allow_import": 0, "allow_rename": 1, "autoname": "", + "beta": 0, "creation": "2016-03-02 15:11:01.278862", "custom": 0, "docstatus": 0, @@ -135,18 +136,45 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "depends_on": "eval:(!doc.journal_entry && doc.schedule_date <= get_today())", + "fieldname": "make_depreciation_entry", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Make Depreciation Entry", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], "hide_heading": 0, "hide_toolbar": 0, "idx": 0, + "image_view": 0, "in_create": 0, "in_dialog": 0, "is_submittable": 0, "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2016-04-20 16:43:21.407123", + "modified": "2016-07-06 12:38:32.456903", "modified_by": "Administrator", "module": "Accounts", "name": "Depreciation Schedule",