perf: use `create_custom_fields` (#31853)
* perf: use `create_custom_fields`
* fix: default must be a string
diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
index 7d676e4..cd4aaee 100644
--- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
+++ b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
@@ -12,7 +12,9 @@
import frappe
from bs4 import BeautifulSoup as bs
from frappe import _
-from frappe.custom.doctype.custom_field.custom_field import create_custom_field
+from frappe.custom.doctype.custom_field.custom_field import (
+ create_custom_fields as _create_custom_fields,
+)
from frappe.model.document import Document
from frappe.utils.data import format_datetime
@@ -577,22 +579,25 @@
new_year.save()
oldest_year = new_year
- def create_custom_fields(doctypes):
- tally_guid_df = {
- "fieldtype": "Data",
- "fieldname": "tally_guid",
- "read_only": 1,
- "label": "Tally GUID",
- }
- tally_voucher_no_df = {
- "fieldtype": "Data",
- "fieldname": "tally_voucher_no",
- "read_only": 1,
- "label": "Tally Voucher Number",
- }
- for df in [tally_guid_df, tally_voucher_no_df]:
- for doctype in doctypes:
- create_custom_field(doctype, df)
+ def create_custom_fields():
+ _create_custom_fields(
+ {
+ ("Journal Entry", "Purchase Invoice", "Sales Invoice"): [
+ {
+ "fieldtype": "Data",
+ "fieldname": "tally_guid",
+ "read_only": 1,
+ "label": "Tally GUID",
+ },
+ {
+ "fieldtype": "Data",
+ "fieldname": "tally_voucher_no",
+ "read_only": 1,
+ "label": "Tally Voucher Number",
+ },
+ ]
+ }
+ )
def create_price_list():
frappe.get_doc(
@@ -628,7 +633,7 @@
create_fiscal_years(vouchers)
create_price_list()
- create_custom_fields(["Journal Entry", "Purchase Invoice", "Sales Invoice"])
+ create_custom_fields()
total = len(vouchers)
is_last = False
diff --git a/erpnext/erpnext_integrations/doctype/woocommerce_settings/woocommerce_settings.py b/erpnext/erpnext_integrations/doctype/woocommerce_settings/woocommerce_settings.py
index 2e18776..4aa98aa 100644
--- a/erpnext/erpnext_integrations/doctype/woocommerce_settings/woocommerce_settings.py
+++ b/erpnext/erpnext_integrations/doctype/woocommerce_settings/woocommerce_settings.py
@@ -6,7 +6,7 @@
import frappe
from frappe import _
-from frappe.custom.doctype.custom_field.custom_field import create_custom_field
+from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
from frappe.model.document import Document
from frappe.utils.nestedset import get_root_of
@@ -19,27 +19,24 @@
def create_delete_custom_fields(self):
if self.enable_sync:
- custom_fields = {}
- # create
- for doctype in ["Customer", "Sales Order", "Item", "Address"]:
- df = dict(
- fieldname="woocommerce_id",
- label="Woocommerce ID",
- fieldtype="Data",
- read_only=1,
- print_hide=1,
- )
- create_custom_field(doctype, df)
-
- for doctype in ["Customer", "Address"]:
- df = dict(
- fieldname="woocommerce_email",
- label="Woocommerce Email",
- fieldtype="Data",
- read_only=1,
- print_hide=1,
- )
- create_custom_field(doctype, df)
+ create_custom_fields(
+ {
+ ("Customer", "Sales Order", "Item", "Address"): dict(
+ fieldname="woocommerce_id",
+ label="Woocommerce ID",
+ fieldtype="Data",
+ read_only=1,
+ print_hide=1,
+ ),
+ ("Customer", "Address"): dict(
+ fieldname="woocommerce_email",
+ label="Woocommerce Email",
+ fieldtype="Data",
+ read_only=1,
+ print_hide=1,
+ ),
+ }
+ )
if not frappe.get_value("Item Group", {"name": _("WooCommerce Products")}):
item_group = frappe.new_doc("Item Group")
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 7d7e6b5..2076dde 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -4,7 +4,7 @@
import frappe
from frappe import _
-from frappe.custom.doctype.custom_field.custom_field import create_custom_field
+from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
from frappe.utils import cint
@@ -83,35 +83,32 @@
def create_print_setting_custom_fields():
- create_custom_field(
- "Print Settings",
+ create_custom_fields(
{
- "label": _("Compact Item Print"),
- "fieldname": "compact_item_print",
- "fieldtype": "Check",
- "default": 1,
- "insert_after": "with_letterhead",
- },
- )
- create_custom_field(
- "Print Settings",
- {
- "label": _("Print UOM after Quantity"),
- "fieldname": "print_uom_after_quantity",
- "fieldtype": "Check",
- "default": 0,
- "insert_after": "compact_item_print",
- },
- )
- create_custom_field(
- "Print Settings",
- {
- "label": _("Print taxes with zero amount"),
- "fieldname": "print_taxes_with_zero_amount",
- "fieldtype": "Check",
- "default": 0,
- "insert_after": "allow_print_for_cancelled",
- },
+ "Print Settings": [
+ {
+ "label": _("Compact Item Print"),
+ "fieldname": "compact_item_print",
+ "fieldtype": "Check",
+ "default": "1",
+ "insert_after": "with_letterhead",
+ },
+ {
+ "label": _("Print UOM after Quantity"),
+ "fieldname": "print_uom_after_quantity",
+ "fieldtype": "Check",
+ "default": "0",
+ "insert_after": "compact_item_print",
+ },
+ {
+ "label": _("Print taxes with zero amount"),
+ "fieldname": "print_taxes_with_zero_amount",
+ "fieldtype": "Check",
+ "default": "0",
+ "insert_after": "allow_print_for_cancelled",
+ },
+ ]
+ }
)