mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-18 12:39:18 +00:00
80 lines
2.0 KiB
Python
80 lines
2.0 KiB
Python
import frappe
|
|
from frappe import _
|
|
|
|
|
|
def get_operating_cost_account(company):
|
|
company_details = frappe.db.get_value(
|
|
"Company", company, ["default_operating_cost_account", "default_expense_account"], as_dict=True
|
|
)
|
|
|
|
return company_details.get("default_operating_cost_account") or company_details.get(
|
|
"default_expense_account"
|
|
)
|
|
|
|
|
|
def execute():
|
|
components = [
|
|
"Electricity",
|
|
"Consumables",
|
|
"Rent",
|
|
"Wages",
|
|
]
|
|
|
|
companies = frappe.get_all("Company", filters={"is_group": 0}, pluck="name")
|
|
|
|
for component in components:
|
|
component = _(component)
|
|
if not frappe.db.exists("Workstation Operating Component", component):
|
|
doc = frappe.new_doc("Workstation Operating Component")
|
|
doc.component_name = component
|
|
|
|
for company in companies:
|
|
operating_cost_account = get_operating_cost_account(company)
|
|
|
|
doc.append("accounts", {"company": company, "expense_account": operating_cost_account})
|
|
|
|
doc.insert()
|
|
|
|
workstations = frappe.get_all("Workstation", filters={"hour_rate": (">", 0.0)}, pluck="name") or []
|
|
workstation_types = (
|
|
frappe.get_all("Workstation Type", filters={"hour_rate": (">", 0.0)}, pluck="name") or []
|
|
)
|
|
|
|
if not workstations and not workstation_types:
|
|
return
|
|
|
|
components_map = {
|
|
"hour_rate_electricity": _("Electricity"),
|
|
"hour_rate_consumable": _("Consumables"),
|
|
"hour_rate_rent": _("Rent"),
|
|
"hour_rate_labour": _("Wages"),
|
|
}
|
|
|
|
for workstation in workstations:
|
|
doc = frappe.get_doc("Workstation", workstation)
|
|
for field, component in components_map.items():
|
|
if doc.get(field):
|
|
doc.append(
|
|
"workstation_costs",
|
|
{
|
|
"operating_component": component,
|
|
"operating_cost": doc.get(field),
|
|
},
|
|
)
|
|
|
|
doc.save()
|
|
|
|
for workstation_type in workstation_types:
|
|
doc = frappe.get_doc("Workstation Type", workstation_type)
|
|
for field, component in components_map.items():
|
|
if doc.get(field):
|
|
doc.append(
|
|
"workstation_costs",
|
|
{
|
|
"operating_component": component,
|
|
"operating_cost": doc.get(field),
|
|
},
|
|
)
|
|
|
|
doc.save()
|