fix: Add order data
This commit is contained in:
parent
000de4eddf
commit
567f4c37fc
@ -79,9 +79,8 @@ demo_master_doctypes = [
|
|||||||
"supplier",
|
"supplier",
|
||||||
]
|
]
|
||||||
demo_transaction_doctypes = [
|
demo_transaction_doctypes = [
|
||||||
"purchase_invoice",
|
"purchase_order",
|
||||||
"sales_invoice",
|
"sales_order",
|
||||||
"payment_entry",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
jinja = {
|
jinja = {
|
||||||
|
@ -9,8 +9,10 @@ import frappe
|
|||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import add_days, getdate
|
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.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
|
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):
|
def make_transactions(company):
|
||||||
start_date = get_fiscal_year(date=getdate())[1]
|
|
||||||
frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 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"):
|
for doctype in frappe.get_hooks("demo_transaction_doctypes"):
|
||||||
data = read_data_file_using_hooks(doctype)
|
data = read_data_file_using_hooks(doctype)
|
||||||
@ -97,55 +99,63 @@ def make_transactions(company):
|
|||||||
for item in json.loads(data):
|
for item in json.loads(data):
|
||||||
create_transaction(item, company, start_date)
|
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):
|
def create_transaction(doctype, company, start_date):
|
||||||
|
document_type = doctype.get("doctype")
|
||||||
warehouse = get_warehouse(company)
|
warehouse = get_warehouse(company)
|
||||||
posting_date = (
|
|
||||||
start_date if doctype.get("doctype") == "Purchase Invoice" else get_random_date(start_date)
|
if document_type == "Purchase Order":
|
||||||
)
|
posting_date = get_random_date(start_date, 1, 30)
|
||||||
bank_account, default_receivable_account = frappe.db.get_value(
|
else:
|
||||||
"Company", company, ["default_bank_account", "default_receivable_account"]
|
posting_date = get_random_date(start_date, 31, 365)
|
||||||
)
|
|
||||||
bank_field = "paid_to" if doctype.get("party_type") == "Customer" else "paid_from"
|
|
||||||
|
|
||||||
doctype.update(
|
doctype.update(
|
||||||
{
|
{
|
||||||
"company": company,
|
"company": company,
|
||||||
"set_posting_time": 1,
|
"set_posting_time": 1,
|
||||||
"posting_date": posting_date,
|
"transaction_date": posting_date,
|
||||||
|
"schedule_date": posting_date,
|
||||||
|
"delivery_date": posting_date,
|
||||||
"set_warehouse": warehouse,
|
"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 = frappe.get_doc(doctype)
|
||||||
doc.save(ignore_permissions=True)
|
doc.save(ignore_permissions=True)
|
||||||
doc.submit()
|
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):
|
def get_random_date(start_date, start_range, end_range):
|
||||||
return add_days(start_date, randint(1, 365))
|
return add_days(start_date, randint(start_range, end_range))
|
||||||
|
|
||||||
|
|
||||||
def create_transaction_deletion_record(company):
|
def create_transaction_deletion_record(company):
|
||||||
@ -164,9 +174,9 @@ def clear_masters():
|
|||||||
|
|
||||||
|
|
||||||
def clear_demo_record(document):
|
def clear_demo_record(document):
|
||||||
doc_type = document.get("doctype")
|
document_type = document.get("doctype")
|
||||||
del document["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)
|
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):
|
def get_warehouse(company):
|
||||||
abbr = frappe.db.get_value("Company", company, "abbr")
|
warehouses = frappe.db.get_all("Warehouse", {"company": company, "is_group": 0})
|
||||||
warehouse = "Stores - {0}".format(abbr)
|
return warehouses[randint(0, 3)].name
|
||||||
|
|
||||||
return warehouse
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "DQ Industries",
|
"supplier": "Zuckerman Security Ltd.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU001",
|
"item_code": "SKU001",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 100.0,
|
"qty": 100.0,
|
||||||
@ -18,11 +18,11 @@
|
|||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "MA Inc.",
|
"supplier": "MA Inc.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU002",
|
"item_code": "SKU002",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 50.0,
|
"qty": 50.0,
|
||||||
@ -33,15 +33,15 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "KC Corp.",
|
"supplier": "Summit Traders Ltd.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU003",
|
"item_code": "SKU003",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 75.0,
|
"qty": 200.0,
|
||||||
"rate": 523.0,
|
"rate": 523.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
@ -49,12 +49,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "DQ Industries",
|
"supplier": "Zuckerman Security Ltd.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU004",
|
"item_code": "SKU004",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 60.0,
|
"qty": 60.0,
|
||||||
@ -66,14 +66,14 @@
|
|||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "MA Inc.",
|
"supplier": "MA Inc.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU005",
|
"item_code": "SKU005",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 82.0,
|
"qty": 182.0,
|
||||||
"rate": 222.0,
|
"rate": 222.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
@ -81,15 +81,15 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "KC Corp.",
|
"supplier": "Summit Traders Ltd.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU006",
|
"item_code": "SKU006",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 50.0,
|
"qty": 250.0,
|
||||||
"rate": 420.0,
|
"rate": 420.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
@ -97,15 +97,15 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "DQ Industries",
|
"supplier": "Zuckerman Security Ltd.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU007",
|
"item_code": "SKU007",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 90.0,
|
"qty": 190.0,
|
||||||
"rate": 375.0,
|
"rate": 375.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
@ -114,11 +114,11 @@
|
|||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "MA Inc.",
|
"supplier": "MA Inc.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU008",
|
"item_code": "SKU008",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 121.0,
|
"qty": 121.0,
|
||||||
@ -129,12 +129,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "KC Corp.",
|
"supplier": "Summit Traders Ltd.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU009",
|
"item_code": "SKU009",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 76.0,
|
"qty": 76.0,
|
||||||
@ -145,12 +145,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"supplier": "DQ Industries",
|
"supplier": "Zuckerman Security Ltd.",
|
||||||
"doctype": "Purchase Invoice",
|
"doctype": "Purchase Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Purchase Invoice Item",
|
"doctype": "Purchase Order Item",
|
||||||
"item_code": "SKU010",
|
"item_code": "SKU010",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 78.0,
|
"qty": 78.0,
|
@ -1,87 +1,87 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"customer": "ABC Enterprises",
|
"customer": "Grant Plastics Ltd.",
|
||||||
"doctype": "Sales Invoice",
|
"doctype": "Sales Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU004",
|
"item_code": "SKU004",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 20.0,
|
"qty": 20.0,
|
||||||
"rate": 500.0,
|
"rate": 1000.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"customer": "XYZ Corporation",
|
"customer": "West View Software Ltd.",
|
||||||
"doctype": "Sales Invoice",
|
"doctype": "Sales Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU001",
|
"item_code": "SKU001",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 25.0,
|
"qty": 25.0,
|
||||||
"rate": 600.0,
|
"rate": 800.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU002",
|
"item_code": "SKU002",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 15.0,
|
"qty": 15.0,
|
||||||
"rate": 300.0,
|
"rate": 800.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"customer": "XYZ Corporation",
|
"customer": "West View Software Ltd.",
|
||||||
"doctype": "Sales Invoice",
|
"doctype": "Sales Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU003",
|
"item_code": "SKU003",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 100,
|
"qty": 100,
|
||||||
"rate": 300.0,
|
"rate": 500.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU006",
|
"item_code": "SKU006",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 100,
|
"qty": 100,
|
||||||
"rate": 300.0,
|
"rate": 890.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU007",
|
"item_code": "SKU007",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 100,
|
"qty": 100,
|
||||||
"rate": 300.0,
|
"rate": 900.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"customer": "KJPR Pvt. Ltd.",
|
"customer": "Palmer Productions Ltd.",
|
||||||
"doctype": "Sales Invoice",
|
"doctype": "Sales Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU005",
|
"item_code": "SKU005",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 200.0,
|
"qty": 150.0,
|
||||||
"rate": 100.0,
|
"rate": 100.0,
|
||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
}
|
}
|
||||||
@ -89,12 +89,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conversion_rate": 1.0,
|
"conversion_rate": 1.0,
|
||||||
"customer": "ABC Enterprises",
|
"customer": "Grant Plastics Ltd.",
|
||||||
"doctype": "Sales Invoice",
|
"doctype": "Sales Order",
|
||||||
"update_stock": 1,
|
"update_stock": 1,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU008",
|
"item_code": "SKU008",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 20.0,
|
"qty": 20.0,
|
||||||
@ -102,7 +102,7 @@
|
|||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU009",
|
"item_code": "SKU009",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 40.0,
|
"qty": 40.0,
|
||||||
@ -110,7 +110,7 @@
|
|||||||
"conversion_factor": 1
|
"conversion_factor": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice Item",
|
"doctype": "Sales Order Item",
|
||||||
"item_code": "SKU010",
|
"item_code": "SKU010",
|
||||||
"parentfield": "items",
|
"parentfield": "items",
|
||||||
"qty": 50.0,
|
"qty": 50.0,
|
Loading…
x
Reference in New Issue
Block a user