From 8706ca94452c82f09e97ecb9c7043d113c766ecb Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 1 Jul 2013 09:36:03 +0530 Subject: [PATCH] [journal voucher] [added opening entry] [cleanups] --- accounts/doctype/account/account.js | 2 +- accounts/doctype/cost_center/cost_center.js | 3 ++ .../journal_voucher/journal_voucher.js | 39 +++++++++++++++---- .../journal_voucher/journal_voucher.py | 13 ++++++- .../journal_voucher/journal_voucher.txt | 4 +- .../voucher_import_tool.js | 4 +- setup/doctype/setup_control/setup_control.py | 17 ++++++-- .../stock_ledger_entry/stock_ledger_entry.py | 2 - 8 files changed, 63 insertions(+), 21 deletions(-) diff --git a/accounts/doctype/account/account.js b/accounts/doctype/account/account.js index db50ff6ac8..252b708fc0 100644 --- a/accounts/doctype/account/account.js +++ b/accounts/doctype/account/account.js @@ -82,7 +82,7 @@ cur_frm.cscript.account_type = function(doc, cdt, cdn) { // ----------------------------------------- cur_frm.cscript.add_toolbar_buttons = function(doc) { cur_frm.add_custom_button('Chart of Accounts', - function() { wn.set_route("Accounts Browser", "Account"); }, 'icon-list') + function() { wn.set_route("Accounts Browser", "Account"); }, 'icon-sitemap') if (cstr(doc.group_or_ledger) == 'Group') { cur_frm.add_custom_button('Convert to Ledger', diff --git a/accounts/doctype/cost_center/cost_center.js b/accounts/doctype/cost_center/cost_center.js index e63fa042ea..2a98a960c7 100644 --- a/accounts/doctype/cost_center/cost_center.js +++ b/accounts/doctype/cost_center/cost_center.js @@ -28,6 +28,9 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) { cur_frm.toggle_display('sb1', doc.group_or_ledger=='Ledger') cur_frm.set_intro(intro_txt); + + cur_frm.add_custom_button('Chart of Cost Centers', + function() { wn.set_route("Accounts Browser", "Cost Center"); }, 'icon-sitemap') } //Account filtering for cost center diff --git a/accounts/doctype/journal_voucher/journal_voucher.js b/accounts/doctype/journal_voucher/journal_voucher.js index 78956bf11e..7e2f22a738 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.js +++ b/accounts/doctype/journal_voucher/journal_voucher.js @@ -139,10 +139,21 @@ cur_frm.cscript.view_ledger_entry = function(doc,cdt,cdn){ cur_frm.cscript.voucher_type = function(doc, cdt, cdn) { cur_frm.set_df_property("cheque_no", "reqd", doc.voucher_type=="Bank Voucher"); cur_frm.set_df_property("cheque_date", "reqd", doc.voucher_type=="Bank Voucher"); + + if(wn.model.get("Journal Voucher Detail", {"parent":doc.name}).length!===0 // too late + || !doc.company) // too early + return; - if(in_list(["Bank Voucher", "Cash Voucher"], doc.voucher_type) - && doc.company - && wn.model.get("Journal Voucher Detail", {"parent":doc.name}).length==0) { + var update_jv_details = function(doc, r) { + $.each(r.message, function(i, d) { + var jvdetail = wn.model.add_child(doc, "Journal Voucher Detail", "entries"); + jvdetail.account = d.account; + jvdetail.balance = d.balance; + }); + refresh_field("entries"); + } + + if(in_list(["Bank Voucher", "Cash Voucher"], doc.voucher_type)) { wn.call({ type: "GET", method: "accounts.doctype.journal_voucher.journal_voucher.get_default_bank_cash_account", @@ -152,14 +163,26 @@ cur_frm.cscript.voucher_type = function(doc, cdt, cdn) { }, callback: function(r) { if(r.message) { - var jvdetail = wn.model.add_child(doc, "Journal Voucher Detail", "entries"); - jvdetail.account = r.message.account; - // this is a data field???? - jvdetail.balance = format_currency(r.message.balance); - refresh_field("entries"); + update_jv_details(doc, r); } } }) + } else if(doc.voucher_type=="Opening Entry") { + wn.call({ + type:"GET", + method: "accounts.doctype.journal_voucher.journal_voucher.get_opening_accounts", + args: { + "company": doc.company + }, + callback: function(r) { + wn.model.clear_table("Journal Voucher Detail", "Journal Voucher", + doc.name, "entries"); + if(r.message) { + update_jv_details(doc, r); + } + cur_frm.set_value("is_opening", "Yes") + } + }) } } diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py index 2c5cd4fd80..77fec8ee8b 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.py +++ b/accounts/doctype/journal_voucher/journal_voucher.py @@ -352,11 +352,20 @@ def get_default_bank_cash_account(company, voucher_type): account = webnotes.conn.get_value("Company", company, voucher_type=="Bank Voucher" and "default_bank_account" or "default_cash_account") if account: - return { + return [{ "account": account, "balance": get_balance_on(account) - } + }] +@webnotes.whitelist() +def get_opening_accounts(company): + """get all balance sheet accounts for opening entry""" + from accounts.utils import get_balance_on + accounts = webnotes.conn.sql_list("""select name from tabAccount + where group_or_ledger='Ledger' and is_pl_account='No' and company=%s""", company) + + return [{"account": a, "balance": get_balance_on(a)} for a in accounts] + def get_against_purchase_invoice(doctype, txt, searchfield, start, page_len, filters): return webnotes.conn.sql("""select name, credit_to, outstanding_amount, bill_no, bill_date from `tabPurchase Invoice` where credit_to = %s and docstatus = 1 diff --git a/accounts/doctype/journal_voucher/journal_voucher.txt b/accounts/doctype/journal_voucher/journal_voucher.txt index d0163e69b9..603eb99fc0 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.txt +++ b/accounts/doctype/journal_voucher/journal_voucher.txt @@ -2,7 +2,7 @@ { "creation": "2013-03-25 10:53:52", "docstatus": 0, - "modified": "2013-06-11 16:04:20", + "modified": "2013-06-28 14:27:11", "modified_by": "Administrator", "owner": "Administrator" }, @@ -68,7 +68,7 @@ "label": "Voucher Type", "oldfieldname": "voucher_type", "oldfieldtype": "Select", - "options": "\nJournal Entry\nBank Voucher\nCash Voucher\nCredit Card Voucher\nDebit Note\nCredit Note\nContra Voucher\nExcise Voucher\nWrite Off Voucher", + "options": "\nJournal Entry\nBank Voucher\nCash Voucher\nCredit Card Voucher\nDebit Note\nCredit Note\nContra Voucher\nExcise Voucher\nWrite Off Voucher\nOpening Entry", "print_hide": 0, "read_only": 0, "search_index": 1 diff --git a/accounts/page/voucher_import_tool/voucher_import_tool.js b/accounts/page/voucher_import_tool/voucher_import_tool.js index bf6b065b0f..48216b83ee 100644 --- a/accounts/page/voucher_import_tool/voucher_import_tool.js +++ b/accounts/page/voucher_import_tool/voucher_import_tool.js @@ -9,11 +9,11 @@ wn.pages['voucher-import-tool'].onload = function(wrapper) {

Import multiple accounting entries via CSV (spreadsheet) file:

\

1. Download Template


\
\ - \ + \

Import multiple vouchers with one debit and one credit entry

\
\
\ - \ + \

Import multiple vouchers with multiple accounts

\
\
\ diff --git a/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py index eb668a7556..c481edfce6 100644 --- a/setup/doctype/setup_control/setup_control.py +++ b/setup/doctype/setup_control/setup_control.py @@ -61,13 +61,20 @@ class DocType: WHERE name=%(name)s AND docstatus<2""", args) def create_fiscal_year_and_company(self, args): - curr_fiscal_year, fy_start_date, fy_abbr = self.get_fy_details(args.get('fy_start')) - # Fiscal Year + curr_fiscal_year, fy_start_date, fy_abbr = self.get_fy_details(args.get('fy_start'), True) webnotes.bean([{ "doctype":"Fiscal Year", 'year': curr_fiscal_year, 'year_start_date': fy_start_date, }]).insert() + + curr_fiscal_year, fy_start_date, fy_abbr = self.get_fy_details(args.get('fy_start')) + webnotes.bean([{ + "doctype":"Fiscal Year", + 'year': curr_fiscal_year, + 'year_start_date': fy_start_date, + }]).insert() + # Company webnotes.bean([{ @@ -198,13 +205,15 @@ class DocType: # Get Fiscal year Details # ------------------------ - def get_fy_details(self, fy_start): + def get_fy_details(self, fy_start, last_year=False): st = {'1st Jan':'01-01','1st Apr':'04-01','1st Jul':'07-01', '1st Oct': '10-01'} curr_year = getdate(nowdate()).year + if last_year: + curr_year = curr_year - 1 if cint(getdate(nowdate()).month) < cint((st[fy_start].split('-'))[0]): curr_year = getdate(nowdate()).year - 1 stdt = cstr(curr_year)+'-'+cstr(st[fy_start]) - #eddt = sql("select DATE_FORMAT(DATE_SUB(DATE_ADD('%s', INTERVAL 1 YEAR), INTERVAL 1 DAY),'%%d-%%m-%%Y')" % (stdt.split('-')[2]+ '-' + stdt.split('-')[1] + '-' + stdt.split('-')[0])) + if(fy_start == '1st Jan'): fy = cstr(getdate(nowdate()).year) abbr = cstr(fy)[-2:] diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py index 3492931451..b2a10853ac 100644 --- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -121,8 +121,6 @@ class DocType(DocListController): self.doc.posting_time = '00:00' def on_doctype_update(self): - webnotes.msgprint(webnotes.conn.sql("""show index from `tabStock Ledger Entry` - where Key_name="posting_sort_index" """)) if not webnotes.conn.sql("""show index from `tabStock Ledger Entry` where Key_name="posting_sort_index" """): webnotes.conn.commit()