[journal voucher] [added opening entry] [cleanups]
diff --git a/accounts/doctype/account/account.js b/accounts/doctype/account/account.js
index db50ff6..252b708 100644
--- a/accounts/doctype/account/account.js
+++ b/accounts/doctype/account/account.js
@@ -82,7 +82,7 @@
// -----------------------------------------
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 e63fa04..2a98a96 100644
--- a/accounts/doctype/cost_center/cost_center.js
+++ b/accounts/doctype/cost_center/cost_center.js
@@ -28,6 +28,9 @@
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 78956bf..7e2f22a 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.js
+++ b/accounts/doctype/journal_voucher/journal_voucher.js
@@ -139,10 +139,21 @@
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 @@
},
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 2c5cd4f..77fec8e 100644
--- a/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/accounts/doctype/journal_voucher/journal_voucher.py
@@ -352,11 +352,20 @@
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 d0163e6..603eb99 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 bf6b065..48216b8 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 @@
<p class="help">Import multiple accounting entries via CSV (spreadsheet) file:</p>\
<h3>1. Download Template</h3><br>\
<div style="padding-left: 30px;">\
- <button class="btn btn-download-two-accounts">Download</button>\
+ <button class="btn btn-default btn-download-two-accounts">Download</button>\
<p class="help">Import multiple vouchers with one debit and one credit entry</p>\
</div>\
<div style="padding-left: 30px;">\
- <button class="btn btn-download-multiple-accounts">Download</button>\
+ <button class="btn btn-default btn-download-multiple-accounts">Download</button>\
<p class="help">Import multiple vouchers with multiple accounts</p>\
</div>\
<hr>\
diff --git a/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py
index eb668a7..c481edf 100644
--- a/setup/doctype/setup_control/setup_control.py
+++ b/setup/doctype/setup_control/setup_control.py
@@ -61,13 +61,20 @@
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 @@
# 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 3492931..b2a1085 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 @@
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()