From 49a6f0754e6d7a92c93a1ec95d32449cee8eb890 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 3 Mar 2014 18:40:24 +0530 Subject: [PATCH] Removed debit_or_credit field --- erpnext/accounts/doctype/account/account.js | 24 +- erpnext/accounts/doctype/account/account.py | 18 +- erpnext/accounts/doctype/account/account.txt | 22 +- .../doctype/cost_center/cost_center.js | 1 - .../payment_to_invoice_matching_tool.py | 6 +- .../period_closing_voucher.js | 2 +- .../period_closing_voucher.py | 16 +- .../doctype/pos_setting/pos_setting.js | 5 +- .../purchase_invoice/purchase_invoice.js | 2 +- .../purchase_invoice/purchase_invoice.py | 17 +- .../purchase_taxes_and_charges_master.js | 2 +- .../doctype/sales_invoice/sales_invoice.js | 8 +- .../doctype/sales_invoice/sales_invoice.py | 17 +- .../sales_taxes_and_charges_master.js | 2 +- .../accounts_payable/accounts_payable.js | 2 +- .../accounts_receivable.js | 2 +- .../bank_reconciliation_statement.py | 17 +- .../report/general_ledger/general_ledger.py | 19 +- .../item_wise_purchase_register.js | 2 +- .../item_wise_sales_register.js | 2 +- .../purchase_register/purchase_register.js | 2 +- .../report/sales_register/sales_register.js | 2 +- erpnext/accounts/utils.py | 8 +- erpnext/controllers/queries.py | 8 +- erpnext/setup/doctype/company/company.js | 8 +- erpnext/setup/doctype/company/company.py | 212 +++++++++--------- .../doctype/email_digest/email_digest.py | 8 +- erpnext/startup/report_data_map.py | 2 +- .../doctype/delivery_note/delivery_note.js | 2 +- erpnext/stock/doctype/item/item.js | 4 +- .../landed_cost_wizard/landed_cost_wizard.js | 2 - .../material_request/material_request.js | 12 +- erpnext/stock/doctype/warehouse/warehouse.js | 1 - 33 files changed, 194 insertions(+), 263 deletions(-) diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js index f4ec79b2c5..a77bce5217 100644 --- a/erpnext/accounts/doctype/account/account.js +++ b/erpnext/accounts/doctype/account/account.js @@ -1,14 +1,6 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt - -// Onload -// ----------------------------------------- -cur_frm.cscript.onload = function(doc, cdt, cdn) { -} - -// Refresh -// ----------------------------------------- cur_frm.cscript.refresh = function(doc, cdt, cdn) { if(doc.__islocal) { msgprint(frappe._("Please create new account from Chart of Accounts.")); @@ -22,8 +14,7 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) { 'credit_days', 'credit_limit', 'tax_rate'], doc.group_or_ledger=='Ledger') // disable fields - cur_frm.toggle_enable(['account_name', 'debit_or_credit', 'group_or_ledger', - 'is_pl_account', 'company'], false); + cur_frm.toggle_enable(['account_name', 'group_or_ledger', 'is_pl_account', 'company'], false); if(doc.group_or_ledger=='Ledger') { frappe.model.with_doc("Accounts Settings", "Accounts Settings", function (name) { @@ -61,14 +52,8 @@ cur_frm.cscript.master_type = function(doc, cdt, cdn) { in_list(['Customer', 'Supplier'], doc.master_type)); } - -// Fetch parent details -// ----------------------------------------- -cur_frm.add_fetch('parent_account', 'debit_or_credit', 'debit_or_credit'); cur_frm.add_fetch('parent_account', 'is_pl_account', 'is_pl_account'); -// Hide tax rate based on account type -// ----------------------------------------- cur_frm.cscript.account_type = function(doc, cdt, cdn) { if(doc.group_or_ledger=='Ledger') { cur_frm.toggle_display(['tax_rate'], doc.account_type == 'Tax'); @@ -78,8 +63,6 @@ cur_frm.cscript.account_type = function(doc, cdt, cdn) { } } -// Hide/unhide group or ledger -// ----------------------------------------- cur_frm.cscript.add_toolbar_buttons = function(doc) { cur_frm.appframe.add_button(frappe._('Chart of Accounts'), function() { frappe.set_route("Accounts Browser", "Account"); }, 'icon-sitemap') @@ -102,8 +85,7 @@ cur_frm.cscript.add_toolbar_buttons = function(doc) { }, "icon-table"); } } -// Convert group to ledger -// ----------------------------------------- + cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) { return $c_obj(cur_frm.get_doclist(),'convert_group_to_ledger','',function(r,rt) { if(r.message == 1) { @@ -112,8 +94,6 @@ cur_frm.cscript.convert_to_ledger = function(doc, cdt, cdn) { }); } -// Convert ledger to group -// ----------------------------------------- cur_frm.cscript.convert_to_group = function(doc, cdt, cdn) { return $c_obj(cur_frm.get_doclist(),'convert_ledger_to_group','',function(r,rt) { if(r.message == 1) { diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index b4bc9a95f4..aec889cd93 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -48,7 +48,7 @@ class DocType: def validate_parent(self): """Fetch Parent Details and validation for account not to be created under ledger""" if self.doc.parent_account: - par = frappe.db.sql("""select name, group_or_ledger, is_pl_account, debit_or_credit + par = frappe.db.sql("""select name, group_or_ledger, is_pl_account from tabAccount where name =%s""", self.doc.parent_account) if not par: throw(_("Parent account does not exists")) @@ -56,19 +56,9 @@ class DocType: throw(_("You can not assign itself as parent account")) elif par[0][1] != 'Group': throw(_("Parent account can not be a ledger")) - elif self.doc.debit_or_credit and par[0][3] != self.doc.debit_or_credit: - throw("{msg} {debit_or_credit} {under} {account} {acc}".format(**{ - "msg": _("You cannot move a"), - "debit_or_credit": self.doc.debit_or_credit, - "under": _("account under"), - "account": par[0][3], - "acc": _("account") - })) if not self.doc.is_pl_account: self.doc.is_pl_account = par[0][2] - if not self.doc.debit_or_credit: - self.doc.debit_or_credit = par[0][3] def validate_duplicate_account(self): if self.doc.fields.get('__islocal') or not self.doc.name: @@ -131,8 +121,6 @@ class DocType: and docstatus != 2""", self.doc.name) def validate_mandatory(self): - if not self.doc.debit_or_credit: - throw(_("Debit or Credit field is mandatory")) if not self.doc.is_pl_account: throw(_("Is PL Account field is mandatory")) @@ -215,9 +203,9 @@ class DocType: throw(_("Account ") + new +_(" does not exists")) val = list(frappe.db.get_value("Account", new_account, - ["group_or_ledger", "debit_or_credit", "is_pl_account", "company"])) + ["group_or_ledger", "is_pl_account", "company"])) - if val != [self.doc.group_or_ledger, self.doc.debit_or_credit, self.doc.is_pl_account, self.doc.company]: + if val != [self.doc.group_or_ledger, self.doc.is_pl_account, self.doc.company]: throw(_("""Merging is only possible if following \ properties are same in both records. Group or Ledger, Debit or Credit, Is PL Account""")) diff --git a/erpnext/accounts/doctype/account/account.txt b/erpnext/accounts/doctype/account/account.txt index e2622155eb..7b5a951620 100644 --- a/erpnext/accounts/doctype/account/account.txt +++ b/erpnext/accounts/doctype/account/account.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-30 12:49:46", "docstatus": 0, - "modified": "2014-01-20 17:48:20", + "modified": "2014-03-03 17:21:07", "modified_by": "Administrator", "owner": "Administrator" }, @@ -16,7 +16,7 @@ "in_create": 1, "module": "Accounts", "name": "__common__", - "search_fields": "debit_or_credit, group_or_ledger" + "search_fields": "group_or_ledger" }, { "doctype": "DocField", @@ -93,17 +93,6 @@ "reqd": 1, "search_index": 1 }, - { - "doctype": "DocField", - "fieldname": "debit_or_credit", - "fieldtype": "Data", - "in_filter": 1, - "label": "Debit or Credit", - "oldfieldname": "debit_or_credit", - "oldfieldtype": "Data", - "read_only": 1, - "search_index": 1 - }, { "doctype": "DocField", "fieldname": "is_pl_account", @@ -146,6 +135,13 @@ "options": "Account", "search_index": 1 }, + { + "doctype": "DocField", + "fieldname": "root_type", + "fieldtype": "Select", + "label": "Root Type", + "options": "\nAsset\nLiability\nExpense\nIncome\nEquity" + }, { "description": "Setting Account Type helps in selecting this Account in transactions.", "doctype": "DocField", diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js index 7fb4afe2db..d271ab3a3e 100644 --- a/erpnext/accounts/doctype/cost_center/cost_center.js +++ b/erpnext/accounts/doctype/cost_center/cost_center.js @@ -15,7 +15,6 @@ erpnext.accounts.CostCenterController = frappe.ui.form.Controller.extend({ filters:[ ['Account', 'company', '=', me.frm.doc.company], ['Account', 'is_pl_account', '=', 'Yes'], - ['Account', 'debit_or_credit', '=', 'Debit'], ['Account', 'group_or_ledger', '!=', 'Group'], ] } diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py index b8c1bd6261..e0bd61d7ae 100644 --- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py +++ b/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py @@ -15,8 +15,10 @@ class DocType: self.doclist = doclist def set_account_type(self): - self.doc.account_type = self.doc.account and \ - frappe.db.get_value("Account", self.doc.account, "debit_or_credit").lower() or "" + self.doc.account_type = "" + if self.doc.account: + root_type = frappe.db.get_value("Account", self.doc.account, "root_type") + self.doc.account_type = "debit" if root_type in ["Asset", "Income"] else "credit" def get_voucher_details(self): total_amount = frappe.db.sql("""select sum(%s) from `tabGL Entry` diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js index 56eb330e24..1d28f69b14 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js @@ -13,8 +13,8 @@ cur_frm.fields_dict['closing_account_head'].get_query = function(doc, cdt, cdn) return{ filters:{ 'is_pl_account': "No", - "debit_or_credit": "Credit", "company": doc.company, + "root_type": "Liability", "freeze_account": "No", "group_or_ledger": "Ledger" } diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py index 98befa007a..b336716fa1 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py @@ -3,8 +3,8 @@ from __future__ import unicode_literals import frappe -from frappe.utils import cstr, flt, getdate -from frappe import msgprint, _ +from frappe.utils import cstr, flt +from frappe import _ from erpnext.controllers.accounts_controller import AccountsController class DocType(AccountsController): @@ -25,10 +25,8 @@ class DocType(AccountsController): where voucher_type = 'Period Closing Voucher' and voucher_no=%s""", self.doc.name) def validate_account_head(self): - debit_or_credit, is_pl_account = frappe.db.get_value("Account", - self.doc.closing_account_head, ["debit_or_credit", "is_pl_account"]) - - if debit_or_credit != 'Credit' or is_pl_account != 'No': + if frappe.db.get_value("Account", self.doc.closing_account_head, "root_type") \ + != "Liability": frappe.throw(_("Account") + ": " + self.doc.closing_account_head + _("must be a Liability account")) @@ -48,16 +46,14 @@ class DocType(AccountsController): select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between %s and %s - and t2.debit_or_credit = 'Credit' and t2.is_pl_account = 'Yes' - and t2.docstatus < 2 and t2.company = %s""", + and t2.root_type = 'Income' and t2.docstatus < 2 and t2.company = %s""", (self.year_start_date, self.doc.posting_date, self.doc.company)) expense_bal = frappe.db.sql(""" select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between %s and %s - and t2.debit_or_credit = 'Debit' and t2.is_pl_account = 'Yes' - and t2.docstatus < 2 and t2.company=%s""", + and t2.root_type = 'Expense' and t2.docstatus < 2 and t2.company=%s""", (self.year_start_date, self.doc.posting_date, self.doc.company)) income_bal = income_bal and income_bal[0][0] or 0 diff --git a/erpnext/accounts/doctype/pos_setting/pos_setting.js b/erpnext/accounts/doctype/pos_setting/pos_setting.js index 5e7afc65b0..ea08fd2420 100755 --- a/erpnext/accounts/doctype/pos_setting/pos_setting.js +++ b/erpnext/accounts/doctype/pos_setting/pos_setting.js @@ -16,7 +16,7 @@ cur_frm.cscript.onload = function(doc,cdt,cdn){ cur_frm.fields_dict['cash_bank_account'].get_query = function(doc,cdt,cdn) { return{ filters:{ - 'debit_or_credit': "Debit", + 'root_type': "Asset", 'is_pl_account': "No", 'group_or_ledger': "Ledger", 'company': doc.company @@ -29,7 +29,6 @@ cur_frm.fields_dict['cash_bank_account'].get_query = function(doc,cdt,cdn) { cur_frm.fields_dict['income_account'].get_query = function(doc,cdt,cdn) { return{ filters:{ - 'debit_or_credit': "Credit", 'group_or_ledger': "Ledger", 'company': doc.company, 'account_type': "Income Account" @@ -56,7 +55,7 @@ cur_frm.fields_dict["expense_account"].get_query = function(doc) { return { filters: { "is_pl_account": "Yes", - "debit_or_credit": "Debit", + "root_type": "Expense", "company": doc.company, "group_or_ledger": "Ledger" } diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js index 202179d4d6..f4a0da1a59 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -158,7 +158,7 @@ cur_frm.fields_dict['entries'].grid.get_field("item_code").get_query = function( cur_frm.fields_dict['credit_to'].get_query = function(doc) { return{ filters:{ - 'debit_or_credit': 'Credit', + 'root_type': 'Liability', 'is_pl_account': 'No', 'group_or_ledger': 'Ledger', 'company': doc.company diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 1d7af8ac76..0b255b60cb 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import frappe -from frappe.utils import add_days, cint, cstr, flt, formatdate +from frappe.utils import cint, cstr, flt, formatdate from frappe.model.bean import getlist from frappe.model.code import get_obj from frappe import msgprint, _ @@ -109,17 +109,8 @@ class DocType(BuyingController): self.doc.remarks = "No Remarks" def validate_credit_acc(self): - acc = frappe.db.sql("select debit_or_credit, is_pl_account from tabAccount where name = %s", - self.doc.credit_to) - if not acc: - msgprint("Account: "+ self.doc.credit_to + "does not exist") - raise Exception - elif acc[0][0] and acc[0][0] != 'Credit': - msgprint("Account: "+ self.doc.credit_to + "is not a credit account") - raise Exception - elif acc[0][1] and acc[0][1] != 'No': - msgprint("Account: "+ self.doc.credit_to + "is a pl account") - raise Exception + if frappe.db.get_value("Account", self.doc.debit_to, "root_type") != "Liability": + frappe.throw(_("Account must be an liability account")) # Validate Acc Head of Supplier and Credit To Account entered # ------------------------------------------------------------ @@ -433,7 +424,7 @@ def get_expense_account(doctype, txt, searchfield, start, page_len, filters): # but can also be a Liability account with account_type='Expense Account' in special circumstances. # Hence the first condition is an "OR" return frappe.db.sql("""select tabAccount.name from `tabAccount` - where (tabAccount.debit_or_credit="Debit" + where (tabAccount.root_type in ("Asset", "Expense") or tabAccount.account_type = "Expense Account") and tabAccount.group_or_ledger="Ledger" and tabAccount.docstatus!=2 diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js index b87915ac9d..aa4ec27bc7 100644 --- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js +++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js @@ -138,7 +138,7 @@ cur_frm.set_query("account_head", "other_charges", function(doc) { query: "erpnext.controllers.queries.tax_account_query", filters: { "account_type": ["Tax", "Chargeable", "Expense Account"], - "debit_or_credit": "Debit", + "root_type": "Expense", "company": doc.company } } diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index fdbead9ee3..aeab04c4a4 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -289,7 +289,7 @@ cur_frm.cscript.make_bank_voucher = function() { cur_frm.fields_dict.debit_to.get_query = function(doc) { return{ filters: { - 'debit_or_credit': 'Debit', + 'root_type': 'Asset', 'is_pl_account': 'No', 'group_or_ledger': 'Ledger', 'company': doc.company @@ -300,7 +300,7 @@ cur_frm.fields_dict.debit_to.get_query = function(doc) { cur_frm.fields_dict.cash_bank_account.get_query = function(doc) { return{ filters: { - 'debit_or_credit': 'Debit', + 'root_type': 'Asset', 'is_pl_account': 'No', 'group_or_ledger': 'Ledger', 'company': doc.company @@ -311,7 +311,7 @@ cur_frm.fields_dict.cash_bank_account.get_query = function(doc) { cur_frm.fields_dict.write_off_account.get_query = function(doc) { return{ filters:{ - 'debit_or_credit': 'Debit', + 'root_type': 'Expense', 'is_pl_account': 'Yes', 'group_or_ledger': 'Ledger', 'company': doc.company @@ -354,7 +354,7 @@ if (sys_defaults.auto_accounting_for_stock) { return { filters: { 'is_pl_account': 'Yes', - 'debit_or_credit': 'Debit', + 'root_type': 'Expense', 'company': doc.company, 'group_or_ledger': 'Ledger' } diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index a261334188..0a145b5dd0 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -257,18 +257,9 @@ class DocType(SellingController): def validate_debit_acc(self): - acc = frappe.db.sql("select debit_or_credit, is_pl_account from tabAccount where name = %s and docstatus != 2", self.doc.debit_to) - if not acc: - msgprint("Account: "+ self.doc.debit_to + " does not exist") - raise Exception - elif acc[0][0] and acc[0][0] != 'Debit': - msgprint("Account: "+ self.doc.debit_to + " is not a debit account") - raise Exception - elif acc[0][1] and acc[0][1] != 'No': - msgprint("Account: "+ self.doc.debit_to + " is a pl account") - raise Exception - - + if frappe.db.get_value("Account", self.doc.debit_to, "root_type") != "Asset": + frappe.throw(_("Account must be an asset account")) + def validate_fixed_asset_account(self): """Validate Fixed Asset Account and whether Income Account Entered Exists""" for d in getlist(self.doclist,'entries'): @@ -796,7 +787,7 @@ def get_income_account(doctype, txt, searchfield, start, page_len, filters): # but can also be a Asset account with account_type='Income Account' in special circumstances. # Hence the first condition is an "OR" return frappe.db.sql("""select tabAccount.name from `tabAccount` - where (tabAccount.debit_or_credit="Credit" + where (tabAccount.root_type in ("Liability", "Income") or tabAccount.account_type = "Income Account") and tabAccount.group_or_ledger="Ledger" and tabAccount.docstatus!=2 diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js index f33eb27da3..c5e96894fa 100644 --- a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js +++ b/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js @@ -137,7 +137,7 @@ cur_frm.fields_dict['other_charges'].grid.get_field("account_head").get_query = query: "erpnext.controllers.queries.tax_account_query", filters: { "account_type": ["Tax", "Chargeable", "Income Account"], - "debit_or_credit": "Credit", + "root_type": "Income", "company": doc.company } } diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js index 855aae1f44..9b6fcae02a 100644 --- a/erpnext/accounts/report/accounts_payable/accounts_payable.js +++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js @@ -21,7 +21,7 @@ frappe.query_reports["Accounts Payable"] = { "query": "accounts.utils.get_account_list", "filters": { "is_pl_account": "No", - "debit_or_credit": "Credit", + "root_type": "Liability", "company": company, "master_type": "Supplier" } diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js index bb3bf5b5f2..1437fde4b9 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js @@ -21,7 +21,7 @@ frappe.query_reports["Accounts Receivable"] = { "query": "accounts.utils.get_account_list", "filters": { "is_pl_account": "No", - "debit_or_credit": "Debit", + "root_type": "Asset", "company": company, "master_type": "Customer" } diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py index 4cb14dbfba..607227b733 100644 --- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py @@ -7,9 +7,7 @@ from frappe.utils import flt def execute(filters=None): if not filters: filters = {} - - debit_or_credit = frappe.db.get_value("Account", filters["account"], "debit_or_credit") - + columns = get_columns() data = get_entries(filters) @@ -21,15 +19,12 @@ def execute(filters=None): total_debit += flt(d[4]) total_credit += flt(d[5]) - if debit_or_credit == 'Debit': - bank_bal = flt(balance_as_per_company) - flt(total_debit) + flt(total_credit) - else: - bank_bal = flt(balance_as_per_company) + flt(total_debit) - flt(total_credit) + bank_bal = flt(balance_as_per_company) + flt(total_debit) - flt(total_credit) data += [ - get_balance_row("Balance as per company books", balance_as_per_company, debit_or_credit), + get_balance_row("Balance as per company books", balance_as_per_company), ["", "", "", "Amounts not reflected in bank", total_debit, total_credit], - get_balance_row("Balance as per bank", bank_bal, debit_or_credit) + get_balance_row("Balance as per bank", bank_bal) ] return columns, data @@ -52,8 +47,8 @@ def get_entries(filters): return entries -def get_balance_row(label, amount, debit_or_credit): - if debit_or_credit == "Debit": +def get_balance_row(label, amount): + if amount > 0: return ["", "", "", label, amount, 0] else: return ["", "", "", label, 0, amount] diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index e130e29f97..17af02fe85 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -8,8 +8,7 @@ from frappe import _ def execute(filters=None): account_details = {} - for acc in frappe.db.sql("""select name, debit_or_credit, group_or_ledger - from tabAccount""", as_dict=1): + for acc in frappe.db.sql("""select name, group_or_ledger from tabAccount""", as_dict=1): account_details.setdefault(acc.name, acc) validate_filters(filters, account_details) @@ -88,15 +87,13 @@ def get_data_with_opening_closing(filters, account_details, gl_entries): # Opening for filtered account if filters.get("account"): - data += [get_balance_row("Opening", account_details[filters.account].debit_or_credit, - opening), {}] + data += [get_balance_row("Opening", opening), {}] for acc, acc_dict in gle_map.items(): if acc_dict.entries: # Opening for individual ledger, if grouped by account if filters.get("group_by_account"): - data.append(get_balance_row("Opening", account_details[acc].debit_or_credit, - acc_dict.opening)) + data.append(get_balance_row("Opening", acc_dict.opening)) data += acc_dict.entries @@ -105,8 +102,7 @@ def get_data_with_opening_closing(filters, account_details, gl_entries): data += [{"account": "Totals", "debit": acc_dict.total_debit, "credit": acc_dict.total_credit}, get_balance_row("Closing (Opening + Totals)", - account_details[acc].debit_or_credit, (acc_dict.opening - + acc_dict.total_debit - acc_dict.total_credit)), {}] + (acc_dict.opening + acc_dict.total_debit - acc_dict.total_credit)), {}] # Total debit and credit between from and to date if total_debit or total_credit: @@ -115,7 +111,6 @@ def get_data_with_opening_closing(filters, account_details, gl_entries): # Closing for filtered account if filters.get("account"): data.append(get_balance_row("Closing (Opening + Totals)", - account_details[filters.account].debit_or_credit, (opening + total_debit - total_credit))) return data @@ -151,11 +146,11 @@ def get_accountwise_gle(filters, gl_entries, gle_map): return opening, total_debit, total_credit, gle_map -def get_balance_row(label, debit_or_credit, balance): +def get_balance_row(label, balance): return { "account": label, - "debit": balance if debit_or_credit=="Debit" else 0, - "credit": -1*balance if debit_or_credit=="Credit" else 0, + "debit": balance if balance > 0 else 0, + "credit": -1*balance if balance < 0 else 0, } def get_result_as_list(data): diff --git a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js index 4196c85cd4..5f6d631e1d 100644 --- a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js +++ b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js @@ -33,7 +33,7 @@ frappe.query_reports["Item-wise Purchase Register"] = { "query": "accounts.utils.get_account_list", "filters": { "is_pl_account": "No", - "debit_or_credit": "Credit", + "root_type": "Liability", "company": company, "master_type": "Supplier" } diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js index 1828f694f9..f54b94b7f3 100644 --- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js +++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.js @@ -27,7 +27,7 @@ frappe.query_reports["Item-wise Sales Register"] = frappe.query_reports["Sales R "query": "accounts.utils.get_account_list", "filters": { "is_pl_account": "No", - "debit_or_credit": "Debit", + "root_type": "Asset", "company": company, "master_type": "Customer" } diff --git a/erpnext/accounts/report/purchase_register/purchase_register.js b/erpnext/accounts/report/purchase_register/purchase_register.js index 78eb762720..10bd9aa96f 100644 --- a/erpnext/accounts/report/purchase_register/purchase_register.js +++ b/erpnext/accounts/report/purchase_register/purchase_register.js @@ -27,7 +27,7 @@ frappe.query_reports["Purchase Register"] = { "query": "accounts.utils.get_account_list", "filters": { "is_pl_account": "No", - "debit_or_credit": "Credit", + "root_type": "Liability", "company": company, "master_type": "Supplier" } diff --git a/erpnext/accounts/report/sales_register/sales_register.js b/erpnext/accounts/report/sales_register/sales_register.js index f0d00ce5e0..683027aada 100644 --- a/erpnext/accounts/report/sales_register/sales_register.js +++ b/erpnext/accounts/report/sales_register/sales_register.js @@ -27,7 +27,7 @@ frappe.query_reports["Sales Register"] = { "query": "accounts.utils.get_account_list", "filters": { "is_pl_account": "No", - "debit_or_credit": "Debit", + "root_type": "Asset", "company": company, "master_type": "Customer" } diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 0964478b6c..b2798149a3 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -74,7 +74,7 @@ def get_balance_on(account=None, date=None): return 0.0 acc = frappe.db.get_value('Account', account, \ - ['lft', 'rgt', 'debit_or_credit', 'is_pl_account', 'group_or_ledger'], as_dict=1) + ['lft', 'rgt', 'is_pl_account', 'group_or_ledger'], as_dict=1) # for pl accounts, get balance within a fiscal year if acc.is_pl_account == 'Yes': @@ -95,10 +95,6 @@ def get_balance_on(account=None, date=None): FROM `tabGL Entry` gle WHERE %s""" % " and ".join(cond))[0][0] - # if credit account, it should calculate credit - debit - if bal and acc.debit_or_credit == 'Credit': - bal = -bal - # if bal is None, return 0 return flt(bal) @@ -290,7 +286,7 @@ def get_stock_and_account_difference(account_list=None, posting_date=None): def validate_expense_against_budget(args): args = frappe._dict(args) if frappe.db.get_value("Account", {"name": args.account, "is_pl_account": "Yes", - "debit_or_credit": "Debit"}): + "root_type": "Expense"}): budget = frappe.db.sql(""" select bd.budget_allocated, cc.distribution_id from `tabCost Center` cc, `tabBudget Detail` bd diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py index 1f8077fc8d..449a4938a9 100644 --- a/erpnext/controllers/queries.py +++ b/erpnext/controllers/queries.py @@ -106,18 +106,16 @@ def supplier_query(doctype, txt, searchfield, start, page_len, filters): 'page_len': page_len}) def tax_account_query(doctype, txt, searchfield, start, page_len, filters): - return frappe.db.sql("""select name, parent_account, debit_or_credit - from tabAccount + return frappe.db.sql("""select name, parent_account from tabAccount where tabAccount.docstatus!=2 - and (account_type in (%s) or - (ifnull(is_pl_account, 'No') = 'Yes' and debit_or_credit = %s) ) + and (account_type in (%s) or root_type = %s) and group_or_ledger = 'Ledger' and company = %s and `%s` LIKE %s limit %s, %s""" % (", ".join(['%s']*len(filters.get("account_type"))), "%s", "%s", searchfield, "%s", "%s", "%s"), - tuple(filters.get("account_type") + [filters.get("debit_or_credit"), + tuple(filters.get("account_type") + [filters.get("root_type"), filters.get("company"), "%%%s%%" % txt, start, page_len])) def item_query(doctype, txt, searchfield, start, page_len, filters): diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js index 7ce369c09f..555685891a 100644 --- a/erpnext/setup/doctype/company/company.js +++ b/erpnext/setup/doctype/company/company.js @@ -106,7 +106,7 @@ cur_frm.fields_dict.default_expense_account.get_query = function(doc) { 'company': doc.name, 'group_or_ledger': "Ledger", 'is_pl_account': "Yes", - 'debit_or_credit': "Debit" + 'root_type': "Expense" } } } @@ -117,7 +117,7 @@ cur_frm.fields_dict.default_income_account.get_query = function(doc) { 'company': doc.name, 'group_or_ledger': "Ledger", 'is_pl_account': "Yes", - 'debit_or_credit': "Credit" + 'root_type': "Income" } } } @@ -136,7 +136,7 @@ if (sys_defaults.auto_accounting_for_stock) { return { "filters": { "is_pl_account": "Yes", - "debit_or_credit": "Debit", + "root_type": "Expense", "company": doc.name, 'group_or_ledger': "Ledger" } @@ -150,7 +150,7 @@ if (sys_defaults.auto_accounting_for_stock) { return { "filters": { "is_pl_account": "No", - "debit_or_credit": "Credit", + "root_type": "Liability", "company": doc.name, 'group_or_ledger': "Ledger" } diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index fb3059b2ca..7f6d84606c 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -101,117 +101,117 @@ class DocType: style_settings.save() def create_default_accounts(self): - self.fld_dict = {'account_name':0,'parent_account':1,'group_or_ledger':2,'is_pl_account':3,'account_type':4,'debit_or_credit':5,'company':6,'tax_rate':7} + self.fld_dict = {'account_name':0,'parent_account':1,'group_or_ledger':2,'is_pl_account':3,'account_type':4,'root_type':5,'company':6,'tax_rate':7} acc_list_common = [ - ['Application of Funds (Assets)','','Group','No','','Debit',self.doc.name,''], - ['Current Assets','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''], - ['Accounts Receivable','Current Assets','Group','No','','Debit',self.doc.name,''], - ['Bank Accounts','Current Assets','Group','No','Bank or Cash','Debit',self.doc.name,''], - ['Cash In Hand','Current Assets','Group','No','Bank or Cash','Debit',self.doc.name,''], - ['Cash','Cash In Hand','Ledger','No','Bank or Cash','Debit',self.doc.name,''], - ['Loans and Advances (Assets)','Current Assets','Group','No','','Debit',self.doc.name,''], - ['Securities and Deposits','Current Assets','Group','No','','Debit',self.doc.name,''], - ['Earnest Money','Securities and Deposits','Ledger','No','','Debit',self.doc.name,''], - ['Stock Assets','Current Assets','Group','No','','Debit',self.doc.name,''], - ['Tax Assets','Current Assets','Group','No','','Debit',self.doc.name,''], - ['Fixed Assets','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''], - ['Capital Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''], - ['Computers','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''], - ['Furniture and Fixture','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''], - ['Office Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''], - ['Plant and Machinery','Fixed Assets','Ledger','No','Fixed Asset Account','Debit',self.doc.name,''], - ['Investments','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''], - ['Temporary Accounts (Assets)','Application of Funds (Assets)','Group','No','','Debit',self.doc.name,''], - ['Temporary Account (Assets)','Temporary Accounts (Assets)','Ledger','No','','Debit',self.doc.name,''], - ['Expenses','','Group','Yes','Expense Account','Debit',self.doc.name,''], - ['Direct Expenses','Expenses','Group','Yes','Expense Account','Debit',self.doc.name,''], - ['Stock Expenses','Direct Expenses','Group','Yes','Expense Account','Debit',self.doc.name,''], - ['Cost of Goods Sold','Stock Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Stock Adjustment','Stock Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Expenses Included In Valuation', "Stock Expenses", 'Ledger', 'Yes', 'Expense Account', 'Debit', self.doc.name, ''], - ['Indirect Expenses','Expenses','Group','Yes','Expense Account','Debit',self.doc.name,''], - ['Advertising and Publicity','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''], - ['Bad Debts Written Off','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Bank Charges','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Books and Periodicals','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Charity and Donations','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Commission on Sales','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Conveyance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Customer Entertainment Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Depreciation Account','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Freight and Forwarding Charges','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''], - ['Legal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Miscellaneous Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''], - ['Office Maintenance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Office Rent','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Postal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Print and Stationary','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Rounded Off','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Salary','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Sales Promotion Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Debit',self.doc.name,''], - ['Service Charges Paid','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Staff Welfare Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Telephone Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Travelling Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Water and Electricity Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Debit',self.doc.name,''], - ['Income','','Group','Yes','','Credit',self.doc.name,''], - ['Direct Income','Income','Group','Yes','Income Account','Credit',self.doc.name,''], - ['Sales','Direct Income','Ledger','Yes','Income Account','Credit',self.doc.name,''], - ['Service','Direct Income','Ledger','Yes','Income Account','Credit',self.doc.name,''], - ['Indirect Income','Income','Group','Yes','Income Account','Credit',self.doc.name,''], - ['Source of Funds (Liabilities)','','Group','No','','Credit',self.doc.name,''], - ['Capital Account','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''], - ['Reserves and Surplus','Capital Account','Ledger','No','','Credit',self.doc.name,''], - ['Shareholders Funds','Capital Account','Ledger','No','','Credit',self.doc.name,''], - ['Current Liabilities','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''], - ['Accounts Payable','Current Liabilities','Group','No','','Credit',self.doc.name,''], - ['Stock Liabilities','Current Liabilities','Group','No','','Credit',self.doc.name,''], + ['Application of Funds (Assets)','','Group','No','','Asset',self.doc.name,''], + ['Current Assets','Application of Funds (Assets)','Group','No','','Asset',self.doc.name,''], + ['Accounts Receivable','Current Assets','Group','No','','Asset',self.doc.name,''], + ['Bank Accounts','Current Assets','Group','No','Bank or Cash','Asset',self.doc.name,''], + ['Cash In Hand','Current Assets','Group','No','Bank or Cash','Asset',self.doc.name,''], + ['Cash','Cash In Hand','Ledger','No','Bank or Cash','Asset',self.doc.name,''], + ['Loans and Advances (Assets)','Current Assets','Group','No','','Asset',self.doc.name,''], + ['Securities and Deposits','Current Assets','Group','No','','Asset',self.doc.name,''], + ['Earnest Money','Securities and Deposits','Ledger','No','','Asset',self.doc.name,''], + ['Stock Assets','Current Assets','Group','No','','Asset',self.doc.name,''], + ['Tax Assets','Current Assets','Group','No','','Asset',self.doc.name,''], + ['Fixed Assets','Application of Funds (Assets)','Group','No','','Asset',self.doc.name,''], + ['Capital Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Asset',self.doc.name,''], + ['Computers','Fixed Assets','Ledger','No','Fixed Asset Account','Asset',self.doc.name,''], + ['Furniture and Fixture','Fixed Assets','Ledger','No','Fixed Asset Account','Asset',self.doc.name,''], + ['Office Equipments','Fixed Assets','Ledger','No','Fixed Asset Account','Asset',self.doc.name,''], + ['Plant and Machinery','Fixed Assets','Ledger','No','Fixed Asset Account','Asset',self.doc.name,''], + ['Investments','Application of Funds (Assets)','Group','No','','Asset',self.doc.name,''], + ['Temporary Accounts (Assets)','Application of Funds (Assets)','Group','No','','Asset',self.doc.name,''], + ['Temporary Account (Assets)','Temporary Accounts (Assets)','Ledger','No','','Asset',self.doc.name,''], + ['Expenses','','Group','Yes','Expense Account','Expense',self.doc.name,''], + ['Direct Expenses','Expenses','Group','Yes','Expense Account','Expense',self.doc.name,''], + ['Stock Expenses','Direct Expenses','Group','Yes','Expense Account','Expense',self.doc.name,''], + ['Cost of Goods Sold','Stock Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Stock Adjustment','Stock Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Expenses Included In Valuation', "Stock Expenses", 'Ledger', 'Yes', 'Expense Account', 'Expense', self.doc.name, ''], + ['Indirect Expenses','Expenses','Group','Yes','Expense Account','Expense',self.doc.name,''], + ['Advertising and Publicity','Indirect Expenses','Ledger','Yes','Chargeable','Expense',self.doc.name,''], + ['Bad Debts Written Off','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Bank Charges','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Books and Periodicals','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Charity and Donations','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Commission on Sales','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Conveyance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Customer Entertainment Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Depreciation Account','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Freight and Forwarding Charges','Indirect Expenses','Ledger','Yes','Chargeable','Expense',self.doc.name,''], + ['Legal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Miscellaneous Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Expense',self.doc.name,''], + ['Office Maintenance Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Office Rent','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Postal Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Print and Stationary','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Rounded Off','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Salary','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Sales Promotion Expenses','Indirect Expenses','Ledger','Yes','Chargeable','Expense',self.doc.name,''], + ['Service Charges Paid','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Staff Welfare Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Telephone Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Travelling Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Water and Electricity Expenses','Indirect Expenses','Ledger','Yes','Expense Account','Expense',self.doc.name,''], + ['Income','','Group','Yes','','Income',self.doc.name,''], + ['Direct Income','Income','Group','Yes','Income Account','Income',self.doc.name,''], + ['Sales','Direct Income','Ledger','Yes','Income Account','Income',self.doc.name,''], + ['Service','Direct Income','Ledger','Yes','Income Account','Income',self.doc.name,''], + ['Indirect Income','Income','Group','Yes','Income Account','Income',self.doc.name,''], + ['Source of Funds (Liabilities)','','Group','No','','Liability',self.doc.name,''], + ['Capital Account','Source of Funds (Liabilities)','Group','No','','Liability',self.doc.name,''], + ['Reserves and Surplus','Capital Account','Ledger','No','','Liability',self.doc.name,''], + ['Shareholders Funds','Capital Account','Ledger','No','','Liability',self.doc.name,''], + ['Current Liabilities','Source of Funds (Liabilities)','Group','No','','Liability',self.doc.name,''], + ['Accounts Payable','Current Liabilities','Group','No','','Liability',self.doc.name,''], + ['Stock Liabilities','Current Liabilities','Group','No','','Liability',self.doc.name,''], ['Stock Received But Not Billed', 'Stock Liabilities', 'Ledger', - 'No', '', 'Credit', self.doc.name, ''], - ['Duties and Taxes','Current Liabilities','Group','No','','Credit',self.doc.name,''], - ['Loans (Liabilities)','Current Liabilities','Group','No','','Credit',self.doc.name,''], - ['Secured Loans','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''], - ['Unsecured Loans','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''], - ['Bank Overdraft Account','Loans (Liabilities)','Group','No','','Credit',self.doc.name,''], - ['Temporary Accounts (Liabilities)','Source of Funds (Liabilities)','Group','No','','Credit',self.doc.name,''], - ['Temporary Account (Liabilities)','Temporary Accounts (Liabilities)','Ledger','No','','Credit',self.doc.name,''] + 'No', '', 'Liability', self.doc.name, ''], + ['Duties and Taxes','Current Liabilities','Group','No','','Liability',self.doc.name,''], + ['Loans (Liabilities)','Current Liabilities','Group','No','','Liability',self.doc.name,''], + ['Secured Loans','Loans (Liabilities)','Group','No','','Liability',self.doc.name,''], + ['Unsecured Loans','Loans (Liabilities)','Group','No','','Liability',self.doc.name,''], + ['Bank Overdraft Account','Loans (Liabilities)','Group','No','','Liability',self.doc.name,''], + ['Temporary Accounts (Liabilities)','Source of Funds (Liabilities)','Group','No','','Liability',self.doc.name,''], + ['Temporary Account (Liabilities)','Temporary Accounts (Liabilities)','Ledger','No','','Liability',self.doc.name,''] ] acc_list_india = [ - ['CENVAT Capital Goods','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['CENVAT','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['CENVAT Service Tax','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['CENVAT Service Tax Cess 1','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['CENVAT Service Tax Cess 2','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['CENVAT Edu Cess','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['CENVAT SHE Cess','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['Excise Duty 4','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'4.00'], - ['Excise Duty 8','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'8.00'], - ['Excise Duty 10','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'10.00'], - ['Excise Duty 14','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'14.00'], - ['Excise Duty Edu Cess 2','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'2.00'], - ['Excise Duty SHE Cess 1','Tax Assets','Ledger','No','Tax','Debit',self.doc.name,'1.00'], - ['P L A','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['P L A - Cess Portion','Tax Assets','Ledger','No','Chargeable','Debit',self.doc.name,''], - ['Edu. Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'], - ['Edu. Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'], - ['Edu. Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'2.00'], - ['Excise Duty @ 4','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'4.00'], - ['Excise Duty @ 8','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'8.00'], - ['Excise Duty @ 10','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'10.00'], - ['Excise Duty @ 14','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'14.00'], - ['Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'10.3'], - ['SHE Cess on Excise','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'], - ['SHE Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'], - ['SHE Cess on TDS','Duties and Taxes','Ledger','No','Tax','Credit',self.doc.name,'1.00'], - ['Professional Tax','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''], - ['VAT','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''], - ['TDS (Advertisement)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''], - ['TDS (Commission)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''], - ['TDS (Contractor)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''], - ['TDS (Interest)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''], - ['TDS (Rent)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''], - ['TDS (Salary)','Duties and Taxes','Ledger','No','Chargeable','Credit',self.doc.name,''] + ['CENVAT Capital Goods','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['CENVAT','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['CENVAT Service Tax','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['CENVAT Service Tax Cess 1','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['CENVAT Service Tax Cess 2','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['CENVAT Edu Cess','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['CENVAT SHE Cess','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['Excise Duty 4','Tax Assets','Ledger','No','Tax','Asset',self.doc.name,'4.00'], + ['Excise Duty 8','Tax Assets','Ledger','No','Tax','Asset',self.doc.name,'8.00'], + ['Excise Duty 10','Tax Assets','Ledger','No','Tax','Asset',self.doc.name,'10.00'], + ['Excise Duty 14','Tax Assets','Ledger','No','Tax','Asset',self.doc.name,'14.00'], + ['Excise Duty Edu Cess 2','Tax Assets','Ledger','No','Tax','Asset',self.doc.name,'2.00'], + ['Excise Duty SHE Cess 1','Tax Assets','Ledger','No','Tax','Asset',self.doc.name,'1.00'], + ['P L A','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['P L A - Cess Portion','Tax Assets','Ledger','No','Chargeable','Asset',self.doc.name,''], + ['Edu. Cess on Excise','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'2.00'], + ['Edu. Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'2.00'], + ['Edu. Cess on TDS','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'2.00'], + ['Excise Duty @ 4','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'4.00'], + ['Excise Duty @ 8','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'8.00'], + ['Excise Duty @ 10','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'10.00'], + ['Excise Duty @ 14','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'14.00'], + ['Service Tax','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'10.3'], + ['SHE Cess on Excise','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'1.00'], + ['SHE Cess on Service Tax','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'1.00'], + ['SHE Cess on TDS','Duties and Taxes','Ledger','No','Tax','Liability',self.doc.name,'1.00'], + ['Professional Tax','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''], + ['VAT','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''], + ['TDS (Advertisement)','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''], + ['TDS (Commission)','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''], + ['TDS (Contractor)','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''], + ['TDS (Interest)','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''], + ['TDS (Rent)','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''], + ['TDS (Salary)','Duties and Taxes','Ledger','No','Chargeable','Liability',self.doc.name,''] ] # load common account heads for d in acc_list_common: diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py index aeabf49130..5b57837138 100644 --- a/erpnext/setup/doctype/email_digest/email_digest.py +++ b/erpnext/setup/doctype/email_digest/email_digest.py @@ -177,8 +177,7 @@ class DocType(DocListController): def get_income(self, from_date=None, label=None): # account is PL Account and Credit type account - accounts = [a["name"] for a in self.get_accounts() - if a["is_pl_account"]=="Yes" and a["debit_or_credit"]=="Credit"] + accounts = [a["name"] for a in self.get_accounts() if a["root_type"]=="Income"] income = 0 for gle in self.get_gl_entries(from_date or self.from_date, self.to_date): @@ -190,8 +189,7 @@ class DocType(DocListController): def get_expenses_booked(self): # account is PL Account and Debit type account - accounts = [a["name"] for a in self.get_accounts() - if a["is_pl_account"]=="Yes" and a["debit_or_credit"]=="Debit"] + accounts = [a["name"] for a in self.get_accounts() if a["root_type"]=="Expense"] expense = 0 for gle in self.get_gl_entries(self.from_date, self.to_date): @@ -392,7 +390,7 @@ class DocType(DocListController): def get_accounts(self): if not hasattr(self, "accounts"): self.accounts = frappe.db.sql("""select name, is_pl_account, - debit_or_credit, account_type, account_name, master_type + root_type, account_type, account_name, master_type from `tabAccount` where company=%s and docstatus < 2 and group_or_ledger = "Ledger" order by lft""", (self.doc.company,), as_dict=1) diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py index 87be60aab0..5916634eb4 100644 --- a/erpnext/startup/report_data_map.py +++ b/erpnext/startup/report_data_map.py @@ -18,7 +18,7 @@ data_map = { # Accounts "Account": { - "columns": ["name", "parent_account", "lft", "rgt", "debit_or_credit", + "columns": ["name", "parent_account", "lft", "rgt", "root_type", "is_pl_account", "company", "group_or_ledger"], "conditions": ["docstatus < 2"], "order_by": "lft", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js index aa9db09459..6743cd3eca 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note.js @@ -218,7 +218,7 @@ if (sys_defaults.auto_accounting_for_stock) { return { filters: { "is_pl_account": "Yes", - "debit_or_credit": "Debit", + "root_type": "Expense", "company": doc.company, "group_or_ledger": "Ledger" } diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index 8f08d5af72..d4e31eee47 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -55,7 +55,7 @@ cur_frm.fields_dict['default_bom'].get_query = function(doc) { cur_frm.fields_dict['expense_account'].get_query = function(doc) { return { filters: { - 'debit_or_credit': "Debit", + 'root_type': "Expense", 'group_or_ledger': "Ledger" } } @@ -66,7 +66,7 @@ cur_frm.fields_dict['expense_account'].get_query = function(doc) { cur_frm.fields_dict['income_account'].get_query = function(doc) { return { filters: { - 'debit_or_credit': "Credit", + 'root_type': "Income", 'group_or_ledger': "Ledger", 'account_type': "Income Account" } diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.js b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.js index 68a29a7395..6917efc449 100644 --- a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.js +++ b/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.js @@ -25,8 +25,6 @@ erpnext.stock.LandedCostWizard = erpnext.stock.StockController.extend({ filters:[ ['Account', 'group_or_ledger', '=', 'Ledger'], ['Account', 'account_type', 'in', 'Tax, Chargeable'], - ['Account', 'is_pl_account', '=', 'Yes'], - ['Account', 'debit_or_credit', '=', 'Debit'], ['Account', 'company', '=', me.frm.doc.company] ] } diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index c7eb888fb7..c83077530c 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -8,6 +8,16 @@ cur_frm.cscript.fname = "indent_details"; {% include 'utilities/doctype/sms_control/sms_control.js' %} erpnext.buying.MaterialRequestController = erpnext.buying.BuyingController.extend({ + onload: function(doc) { + this._super(); + this.frm.set_query("item_code", this.frm.cscript.fname, function() { + return { + query: "erpnext.controllers.queries.item_query", + filters: {'is_stock_item': 'Yes'} + } + }); + }, + refresh: function(doc) { this._super(); @@ -177,4 +187,4 @@ cur_frm.cscript['Unstop Material Request'] = function(){ cur_frm.refresh(); }); } -}; +}; \ No newline at end of file diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js index ac6ac63025..e9df13cbae 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.js +++ b/erpnext/stock/doctype/warehouse/warehouse.js @@ -9,7 +9,6 @@ cur_frm.set_query("create_account_under", function() { return { filters: { "company": cur_frm.doc.company, - "debit_or_credit": "Debit", 'group_or_ledger': "Group" } }