blob: b2db39c9f07ee8cdcb0f65152ed6d62cfd56ef28 [file] [log] [blame]
Nabin Hait3edefb12016-07-20 16:13:18 +05301
2# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
3# License: GNU General Public License v3. See license.txt
4
5from __future__ import unicode_literals
6
7import frappe
8from frappe.utils.make_random import get_random
9from erpnext.accounts.doctype.asset.asset import make_purchase_invoice, make_sales_invoice
10from erpnext.accounts.doctype.asset.depreciation import post_depreciation_entries, scrap_asset
11
12def work():
13 frappe.set_user(frappe.db.get_global('demo_accounts_user'))
14
15 asset_list = make_asset_purchase_entry()
16
17 if not asset_list:
18 # fixed_asset.work() already run
19 return
20
Nabin Hait117be7d2017-04-18 14:02:07 +053021 # Enable booking asset depreciation entry automatically
22 frappe.db.set_value("Accounts Settings", None, "book_asset_depreciation_entry_automatically", 1)
23
Nabin Hait3edefb12016-07-20 16:13:18 +053024 # post depreciation entries as on today
25 post_depreciation_entries()
26
27 # scrap a random asset
28 frappe.db.set_value("Company", "Wind Power LLC", "disposal_account", "Gain/Loss on Asset Disposal - WPL")
29
30 asset = get_random_asset()
31 scrap_asset(asset.name)
32
33 # Sell a random asset
34 sell_an_asset()
35
36def make_asset_purchase_entry():
37 asset_list = frappe.get_all("Asset", filters={"purchase_invoice": ["in", ("", None)]},
38 fields=["name", "item_code", "gross_purchase_amount", "company", "purchase_date"])
39
40 # make purchase invoice
41 for asset in asset_list:
42 pi = make_purchase_invoice(asset.name, asset.item_code, asset.gross_purchase_amount,
43 asset.company, asset.purchase_date)
44 pi.supplier = get_random("Supplier")
45 pi.save()
46 pi.submit()
47
48 return asset_list
49
50def sell_an_asset():
51 asset = get_random_asset()
52 si = make_sales_invoice(asset.name, asset.item_code, "Wind Power LLC")
53 si.customer = get_random("Customer")
54 si.get("items")[0].rate = asset.value_after_depreciation * 0.8 \
55 if asset.value_after_depreciation else asset.gross_purchase_amount * 0.9
56 si.save()
57 si.submit()
58
59def get_random_asset():
60 return frappe.db.sql(""" select name, item_code, value_after_depreciation, gross_purchase_amount
61 from `tabAsset`
62 where docstatus=1 and status not in ("Scrapped", "Sold") order by rand() limit 1""", as_dict=1)[0]