From 567f4c37fcf29b97ce0ac273479de0f8b694835f Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Thu, 10 Aug 2023 21:46:34 +0530 Subject: [PATCH] fix: Add order data --- erpnext/hooks.py | 5 +- erpnext/setup/demo.py | 84 ++++++++++--------- ...chase_invoice.json => purchase_order.json} | 62 +++++++------- .../{sales_invoice.json => sales_order.json} | 54 ++++++------ 4 files changed, 106 insertions(+), 99 deletions(-) rename erpnext/setup/demo_data/{purchase_invoice.json => purchase_order.json} (70%) rename erpnext/setup/demo_data/{sales_invoice.json => sales_order.json} (69%) diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 9e271c9293..7eaa146db6 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -79,9 +79,8 @@ demo_master_doctypes = [ "supplier", ] demo_transaction_doctypes = [ - "purchase_invoice", - "sales_invoice", - "payment_entry", + "purchase_order", + "sales_order", ] jinja = { diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py index bb64ba1db7..78b31e4ec3 100644 --- a/erpnext/setup/demo.py +++ b/erpnext/setup/demo.py @@ -9,8 +9,10 @@ import frappe 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 create_demo_record(doctype): 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 @@ def make_transactions(company): 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_masters(): 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 read_data_file_using_hooks(doctype): 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 diff --git a/erpnext/setup/demo_data/purchase_invoice.json b/erpnext/setup/demo_data/purchase_order.json similarity index 70% rename from erpnext/setup/demo_data/purchase_invoice.json rename to erpnext/setup/demo_data/purchase_order.json index 7d5e97d172..42ffa8862a 100644 --- a/erpnext/setup/demo_data/purchase_invoice.json +++ b/erpnext/setup/demo_data/purchase_order.json @@ -1,12 +1,12 @@ [ { "conversion_rate": 1.0, - "supplier": "DQ Industries", - "doctype": "Purchase Invoice", + "supplier": "Zuckerman Security Ltd.", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU001", "parentfield": "items", "qty": 100.0, @@ -18,11 +18,11 @@ { "conversion_rate": 1.0, "supplier": "MA Inc.", - "doctype": "Purchase Invoice", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU002", "parentfield": "items", "qty": 50.0, @@ -33,15 +33,15 @@ }, { "conversion_rate": 1.0, - "supplier": "KC Corp.", - "doctype": "Purchase Invoice", + "supplier": "Summit Traders Ltd.", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU003", "parentfield": "items", - "qty": 75.0, + "qty": 200.0, "rate": 523.0, "conversion_factor": 1 } @@ -49,12 +49,12 @@ }, { "conversion_rate": 1.0, - "supplier": "DQ Industries", - "doctype": "Purchase Invoice", + "supplier": "Zuckerman Security Ltd.", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU004", "parentfield": "items", "qty": 60.0, @@ -66,14 +66,14 @@ { "conversion_rate": 1.0, "supplier": "MA Inc.", - "doctype": "Purchase Invoice", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU005", "parentfield": "items", - "qty": 82.0, + "qty": 182.0, "rate": 222.0, "conversion_factor": 1 } @@ -81,15 +81,15 @@ }, { "conversion_rate": 1.0, - "supplier": "KC Corp.", - "doctype": "Purchase Invoice", + "supplier": "Summit Traders Ltd.", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU006", "parentfield": "items", - "qty": 50.0, + "qty": 250.0, "rate": 420.0, "conversion_factor": 1 } @@ -97,15 +97,15 @@ }, { "conversion_rate": 1.0, - "supplier": "DQ Industries", - "doctype": "Purchase Invoice", + "supplier": "Zuckerman Security Ltd.", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU007", "parentfield": "items", - "qty": 90.0, + "qty": 190.0, "rate": 375.0, "conversion_factor": 1 } @@ -114,11 +114,11 @@ { "conversion_rate": 1.0, "supplier": "MA Inc.", - "doctype": "Purchase Invoice", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU008", "parentfield": "items", "qty": 121.0, @@ -129,12 +129,12 @@ }, { "conversion_rate": 1.0, - "supplier": "KC Corp.", - "doctype": "Purchase Invoice", + "supplier": "Summit Traders Ltd.", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU009", "parentfield": "items", "qty": 76.0, @@ -145,12 +145,12 @@ }, { "conversion_rate": 1.0, - "supplier": "DQ Industries", - "doctype": "Purchase Invoice", + "supplier": "Zuckerman Security Ltd.", + "doctype": "Purchase Order", "update_stock": 1, "items": [ { - "doctype": "Purchase Invoice Item", + "doctype": "Purchase Order Item", "item_code": "SKU010", "parentfield": "items", "qty": 78.0, diff --git a/erpnext/setup/demo_data/sales_invoice.json b/erpnext/setup/demo_data/sales_order.json similarity index 69% rename from erpnext/setup/demo_data/sales_invoice.json rename to erpnext/setup/demo_data/sales_order.json index 6bbfcbe4cf..d39063723e 100644 --- a/erpnext/setup/demo_data/sales_invoice.json +++ b/erpnext/setup/demo_data/sales_order.json @@ -1,87 +1,87 @@ [ { "conversion_rate": 1.0, - "customer": "ABC Enterprises", - "doctype": "Sales Invoice", + "customer": "Grant Plastics Ltd.", + "doctype": "Sales Order", "update_stock": 1, "items": [ { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU004", "parentfield": "items", "qty": 20.0, - "rate": 500.0, + "rate": 1000.0, "conversion_factor": 1 } ] }, { "conversion_rate": 1.0, - "customer": "XYZ Corporation", - "doctype": "Sales Invoice", + "customer": "West View Software Ltd.", + "doctype": "Sales Order", "update_stock": 1, "items": [ { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU001", "parentfield": "items", "qty": 25.0, - "rate": 600.0, + "rate": 800.0, "conversion_factor": 1 }, { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU002", "parentfield": "items", "qty": 15.0, - "rate": 300.0, + "rate": 800.0, "conversion_factor": 1 } ] }, { "conversion_rate": 1.0, - "customer": "XYZ Corporation", - "doctype": "Sales Invoice", + "customer": "West View Software Ltd.", + "doctype": "Sales Order", "update_stock": 1, "items": [ { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU003", "parentfield": "items", "qty": 100, - "rate": 300.0, + "rate": 500.0, "conversion_factor": 1 }, { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU006", "parentfield": "items", "qty": 100, - "rate": 300.0, + "rate": 890.0, "conversion_factor": 1 }, { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU007", "parentfield": "items", "qty": 100, - "rate": 300.0, + "rate": 900.0, "conversion_factor": 1 } ] }, { "conversion_rate": 1.0, - "customer": "KJPR Pvt. Ltd.", - "doctype": "Sales Invoice", + "customer": "Palmer Productions Ltd.", + "doctype": "Sales Order", "update_stock": 1, "items": [ { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU005", "parentfield": "items", - "qty": 200.0, + "qty": 150.0, "rate": 100.0, "conversion_factor": 1 } @@ -89,12 +89,12 @@ }, { "conversion_rate": 1.0, - "customer": "ABC Enterprises", - "doctype": "Sales Invoice", + "customer": "Grant Plastics Ltd.", + "doctype": "Sales Order", "update_stock": 1, "items": [ { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU008", "parentfield": "items", "qty": 20.0, @@ -102,7 +102,7 @@ "conversion_factor": 1 }, { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU009", "parentfield": "items", "qty": 40.0, @@ -110,7 +110,7 @@ "conversion_factor": 1 }, { - "doctype": "Sales Invoice Item", + "doctype": "Sales Order Item", "item_code": "SKU010", "parentfield": "items", "qty": 50.0,