diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index b372da7f74a..6e82c3896c3 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -101,11 +101,11 @@ "apply_discount_on", "base_discount_amount", "coupon_code", - "is_cash_or_non_trade_discount", - "additional_discount_account", "column_break_51", "additional_discount_percentage", "discount_amount", + "is_cash_or_non_trade_discount", + "additional_discount_account", "sec_tax_breakup", "other_charges_calculation", "item_wise_tax_details", @@ -218,8 +218,7 @@ "update_auto_repeat_reference", "more_information", "status", - "inter_company_invoice_reference", - "represents_company", + "remarks", "customer_group", "column_break_imbx", "utm_source", @@ -228,8 +227,9 @@ "utm_content", "col_break23", "is_internal_customer", + "represents_company", + "inter_company_invoice_reference", "is_discounted", - "remarks", "connections_tab" ], "fields": [ @@ -794,7 +794,8 @@ "hide_seconds": 1, "label": "Time Sheets", "options": "Sales Invoice Timesheet", - "print_hide": 1 + "print_hide": 1, + "read_only": 1 }, { "default": "0", @@ -2306,7 +2307,7 @@ "link_fieldname": "consolidated_invoice" } ], - "modified": "2026-01-30 16:45:59.682473", + "modified": "2026-02-02 17:21:09.768833", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index b6261cc5707..16e0c524c28 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -62,23 +62,18 @@ class SalesInvoice(SellingController): from typing import TYPE_CHECKING if TYPE_CHECKING: - from frappe.types import DF - from erpnext.accounts.doctype.item_wise_tax_detail.item_wise_tax_detail import ItemWiseTaxDetail from erpnext.accounts.doctype.payment_schedule.payment_schedule import PaymentSchedule from erpnext.accounts.doctype.pricing_rule_detail.pricing_rule_detail import PricingRuleDetail from erpnext.accounts.doctype.sales_invoice_advance.sales_invoice_advance import SalesInvoiceAdvance from erpnext.accounts.doctype.sales_invoice_item.sales_invoice_item import SalesInvoiceItem from erpnext.accounts.doctype.sales_invoice_payment.sales_invoice_payment import SalesInvoicePayment - from erpnext.accounts.doctype.sales_invoice_timesheet.sales_invoice_timesheet import ( - SalesInvoiceTimesheet, - ) - from erpnext.accounts.doctype.sales_taxes_and_charges.sales_taxes_and_charges import ( - SalesTaxesandCharges, - ) + from erpnext.accounts.doctype.sales_invoice_timesheet.sales_invoice_timesheet import SalesInvoiceTimesheet + from erpnext.accounts.doctype.sales_taxes_and_charges.sales_taxes_and_charges import SalesTaxesandCharges from erpnext.accounts.doctype.tax_withholding_entry.tax_withholding_entry import TaxWithholdingEntry from erpnext.selling.doctype.sales_team.sales_team import SalesTeam from erpnext.stock.doctype.packed_item.packed_item import PackedItem + from frappe.types import DF account_for_change_amount: DF.Link | None additional_discount_account: DF.Link | None @@ -198,22 +193,7 @@ class SalesInvoice(SellingController): shipping_address: DF.TextEditor | None shipping_address_name: DF.Link | None shipping_rule: DF.Link | None - status: DF.Literal[ - "", - "Draft", - "Return", - "Credit Note Issued", - "Submitted", - "Paid", - "Partly Paid", - "Unpaid", - "Unpaid and Discounted", - "Partly Paid and Discounted", - "Overdue and Discounted", - "Overdue", - "Cancelled", - "Internal Transfer", - ] + status: DF.Literal["", "Draft", "Return", "Credit Note Issued", "Submitted", "Paid", "Partly Paid", "Unpaid", "Unpaid and Discounted", "Partly Paid and Discounted", "Overdue and Discounted", "Overdue", "Cancelled", "Internal Transfer"] subscription: DF.Link | None tax_category: DF.Link | None tax_id: DF.Data | None diff --git a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json index 7608ea87de8..dda046172f2 100644 --- a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json +++ b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json @@ -1009,7 +1009,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2025-09-04 11:08:25.583561", + "modified": "2026-02-02 16:46:12.597972", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice Item", diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json index a801a2a601d..a75fc84b3fb 100644 --- a/erpnext/buying/doctype/supplier/supplier.json +++ b/erpnext/buying/doctype/supplier/supplier.json @@ -12,10 +12,11 @@ "field_order": [ "naming_series", "supplier_name", - "country", + "supplier_type", + "gender", "column_break0", "supplier_group", - "supplier_type", + "country", "is_transporter", "image", "defaults_section", @@ -62,8 +63,8 @@ "allow_purchase_invoice_creation_without_purchase_order", "allow_purchase_invoice_creation_without_purchase_receipt", "column_break_54", - "is_frozen", "disabled", + "is_frozen", "warn_rfqs", "warn_pos", "prevent_rfqs", @@ -74,8 +75,7 @@ "column_break_59", "release_date", "portal_users_tab", - "portal_users", - "column_break_1mqv" + "portal_users" ], "fields": [ { @@ -468,10 +468,6 @@ "label": "Supplier Portal Users", "options": "Portal User" }, - { - "fieldname": "column_break_1mqv", - "fieldtype": "Column Break" - }, { "fieldname": "column_break_mglr", "fieldtype": "Column Break" @@ -487,6 +483,13 @@ "fieldtype": "Link", "label": "Tax Withholding Group", "options": "Tax Withholding Group" + }, + { + "depends_on": "eval:doc.supplier_type == 'Individual'", + "fieldname": "gender", + "fieldtype": "Link", + "label": "Gender", + "options": "Gender" } ], "grid_page_length": 50, @@ -500,7 +503,7 @@ "link_fieldname": "party" } ], - "modified": "2026-01-16 15:56:31.139206", + "modified": "2026-02-02 12:36:51.566439", "modified_by": "Administrator", "module": "Buying", "name": "Supplier", diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py index 543b3726089..7d07213dbc6 100644 --- a/erpnext/buying/doctype/supplier/supplier.py +++ b/erpnext/buying/doctype/supplier/supplier.py @@ -27,16 +27,11 @@ class Supplier(TransactionBase): from typing import TYPE_CHECKING if TYPE_CHECKING: - from frappe.types import DF - - from erpnext.accounts.doctype.allowed_to_transact_with.allowed_to_transact_with import ( - AllowedToTransactWith, - ) + from erpnext.accounts.doctype.allowed_to_transact_with.allowed_to_transact_with import AllowedToTransactWith from erpnext.accounts.doctype.party_account.party_account import PartyAccount - from erpnext.buying.doctype.customer_number_at_supplier.customer_number_at_supplier import ( - CustomerNumberAtSupplier, - ) + from erpnext.buying.doctype.customer_number_at_supplier.customer_number_at_supplier import CustomerNumberAtSupplier from erpnext.utilities.doctype.portal_user.portal_user import PortalUser + from frappe.types import DF accounts: DF.Table[PartyAccount] allow_purchase_invoice_creation_without_purchase_order: DF.Check @@ -49,6 +44,7 @@ class Supplier(TransactionBase): default_price_list: DF.Link | None disabled: DF.Check email_id: DF.ReadOnly | None + gender: DF.Link | None hold_type: DF.Literal["", "All", "Invoices", "Payments"] image: DF.AttachImage | None is_frozen: DF.Check diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json index babd09a5591..360f5861d7b 100644 --- a/erpnext/selling/doctype/customer/customer.json +++ b/erpnext/selling/doctype/customer/customer.json @@ -12,38 +12,18 @@ "field_order": [ "basic_info", "naming_series", - "salutation", - "customer_name", "customer_type", - "customer_group", - "column_break0", - "territory", + "customer_name", "gender", - "lead_name", - "opportunity_name", - "prospect_name", - "account_manager", + "column_break0", + "customer_group", + "territory", "image", "defaults_tab", "default_currency", "default_bank_account", "column_break_14", "default_price_list", - "internal_customer_section", - "is_internal_customer", - "represents_company", - "column_break_70", - "companies", - "more_info", - "market_segment", - "industry", - "customer_pos_id", - "website", - "language", - "column_break_45", - "customer_details", - "supplier_numbers", - "dashboard_tab", "contact_and_address_tab", "address_contacts", "address_html", @@ -67,16 +47,22 @@ "tax_withholding_category", "tax_withholding_group", "accounting_tab", + "default_receivable_accounts", + "accounts", "credit_limit_section", "payment_terms", "credit_limits", - "default_receivable_accounts", - "accounts", + "internal_customer_section", + "is_internal_customer", + "represents_company", + "column_break_70", + "companies", "loyalty_points_tab", "loyalty_program", "column_break_54", "loyalty_program_tier", "sales_team_tab", + "account_manager", "sales_team", "sales_team_section", "default_sales_partner", @@ -86,10 +72,27 @@ "so_required", "dn_required", "column_break_53", - "is_frozen", "disabled", + "is_frozen", "portal_users_tab", - "portal_users" + "portal_users", + "more_info_tab", + "references_section", + "lead_name", + "opportunity_name", + "column_break_wlbg", + "prospect_name", + "section_break_objq", + "market_segment", + "industry", + "website", + "language", + "customer_pos_id", + "column_break_hdmn", + "customer_details", + "supplier_numbers_section", + "supplier_numbers", + "connections_tab" ], "fields": [ { @@ -106,13 +109,6 @@ "options": "CUST-.YYYY.-", "set_only_once": 1 }, - { - "depends_on": "eval:doc.customer_type!='Company'", - "fieldname": "salutation", - "fieldtype": "Link", - "label": "Salutation", - "options": "Salutation" - }, { "bold": 1, "fieldname": "customer_name", @@ -126,7 +122,7 @@ "search_index": 1 }, { - "depends_on": "eval:doc.customer_type != 'Company'", + "depends_on": "eval:doc.customer_type == 'Individual'", "fieldname": "gender", "fieldtype": "Link", "label": "Gender", @@ -151,12 +147,13 @@ { "fieldname": "lead_name", "fieldtype": "Link", - "label": "From Lead", + "label": "Lead", "no_copy": 1, "oldfieldname": "lead_name", "oldfieldtype": "Link", "options": "Lead", "print_hide": 1, + "read_only": 1, "report_hide": 1 }, { @@ -363,15 +360,6 @@ "label": "Default Payment Terms Template", "options": "Payment Terms Template" }, - { - "collapsible": 1, - "collapsible_depends_on": "customer_details", - "fieldname": "more_info", - "fieldtype": "Section Break", - "label": "More Information", - "oldfieldtype": "Section Break", - "options": "fa fa-file-text" - }, { "description": "Additional information regarding the customer.", "fieldname": "customer_details", @@ -380,10 +368,6 @@ "oldfieldname": "customer_details", "oldfieldtype": "Code" }, - { - "fieldname": "column_break_45", - "fieldtype": "Column Break" - }, { "fieldname": "market_segment", "fieldtype": "Link", @@ -449,7 +433,7 @@ { "fieldname": "customer_pos_id", "fieldtype": "Data", - "label": "Customer POS id", + "label": "Customer POS ID", "no_copy": 1, "print_hide": 1, "read_only": 1, @@ -482,10 +466,11 @@ { "fieldname": "opportunity_name", "fieldtype": "Link", - "label": "From Opportunity", + "label": "Opportunity", "no_copy": 1, "options": "Opportunity", - "print_hide": 1 + "print_hide": 1, + "read_only": 1 }, { "fieldname": "contact_and_address_tab", @@ -519,12 +504,6 @@ "fieldname": "column_break_21", "fieldtype": "Column Break" }, - { - "fieldname": "dashboard_tab", - "fieldtype": "Tab Break", - "label": "Dashboard", - "show_dashboard": 1 - }, { "fieldname": "column_break_53", "fieldtype": "Column Break" @@ -554,7 +533,7 @@ "collapsible_depends_on": "is_internal_customer", "fieldname": "internal_customer_section", "fieldtype": "Section Break", - "label": "Internal Customer" + "label": "Internal Customer Accounting" }, { "fieldname": "column_break_70", @@ -582,10 +561,11 @@ { "fieldname": "prospect_name", "fieldtype": "Link", - "label": "From Prospect", + "label": "Prospect", "no_copy": 1, "options": "Prospect", - "print_hide": 1 + "print_hide": 1, + "read_only": 1 }, { "fetch_from": "customer_primary_contact.first_name", @@ -613,6 +593,39 @@ "fieldtype": "Link", "label": "Tax Withholding Group", "options": "Tax Withholding Group" + }, + { + "fieldname": "more_info_tab", + "fieldtype": "Tab Break", + "label": "More Info" + }, + { + "fieldname": "references_section", + "fieldtype": "Section Break", + "label": "References" + }, + { + "fieldname": "column_break_wlbg", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_objq", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_hdmn", + "fieldtype": "Column Break" + }, + { + "fieldname": "connections_tab", + "fieldtype": "Tab Break", + "label": "Connections", + "show_dashboard": 1 + }, + { + "fieldname": "supplier_numbers_section", + "fieldtype": "Section Break", + "label": "Supplier Numbers" } ], "icon": "fa fa-user", @@ -626,7 +639,7 @@ "link_fieldname": "party" } ], - "modified": "2026-01-21 17:23:42.151114", + "modified": "2026-02-02 15:39:55.920831", "modified_by": "Administrator", "module": "Selling", "name": "Customer", diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 5178ed59fb4..500fe723fd0 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -34,18 +34,13 @@ class Customer(TransactionBase): from typing import TYPE_CHECKING if TYPE_CHECKING: - from frappe.types import DF - - from erpnext.accounts.doctype.allowed_to_transact_with.allowed_to_transact_with import ( - AllowedToTransactWith, - ) + from erpnext.accounts.doctype.allowed_to_transact_with.allowed_to_transact_with import AllowedToTransactWith from erpnext.accounts.doctype.party_account.party_account import PartyAccount from erpnext.selling.doctype.customer_credit_limit.customer_credit_limit import CustomerCreditLimit from erpnext.selling.doctype.sales_team.sales_team import SalesTeam - from erpnext.selling.doctype.supplier_number_at_customer.supplier_number_at_customer import ( - SupplierNumberAtCustomer, - ) + from erpnext.selling.doctype.supplier_number_at_customer.supplier_number_at_customer import SupplierNumberAtCustomer from erpnext.utilities.doctype.portal_user.portal_user import PortalUser + from frappe.types import DF account_manager: DF.Link | None accounts: DF.Table[PartyAccount] @@ -87,7 +82,6 @@ class Customer(TransactionBase): prospect_name: DF.Link | None represents_company: DF.Link | None sales_team: DF.Table[SalesTeam] - salutation: DF.Link | None so_required: DF.Check supplier_numbers: DF.Table[SupplierNumberAtCustomer] tax_category: DF.Link | None