fix: Add order data
diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py
index bb64ba1..78b31e4 100644
--- a/erpnext/setup/demo.py
+++ b/erpnext/setup/demo.py
@@ -9,8 +9,10 @@
from frappe import _
from frappe.utils import add_days, getdate
-import erpnext
+from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
from erpnext.accounts.utils import get_fiscal_year
+from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_invoice
+from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
from erpnext.setup.setup_wizard.operations.install_fixtures import create_bank_account
@@ -88,8 +90,8 @@
def make_transactions(company):
- start_date = get_fiscal_year(date=getdate())[1]
frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
+ start_date = get_fiscal_year(date=getdate())[1]
for doctype in frappe.get_hooks("demo_transaction_doctypes"):
data = read_data_file_using_hooks(doctype)
@@ -97,55 +99,63 @@
for item in json.loads(data):
create_transaction(item, company, start_date)
+ convert_order_to_invoices()
+ frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 0)
+
def create_transaction(doctype, company, start_date):
+ document_type = doctype.get("doctype")
warehouse = get_warehouse(company)
- posting_date = (
- start_date if doctype.get("doctype") == "Purchase Invoice" else get_random_date(start_date)
- )
- bank_account, default_receivable_account = frappe.db.get_value(
- "Company", company, ["default_bank_account", "default_receivable_account"]
- )
- bank_field = "paid_to" if doctype.get("party_type") == "Customer" else "paid_from"
+
+ if document_type == "Purchase Order":
+ posting_date = get_random_date(start_date, 1, 30)
+ else:
+ posting_date = get_random_date(start_date, 31, 365)
doctype.update(
{
"company": company,
"set_posting_time": 1,
- "posting_date": posting_date,
+ "transaction_date": posting_date,
+ "schedule_date": posting_date,
+ "delivery_date": posting_date,
"set_warehouse": warehouse,
- bank_field: bank_account,
- "reference_date": posting_date,
}
)
- income_account, expense_account = frappe.db.get_value(
- "Company", company, ["default_income_account", "default_expense_account"]
- )
-
- if doctype in ("Purchase Invoice", "Sales Invoice"):
- for item in doctype.get("items") or []:
- item.update(
- {
- "cost_center": erpnext.get_default_cost_center(company),
- "income_account": income_account,
- "expense_account": expense_account,
- }
- )
- elif doctype == "Journal Entry":
- pass
- # update_accounts(doctype, bank_account, default_receivable_account)
-
doc = frappe.get_doc(doctype)
doc.save(ignore_permissions=True)
doc.submit()
-# def update_accounts(doctype, company, bank_account):
+def convert_order_to_invoices():
+ for document in ["Purchase Order", "Sales Order"]:
+ # Keep some orders intentionally unbilled/unpaid
+ for i, order in enumerate(
+ frappe.db.get_all(
+ document, filters={"docstatus": 1}, fields=["name", "transaction_date"], limit=6
+ )
+ ):
+
+ if document == "Purchase Order":
+ invoice = make_purchase_invoice(order.name)
+ elif document == "Sales Order":
+ invoice = make_sales_invoice(order.name)
+
+ invoice.set_posting_time = 1
+ invoice.posting_date = order.transaction_date
+ invoice.due_date = order.transaction_date
+ invoice.update_stock = 1
+ invoice.submit()
+
+ if i % 2 != 0:
+ payment = get_payment_entry(invoice.doctype, invoice.name)
+ payment.reference_no = invoice.name
+ payment.submit()
-def get_random_date(start_date):
- return add_days(start_date, randint(1, 365))
+def get_random_date(start_date, start_range, end_range):
+ return add_days(start_date, randint(start_range, end_range))
def create_transaction_deletion_record(company):
@@ -164,9 +174,9 @@
def clear_demo_record(document):
- doc_type = document.get("doctype")
+ document_type = document.get("doctype")
del document["doctype"]
- doc = frappe.get_doc(doc_type, document)
+ doc = frappe.get_doc(document_type, document)
frappe.delete_doc(doc.doctype, doc.name, ignore_permissions=True)
@@ -184,7 +194,5 @@
def get_warehouse(company):
- abbr = frappe.db.get_value("Company", company, "abbr")
- warehouse = "Stores - {0}".format(abbr)
-
- return warehouse
+ warehouses = frappe.db.get_all("Warehouse", {"company": company, "is_group": 0})
+ return warehouses[randint(0, 3)].name