58 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| from __future__ import unicode_literals
 | |
| import frappe
 | |
| import frappe.defaults
 | |
| from frappe.utils import flt
 | |
| from erpnext.accounts.utils import get_balance_on
 | |
| from erpnext.accounts.report.financial_statements import sort_root_accounts
 | |
| 
 | |
| @frappe.whitelist()
 | |
| def get_companies():
 | |
| 	"""get a list of companies based on permission"""
 | |
| 	return [d.name for d in frappe.get_list("Company", fields=["name"],
 | |
| 		order_by="name")]
 | |
| 
 | |
| @frappe.whitelist()
 | |
| def get_children():
 | |
| 	args = frappe.local.form_dict
 | |
| 	ctype, company = args['ctype'], args['comp']
 | |
| 	fieldname = frappe.db.escape(ctype.lower().replace(' ','_'))
 | |
| 	doctype = frappe.db.escape(ctype)
 | |
| 
 | |
| 	# root
 | |
| 	if args['parent'] in ("Accounts", "Cost Centers"):
 | |
| 		fields = ", root_type, report_type, account_currency" if ctype=="Account" else ""
 | |
| 		acc = frappe.db.sql(""" select
 | |
| 			name as value, is_group as expandable {fields}
 | |
| 			from `tab{doctype}`
 | |
| 			where ifnull(`parent_{fieldname}`,'') = ''
 | |
| 			and `company` = %s	and docstatus<2
 | |
| 			order by name""".format(fields=fields, fieldname = fieldname, doctype=doctype),
 | |
| 				company, as_dict=1)
 | |
| 
 | |
| 		if args["parent"]=="Accounts":
 | |
| 			sort_root_accounts(acc)
 | |
| 	else:
 | |
| 		# other
 | |
| 		fields = ", account_currency" if ctype=="Account" else ""
 | |
| 		acc = frappe.db.sql("""select
 | |
| 			name as value, is_group as expandable, parent_{fieldname} as parent {fields}
 | |
| 	 		from `tab{doctype}`
 | |
| 			where ifnull(`parent_{fieldname}`,'') = %s
 | |
| 			and docstatus<2
 | |
| 			order by name""".format(fields=fields, fieldname=fieldname, doctype=doctype),
 | |
| 				args['parent'], as_dict=1)
 | |
| 
 | |
| 	if ctype == 'Account':
 | |
| 		company_currency = frappe.db.get_value("Company", company, "default_currency")
 | |
| 		for each in acc:
 | |
| 			each["company_currency"] = company_currency
 | |
| 			each["balance"] = flt(get_balance_on(each.get("value"), in_account_currency=False))
 | |
| 
 | |
| 			if each.account_currency != company_currency:
 | |
| 				each["balance_in_account_currency"] = flt(get_balance_on(each.get("value")))
 | |
| 
 | |
| 	return acc
 |