blob: e89b6895a0862e7ae13c8089baaf4801d4456fea [file] [log] [blame]
Rushabh Mehtadc8067e2016-06-29 18:38:32 +05301from __future__ import unicode_literals
2
3import frappe, sys
4import erpnext
5import frappe.utils
Zlash65e8958452018-10-01 10:47:29 +05306from erpnext.demo.user import hr, sales, purchase, manufacturing, stock, accounts, projects, fixed_asset
7from erpnext.demo.user import education as edu
Zlash65fd9c4512018-10-10 14:27:07 +05308from erpnext.demo.setup import education, manufacture, setup_data, healthcare, retail
Rushabh Mehta8cfe18e2016-07-13 11:29:59 +05309"""
10Make a demo
11
121. Start with a fresh account
13
14bench --site demo.erpnext.dev reinstall
15
162. Install Demo
17
18bench --site demo.erpnext.dev execute erpnext.demo.demo.make
19
203. If Demo breaks, to continue
21
22bench --site demo.erpnext.dev execute erpnext.demo.demo.simulate
23
24"""
25
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053026def make(domain='Manufacturing', days=100):
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053027 frappe.flags.domain = domain
Rushabh Mehtab814a542016-07-13 18:17:19 +053028 frappe.flags.mute_emails = True
Neil Trini Lasrado06724592016-08-22 12:57:09 +053029 setup_data.setup(domain)
30 if domain== 'Manufacturing':
31 manufacture.setup_data()
Zlash65fd9c4512018-10-10 14:27:07 +053032 elif domain == "Retail":
33 retail.setup_data()
Neil Trini Lasrado06724592016-08-22 12:57:09 +053034 elif domain== 'Education':
35 education.setup_data()
Rushabh Mehtaf0569742017-09-13 12:52:30 +053036 elif domain== 'Healthcare':
37 healthcare.setup_data()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053038
Rushabh Mehtaffa70e32016-07-13 17:41:03 +053039 site = frappe.local.site
40 frappe.destroy()
41 frappe.init(site)
42 frappe.connect()
Manas Solankif60bd602017-06-01 18:30:35 +053043
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053044 simulate(domain, days)
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053045
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053046def simulate(domain='Manufacturing', days=100):
47 runs_for = frappe.flags.runs_for or days
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053048 frappe.flags.company = erpnext.get_default_company()
Rushabh Mehtab814a542016-07-13 18:17:19 +053049 frappe.flags.mute_emails = True
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053050
51 if not frappe.flags.start_date:
52 # start date = 100 days back
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053053 frappe.flags.start_date = frappe.utils.add_days(frappe.utils.nowdate(),
54 -1 * runs_for)
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053055
56 current_date = frappe.utils.getdate(frappe.flags.start_date)
57
58 # continue?
59 demo_last_date = frappe.db.get_global('demo_last_date')
60 if demo_last_date:
Neil Trini Lasrado06724592016-08-22 12:57:09 +053061 current_date = frappe.utils.add_days(frappe.utils.getdate(demo_last_date), 1)
Rushabh Mehta99c814b2016-12-19 11:51:02 +053062
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053063 # run till today
64 if not runs_for:
65 runs_for = frappe.utils.date_diff(frappe.utils.nowdate(), current_date)
66 # runs_for = 100
Rushabh Mehta06c92a72016-08-03 16:27:11 +053067
Nabin Hait3edefb12016-07-20 16:13:18 +053068 fixed_asset.work()
Achilles Rasquinha96698c92018-02-28 16:12:51 +053069 for i in range(runs_for):
Rushabh Mehta99c814b2016-12-19 11:51:02 +053070 sys.stdout.write("\rSimulating {0}: Day {1}".format(
71 current_date.strftime("%Y-%m-%d"), i))
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053072 sys.stdout.flush()
73 frappe.flags.current_date = current_date
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053074 if current_date.weekday() in (5, 6):
75 current_date = frappe.utils.add_days(current_date, 1)
76 continue
Neil Trini Lasrado06724592016-08-22 12:57:09 +053077 try:
78 hr.work()
79 purchase.work()
80 stock.work()
81 accounts.work()
82 projects.run_projects(current_date)
Zlash65fd9c4512018-10-10 14:27:07 +053083 sales.work(domain)
Manas Solankif60bd602017-06-01 18:30:35 +053084 # run_messages()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053085
Neil Trini Lasrado06724592016-08-22 12:57:09 +053086 if domain=='Manufacturing':
Neil Trini Lasrado06724592016-08-22 12:57:09 +053087 manufacturing.work()
88 elif domain=='Education':
Zlash65e8958452018-10-01 10:47:29 +053089 edu.work()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053090
Neil Trini Lasrado06724592016-08-22 12:57:09 +053091 except:
92 frappe.db.set_global('demo_last_date', current_date)
Rushabh Mehta99c814b2016-12-19 11:51:02 +053093 raise
Neil Trini Lasrado06724592016-08-22 12:57:09 +053094 finally:
95 current_date = frappe.utils.add_days(current_date, 1)
96 frappe.db.commit()