Anand Doshi | 486f9df | 2012-07-19 13:40:31 +0530 | [diff] [blame] | 1 | from __future__ import unicode_literals |
Nabin Hait | 6d7b0ce | 2017-06-15 11:09:27 +0530 | [diff] [blame] | 2 | import frappe |
| 3 | |
Anand Doshi | 7e0479b | 2012-04-05 18:27:56 +0530 | [diff] [blame] | 4 | install_docs = [ |
Rushabh Mehta | 9415733 | 2015-07-13 15:06:12 +0530 | [diff] [blame] | 5 | {"doctype":"Role", "role_name":"Stock Manager", "name":"Stock Manager"}, |
| 6 | {"doctype":"Role", "role_name":"Item Manager", "name":"Item Manager"}, |
| 7 | {"doctype":"Role", "role_name":"Stock User", "name":"Stock User"}, |
Anand Doshi | 24e1856 | 2012-04-17 11:45:35 +0530 | [diff] [blame] | 8 | {"doctype":"Role", "role_name":"Quality Manager", "name":"Quality Manager"}, |
Saurabh | 6bc7b89 | 2016-07-14 14:03:19 +0530 | [diff] [blame] | 9 | {"doctype":"Item Group", "item_group_name":"All Item Groups", "is_group": 1}, |
Rushabh Mehta | 6f9915c | 2013-01-16 17:48:17 +0530 | [diff] [blame] | 10 | {"doctype":"Item Group", "item_group_name":"Default", |
Saurabh | 6bc7b89 | 2016-07-14 14:03:19 +0530 | [diff] [blame] | 11 | "parent_item_group":"All Item Groups", "is_group": 0}, |
Anand Doshi | 7e0479b | 2012-04-05 18:27:56 +0530 | [diff] [blame] | 12 | ] |
Nabin Hait | 6d7b0ce | 2017-06-15 11:09:27 +0530 | [diff] [blame] | 13 | |
| 14 | def get_warehouse_account_map(): |
| 15 | if not frappe.flags.warehouse_account_map or frappe.flags.in_test: |
| 16 | warehouse_account = frappe._dict() |
| 17 | |
| 18 | for d in frappe.get_all('Warehouse', filters = {"is_group": 0}, |
| 19 | fields = ["name", "account", "parent_warehouse", "company"]): |
| 20 | if not d.account: |
| 21 | d.account = get_warehouse_account(d.name, d.company) |
| 22 | |
| 23 | if d.account: |
| 24 | d.account_currency = frappe.db.get_value('Account', d.account, 'account_currency') |
| 25 | warehouse_account.setdefault(d.name, d) |
| 26 | |
| 27 | frappe.flags.warehouse_account_map = warehouse_account |
| 28 | return frappe.flags.warehouse_account_map |
| 29 | |
| 30 | def get_warehouse_account(warehouse, company): |
| 31 | lft, rgt = frappe.db.get_value("Warehouse", warehouse, ["lft", "rgt"]) |
| 32 | account = frappe.db.sql(""" |
| 33 | select |
| 34 | account from `tabWarehouse` |
| 35 | where |
| 36 | lft <= %s and rgt >= %s and company = %s |
| 37 | and account is not null and ifnull(account, '') !='' |
| 38 | order by lft desc limit 1""", (lft, rgt, company), as_list=1) |
| 39 | |
| 40 | account = account[0][0] if account else None |
| 41 | |
| 42 | if not account: |
| 43 | account = get_company_default_inventory_account(company) |
| 44 | |
| 45 | return account |
| 46 | |
| 47 | def get_company_default_inventory_account(company): |
| 48 | return frappe.db.get_value('Company', company, 'default_inventory_account') |