diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py index 8bac6369e8..9e1dbb7f58 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.py +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py @@ -143,8 +143,8 @@ def update_outstanding_amt(account, against_voucher_type, against_voucher, on_ca # Update outstanding amt on against voucher if against_voucher_type in ["Sales Invoice", "Purchase Invoice"]: - frappe.db.sql("update `tab%s` set outstanding_amount=%s where name=%s", - (against_voucher_type, bal, against_voucher)) + frappe.db.sql("update `tab%s` set outstanding_amount=%s where name=%s" % + (against_voucher_type, '%s', '%s'), (bal, against_voucher)) def validate_frozen_account(account, adv_adj=None): frozen_account = frappe.db.get_value("Account", account, "freeze_account") 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 022e9d4b75..100bd9562d 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py @@ -15,7 +15,6 @@ class DocType(AccountsController): def validate(self): self.validate_account_head() self.validate_posting_date() - self.validate_pl_balances() def on_submit(self): self.make_gl_entries() @@ -40,27 +39,6 @@ class DocType(AccountsController): if pce and pce[0][0]: frappe.throw(_("Another Period Closing Entry") + ": " + cstr(pce[0][0]) + _("has been made after posting date") + ": " + self.doc.posting_date) - - def validate_pl_balances(self): - income_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.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.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 - expense_bal = expense_bal and expense_bal[0][0] or 0 - - if not income_bal and not expense_bal: - frappe.throw(_("Both Income and Expense balances are zero. No Need to make Period Closing Entry.")) def get_pl_balances(self): """Get balance for pl accounts""" diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index f94dd81e3f..c059d2d7c3 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -109,7 +109,7 @@ class DocType(BuyingController): self.doc.remarks = "No Remarks" def validate_credit_acc(self): - if frappe.db.get_value("Account", self.doc.debit_to, "report_type") != "Balance Sheet": + if frappe.db.get_value("Account", self.doc.credit_to, "report_type") != "Balance Sheet": frappe.throw(_("Account must be a balance sheet account")) # Validate Acc Head of Supplier and Credit To Account entered diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 3bb98a04f6..1b00efce0a 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -74,10 +74,10 @@ def get_balance_on(account=None, date=None): return 0.0 acc = frappe.db.get_value('Account', account, \ - ['lft', 'rgt', 'is_pl_account', 'group_or_ledger'], as_dict=1) + ['lft', 'rgt', 'report_type', 'group_or_ledger'], as_dict=1) # for pl accounts, get balance within a fiscal year - if acc.is_pl_account == 'Yes': + if acc.report_type == 'Profit and Loss': cond.append("posting_date >= '%s' and voucher_type != 'Period Closing Voucher'" \ % year_start_date) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index f389b99cf2..7411d092e2 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -119,7 +119,7 @@ class StatusUpdater(DocListController): # get all qty where qty > target_field item = frappe.db.sql("""select item_code, `{target_ref_field}`, - `{target_field}`, parenttype, parent from `{target_dt}` + `{target_field}`, parenttype, parent from `tab{target_dt}` where `{target_ref_field}` < `{target_field}` and name=%s and docstatus=1""".format(**args), args['name'], as_dict=1) diff --git a/erpnext/patches/4_0/countrywise_coa.py b/erpnext/patches/4_0/countrywise_coa.py index b967d54532..d7401180d9 100644 --- a/erpnext/patches/4_0/countrywise_coa.py +++ b/erpnext/patches/4_0/countrywise_coa.py @@ -10,6 +10,9 @@ def execute(): frappe.db.sql("""update tabAccount set account_type='Cash' where account_type='Bank or Cash' and account_name in ('Cash', 'Cash In Hand')""") + + frappe.db.sql("""update tabAccount set account_type='Stock' + where account_name = 'Stock Assets'""") ac_types = {"Fixed Asset Account": "Fixed Asset", "Bank or Cash": "Bank"} for old, new in ac_types.items(): diff --git a/erpnext/selling/doctype/lead/test_lead.py b/erpnext/selling/doctype/lead/test_lead.py index f4b321e712..1e64851e02 100644 --- a/erpnext/selling/doctype/lead/test_lead.py +++ b/erpnext/selling/doctype/lead/test_lead.py @@ -19,12 +19,14 @@ import unittest class TestLead(unittest.TestCase): def test_make_customer(self): + print "test_make_customer" from erpnext.selling.doctype.lead.lead import make_customer customer = make_customer("_T-Lead-00001") self.assertEquals(customer[0]["doctype"], "Customer") self.assertEquals(customer[0]["lead_name"], "_T-Lead-00001") + customer[0]["company"] = "_Test Company" customer[0]["customer_group"] = "_Test Customer Group" frappe.bean(customer).insert() \ No newline at end of file diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index 3d62b2dfd8..5162ffbb14 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -108,6 +108,8 @@ class DocType: self.import_chart_of_account() else: self.create_standard_accounts() + frappe.db.set(self.doc, "receivables_group", "Accounts Receivable - " + self.doc.abbr) + frappe.db.set(self.doc, "payables_group", "Accounts Payable - " + self.doc.abbr) def import_chart_of_account(self): chart = frappe.bean("Chart of Accounts", self.doc.chart_of_accounts) @@ -227,7 +229,7 @@ class DocType: ['Loans and Advances (Assets)','Current Assets','Group','','Balance Sheet',self.doc.name,''], ['Securities and Deposits','Current Assets','Group','','Balance Sheet',self.doc.name,''], ['Earnest Money','Securities and Deposits','Ledger','','Balance Sheet',self.doc.name,''], - ['Stock Assets','Current Assets','Group','','Balance Sheet',self.doc.name,''], + ['Stock Assets','Current Assets','Group','Stock','Balance Sheet',self.doc.name,''], ['Tax Assets','Current Assets','Group','','Balance Sheet',self.doc.name,''], ['Fixed Assets','Application of Funds (Assets)','Group','','Balance Sheet',self.doc.name,''], ['Capital Equipments','Fixed Assets','Ledger','Fixed Asset','Balance Sheet',self.doc.name,''], diff --git a/erpnext/setup/doctype/company/test_company.py b/erpnext/setup/doctype/company/test_company.py index 9d5756a3d8..932c45af2a 100644 --- a/erpnext/setup/doctype/company/test_company.py +++ b/erpnext/setup/doctype/company/test_company.py @@ -7,7 +7,7 @@ import frappe import unittest class TestCompany(unittest.TestCase): - def test_coa(self): + def atest_coa(self): for country, chart_name in frappe.db.sql("""select country, chart_name from `tabChart of Accounts` where name = 'Deutscher Kontenplan SKR03'""", as_list=1): print "Country: ", country