Country and chart fields added in company master
This commit is contained in:
parent
813a93d78d
commit
d7d9d25d71
@ -98,8 +98,17 @@ cur_frm.fields_dict.receivables_group.get_query = function(doc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cur_frm.get_field("chart_of_accounts").get_query = function(doc) {
|
||||||
|
return {
|
||||||
|
filters: {
|
||||||
|
"country": doc.country
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cur_frm.fields_dict.payables_group.get_query = cur_frm.fields_dict.receivables_group.get_query;
|
cur_frm.fields_dict.payables_group.get_query = cur_frm.fields_dict.receivables_group.get_query;
|
||||||
|
|
||||||
|
|
||||||
cur_frm.fields_dict.default_expense_account.get_query = function(doc) {
|
cur_frm.fields_dict.default_expense_account.get_query = function(doc) {
|
||||||
return{
|
return{
|
||||||
filters:{
|
filters:{
|
||||||
|
@ -57,6 +57,16 @@ class DocType:
|
|||||||
def create_default_warehouses(self):
|
def create_default_warehouses(self):
|
||||||
for whname in ("Stores", "Work In Progress", "Finished Goods"):
|
for whname in ("Stores", "Work In Progress", "Finished Goods"):
|
||||||
if not frappe.db.exists("Warehouse", whname + " - " + self.doc.abbr):
|
if not frappe.db.exists("Warehouse", whname + " - " + self.doc.abbr):
|
||||||
|
if not frappe.db.exists("Account", "Stock Assets - " + self.doc.abbr):
|
||||||
|
frappe.bean({
|
||||||
|
"doctype": "Account",
|
||||||
|
"account_name": "Stock Assets",
|
||||||
|
"company": self.doc.name,
|
||||||
|
"group_or_ledger": "Group",
|
||||||
|
"root_type": "Asset",
|
||||||
|
"is_pl_account": "No"
|
||||||
|
}).insert()
|
||||||
|
|
||||||
frappe.bean({
|
frappe.bean({
|
||||||
"doctype":"Warehouse",
|
"doctype":"Warehouse",
|
||||||
"warehouse_name": whname,
|
"warehouse_name": whname,
|
||||||
@ -101,6 +111,108 @@ class DocType:
|
|||||||
style_settings.save()
|
style_settings.save()
|
||||||
|
|
||||||
def create_default_accounts(self):
|
def create_default_accounts(self):
|
||||||
|
if self.doc.chart_of_accounts:
|
||||||
|
self.import_chart_of_account()
|
||||||
|
else:
|
||||||
|
self.create_standard_accounts()
|
||||||
|
|
||||||
|
def import_chart_of_account(self):
|
||||||
|
chart = frappe.bean("Chart of Accounts", self.doc.chart_of_accounts)
|
||||||
|
chart.make_controller().create_accounts(self.doc.name)
|
||||||
|
|
||||||
|
def add_acc(self,lst):
|
||||||
|
account = frappe.bean({
|
||||||
|
"doctype": "Account",
|
||||||
|
"freeze_account": "No",
|
||||||
|
"master_type": "",
|
||||||
|
})
|
||||||
|
for d in self.fld_dict.keys():
|
||||||
|
account.doc.fields[d] = (d == 'parent_account' and lst[self.fld_dict[d]]) and lst[self.fld_dict[d]] +' - '+ self.doc.abbr or lst[self.fld_dict[d]]
|
||||||
|
|
||||||
|
account.insert()
|
||||||
|
|
||||||
|
def set_default_accounts(self):
|
||||||
|
def _set_default_accounts(accounts):
|
||||||
|
for a in accounts:
|
||||||
|
account_name = accounts[a] + " - " + self.doc.abbr
|
||||||
|
if not self.doc.fields.get(a) and frappe.db.exists("Account", account_name):
|
||||||
|
frappe.db.set(self.doc, a, account_name)
|
||||||
|
|
||||||
|
_set_default_accounts({
|
||||||
|
"receivables_group": "Accounts Receivable",
|
||||||
|
"payables_group": "Accounts Payable",
|
||||||
|
"default_cash_account": "Cash"
|
||||||
|
})
|
||||||
|
|
||||||
|
if cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")):
|
||||||
|
_set_default_accounts({
|
||||||
|
"stock_received_but_not_billed": "Stock Received But Not Billed",
|
||||||
|
"stock_adjustment_account": "Stock Adjustment",
|
||||||
|
"expenses_included_in_valuation": "Expenses Included In Valuation"
|
||||||
|
})
|
||||||
|
|
||||||
|
def create_default_cost_center(self):
|
||||||
|
cc_list = [
|
||||||
|
{
|
||||||
|
'cost_center_name': self.doc.name,
|
||||||
|
'company':self.doc.name,
|
||||||
|
'group_or_ledger':'Group',
|
||||||
|
'parent_cost_center':''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'cost_center_name':'Main',
|
||||||
|
'company':self.doc.name,
|
||||||
|
'group_or_ledger':'Ledger',
|
||||||
|
'parent_cost_center':self.doc.name + ' - ' + self.doc.abbr
|
||||||
|
},
|
||||||
|
]
|
||||||
|
for cc in cc_list:
|
||||||
|
cc.update({"doctype": "Cost Center"})
|
||||||
|
cc_bean = frappe.bean(cc)
|
||||||
|
cc_bean.ignore_permissions = True
|
||||||
|
|
||||||
|
if cc.get("cost_center_name") == self.doc.name:
|
||||||
|
cc_bean.ignore_mandatory = True
|
||||||
|
cc_bean.insert()
|
||||||
|
|
||||||
|
frappe.db.set(self.doc, "cost_center", "Main - " + self.doc.abbr)
|
||||||
|
|
||||||
|
def on_trash(self):
|
||||||
|
"""
|
||||||
|
Trash accounts and cost centers for this company if no gl entry exists
|
||||||
|
"""
|
||||||
|
rec = frappe.db.sql("SELECT name from `tabGL Entry` where company = %s", self.doc.name)
|
||||||
|
if not rec:
|
||||||
|
#delete tabAccount
|
||||||
|
frappe.db.sql("delete from `tabAccount` where company = %s order by lft desc, rgt desc", self.doc.name)
|
||||||
|
|
||||||
|
#delete cost center child table - budget detail
|
||||||
|
frappe.db.sql("delete bd.* from `tabBudget Detail` bd, `tabCost Center` cc where bd.parent = cc.name and cc.company = %s", self.doc.name)
|
||||||
|
#delete cost center
|
||||||
|
frappe.db.sql("delete from `tabCost Center` WHERE company = %s order by lft desc, rgt desc", self.doc.name)
|
||||||
|
|
||||||
|
if not frappe.db.get_value("Stock Ledger Entry", {"company": self.doc.name}):
|
||||||
|
frappe.db.sql("""delete from `tabWarehouse` where company=%s""", self.doc.name)
|
||||||
|
|
||||||
|
frappe.defaults.clear_default("company", value=self.doc.name)
|
||||||
|
|
||||||
|
frappe.db.sql("""update `tabSingles` set value=""
|
||||||
|
where doctype='Global Defaults' and field='default_company'
|
||||||
|
and value=%s""", self.doc.name)
|
||||||
|
|
||||||
|
def before_rename(self, olddn, newdn, merge=False):
|
||||||
|
if merge:
|
||||||
|
frappe.throw(_("Sorry, companies cannot be merged"))
|
||||||
|
|
||||||
|
def after_rename(self, olddn, newdn, merge=False):
|
||||||
|
frappe.db.set(self.doc, "company_name", newdn)
|
||||||
|
|
||||||
|
frappe.db.sql("""update `tabDefaultValue` set defvalue=%s
|
||||||
|
where defkey='Company' and defvalue=%s""", (newdn, olddn))
|
||||||
|
|
||||||
|
frappe.defaults.clear_cache()
|
||||||
|
|
||||||
|
def create_standard_accounts(self):
|
||||||
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}
|
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 = [
|
acc_list_common = [
|
||||||
['Application of Funds (Assets)','','Group','No','','Asset',self.doc.name,''],
|
['Application of Funds (Assets)','','Group','No','','Asset',self.doc.name,''],
|
||||||
@ -225,98 +337,6 @@ class DocType:
|
|||||||
for d in acc_list_india:
|
for d in acc_list_india:
|
||||||
self.add_acc(d)
|
self.add_acc(d)
|
||||||
|
|
||||||
def add_acc(self,lst):
|
|
||||||
account = frappe.bean({
|
|
||||||
"doctype": "Account",
|
|
||||||
"freeze_account": "No",
|
|
||||||
"master_type": "",
|
|
||||||
})
|
|
||||||
for d in self.fld_dict.keys():
|
|
||||||
account.doc.fields[d] = (d == 'parent_account' and lst[self.fld_dict[d]]) and lst[self.fld_dict[d]] +' - '+ self.doc.abbr or lst[self.fld_dict[d]]
|
|
||||||
|
|
||||||
account.insert()
|
|
||||||
|
|
||||||
def set_default_accounts(self):
|
|
||||||
def _set_default_accounts(accounts):
|
|
||||||
for a in accounts:
|
|
||||||
account_name = accounts[a] + " - " + self.doc.abbr
|
|
||||||
if not self.doc.fields.get(a) and frappe.db.exists("Account", account_name):
|
|
||||||
frappe.db.set(self.doc, a, account_name)
|
|
||||||
|
|
||||||
_set_default_accounts({
|
|
||||||
"receivables_group": "Accounts Receivable",
|
|
||||||
"payables_group": "Accounts Payable",
|
|
||||||
"default_cash_account": "Cash"
|
|
||||||
})
|
|
||||||
|
|
||||||
if cint(frappe.db.get_value("Accounts Settings", None, "auto_accounting_for_stock")):
|
|
||||||
_set_default_accounts({
|
|
||||||
"stock_received_but_not_billed": "Stock Received But Not Billed",
|
|
||||||
"stock_adjustment_account": "Stock Adjustment",
|
|
||||||
"expenses_included_in_valuation": "Expenses Included In Valuation"
|
|
||||||
})
|
|
||||||
|
|
||||||
def create_default_cost_center(self):
|
|
||||||
cc_list = [
|
|
||||||
{
|
|
||||||
'cost_center_name': self.doc.name,
|
|
||||||
'company':self.doc.name,
|
|
||||||
'group_or_ledger':'Group',
|
|
||||||
'parent_cost_center':''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'cost_center_name':'Main',
|
|
||||||
'company':self.doc.name,
|
|
||||||
'group_or_ledger':'Ledger',
|
|
||||||
'parent_cost_center':self.doc.name + ' - ' + self.doc.abbr
|
|
||||||
},
|
|
||||||
]
|
|
||||||
for cc in cc_list:
|
|
||||||
cc.update({"doctype": "Cost Center"})
|
|
||||||
cc_bean = frappe.bean(cc)
|
|
||||||
cc_bean.ignore_permissions = True
|
|
||||||
|
|
||||||
if cc.get("cost_center_name") == self.doc.name:
|
|
||||||
cc_bean.ignore_mandatory = True
|
|
||||||
cc_bean.insert()
|
|
||||||
|
|
||||||
frappe.db.set(self.doc, "cost_center", "Main - " + self.doc.abbr)
|
|
||||||
|
|
||||||
def on_trash(self):
|
|
||||||
"""
|
|
||||||
Trash accounts and cost centers for this company if no gl entry exists
|
|
||||||
"""
|
|
||||||
rec = frappe.db.sql("SELECT name from `tabGL Entry` where company = %s", self.doc.name)
|
|
||||||
if not rec:
|
|
||||||
#delete tabAccount
|
|
||||||
frappe.db.sql("delete from `tabAccount` where company = %s order by lft desc, rgt desc", self.doc.name)
|
|
||||||
|
|
||||||
#delete cost center child table - budget detail
|
|
||||||
frappe.db.sql("delete bd.* from `tabBudget Detail` bd, `tabCost Center` cc where bd.parent = cc.name and cc.company = %s", self.doc.name)
|
|
||||||
#delete cost center
|
|
||||||
frappe.db.sql("delete from `tabCost Center` WHERE company = %s order by lft desc, rgt desc", self.doc.name)
|
|
||||||
|
|
||||||
if not frappe.db.get_value("Stock Ledger Entry", {"company": self.doc.name}):
|
|
||||||
frappe.db.sql("""delete from `tabWarehouse` where company=%s""", self.doc.name)
|
|
||||||
|
|
||||||
frappe.defaults.clear_default("company", value=self.doc.name)
|
|
||||||
|
|
||||||
frappe.db.sql("""update `tabSingles` set value=""
|
|
||||||
where doctype='Global Defaults' and field='default_company'
|
|
||||||
and value=%s""", self.doc.name)
|
|
||||||
|
|
||||||
def before_rename(self, olddn, newdn, merge=False):
|
|
||||||
if merge:
|
|
||||||
frappe.throw(_("Sorry, companies cannot be merged"))
|
|
||||||
|
|
||||||
def after_rename(self, olddn, newdn, merge=False):
|
|
||||||
frappe.db.set(self.doc, "company_name", newdn)
|
|
||||||
|
|
||||||
frappe.db.sql("""update `tabDefaultValue` set defvalue=%s
|
|
||||||
where defkey='Company' and defvalue=%s""", (newdn, olddn))
|
|
||||||
|
|
||||||
frappe.defaults.clear_cache()
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def replace_abbr(company, old, new):
|
def replace_abbr(company, old, new):
|
||||||
frappe.db.set_value("Company", company, "abbr", new)
|
frappe.db.set_value("Company", company, "abbr", new)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-04-10 08:35:39",
|
"creation": "2013-04-10 08:35:39",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-01-30 16:32:41",
|
"modified": "2014-03-05 14:54:29",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -85,6 +85,28 @@
|
|||||||
"options": "Distribution\nManufacturing\nRetail\nServices",
|
"options": "Distribution\nManufacturing\nRetail\nServices",
|
||||||
"reqd": 0
|
"reqd": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocField",
|
||||||
|
"fieldname": "charts_section",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"label": "Chart of Accounts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocField",
|
||||||
|
"fieldname": "country",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Country",
|
||||||
|
"options": "Country",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocField",
|
||||||
|
"fieldname": "chart_of_accounts",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Chart of Accounts",
|
||||||
|
"options": "Chart of Accounts"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "default_settings",
|
"fieldname": "default_settings",
|
||||||
|
@ -3,6 +3,25 @@
|
|||||||
|
|
||||||
test_ignore = ["Account", "Cost Center"]
|
test_ignore = ["Account", "Cost Center"]
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestCompany(unittest.TestCase):
|
||||||
|
def test_coa(self):
|
||||||
|
company_bean = frappe.bean({
|
||||||
|
"doctype": "Company",
|
||||||
|
"company_name": "_Test Company 2",
|
||||||
|
"abbr": "_TC2",
|
||||||
|
"default_currency": "INR",
|
||||||
|
"country": "India",
|
||||||
|
"chart_of_accounts": "India - Chart of Accounts for Public Ltd"
|
||||||
|
})
|
||||||
|
|
||||||
|
company_bean.insert()
|
||||||
|
|
||||||
|
self.assertTrue(frappe.db.get_value("Account", "Balance Sheet - _TC2"))
|
||||||
|
|
||||||
|
|
||||||
test_records = [
|
test_records = [
|
||||||
[{
|
[{
|
||||||
"doctype": "Company",
|
"doctype": "Company",
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-19 10:23:30",
|
"creation": "2013-01-19 10:23:30",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-12-20 19:24:00",
|
"modified": "2014-03-05 14:36:16",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -62,6 +62,12 @@
|
|||||||
"fieldtype": "Text",
|
"fieldtype": "Text",
|
||||||
"label": "Time Zones"
|
"label": "Time Zones"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocField",
|
||||||
|
"fieldname": "code",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Code"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"cancel": 0,
|
"cancel": 0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user