| from __future__ import unicode_literals |
| |
| import frappe, sys |
| import erpnext |
| import frappe.utils |
| from erpnext.demo.setup_data import setup_data |
| from erpnext.demo.user import hr, sales, purchase, manufacturing, stock, accounts, projects, fixed_asset |
| |
| """ |
| Make a demo |
| |
| 1. Start with a fresh account |
| |
| bench --site demo.erpnext.dev reinstall |
| |
| 2. Install Demo |
| |
| bench --site demo.erpnext.dev execute erpnext.demo.demo.make |
| |
| 3. If Demo breaks, to continue |
| |
| bench --site demo.erpnext.dev execute erpnext.demo.demo.simulate |
| |
| """ |
| |
| def make(domain='Manufacturing'): |
| frappe.flags.domain = domain |
| frappe.flags.mute_emails = True |
| setup_data() |
| site = frappe.local.site |
| frappe.destroy() |
| frappe.init(site) |
| frappe.connect() |
| simulate() |
| |
| def simulate(): |
| runs_for = frappe.flags.runs_for or 150 |
| frappe.flags.company = erpnext.get_default_company() |
| frappe.flags.mute_emails = True |
| |
| if not frappe.flags.start_date: |
| # start date = 100 days back |
| frappe.flags.start_date = frappe.utils.add_days(frappe.utils.nowdate(), -1 * runs_for) |
| |
| current_date = frappe.utils.getdate(frappe.flags.start_date) |
| |
| # continue? |
| demo_last_date = frappe.db.get_global('demo_last_date') |
| if demo_last_date: |
| current_date = frappe.utils.add_days(demo_last_date, 1) |
| |
| # run till today |
| if not runs_for: |
| runs_for = frappe.utils.date_diff(frappe.utils.nowdate(), current_date) |
| # runs_for = 100 |
| |
| fixed_asset.work() |
| |
| for i in xrange(runs_for): |
| sys.stdout.write("\rSimulating {0}".format(current_date.strftime("%Y-%m-%d"))) |
| sys.stdout.flush() |
| frappe.flags.current_date = current_date |
| |
| if current_date.weekday() in (5, 6): |
| current_date = frappe.utils.add_days(current_date, 1) |
| continue |
| |
| hr.work() |
| sales.work() |
| purchase.work() |
| manufacturing.work() |
| stock.work() |
| accounts.work() |
| projects.run_projects(current_date) |
| # run_stock() |
| # run_accounts() |
| # run_projects() |
| # run_messages() |
| |
| current_date = frappe.utils.add_days(current_date, 1) |
| |
| frappe.db.commit() |