blob: a270e05f864b8f130518d8c3b70fec85cc5633b5 [file] [log] [blame]
Rushabh Mehtadc8067e2016-06-29 18:38:32 +05301from __future__ import unicode_literals
2
3import frappe, sys
4import erpnext
5import frappe.utils
Neil Trini Lasrado06724592016-08-22 12:57:09 +05306from erpnext.demo.user import hr, sales, purchase, manufacturing, stock, accounts, projects, fixed_asset, schools
7from erpnext.demo.setup import education, manufacture, setup_data
Rushabh Mehta8cfe18e2016-07-13 11:29:59 +05308"""
9Make a demo
10
111. Start with a fresh account
12
13bench --site demo.erpnext.dev reinstall
14
152. Install Demo
16
17bench --site demo.erpnext.dev execute erpnext.demo.demo.make
18
193. If Demo breaks, to continue
20
21bench --site demo.erpnext.dev execute erpnext.demo.demo.simulate
22
23"""
24
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053025def make(domain='Manufacturing'):
26 frappe.flags.domain = domain
Rushabh Mehtab814a542016-07-13 18:17:19 +053027 frappe.flags.mute_emails = True
Neil Trini Lasrado06724592016-08-22 12:57:09 +053028 setup_data.setup(domain)
29 if domain== 'Manufacturing':
30 manufacture.setup_data()
31 elif domain== 'Education':
32 education.setup_data()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053033
Rushabh Mehtaffa70e32016-07-13 17:41:03 +053034 site = frappe.local.site
35 frappe.destroy()
36 frappe.init(site)
37 frappe.connect()
Manas Solankif60bd602017-06-01 18:30:35 +053038
Neil Trini Lasrado06724592016-08-22 12:57:09 +053039 simulate(domain)
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053040
Neil Trini Lasrado06724592016-08-22 12:57:09 +053041def simulate(domain='Manufacturing'):
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053042 runs_for = frappe.flags.runs_for or 150
43 frappe.flags.company = erpnext.get_default_company()
Rushabh Mehtab814a542016-07-13 18:17:19 +053044 frappe.flags.mute_emails = True
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053045
46 if not frappe.flags.start_date:
47 # start date = 100 days back
48 frappe.flags.start_date = frappe.utils.add_days(frappe.utils.nowdate(), -1 * runs_for)
49
50 current_date = frappe.utils.getdate(frappe.flags.start_date)
51
52 # continue?
53 demo_last_date = frappe.db.get_global('demo_last_date')
54 if demo_last_date:
Neil Trini Lasrado06724592016-08-22 12:57:09 +053055 current_date = frappe.utils.add_days(frappe.utils.getdate(demo_last_date), 1)
Rushabh Mehta99c814b2016-12-19 11:51:02 +053056
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053057 # run till today
58 if not runs_for:
59 runs_for = frappe.utils.date_diff(frappe.utils.nowdate(), current_date)
60 # runs_for = 100
Rushabh Mehta06c92a72016-08-03 16:27:11 +053061
Nabin Hait3edefb12016-07-20 16:13:18 +053062 fixed_asset.work()
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053063 for i in xrange(runs_for):
Rushabh Mehta99c814b2016-12-19 11:51:02 +053064 sys.stdout.write("\rSimulating {0}: Day {1}".format(
65 current_date.strftime("%Y-%m-%d"), i))
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053066 sys.stdout.flush()
67 frappe.flags.current_date = current_date
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053068 if current_date.weekday() in (5, 6):
69 current_date = frappe.utils.add_days(current_date, 1)
70 continue
Neil Trini Lasrado06724592016-08-22 12:57:09 +053071 try:
72 hr.work()
73 purchase.work()
74 stock.work()
75 accounts.work()
76 projects.run_projects(current_date)
Manas Solankif60bd602017-06-01 18:30:35 +053077 # run_messages()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053078
Neil Trini Lasrado06724592016-08-22 12:57:09 +053079 if domain=='Manufacturing':
80 sales.work()
81 manufacturing.work()
82 elif domain=='Education':
83 schools.work()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053084
Neil Trini Lasrado06724592016-08-22 12:57:09 +053085 except:
86 frappe.db.set_global('demo_last_date', current_date)
Rushabh Mehta99c814b2016-12-19 11:51:02 +053087 raise
Neil Trini Lasrado06724592016-08-22 12:57:09 +053088 finally:
89 current_date = frappe.utils.add_days(current_date, 1)
90 frappe.db.commit()