blob: 5be24206ca06d0fcb3c09f4904bf4febb173e2f3 [file] [log] [blame]
Rushabh Mehtadc8067e2016-06-29 18:38:32 +05301from __future__ import unicode_literals
2
Chillar Anand915b3432021-09-02 16:44:59 +05303import sys
4
5import frappe
Rushabh Mehtadc8067e2016-06-29 18:38:32 +05306import frappe.utils
Chillar Anand915b3432021-09-02 16:44:59 +05307
8import erpnext
9from erpnext.demo.setup import education, healthcare, manufacture, retail, setup_data
10from erpnext.demo.user import accounts
Zlash65e8958452018-10-01 10:47:29 +053011from erpnext.demo.user import education as edu
Chillar Anand915b3432021-09-02 16:44:59 +053012from erpnext.demo.user import fixed_asset, hr, manufacturing, projects, purchase, sales, stock
13
Rushabh Mehta8cfe18e2016-07-13 11:29:59 +053014"""
15Make a demo
16
171. Start with a fresh account
18
19bench --site demo.erpnext.dev reinstall
20
212. Install Demo
22
23bench --site demo.erpnext.dev execute erpnext.demo.demo.make
24
253. If Demo breaks, to continue
26
27bench --site demo.erpnext.dev execute erpnext.demo.demo.simulate
28
29"""
30
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053031def make(domain='Manufacturing', days=100):
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053032 frappe.flags.domain = domain
Rushabh Mehtab814a542016-07-13 18:17:19 +053033 frappe.flags.mute_emails = True
Neil Trini Lasrado06724592016-08-22 12:57:09 +053034 setup_data.setup(domain)
35 if domain== 'Manufacturing':
36 manufacture.setup_data()
Zlash65fd9c4512018-10-10 14:27:07 +053037 elif domain == "Retail":
38 retail.setup_data()
Neil Trini Lasrado06724592016-08-22 12:57:09 +053039 elif domain== 'Education':
40 education.setup_data()
Rushabh Mehtaf0569742017-09-13 12:52:30 +053041 elif domain== 'Healthcare':
42 healthcare.setup_data()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053043
Rushabh Mehtaffa70e32016-07-13 17:41:03 +053044 site = frappe.local.site
45 frappe.destroy()
46 frappe.init(site)
47 frappe.connect()
Manas Solankif60bd602017-06-01 18:30:35 +053048
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053049 simulate(domain, days)
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053050
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053051def simulate(domain='Manufacturing', days=100):
52 runs_for = frappe.flags.runs_for or days
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053053 frappe.flags.company = erpnext.get_default_company()
Rushabh Mehtab814a542016-07-13 18:17:19 +053054 frappe.flags.mute_emails = True
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053055
56 if not frappe.flags.start_date:
57 # start date = 100 days back
Rushabh Mehta4f8f9c12017-06-12 09:18:06 +053058 frappe.flags.start_date = frappe.utils.add_days(frappe.utils.nowdate(),
59 -1 * runs_for)
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053060
61 current_date = frappe.utils.getdate(frappe.flags.start_date)
62
63 # continue?
64 demo_last_date = frappe.db.get_global('demo_last_date')
65 if demo_last_date:
Neil Trini Lasrado06724592016-08-22 12:57:09 +053066 current_date = frappe.utils.add_days(frappe.utils.getdate(demo_last_date), 1)
Rushabh Mehta99c814b2016-12-19 11:51:02 +053067
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053068 # run till today
69 if not runs_for:
70 runs_for = frappe.utils.date_diff(frappe.utils.nowdate(), current_date)
71 # runs_for = 100
Rushabh Mehta06c92a72016-08-03 16:27:11 +053072
Nabin Hait3edefb12016-07-20 16:13:18 +053073 fixed_asset.work()
Achilles Rasquinha96698c92018-02-28 16:12:51 +053074 for i in range(runs_for):
Rushabh Mehta99c814b2016-12-19 11:51:02 +053075 sys.stdout.write("\rSimulating {0}: Day {1}".format(
76 current_date.strftime("%Y-%m-%d"), i))
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053077 sys.stdout.flush()
78 frappe.flags.current_date = current_date
Rushabh Mehtadc8067e2016-06-29 18:38:32 +053079 if current_date.weekday() in (5, 6):
80 current_date = frappe.utils.add_days(current_date, 1)
81 continue
Neil Trini Lasrado06724592016-08-22 12:57:09 +053082 try:
83 hr.work()
84 purchase.work()
85 stock.work()
86 accounts.work()
87 projects.run_projects(current_date)
Zlash65fd9c4512018-10-10 14:27:07 +053088 sales.work(domain)
Manas Solankif60bd602017-06-01 18:30:35 +053089 # run_messages()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053090
Neil Trini Lasrado06724592016-08-22 12:57:09 +053091 if domain=='Manufacturing':
Neil Trini Lasrado06724592016-08-22 12:57:09 +053092 manufacturing.work()
93 elif domain=='Education':
Zlash65e8958452018-10-01 10:47:29 +053094 edu.work()
Rushabh Mehta99c814b2016-12-19 11:51:02 +053095
Ankush Menat694ae812021-09-01 14:40:56 +053096 except Exception:
Neil Trini Lasrado06724592016-08-22 12:57:09 +053097 frappe.db.set_global('demo_last_date', current_date)
Rushabh Mehta99c814b2016-12-19 11:51:02 +053098 raise
Neil Trini Lasrado06724592016-08-22 12:57:09 +053099 finally:
100 current_date = frappe.utils.add_days(current_date, 1)
101 frappe.db.commit()